diff --git a/design/state/work/142.md b/design/state/work/142.md index c811b96..3c3e20b 100644 --- a/design/state/work/142.md +++ b/design/state/work/142.md @@ -1,7 +1,7 @@ # work/142 Issue: 142 Title: World-graph: demolished guests always route to exits[0], not nearest exit -State: OPEN +State: CLOSED Rank: 142 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/145.md b/design/state/work/145.md index 5c147c9..82c28d8 100644 --- a/design/state/work/145.md +++ b/design/state/work/145.md @@ -1,7 +1,7 @@ # work/145 Issue: 145 Title: World-graph: scenery placement has no rotation/bounds validation (unlike buildings) -State: OPEN +State: CLOSED Rank: 145 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/146.md b/design/state/work/146.md index bcf908b..eb9252c 100644 --- a/design/state/work/146.md +++ b/design/state/work/146.md @@ -1,7 +1,7 @@ # work/146 Issue: 146 Title: World-graph: staff assignment emits both StateChanges unconditionally, even when unchanged -State: OPEN +State: CLOSED Rank: 146 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/168.md b/design/state/work/168.md index 9208100..0cb5bc0 100644 --- a/design/state/work/168.md +++ b/design/state/work/168.md @@ -1,7 +1,7 @@ # work/168 Issue: 168 Title: Design a defensive-cloning strategy for the Kind.project seam -State: OPEN +State: CLOSED Rank: 168 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/180.md b/design/state/work/180.md index 8adddd7..35881db 100644 --- a/design/state/work/180.md +++ b/design/state/work/180.md @@ -1,7 +1,7 @@ # work/180 Issue: 180 Title: site/ declares five ESLint packages it never runs -State: OPEN +State: CLOSED Rank: 180 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/195.md b/design/state/work/195.md index c73547f..5dc2078 100644 --- a/design/state/work/195.md +++ b/design/state/work/195.md @@ -1,7 +1,7 @@ # work/195 Issue: 195 Title: Enforce StatusEffect.stacking (refresh replaces, resets expiry) when an effect is applied -State: OPEN +State: CLOSED Rank: 195 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/203.md b/design/state/work/203.md index f3f7a98..b4b454c 100644 --- a/design/state/work/203.md +++ b/design/state/work/203.md @@ -1,7 +1,7 @@ # work/203 Issue: 203 Title: CI: cache Alpine chromium install in Verify Documentation Build -State: OPEN +State: CLOSED Rank: milestone/3 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/211.md b/design/state/work/211.md index c6d6d65..562097b 100644 --- a/design/state/work/211.md +++ b/design/state/work/211.md @@ -1,7 +1,7 @@ # work/211 Issue: 211 Title: Assert per-kind regression evidence exists, so deleting a test class fails the build -State: OPEN +State: CLOSED Rank: milestone/2 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/212.md b/design/state/work/212.md index 431fcbe..f3c37f0 100644 --- a/design/state/work/212.md +++ b/design/state/work/212.md @@ -1,7 +1,7 @@ # work/212 Issue: 212 Title: Vision doc says "two kinds ship in v1"; the repository ships three -State: OPEN +State: CLOSED Rank: milestone/1 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/214.md b/design/state/work/214.md index c4be122..cf906a6 100644 --- a/design/state/work/214.md +++ b/design/state/work/214.md @@ -1,7 +1,7 @@ # work/214 Issue: 214 Title: Slice ledger checkboxes drifted from delivery reality: W50/W51/W66 unticked, W41–W49 not headings -State: OPEN +State: CLOSED Rank: milestone/1 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/217.md b/design/state/work/217.md index dedabac..e72d9c4 100644 --- a/design/state/work/217.md +++ b/design/state/work/217.md @@ -1,7 +1,7 @@ # work/217 Issue: 217 Title: docs-deploy.yml never received the Playwright/Chromium fix docs-ci.yml's verify job got; last three deploys failed -State: OPEN +State: CLOSED Rank: milestone/3 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/218.md b/design/state/work/218.md index 444b8d9..99a366c 100644 --- a/design/state/work/218.md +++ b/design/state/work/218.md @@ -1,7 +1,7 @@ # work/218 Issue: 218 Title: Envelope-duplication has recurred five times with no mechanical guard; add one -State: OPEN +State: CLOSED Rank: milestone/4 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/219.md b/design/state/work/219.md index 276b819..ca2bc8a 100644 --- a/design/state/work/219.md +++ b/design/state/work/219.md @@ -1,7 +1,7 @@ # work/219 Issue: 219 Title: design/ has no customer, competitive analysis, or monetization path — the commercial thesis is entirely unrecorded -State: OPEN +State: CLOSED Rank: milestone/5 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/245.md b/design/state/work/245.md index 27b1463..f37be1a 100644 --- a/design/state/work/245.md +++ b/design/state/work/245.md @@ -1,7 +1,7 @@ # work/245 Issue: 245 Title: Nothing checks emitted → registered for reason codes, and hand-auditing has now failed twice -State: OPEN +State: CLOSED Rank: 18 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/350.md b/design/state/work/350.md index acfecb7..6abfc38 100644 --- a/design/state/work/350.md +++ b/design/state/work/350.md @@ -1,7 +1,7 @@ # work/350 Issue: 350 Title: design/20-contract.md: audit codes table missing building_broken (W83) -State: OPEN +State: CLOSED Rank: 350 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 -Criteria: +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 +Criteria: diff --git a/design/state/work/393.md b/design/state/work/393.md index 8a421b8..0e1836d 100644 --- a/design/state/work/393.md +++ b/design/state/work/393.md @@ -1,7 +1,7 @@ # work/393 Issue: 393 Title: W105 — Documentation and Landing Publication Review -State: OPEN +State: CLOSED Rank: milestone/6 -MirroredAt: f0735fc59fcfd879911771fefdeb1f41cc90f252 +MirroredAt: 9439b99a2c9f2d2263a0c2ce03c0b73a3b883180 Criteria: W105.1, W105.2, W105.3, W105.4, W105.5, W105.6, W105.7 diff --git a/design/state/work/index.md b/design/state/work/index.md new file mode 100644 index 0000000..5394279 --- /dev/null +++ b/design/state/work/index.md @@ -0,0 +1,101 @@ +# Frozen inventory of open engine issues — W106.1 + +Frozen at commit `9439b99a2c9f2d2263a0c2ce03c0b73a3b883180`, 2026-09-07. Regenerated by re-running +this unit's closure pass against the tracker; not auto-updated by `tools/Update-WorkMirror.ps1` +(that script owns the per-issue `design/state/work/.md` records, not this index). + +Every open engine issue at freeze time, its disposition, and where the evidence lives. An issue +closed during this pass (W106.2) is listed under **Closed this run** with the commit that actually +resolved it — none of that work was newly done here, it was found already merged and undocumented +as closed. + +## Open — owning a W criterion (programme, in flight) + +| # | Title | Criterion | Status | +|---|---|---|---| +| [394](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/394) | W106 — Tracker Evidence Closure | W106 | This unit | +| [395](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/395) | W107 — 0.11 Release Candidate Verification | W107 | Blocked on W106 | +| [396](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/396) | W108 — Publish 0.11 Readiness | W108 | Blocked on W107 | + +## Open — standing exemption record (non-programme, deliberately open) + +| # | Title | Disposition | +|---|---|---| +| [413](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/413) | 48 slices predate the issue-per-slice convention | Its own text says "left open rather than closed" — it is the standing exemption `/track` must recognise for W0–W40, W61, W63–65, W90–92 (W106.5). Closing it would make the exemption harder to find. No change made. | + +## Open — design-state tool incompatibility (owning issue, explicit unavailable result — W106.7) + +| # | Title | Current reproduction | +|---|---|---| +| [375](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/375) | Test-DesignState.ps1 findings against this repository's own tree | Re-run 2026-09-07 at this commit: `pwsh tools/Test-DesignState.ps1` reports `Findings (0)`, `Reported (0)`, `Could not evaluate (2)`: `[ContractListUnreadable] SectionNotFound: design/20-contract.md` and `[StateSetAbsent] design/state/ is missing or holds no records other than WorkRef mirrors`, exit code 2. `Test-DesignState.Tests.ps1` (133 passed/0 failed/29 skipped) and `Read-DesignState.Tests.ps1` (10 passed/0 failed/2 skipped) both pass in full against fixtures. The finding set has narrowed since the issue's original 9-failure `-DryRun` reproduction, but `ContractListUnreadable` still fires and is not reported as a pass — the explicit-unavailable result W106.7 requires. Left open; not this unit's to fix (design-state adoption beyond WorkRef mirrors is out of this repository's current scope). | + +## Open — non-programme backlog (design gaps, deferred features, code findings; unrelated to W93–W108) + +| # | Title | +|---|---| +| [425](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/425) | WorldState.npcs/locations declared but permanently unpopulated | +| [418](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/418) | Conditions cannot address an actor-owned array by id | +| [371](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/371) | A kind's event severities are literals at each emit call | +| [364](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/364) | Mirror the simulation-kind lifecycles once GameOfLife S7 lands | +| [300](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/300) | Campaign sources here are fixtures now, but nothing says so | +| [293](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/293) | A session belongs to exactly one campaign — no cross-campaign bridge semantics | +| [292](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/292) | Content packs compose at campaign granularity, not node granularity | +| [287](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/287) | `CampaignSummary` carries only `titleKey`, no session-free resolution | +| [282](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/282) | `Kind.outcome` has no cross-kind-legible shape | +| [281](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/281) | `SessionStore` has no concept of a caller | +| [280](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/280) | Reproducing a stored session's blob requires pinning `IdSource.newGameId` | +| [279](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/279) | `listCampaigns()` is synchronous | +| [278](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/278) | `VisibleStat` omits the declared range | +| [277](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/277) | No per-player save query | +| [276](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/276) | `SaveRecordStore.delete` has no caller anywhere | +| [275](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/275) | `wisdom` attribute has no consumer | +| [270](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/270) | Extract a shared SystemPipeline substrate | +| [267](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/267) | Provisional simulation-kind numbers need a balancing pass | +| [266](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/266) | Forking a session at an earlier point should be a store operation | +| [237](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/237) | `validateUnreachableItems` predates `shop` — partially fixed (`shopReachable` check exists in `validate.ts`), but the two-direction regression test and the `stable-life-possessions` no-Tier-2-warnings assertion this issue's Done-when names were not found; left open | +| [234](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/234) | Spike: generic scene-presentation layer — explicitly not engine work (W106.4: stays open/blocked, `SubZeroDev.Presentation` still doesn't exist) | +| [229](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/229) | `resolveApplications` doesn't decrement `positionsAvailable` — deferred pending a rival/scarcity model | +| [226](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/226) | `SaveRecordStore.delete()` TOCTOU race — deferred, unreachable today | +| [225](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/225) | Migrate pre-resume orphaned local saves | +| [216](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/216) | world-graph: 21 source modules with no adjacent test file | +| [215](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/215) | Batch invariance tested at exactly one data point | +| [213](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/213) | Dead references to `bulgaria-bureaucracy.determinism.test.ts` | + +None of these 27 own a W93–W108 criterion or a recorded canonical decision; each remains exactly as +open as it was before this unit. Fixing, deferring further, or re-triaging any of them is out of +this unit's scope (`design/30-slices.md` § W106, *Out of scope*). + +## Closed this run (W106.2/W106.3) — found already implemented or answered, not new work + +| # | Title | Resolved by | Reason | +|---|---|---|---| +| [212](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/212) | Vision doc said "two kinds ship in v1" | `d3f634c` | `design/00-brief.md`/`CLAUDE.md` already say three kinds | +| [214](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/214) | Slice ledger checkboxes drifted (W50/W51/W66, W41–W49) | `a680d0e` (PR #243) | All now `### [x]` headings | +| [168](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/168) | Defensive-cloning strategy for `Kind.project` | `b9ecdc2` (W97, PR #409) | `copyProjection`/`structuredClone` at the `Engine.view()`/`scene()` boundary, tested by `projection-copy.test.ts` | +| [195](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/195) | `StatusEffect.stacking` not enforced at insertion | `b42c521` (W95, PR #403) | `insertStatusEffect` in `modifiers.ts`, tested for refresh/stack/different-source | +| [211](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/211) | No assertion that per-kind regression evidence exists | `bb62ffe` (W96.2, PR #408) | `regressionManifest.test.ts` | +| [218](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/218) | No mechanical envelope-duplication guard | `bb62ffe` (W96.3, PR #408) | `ownershipGuard.test.ts` | +| [245](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/245) | No emitted→registered check for reason codes | `bb62ffe` (W96.4, PR #408) | `reasonCompletenessGuard.test.ts` | +| [142](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/142) | world-graph: demolished guests always route to `exits[0]` | verified against `main` | `nearestReachableExit` uses pathfinding | +| [145](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/145) | world-graph: scenery placement has no bounds validation | `f0735fc` (W93, PR #398) | `checkSceneryPlacement` now applied | +| [146](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/146) | world-graph: staff assignment emits both StateChanges unconditionally | `f0735fc` (W93, PR #398) | Conditional `buildingChanged`/`zoneChanged` emission | +| [180](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/180) | `site/` declared five unused ESLint packages | `d3f634c` | Removed; `oxlint` is the only linter | +| [203](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/203) | Alpine chromium install uncached in Verify Documentation Build | `d3f634c` | `actions/cache@v4` keyed `alpine-chromium-*` in `docs-ci.yml` | +| [217](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/217) | `docs-deploy.yml` never received the chromium fix | `a86c59c` (PR #221) | Same `apk add chromium` fix ported | +| [350](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/350) | Audit codes table missing `building_broken` | `04c1baf` (W83, PR #348) | Table now lists it | +| [219](https://github.com/The-Running-Dev/SubZeroDev.GameEngine/issues/219) | No customer/monetization thesis recorded | `9439b99` (W105, PR #455) | `design/90-decisions.md` §2 records the deferral, owner, and revisit trigger | + +## Method + +Every open issue as of this freeze was read in full and checked against the current tree (grep for +the named symbols/files, `git log -S` for the introducing commit) or against +`design/90-decisions.md` for a canonical decision. An issue was closed only when every Done-when box +or every "Ask" bullet was independently confirmed true against current `main` — not from the issue's +own claims. Issues with only partial evidence (e.g. #237) were left open with the gap noted rather +than closed on partial credit. + +Closed engine issues (W93–W105 range and earlier) were spot-checked via `tools/Test-DesignDrift.ps1` +(reports "No drift" — 61 slices compared, 0 findings, 0 could-not-evaluate) rather than individually +re-read; a full manual re-audit of every closed issue's evidence was judged disproportionate to this +unit's scope and is not what W106.2 asks for (it governs closing *open* issues, not re-litigating +closed ones).