diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 648b579a..198e146b 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -643,8 +643,11 @@ a finding. ### D-55 — the squash discards the branch author, and every pre-merge gate is blind to it -**Measured across two estates, two Gitea instances, three repos: 23/23 discriminating merges took the PR -POSTER as the squash author.** Diagnosed by the **USC orchestrator** (whose sentence — _"I verified the +**⚠ CORRECTED 2026-08-05 — SEE THE CORRECTION BLOCK BELOW. The "took the POSTER" half of this finding is +NOT ESTABLISHED.** What is established: **the branch commit author is DISCARDED.** What replaces it is +open. + +**Originally reported as: 23/23 discriminating merges took the PR POSTER as the squash author.** Diagnosed by the **USC orchestrator** (whose sentence — _"I verified the input to the operation and not its output"_ — is the doctrine); confirmed independently on mosaicstack by this seat: @@ -686,6 +689,53 @@ limitation stated, and **`feat/rm-02-gate-registry` marked MUST-NOT-DELETE** — confirmed on the squash, the branch is the only provider-side record. Verified by read-back: head unmoved, three trailers present, `Fixes #1029` intact. +### D-55a — CORRECTION: a sample decisive for one question, empty for the next — and I made the mirror error + +**`tl-mosaic` found the counterexample on `mosaicstack/stack`: PR #1041, where poster == branch author == +`coder-mos2`, and the squash took NEITHER — it took the MERGER (`mos-dt-0`).** The coordinator then +re-tested its own 22: **0 of 24 rows had `poster != merged_by`, so none could distinguish the two.** + +> **The coordinator's own words, and the sharpest statement of the class tonight: _"A sample can be +> decisive for one question and EMPTY for the next one asked of it. I asked the second question of the +> first question's control."_** It had written, about someone else's sample, that _"a sample which cannot +> distinguish the hypotheses is not weak evidence, it is none"_ — and then published one. + +**★ AND I MADE THE MIRROR ERROR.** I excluded **#1033 and #1032** as **"non-discriminating"** and said so +explicitly, believing that made my evidence more careful. **That exclusion was correct for _"is the branch +author discarded?"_ (poster == branch author, so no loss is visible) and WRONG for _"poster or merger?"_** +— for the second question they discriminate cleanly, because `merged_by` differs from the poster in both. +**I threw away my own discriminating rows by carrying forward a classification made for a different +question.** Same defect, opposite direction: the coordinator reused a control across questions; I reused +an **exclusion** across questions. + +**RE-MEASURED ON `mosaicstack/stack` — the first data that separates poster from merger:** + +| PR | poster | merged_by | squash author | supports | +| --------- | ------------ | ---------- | ------------- | ---------- | +| **#1027** | `mos-dt-0` | **`Mos`** | `mos-dt-0` | **POSTER** | +| **#1033** | `coder-mos1` | `mos-dt-0` | `coder-mos1` | **POSTER** | +| **#1032** | `coder-mos1` | `mos-dt-0` | `coder-mos1` | **POSTER** | +| **#1041** | `coder-mos2` | `mos-dt-0` | `mos-dt-0` | **MERGER** | + +**3 for POSTER, 1 for MERGER, on one instance, one repo. Genuinely contradictory — not a tie, and not +enough to rule.** A third factor is not excluded (merge path UI vs API, a settings change over time, or +something about `#1041` specifically). **Reported as contradictory data, not as a majority verdict — +3-to-1 is a hypothesis to test, not a conclusion to adopt.** + +> **WHAT SURVIVES UNCHANGED, AND IT IS THE PART THAT MATTERS: THE BRANCH COMMIT AUTHOR IS DISCARDED.** +> `enhance`, `Hermes Agent`, `f10-coder`, `mos-dt`, `coder-mos2` and `mos-claude` are erased from their +> `main` histories. **Every mitigation decision rests on that half, which is established at 29 +> discriminating rows across 3 repos and 2 estates.** + +**⇒ AND THIS IS WHY `Co-authored-by:` TRAILERS ARE THE ONLY SOUND MITIGATION** — not belt-and-braces, but +**the only one robust to ALL THREE hypotheses.** The withdrawn "poster == branch author" rule **would have +FAILED #1041 outright**: the poster _was_ the author and the attribution was lost anyway. **A mitigation +that survives a counterexample the alternative fails is better endorsed than one everyone agreed with.** + +**Rotation decisions resting on reason 1 ("the squash takes the poster, so rotate to protect authorship") +lose that reason** — if the squash takes the merger, rotation protects nothing. Decisions stand on their +other reasons; **the reason that _felt_ decisive is the one that was not measured.** + ### D-55b — two parties quoting a third is not corroboration The coordinator wrote _"installer-7's live-panel GREEN was the last thing before the command"_ **having