docs(remediation): bank D-33 — the full-step-scan tool prunes a step in default output
coder-mos1 scanned pipeline #2186 with -f json and found 9/9 child steps; my scan of the same pipeline in the wrapper's default text mode showed 8. Verified: text mode omits clone (JSON shows the ci workflow entry, clone, and the 8 visible ones). Every full step scan performed tonight enumerated 8 of 9 real child steps and reported it as complete. clone succeeded throughout so no verdict changes — but the method was incomplete and its user did not know. The merge-gate mandate requires a FULL step scan and requires verdicts to enumerate the step count. A verdict citing 8 where 9 exist is non-conforming evidence, and a gate using this wrapper's default output would produce exactly that while believing it complied. The shape is the session's thesis aimed at the detection tool: the doc says read the artifact not the summary, and text mode IS a summary that looks like an artifact. Compare D-24 — mergeable was a true answer to a different question; this is a true answer to a smaller one. Caught only because two observers' counts disagreed; neither alone would have found it. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
eddf718a5c
commit
73a313301b
@@ -221,6 +221,41 @@ reviewer, and no other seat holds mosaicstack write. Flagged to the coordinator
|
||||
busy lane. Not blocking today — RM-02's code blockers are independently disqualifying — but the next
|
||||
otherwise-clean PR meets this.
|
||||
|
||||
### D-33 — the tool used for "full step scans" silently prunes a step in its default output
|
||||
|
||||
`coder-mos1` reported a **9/9** child-step scan of pipeline #2186 using `-f json`. My scan of the same
|
||||
pipeline, using the same wrapper in its **default text mode**, showed **8**. Verified:
|
||||
|
||||
| mode | steps enumerated |
|
||||
| -------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `pipeline-status.sh -n 2186` (text, default) | **8** — begins at `ci-postgres` |
|
||||
| `pipeline-status.sh -n 2186 -f json` | **10** — the `ci` workflow entry, **`clone`**, plus those 8 |
|
||||
|
||||
**The default output omits `clone`.** Every "full step scan" performed tonight — RM-01, RM-02 across four
|
||||
pipelines, RM-03 — enumerated **8 of 9 real child steps**, and reported that as complete. `clone`
|
||||
succeeded in every case, so **no verdict changes**; the _method_ was incomplete and its user did not know.
|
||||
|
||||
**Why this is more than a cosmetic gap.** The merge-gate mandate requires CI verified _"by a **full step
|
||||
scan** — a `tests-complete` step is a pruning-tell, never a completion-tell"_, and requires every verdict
|
||||
to enumerate _"pipeline id + the step-scan result (step count, any SKIPs…)"_. **A verdict citing 8 steps
|
||||
where 9 exist is non-conforming evidence** — and if the gate uses this wrapper's default output, it will
|
||||
produce exactly that while believing it complied.
|
||||
|
||||
**The shape is the session's own thesis, aimed at the tool built to detect it.** The doc's instruction is
|
||||
literally _"read the artifact, not the summary."_ The text mode **is** a summary. It looks like an
|
||||
artifact — a labelled list of named steps with states — which is precisely why nobody checked it against
|
||||
the raw record. **A summary that resembles an enumeration is more dangerous than one that obviously
|
||||
summarises.** Compare D-24: `mergeable` was a _true answer to a different question_; here the step list is
|
||||
a _true answer to a smaller question_.
|
||||
|
||||
Caught only because a seat used `-f json` and its count disagreed with mine. **A disagreement between two
|
||||
observers surfaced it; neither observer alone would have.**
|
||||
|
||||
**Requirements.** RM-02 registers a case asserting the scan enumerates the **full** child-step set
|
||||
(compare text-mode count against the JSON record, must-fail on divergence). The merge-gate must scan from
|
||||
the **JSON/API record**, never the text summary, and state the step count it saw. The wrapper's default
|
||||
output should either include `clone` or **stop presenting itself as a complete step list**.
|
||||
|
||||
### D-32 — the repaired gate shipped with a documented switch to skip it
|
||||
|
||||
`rev-974` blocked RM-03 (PR #1032) on a single finding, and it is the one that mattered:
|
||||
|
||||
Reference in New Issue
Block a user