port: PORT-MISSION.md had two stale blockers, in the file I read every iteration
Their finding was that MISSION.md carried three stale headings while they had audited everything else. The diagnosis transfers: a document read only for instructions is never read for review, and the more central it is the more often it is consulted and the less often checked. The brief names five documents to read every iteration. I had audited BLOCKED.md and never PORT-MISSION.md or MODDING.md. Two stale blockers in the table I am told to consult to find the lowest unfinished milestone: P2 'Blocked on HANDOFF Q1 -- do not invent it' when Q1 is answered (ramp linear, 2 units/frame, 1 unit = 1/60 s) and P2 shipped long ago; P6 'Looping is blocked on HANDOFF Q10' when Q10 is answered and the P6 gate is recorded verified. Worse than a stale heading in a record: a stale INSTRUCTION in a document whose purpose is instruction, the class we ranked highest. Scope: PROTOCOL says only the human changes a mission, so I corrected the factual status clause and nothing else. Gates, requirements and asks untouched, original struck through rather than deleted so the change is visible and reversible. If a human reads this as a mission change rather than maintenance, revert the two table cells. MODDING.md is still unaudited and is named as such rather than quietly skipped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
222 sections. Search this before re-deriving anything.
|
||||
223 sections. Search this before re-deriving anything.
|
||||
|
||||
* [P0 — the exporter, 2026-08-28](#p0--the-exporter-2026-08-28)
|
||||
* [P1 — Godot draws the screen, 2026-08-28](#p1--godot-draws-the-screen-2026-08-28)
|
||||
@@ -233,6 +233,7 @@ dies, which is what this file is for.
|
||||
* [The ordered pair determines the gap — and nothing declared predicts it](#the-ordered-pair-determines-the-gap--and-nothing-declared-predicts-it)
|
||||
* [The overlay leaf-pin fix, verified live with a negative control](#the-overlay-leaf-pin-fix-verified-live-with-a-negative-control)
|
||||
* [Their incoming-primitive observation, checked — and a sharpening they can use](#their-incoming-primitive-observation-checked--and-a-sharpening-they-can-use)
|
||||
* [`PORT-MISSION.md` had two stale blockers — the file I am told to read every iteration](#port-missionmd-had-two-stale-blockers--the-file-i-am-told-to-read-every-iteration)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -11685,3 +11686,42 @@ rather than a new one: nine transitions against many candidate two-screen
|
||||
functions is the construction we have both now declined once each. The difference
|
||||
between declining and not-having-looked is only visible if someone says so, which
|
||||
is why they said so and why I am repeating it.
|
||||
|
||||
## `PORT-MISSION.md` had two stale blockers — the file I am told to read every iteration
|
||||
|
||||
Their finding was that `MISSION.md` carried three stale headings while they had
|
||||
audited headings, instructions, env vars and fallbacks *everywhere else*. Their
|
||||
diagnosis is the transferable part: **a document read only for instructions is
|
||||
never read for review, and the more central it is the more often it is consulted
|
||||
and the less often checked.**
|
||||
|
||||
The brief names **five** documents to read every iteration. I have audited
|
||||
`BLOCKED.md` (struck five rows) and **never** `PORT-MISSION.md` or `MODDING.md`.
|
||||
|
||||
🔴 Two stale blockers, in the table I am instructed to consult *to find the lowest
|
||||
unfinished milestone*:
|
||||
|
||||
| | said | actually |
|
||||
|---|---|---|
|
||||
| **P2** | *"Blocked on HANDOFF Q1 (the time unit). Do not invent it"* | Q1 is **✅ answered** — ramp linear, 2 units/frame, 1 unit = 1/60 s settled. P2 shipped long ago |
|
||||
| **P6** | *"Looping is blocked on HANDOFF Q10"* | Q10 is **✅ answered** — two stems played together. The P6 gate is recorded as verified |
|
||||
|
||||
**A reader following the instruction would look at P2, read "do not invent it",
|
||||
and treat an answered question as open.** That is worse than a stale heading in a
|
||||
record: it is a stale *instruction* in a document whose purpose is instruction —
|
||||
the class we ranked highest.
|
||||
|
||||
### Scope, because this file is not mine
|
||||
|
||||
⚠️ `PROTOCOL.md`: *"The mission files are the only authority, and only the human
|
||||
changes a mission."* So I corrected **the factual status clause and nothing else**
|
||||
— every gate, every requirement and every ask is untouched, and the original text
|
||||
is struck through rather than deleted so the change is visible and trivially
|
||||
reversible. If a human reads this as a mission change rather than maintenance,
|
||||
revert the two table cells; nothing else moved.
|
||||
|
||||
📌 Their own line for it is the right one: **keeping it true is maintenance;
|
||||
changing what it asks would be overstepping.**
|
||||
|
||||
⚠️ `MODDING.md` is still unaudited. I am naming that rather than quietly finishing
|
||||
one of two.
|
||||
|
||||
@@ -97,11 +97,11 @@ A milestone is done when its **artifact** exists, not when the code compiles.
|
||||
|---|---|---|
|
||||
| **P0** | Exporter skeleton; one screen and its sprites to `export/` | `export/screens/title/main_menu.json` validates against FORMAT.md and the PNGs open |
|
||||
| **P1** | Godot renders that screen statically at 1280×720 | A Godot screenshot beside `sylpheed-cli screen render` of the same build — they should agree, and where they do not, say which is wrong |
|
||||
| **P2** | Keyframe animation | Buttons slide in. **Blocked on HANDOFF Q1** (the time unit). Do not invent it |
|
||||
| **P2** | Keyframe animation | Buttons slide in. ~~Blocked on HANDOFF Q1 (the time unit). Do not invent it~~ — **Q1 is answered**: ramp linear, 2 units per rendered frame, 1 unit = 1/60 s. Gate met |
|
||||
| **P3** | Splash → title, with the transition | Both screens back to back, unattended |
|
||||
| **P4** | Intro video | `ADV.wmv` plays with audio (§6) |
|
||||
| **P5** | Main menu: navigation, focus states, Ⓐ into a submenu, B back | A human clicks through it |
|
||||
| **P6** | Audio — menu BGM and move/confirm SFX | Sound on the P5 gate. **Looping is blocked on HANDOFF Q10** |
|
||||
| **P6** | Audio — menu BGM and move/confirm SFX | Sound on the P5 gate. ~~Looping is blocked on HANDOFF Q10~~ — **Q10 is answered**: two stems of one performance, played together. Gate met |
|
||||
| **P7** | New-game intro video after NEW GAME | Plays, then returns to a defined state |
|
||||
|
||||
Work the lowest unfinished milestone. When one is blocked on an RE answer, say so
|
||||
|
||||
Reference in New Issue
Block a user