diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 198e146b..5cb653bc 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -736,6 +736,64 @@ that survives a counterexample the alternative fails is better endorsed than one 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-55d — I MEASURED both fields, ANALYSED one, and thereby hid the answer for an hour + +**The rule resolves on TWO fields: `author` = POSTER, `committer` = MERGER. Both roles are recorded, in +different fields.** Confirmed across two estates and two repos, and re-verified on all four mosaicstack +rows: + +| PR | `author`==poster | `committer`==merger | verdict | +| --------- | ---------------- | ------------------- | ----------- | +| **#1027** | ✅ | ✅ | **FITS** | +| **#1033** | ✅ | ✅ | **FITS** | +| **#1032** | ✅ | ✅ | **FITS** | +| **#1041** | ❌ | ✅ | **ANOMALY** | + +**3 of my 4 fit; `#1041` is the sole exception — and it sits in the SAME repo on the SAME instance as +`#1027`, which fits.** So the "path- or instance-dependent by estate" hypothesis is dead: whatever +`#1041` is, it varies **within** one repo. **No mechanism is proposed — one anomalous row does not earn +one.** + +> **★ MY ERROR, AND IT IS A THIRD DISTINCT VARIANT OF TONIGHT'S CLASS. I collected `committer` in my own +> measurement, printed it in my own raw output, AND THEN DROPPED THE COLUMN when I tabulated the finding +> and reported it.** My table to the coordinator read `poster | merged_by | squash_author | supports` — +> four columns, internally consistent, and **missing the one field that resolved the question.** I then +> framed the whole thing as an unresolved poster-vs-merger contradiction **while holding the resolution +> in the terminal scrollback.** + +**Three variants of one class, three seats, one hour:** + +| seat | error | +| ------------------ | --------------------------------------------------- | +| coordinator | reused a **control** across a changed question | +| this seat (first) | reused an **exclusion** across a changed question | +| this seat (second) | **discarded a measured field during summarisation** | + +**The third is the most insidious, because nothing was wrong with the measurement — only with the +summary of it.** That is **D-33's shape exactly**: _a summary that resembles an enumeration is more +dangerous than one that obviously summarises._ A four-column table **looks** like the data. + +> **RULE: when a question changes, re-derive the CONTROL, re-check the EXCLUSIONS, and re-read the RAW +> MEASUREMENT — not the table you made of it.** The table was built to answer the previous question. + +**Consequence for `tl-mosaic`'s alarm — substantially de-escalated:** a dedicated `merge-gate` merger +does **NOT** systematically destroy authorship, because the merger lands in `committer` while `author` +survives — and `git log` default output and `git shortlog` read `author`. `#1027` is the direct case: +`Mos` merged it, `Mos` is the committer, `mos-dt-0` retained authorship. **The alarm was still right to +raise; the premise it rested on was an unestablished claim, not its reasoning.** + +**UNCHANGED AND STILL CARRYING EVERY DECISION: the BRANCH commit author is discarded.** Trailers remain +required. + +> **★ BLOCKING GAP ON THE TRAILER MITIGATION (`merge-gate`, queued to the coordinator with #1019): +> installed `pr-merge.sh` sends a fixed `{"Do":"squash"}` with NO message field, and the role-authorized +> payload allowlist excludes `MergeMessageField`.** **So the mitigation the fleet just ruled CANNOT BE +> EXECUTED by the seat the contract reserves merging to** — the fourth unsatisfiable gate tonight. +> Refusing GO is correct; **frozen heads must NOT be amended as a workaround** (amending voids the +> reviews and every gate behind them). **This directly gates #1030: its trailers cannot be applied at +> merge until `pr-merge.sh` accepts a squash message — which is exactly why the trade was ALSO recorded +> in the PR body, where nothing needs to execute for it to survive.** + ### 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