Status as of 2026-09-27. Every design spec in this folder, and what is actually built against it, because a spec set with no conformance record is a wish list.
Constitution:
../constitution.md— seven articles, binding. Format for new specs:TEMPLATE.md. Keeping specs and code honest with each other:DRIFT.md.
Phase-level, by artifact presence and inspection — for each spec's build order, does the code it calls for exist and do its tests pass. A phase marked built means its artifacts exist and are tested, not that every clause of the prose is satisfied; where the build diverged, the spec carries a dated as-built amendment saying how and why.
Two mechanisms keep this current: npm run spec:coverage (mechanical — every route,
capability tool, script and env var must appear somewhere in docs/) and /drift
(semantic — an agent reads specs against code). See DRIFT.md.
The audit behind this table was re-verified on 2026-09-27 against main at 875c796.
| Spec | Notes |
|---|---|
| v5 Test Suite | Four offline layers; runbook in TESTING.md |
| Student Projects Gallery | Storage moved from Notion to Postgres (data platform phase 3); moderation at /admin/projects |
| Agent Eval Harness | npm run eval; real, paid, never in CI |
| QR Codes on Machines | npm run qr:labels; amendment 2026-09-29 "QR labels in the app": print sheets at /admin/inventory/qr, a QR dialog on each tool page, get_tool_qr_code, /api/qr/[slug] |
| Report a Correction | Corrections land in feedback, worked at /admin/corrections |
| Bulk Intake | Import a list on /admin/intake; allowances on People |
| Gateway-First Models and a Product Image Finder | Gateway is the only model path; deterministic cutout, no generative redraw |
| MCP Access | Phases 0–4: public reads, personal tokens, OAuth sign-in; user guide docs/mcp.md |
| Refresh Research | Phases 1–4 built. Not yet run over the real inventory |
| Official and Display Names | tools.official_name; backfill with npm run names:backfill |
| Manual Text and Search | Phases 1–3: page text, passages, embeddings, search_manual; OCR for scanned PDFs, reranking, halfvec storage. Re-index with npm run manuals:index |
| Assistant–GUI Parity | Phases 1–8: src/lib/actions/ and performAction, proposing tools and the confirmation card, page context, taint, MCP proposals and the /admin/proposals inbox. What the assistant can do, for users: assistant.md |
Taxonomy v2 — nine top-level categories, research-proposed categories, /admin/taxonomy |
Implemented (#108; migration 0023, npm run taxonomy:migrate / taxonomy:audit) |
| MakerLAB Identity | MakerLAB / MakerLAB Tools / MakerLAB Assistant naming, the wordmark header, the assistant's first-visit callout and operate/debug/create starters, the "Where you are" prompt block (src/lib/ai/lab-context.ts), the About page |
| Operational Hardening | Health endpoint, demo banner, nightly backup with tiered retention, staff refresh, backup heartbeat. Phase 2 (uptime monitor) is account setup in operations.md; phase 6 (Notion webhook) superseded |
| Spec | Built | Open |
|---|---|---|
| v5 Data Platform — Postgres, Blob, roles, admin inventory, two-step intake, Notion mirror | Phases 1–6 and 8 | Phase 7 (people load and validate the real inventory — not code) pending. Phase 9 (translation pass) deferred until after launch |
| UI System — shadcn/ui, Tufte density, admin IA, AI Elements chat | Phases 1–5 | Phase 6 (delete legacy CSS): the repo flatten it waited for is done; needs a screenshot sweep, after the demo |
| Sign-in and Tiered Rate Limiting | Google sign-in, tiered rate limits as specced | The env-list role model is superseded by Better Auth and the user table (data platform phase 4) |
| Intake Confidence | Confidence grading and parallel identification, now inside the research pipeline | The chat-side card behaviour is obsolete — propose_listing was removed with the two-step intake (data platform phase 6) |
Usage Insight — anonymous usage events in Postgres and an /admin/insights page: most- and never-asked-about tools, QR scans, busy times, an Unanswered queue |
Phases 1–2 (#107, migration 0022) with the Unanswered queue's two decisions (amendment 2026-09-28); the value report on /admin/insights/value (#109); usage counts over MCP for super admins, insights.export (amendment 2026-09-30) |
Phases 3–4 |
| Spec | Notes |
|---|---|
Kiosk Mode — public read-only lab screen at /kiosk: down machines, ticket counts, hours, featured tool, QR to chat |
Phase 1 built (#94, /kiosk); phases 2–3 awaiting review; phase 2 adds editable hours and pins |
| Recurring Maintenance — per-tool or per-unit schedules; the nightly cron opens a preventive ticket when one falls due | Awaiting review. 4 phases; phase 4 suggests schedules from manuals. Open questions §13 Q1–Q4 gate phase 1 |
| Notifications — email on ticket, correction and project changes; a daily staff digest; Web Push later | Awaiting review. Sending domain and Cornell approval of the provider block phase 1 |
All six 2026-09-27 feature specs build on the Assistant–GUI Parity action layer; each writes its
migration as 00NN and takes the next free number when it lands.
The owner has considered these but has not decided to build them. Do not implement against them.
| Spec | Notes |
|---|---|
| Training Sign-offs — who is trained on which tool, workshops, refreshers; advisory only, no lockout | Undecided. First questions: does the lab want it, and are training records student records? |
| Consumables — stock of filament, resin, sheets and blades by location; student "out / running low" reports; a restock list | Undecided. Recommended start is reports and a restock list only, without counts |
| Spec | Superseded by |
|---|---|
| Chat Inventory Intake | v5 Data Platform phase 6 — the two-step intake (identify_tools, background research, approval) |
| AI Gateway Migration | Gateway-First Models and a Product Image Finder |
| Gallery Projects (2026-05-29) | Student Projects Gallery — an older duplicate |
Everything open, in one place:
- Monitoring setup — the uptime and heartbeat monitors and the AI Gateway budget, all
account setup a person does (
operations.md). - Manual search — first OCR run over the scanned manuals (
npm run manuals:index). - UI system phase 6 — legacy CSS removal (the repo flatten it waited for is done).
- Data platform phase 7 — not code: Isaac and Luis load and validate the real inventory in person, and file what breaks.
- Data platform phase 9 — the translation pass, after launch.
- Refresh research — its first run over the real inventory (built; not yet used).
These gate work and none of them are code:
- Owners of the Vercel project, the Gateway budget, the Google OAuth client and the
bill —
docs/handover.md§2. - Student data — names and emails in tickets, corrections, projects, the nightly backup and any Notion mirror: acceptable to the university?
- Photo consent for student work in the public gallery.
- ISAM rate limit — conference wifi puts every visitor behind one IP;
RATE_LIMIT_ANON_CHATexists for this. Hard deadline.
The earlier revisions of this index (2026-07-30 conformance audit of the first eight specs,
the 2026-07-30 drift check, the 2026-09-14 pre-ISAM fixes, and the constitution audit of
that batch) are in git history (git log -p -- docs/specs/README.md). Their findings were
closed or folded into the specs' own amendments.