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)