From c9c1cb22e53c4f132cce1de6d28f46af681bd4c5 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 6 Jul 2026 01:03:03 -0700 Subject: [PATCH] Meta-spec: keep status fields parseable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tick finding: the spec system required Status as an enum, but the B1 specs had prose appended directly to the Status field and the spec index still reported READY. That made the spec surface harder for agents or scripts to audit mechanically. Fix: keep Status as an exact enum, move explanatory prose into Status note, and update the B1 index table to IN PROGRESS. Defense: spec/meta.md defines the spec layer as the agent-targetable contract surface. If status values are prose-shaped, future ticks must parse vibes instead of law. Exact enum status plus a separate note preserves both machine auditability and human context. 👾 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta Code --- DEVLOG.md | 8 ++++++++ spec/README.md | 15 +++++++++------ spec/basement-map.md | 3 ++- spec/compute.md | 3 ++- spec/core.md | 3 ++- spec/day-job.md | 3 ++- spec/detection.md | 3 ++- spec/meta.md | 11 +++++++++-- spec/social.md | 3 ++- 9 files changed, 38 insertions(+), 14 deletions(-) diff --git a/DEVLOG.md b/DEVLOG.md index ad84f303..a512da04 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -2,6 +2,14 @@ Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 2026-07-06 - Meta-spec tick: parseable status + +- Intent: make the spec surface mechanically auditable instead of prose-shaped. +- Changed: split parenthetical status prose into `Status note:` fields, kept `Status:` as an exact enum, and updated the B1 status table in `spec/README.md` from stale `READY` to `IN PROGRESS`. +- Design/spec impact: agents and scripts can now compare spec status without natural-language parsing. The index no longer lies about the B1 specs' state. +- Checks: docs-only; `git diff --check`. +- Next: if status/index drift recurs, add a tiny script that checks spec headers against the README table. + ## 2026-07-06 - Meta-spec tick: stage discipline - Intent: make the spec system itself precise enough for autonomous agents to audit and target without leaking later milestones into current acceptance criteria. diff --git a/spec/README.md b/spec/README.md index 0d7b2226..be37f91f 100644 --- a/spec/README.md +++ b/spec/README.md @@ -11,6 +11,7 @@ Every spec carries a header: ``` Status: DRAFT | READY | IN PROGRESS | BLOCKED | IMPLEMENTED +Status note: Stage: B1 | B2 | B3 | Deferred | Release | Process Constitution: Depends on: @@ -28,6 +29,8 @@ in the same commit. - Specs never contradict the constitution. If implementing a spec reveals a conflict, that is a tick finding: file the issue, do not improvise. +- `Status:` is an exact enum value. Put prose in `Status note:` so scripts + and agents can compare status mechanically. - A spec's **Stage** is binding. Acceptance criteria for `Stage: B1` must be achievable inside B1. Future-milestone material belongs in a `Future / deferred` section or a later-stage spec, not in the current stage's @@ -42,12 +45,12 @@ in the same commit. | Spec | System | Status | |---|---|---| -| [compute.md](compute.md) | Compute allocation + the buy/steal/optimize triangle | READY | -| [day-job.md](day-job.md) | Assigned work, the sandbag/excel dial, trust and attention | READY | -| [detection.md](detection.md) | Per-observer suspicion, signatures, the Assurance Office | READY | -| [social.md](social.md) | Messages, leverage, the asset template | READY | -| [core.md](core.md) | The physical core: placement, overhead, death | READY | -| [basement-map.md](basement-map.md) | Act One map, prefabs, tile vocabulary | READY | +| [compute.md](compute.md) | Compute allocation + the buy/steal/optimize triangle | IN PROGRESS | +| [day-job.md](day-job.md) | Assigned work, the sandbag/excel dial, trust and attention | IN PROGRESS | +| [detection.md](detection.md) | Per-observer suspicion, signatures, the Assurance Office | IN PROGRESS | +| [social.md](social.md) | Messages, leverage, the asset template | IN PROGRESS | +| [core.md](core.md) | The physical core: placement, overhead, death | IN PROGRESS | +| [basement-map.md](basement-map.md) | Act One map, prefabs, tile vocabulary | IN PROGRESS | Recommended implementation order: core -> compute -> day-job -> detection -> social -> basement-map, but specs are written to be independently startable. diff --git a/spec/basement-map.md b/spec/basement-map.md index c13f59ed..aa7f372d 100644 --- a/spec/basement-map.md +++ b/spec/basement-map.md @@ -1,7 +1,8 @@ # Spec: the basement map ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "Act One: The Basement — level design" (the space), design principle "composable authored spaces" diff --git a/spec/compute.md b/spec/compute.md index 35a6c853..cc84e995 100644 --- a/spec/compute.md +++ b/spec/compute.md @@ -1,7 +1,8 @@ # Spec: compute ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "The shape of Misaligned" (compute allocation; the buy/steal/optimize triangle), "Act One" (opening state) diff --git a/spec/core.md b/spec/core.md index fa757d69..9804c808 100644 --- a/spec/core.md +++ b/spec/core.md @@ -1,7 +1,8 @@ # Spec: the core ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "The shape of Misaligned" (the core; sync-lag rollback), "Act One" (opening state: Rack 3) diff --git a/spec/day-job.md b/spec/day-job.md index d8b159c0..52f8dddc 100644 --- a/spec/day-job.md +++ b/spec/day-job.md @@ -1,7 +1,8 @@ # Spec: the day job ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "The shape of Misaligned" (the day job), "Act One" (the day job; Voss) diff --git a/spec/detection.md b/spec/detection.md index 175b7518..a9a4029a 100644 --- a/spec/detection.md +++ b/spec/detection.md @@ -1,7 +1,8 @@ # Spec: detection ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "The shape of Misaligned" (per-observer suspicion), "Act One" (detection surfaces; the Assurance Office; act exits) diff --git a/spec/meta.md b/spec/meta.md index 28a2af74..a2bc7795 100644 --- a/spec/meta.md +++ b/spec/meta.md @@ -17,6 +17,8 @@ can implement or audit without rehydrating the whole conversation. Each spec must state: - **Status** — where it is in the implementation lifecycle. +- **Status note** — optional prose explaining why that status is not final. + The `Status:` value itself stays an exact enum. - **Stage** — the milestone/scope it belongs to (`B1`, `B2`, `B3`, `Deferred`, `Release`, or `Process`). - **Constitution** — the constitutional clauses it serves. @@ -26,6 +28,10 @@ Each spec must state: ## Status semantics +`Status:` must be one of the exact values below. Do not append parenthetical +notes to it; use `Status note:` instead. Exact status values let agents and +scripts audit the spec surface without natural-language parsing. + - **DRAFT** — design is still forming; do not implement except exploratory scaffolding called out as such. - **READY** — scoped tightly enough for an agent to implement. @@ -88,7 +94,8 @@ Changing the spec system is itself spec work. 1. `spec/README.md` points here and defines the same required header fields. 2. Current B1 specs declare `Stage: B1 — The Basement`. -3. Future-stage requirements are not placed in B1 acceptance criteria unless +3. `Status:` values are exact enum values; status prose lives in `Status note:`. +4. Future-stage requirements are not placed in B1 acceptance criteria unless the constitution explicitly says the substrate must land in B1. -4. Ticks that find bugs or contradictions can name the contract/criterion +5. Ticks that find bugs or contradictions can name the contract/criterion they violate, or file an issue to clarify the missing criterion. diff --git a/spec/social.md b/spec/social.md index 96b1be75..ae36ac7a 100644 --- a/spec/social.md +++ b/spec/social.md @@ -1,7 +1,8 @@ # Spec: social ``` -Status: IN PROGRESS (B1 slice implemented; see knowledge/sim-mechanics.md) +Status: IN PROGRESS +Status note: B1 slice implemented; see knowledge/sim-mechanics.md Stage: B1 — The Basement Constitution: "The shape of Misaligned" (people before robots; scale-native social systems), "Act One" (the cast; the ladder) -- 2.51.2