From b413bf9f887d3b9e63b0fd638b39015ea9d20e2d Mon Sep 17 00:00:00 2001 From: mos-dt-0 Date: Sat, 1 Aug 2026 09:47:33 -0500 Subject: [PATCH] =?UTF-8?q?docs(remediation):=20D-38c=20=E2=80=94=20PR=20m?= =?UTF-8?q?etadata=20failed=20a=20THIRD=20time=20on=20#1033;=20delivery-is?= =?UTF-8?q?sue=20gap=20ruled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-gate NO-GO with every code and CI gate verified, including the --expect-commit machine-check it was told to exercise (9/9 JSON, exempted_steps 0, expected_commit == commit). The blocker was the body: only "Refs #1000", no "Closes #N", and Mosaic completion requires a linked issue closed. Third distinct metadata failure on one PR — missing commit binding, then a stale DO-NOT-MERGE body describing a dead head, now an incomplete link. Each time the code was fine and the metadata was unbound, stale, or incomplete. Nothing re-binds PR metadata to the head or checks it for completeness until a gate does, and by then it costs a round trip. The subtlety that makes it a real ruling: #1033 must NOT Closes #1000. The teardown defect stays open, and #1000 is the exemption's own retirement trigger — auto-closing it would delete the retirement trigger for the workaround being merged, turning a bounded exemption into a permanent one by side effect. Hence a delivery issue distinct from the defect issue: #1034, with Closes #1034 added and Refs #1000 kept. Metadata-only, head never moved: verified by read-back that head is still 57cae04f, Closes #1034 present, Refs #1000 present, Closes #1000 ABSENT, review 70 still CURRENT with zero live REQUEST_CHANGES, #1034 open. coder-mos1 stayed parked; nobody pushed. Process gap ruled by Mos: every remediation delivery PR needs a delivery issue to Close, created at OPEN-TIME rather than discovered at gate-time. #1032 already Closes #1019; #1033 had none. Both provider writes went through the tea->API fallback — the same path that silently dropped #1033's draft property at creation — so both were read back and verified by property, not by exit code. Co-Authored-By: Claude Opus 5 (1M context) --- docs/remediation/BOARD.md | 22 +++++++++++----------- docs/remediation/TASKS.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/docs/remediation/BOARD.md b/docs/remediation/BOARD.md index aeb0d9c4..b7aa292a 100644 --- a/docs/remediation/BOARD.md +++ b/docs/remediation/BOARD.md @@ -16,21 +16,21 @@ ## In-flight -| Task | Owner | State | -| ------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| RM-01 checkout | — | **MERGED** `f58b3699` (#1027) | -| RM-03 queue guard | **Jason** | **GO** @ `78ec47cd` (cmt 20392) — HELD FOR OWNER MERGE. Head unmoved; GO commit-bound, VOID if it moves — **do not push #1032** | -| RM-02 registry ★key | — | **BLOCKED on RM-61.** Complete @ `f9746b23`, head FROZEN, 2 live REQUEST_CHANGES. `ci-postgres` FAIL on #2187 **and** #2188 | -| RM-61 CI exemption | **MOS** | ★ **GATE-READY @ `57cae04f`** — review **70 APPROVED**, CI **#2194 9/9** incl `clone`, TS1–TS12 all PASS. **Mos assigns the gate + merges.** Head FROZEN | -| RM-59 / RM-60 | Jason (infra) | tracked deps; RM-60 option **B** | -| #1023 queue attempt | Jason | SUPERSEDED-PENDING-JASON — live REQUEST_CHANGES, do **not** merge | +| Task | Owner | State | +| ------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| RM-01 checkout | — | **MERGED** `f58b3699` (#1027) | +| RM-03 queue guard | **Jason** | **GO** @ `78ec47cd` (cmt 20392) — HELD FOR OWNER MERGE. Head unmoved; GO commit-bound, VOID if it moves — **do not push #1032** | +| RM-02 registry ★key | — | **BLOCKED on RM-61.** Complete @ `f9746b23`, head FROZEN, 2 live REQUEST_CHANGES. `ci-postgres` FAIL on #2187 **and** #2188 | +| RM-61 CI exemption | **MOS** | **NO-GO cleared @ `57cae04f`** — gate flagged missing `Closes`; delivery issue **#1034** filed + linked, head NEVER moved, review 70 still CURRENT. **Re-gate requested** | +| RM-59 / RM-60 | Jason (infra) | tracked deps; RM-60 option **B** | +| #1023 queue attempt | Jason | SUPERSEDED-PENDING-JASON — live REQUEST_CHANGES, do **not** merge | ### For the incoming orchestrator — read this before acting 1. **Nothing is waiting on you that is urgent.** RM-03 waits on Jason; RM-61 is gate-ready and waits on Mos; RM-02 unblocks once RM-61 merges. Read the record before touching any lane. -2. **`docs/remediation/TASKS.md` is authoritative**, not the newest voice in a chat. It holds 41 findings - (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-41 in TASKS.md), every ruling with its rationale, and the +2. **`docs/remediation/TASKS.md` is authoritative**, not the newest voice in a chat. It holds 42 findings + (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-41 + D-38c in TASKS.md), every ruling with its rationale, and the requirements each finding placed on RM-02/RM-34/RM-50/RM-55. 3. **`MISSION.md` carries five first-class principles**, all earned by live failures — observe the property not the proxy · pre-registration prevents retrofitting and nothing else · never ship an @@ -91,7 +91,7 @@ board is one of the six stale restatements below. ## Decisions log — full record in [`TASKS.md`](./TASKS.md) -All 41 findings (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-41 in `TASKS.md`) and every ruling with its +All 42 findings (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-41 + D-38c in `TASKS.md`) and every ruling with its rationale live there. **Not duplicated here** — a second copy is a second thing to go stale, which this board had done three times in one night (gate list, capability registry, DECISION-1 status), and three more times by the next rotation seam (RM-61 "building", "nothing implemented yet", DECISION-1/2/3 diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 9ae5a1c1..712b674b 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -500,6 +500,40 @@ holds the head.** `coder-mos1` was RIGHT to want it fixed and WRONG to try to se right again immediately after, ACKing the hold and volunteering unprompted that it held an unpushed local commit. That disclosure is the behaviour to reinforce. +### D-38c — PR metadata failed a THIRD time on the same PR, and the process gap behind it + +The merge-gate returned **NO-GO on `#1033`** with every code and CI gate verified — including the +machine-check Mos ordered it to exercise (`--expect-commit` at the gate: 9/9 JSON, `exempted_steps 0`, +`expected_commit == commit`). The blocker was the body: **only `Refs #1000`, no `Closes #N`.** Mosaic +completion requires a linked issue/task CLOSED, and the merge-gate mandate enforces it. + +**Third distinct metadata failure on one PR:** (1) the missing commit binding, (2) the stale +"DO NOT MERGE" body describing a dead head, (3) this. Each time the code was fine and the **metadata was +unbound, stale, or incomplete.** PR metadata is **state**, and nothing re-binds it to the head or checks +it for completeness until a gate does — at which point it costs a gate round trip. + +**★ The subtlety that made this a real ruling, not a formality: `#1033` must NOT `Closes #1000`.** The +teardown **defect stays open** — the exemption is a bounded workaround, and `#1000` is both the tracked +provider-seam closure and the exemption's **retirement trigger**. Auto-closing it would have deleted the +retirement trigger for the very workaround being merged, converting a bounded exemption into a permanent +one by side effect. So a delivery issue was needed that is **not** the defect issue. + +**Fix applied (metadata-only, head never moved):** delivery issue **#1034** created ("RM-61: CI-contract +exemption for the #1000 ci-postgres teardown artifact, signature-scoped + discrimination-proven"), +`Closes #1034` added to `#1033`'s body, `Refs #1000` kept. Verified by read-back: head still +`57cae04f`, `Closes #1034` present, `Refs #1000` present, **`Closes #1000` absent**, review 70 still +CURRENT with zero live `REQUEST_CHANGES`, `#1034` open. + +> **★ PROCESS GAP — RULED (Mos, 2026-08-01): every remediation delivery PR needs a delivery issue to +> `Close`, created at OPEN-TIME, not discovered at GATE-TIME.** `#1032` already `Closes #1019`; `#1033` +> had none. Finding this at the gate costs a full re-assignment round trip for a body edit. Add to the +> PR-open checklist alongside the pre-registered ACs. + +**Wrapper note (D-12 recurring, watched for):** both the issue create and the body edit ran through the +`tea` → Gitea-API **fallback** ("Tea authenticated-user validation failed"). That fallback is exactly +what silently dropped `#1033`'s `draft` property at creation (handoff gotcha #6). Both writes were +therefore **read back and verified by property**, not accepted on their exit codes. + ### D-38 — a gate that certified the right RECORD for the wrong COMMIT (and the AC set that could not see it) **RM-61's terminal-green verifier reported the pipeline's commit and never bound it to the PR head.**