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:
Sylpheed port agent
2026-08-30 19:18:23 +00:00
parent 9934aa48b7
commit b16d98ec41
2 changed files with 43 additions and 3 deletions

View File

@@ -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.

View File

@@ -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