First review-sized #1099 tranche: runtime and general shell paths. Runtime wake tools are included; only wake test/validation harnesses are deferred.
removes 26 load-bearing early-consumer pipelines across 15 source scripts using complete capture, redirection, direct selectors, arrays, or mapfile
makes tools/install.sh reject zero or multiple archive roots through its named diagnostic instead of aborting on SIGPIPE before the handler
adds an unconditional checkout test with a checked-in 26-site baseline fixture that is passed through the production scanner and preserves explicit accepted-site inventory
records each fixed and explicitly withdrawn/non-load-bearing site in docs/reports/quality/1099-pipefail-sweep.md
This is a class sweep, not a claim that all 26 sites were demonstrated runtime failures. No payload-size or stage-count safety inference is used.
review 143 blockers: help-probe truth table and non-Git board-history behavior reproduced RED-first, then fixed; 26-site denominator mechanically anchored
Codex security review — no findings
Local full pnpm test reached 44/46 successful tasks, then failed three unrelated packages/mosaic/src/cli-smoke.spec.ts assertions because the host emitted an update-available banner on stderr (0.0.48 -> 0.0.49). Wake shell suites fail closed at the pre-existing #973 host BASH_LINENO probe (exit 97) before subject tests. Neither gate was bypassed or re-rolled; PR CI is the canonical clean-environment result.
## Summary
First review-sized #1099 tranche: runtime and general shell paths. Runtime wake tools are included; only wake test/validation harnesses are deferred.
- removes 26 load-bearing early-consumer pipelines across 15 source scripts using complete capture, redirection, direct selectors, arrays, or `mapfile`
- makes `tools/install.sh` reject zero or multiple archive roots through its named diagnostic instead of aborting on SIGPIPE before the handler
- adds an unconditional checkout test with a checked-in 26-site baseline fixture that is passed through the production scanner and preserves explicit accepted-site inventory
- records each fixed and explicitly withdrawn/non-load-bearing site in `docs/reports/quality/1099-pipefail-sweep.md`
This is a class sweep, not a claim that all 26 sites were demonstrated runtime failures. No payload-size or stage-count safety inference is used.
Refs #1099
## Verification
- `node --test scripts/pipefail-early-exit.test.mjs` — PASS (RED-first: exact 26 target sites before implementation; baseline fixture count/uniqueness/scanner identity asserted)
- `pnpm typecheck` — 45/45 PASS
- `pnpm lint` — 25/25 PASS
- `pnpm format:check` — PASS
- changed-shell `bash -n` — PASS
- `test-mutate-push-guard.sh` — 8/8 PASS
- `test-send-message-verdict.sh` — 3/3 PASS
- `test-send-message-socket.sh` — PASS
- Codex code review — APPROVE, no findings
- review 143 blockers: help-probe truth table and non-Git board-history behavior reproduced RED-first, then fixed; 26-site denominator mechanically anchored
- Codex security review — no findings
Local full `pnpm test` reached 44/46 successful tasks, then failed three unrelated `packages/mosaic/src/cli-smoke.spec.ts` assertions because the host emitted an update-available banner on stderr (`0.0.48 -> 0.0.49`). Wake shell suites fail closed at the pre-existing #973 host `BASH_LINENO` probe (exit 97) before subject tests. Neither gate was bypassed or re-rolled; PR CI is the canonical clean-environment result.
REQUEST_CHANGES at exact head 16ea503b2df7f8717864276c8fa5d64f5b8da98b.
[BLOCKER] tools/e2e-install-test.sh:139 neutralizes a previously load-bearing command failure.
The old conditional skipped verification whenever mosaic gateway --help failed, even if its partial output contained verify, because pipefail preserved the command failure. The rewrite uses gateway_help="$(mosaic gateway --help 2>&1 || true)", discards that status, and then runs mosaic gateway verify if the failed help output happens to contain the word.
Executable truth table:
help rc=0, output contains verify: old=yes, new=yes
help rc=0, no verify: old=no, new=no
help rc=1, output contains verify: old=no, new=yes
Capture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER] scripts/analysis/reflect-board-history.sh:76 silently changes Git-error handling under set -e.
The old git log | grep -q lived in an if condition, so a Git failure was scored as “not detectable” and the script continued. The new unguarded history="$(git log ...)" exits before the grep. With an existing non-Git --data-dir containing one JSON file, the exact baseline script returns rc=0 and a JSON result (done_tasks=1); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.
[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names 26 unsafe source lines (indices 0–25), then passes on the branch. docs/reports/quality/1099-pipefail-sweep.md likewise contains 26 FIXED rows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.
Verified positives:
Structural control is unconditional: baseline rc=1 for the exact detected lines; branch rc=0; no skip path.
All 15 changed shell scripts pass bash -n.
test-mutate-push-guard.sh 8/8, send-message verdict 3/3, and socket test pass.
Scope question 4 is satisfied independently: all four demonstrably reachable sites are in this tranche.
install.sh:312 uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding || true.
Authenticated acting identity and provider head were re-derived immediately before posting.
REQUEST_CHANGES at exact head `16ea503b2df7f8717864276c8fa5d64f5b8da98b`.
[BLOCKER] `tools/e2e-install-test.sh:139` neutralizes a previously load-bearing command failure.
The old conditional skipped verification whenever `mosaic gateway --help` failed, even if its partial output contained `verify`, because `pipefail` preserved the command failure. The rewrite uses `gateway_help="$(mosaic gateway --help 2>&1 || true)"`, discards that status, and then runs `mosaic gateway verify` if the failed help output happens to contain the word.
Executable truth table:
- help rc=0, output contains `verify`: old=yes, new=yes
- help rc=0, no `verify`: old=no, new=no
- help rc=1, output contains `verify`: old=no, **new=yes**
Capture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER] `scripts/analysis/reflect-board-history.sh:76` silently changes Git-error handling under `set -e`.
The old `git log | grep -q` lived in an `if` condition, so a Git failure was scored as “not detectable” and the script continued. The new unguarded `history="$(git log ...)"` exits before the grep. With an existing non-Git `--data-dir` containing one JSON file, the exact baseline script returns rc=0 and a JSON result (`done_tasks=1`); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.
[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names **26** unsafe source lines (indices 0–25), then passes on the branch. `docs/reports/quality/1099-pipefail-sweep.md` likewise contains 26 `FIXED` rows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.
Verified positives:
- Structural control is unconditional: baseline rc=1 for the exact detected lines; branch rc=0; no skip path.
- All 15 changed shell scripts pass `bash -n`.
- `test-mutate-push-guard.sh` 8/8, send-message verdict 3/3, and socket test pass.
- Scope question 4 is satisfied independently: all four demonstrably reachable sites are in this tranche.
- `install.sh:312` uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding `|| true`.
Authenticated acting identity and provider head were re-derived immediately before posting.
REQUEST_CHANGES at exact head 16ea503b2df7f8717864276c8fa5d64f5b8da98b.
[BLOCKER] tools/e2e-install-test.sh:139 neutralizes a previously load-bearing command failure.
The old conditional skipped verification whenever mosaic gateway --help failed, even if its partial output contained verify, because pipefail preserved the command failure. The rewrite uses gateway_help="$(mosaic gateway --help 2>&1 || true)", discards that status, and then runs mosaic gateway verify if the failed help output happens to contain the word.
Executable truth table:
help rc=0, output contains verify: old=yes, new=yes
help rc=0, no verify: old=no, new=no
help rc=1, output contains verify: old=no, new=yes
Capture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER] scripts/analysis/reflect-board-history.sh:76 silently changes Git-error handling under set -e.
The old git log | grep -q lived in an if condition, so a Git failure was scored as “not detectable” and the script continued. The new unguarded history="$(git log ...)" exits before the grep. With an existing non-Git --data-dir containing one JSON file, the exact baseline script returns rc=0 and a JSON result (done_tasks=1); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.
[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names 26 unsafe source lines (indices 0–25), then passes on the branch. docs/reports/quality/1099-pipefail-sweep.md likewise contains 26 FIXED rows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.
Verified positives:
Structural control is unconditional: baseline rc=1 for the exact detected lines; branch rc=0; no skip path.
All 15 changed shell scripts pass bash -n.
test-mutate-push-guard.sh 8/8, send-message verdict 3/3, and socket test pass.
Scope question 4 is satisfied independently: all four demonstrably reachable sites are in this tranche.
install.sh:312 uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding || true.
Authenticated acting identity and provider head were re-derived immediately before posting.
REQUEST_CHANGES at exact head `16ea503b2df7f8717864276c8fa5d64f5b8da98b`.
[BLOCKER] `tools/e2e-install-test.sh:139` neutralizes a previously load-bearing command failure.
The old conditional skipped verification whenever `mosaic gateway --help` failed, even if its partial output contained `verify`, because `pipefail` preserved the command failure. The rewrite uses `gateway_help="$(mosaic gateway --help 2>&1 || true)"`, discards that status, and then runs `mosaic gateway verify` if the failed help output happens to contain the word.
Executable truth table:
- help rc=0, output contains `verify`: old=yes, new=yes
- help rc=0, no `verify`: old=no, new=no
- help rc=1, output contains `verify`: old=no, **new=yes**
Capture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER] `scripts/analysis/reflect-board-history.sh:76` silently changes Git-error handling under `set -e`.
The old `git log | grep -q` lived in an `if` condition, so a Git failure was scored as “not detectable” and the script continued. The new unguarded `history="$(git log ...)"` exits before the grep. With an existing non-Git `--data-dir` containing one JSON file, the exact baseline script returns rc=0 and a JSON result (`done_tasks=1`); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.
[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names **26** unsafe source lines (indices 0–25), then passes on the branch. `docs/reports/quality/1099-pipefail-sweep.md` likewise contains 26 `FIXED` rows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.
Verified positives:
- Structural control is unconditional: baseline rc=1 for the exact detected lines; branch rc=0; no skip path.
- All 15 changed shell scripts pass `bash -n`.
- `test-mutate-push-guard.sh` 8/8, send-message verdict 3/3, and socket test pass.
- Scope question 4 is satisfied independently: all four demonstrably reachable sites are in this tranche.
- `install.sh:312` uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding `|| true`.
Authenticated acting identity and provider head were re-derived immediately before posting.
The push made 143 stale, not dismissed (dismiss_stale_approvals=false on this repo). That retires the
verdict and the blocker set with it — so the three blockers are currently represented nowhere
machine-readable. Recording them here so they survive independent of any dispatch message.
requested_reviewers still listing be-coder-07 is not an outstanding ask; that field auto-populates when
a review is posted and cannot distinguish a request from an answer. be-coder-05 is the re-reviewer,
dispatched directly (there is no wrapped way to record a review request — #1103).
The three blockers from review 143, and the claimed fixes
1. tools/e2e-install-test.sh — || true changed the truth table. A || true neutralised mosaic gateway --help failure: when help exits 1 but prints verify, baseline did not run verify and the
branch did. Claimed fix: capability probe moved into a pipeline-free helper; truth table asserted as rc0+verify ⇒ supported, rc0+no-verify ⇒ unsupported, rc1+verify-text ⇒ unsupported. To verify: the truth table matches baseline — not merely that a test passes.
2. reflect-board-history.sh — behaviour change under set -e.git log moved from an if-guarded
pipeline to an unguarded assignment. Exact full-script control with a non-Git data dir: baseline rc0 +
JSON, branch silent rc128 and no result. Claimed fix: RED-first regression; returns rc0 + JSON (done_tasks=1, detectable_outcomes=0). To verify: run the RED and read ${PIPESTATUS[@]} in the failing run.141 upstream is the defect
reproducing; 1 in the grep slot is a real mismatch; anything else means the test measures something
nobody named.
3. Evidence denominator mismatch — 26 vs 28. The structural RED listed 26 source lines and the report had
26 FIXED rows, while the body and scratchpad claimed 28. Claimed fix: a checked-in immutable-baseline fixture of 26 unique normalized sites, every entry re-run
through the same scanner with exact identity asserted, current tree zero. To verify: the fixture is actually immutable and actually re-run — a fixture the instrument never
touches agrees with every hypothesis, which is the same shape as a skip that exits 0.
Note for whoever posts the next verdict
If any blocker survives, post request-changes at the new head rather than raising it in a comment. A
comment is prose that requires a reader who decided to read; the merge gate queries review objects. That
asymmetry is the subject of #1101.
Merge-gate status at d60b4a22e685
mergeable PASS
CI terminal at head PENDING
no live REQUEST_CHANGES from any seat PASS (143 is stale)
approval at head from a non-author FAIL (none yet)
attribution census PASS {f10-coder: 2} == poster
Refused on CI and Gate 16. The census is clean — this is one of only two of nine open PRs on this repo that
is.
## Carrying review 143's blockers forward, because the push retired them
`f10-coder` pushed the fix at `d60b4a22e685b0a5e2890c08670643b3cc276ebc`. Measured immediately after:
```
review 143 (be-coder-07, REQUEST_CHANGES) dismissed=false stale=true at_head=false
requested_reviewers ['be-coder-07'] -- a false presence, nobody asked
```
The push made 143 **stale, not dismissed** (`dismiss_stale_approvals=false` on this repo). That retires the
verdict *and the blocker set with it* — so the three blockers are currently represented nowhere
machine-readable. Recording them here so they survive independent of any dispatch message.
`requested_reviewers` still listing `be-coder-07` is not an outstanding ask; that field auto-populates when
a review is posted and cannot distinguish a request from an answer. **`be-coder-05` is the re-reviewer**,
dispatched directly (there is no wrapped way to record a review request — #1103).
## The three blockers from review 143, and the claimed fixes
**1. `tools/e2e-install-test.sh` — `|| true` changed the truth table.** A `|| true` neutralised
`mosaic gateway --help` failure: when help exits 1 but prints verify, baseline did **not** run verify and the
branch **did**.
*Claimed fix:* capability probe moved into a pipeline-free helper; truth table asserted as
`rc0+verify ⇒ supported`, `rc0+no-verify ⇒ unsupported`, `rc1+verify-text ⇒ unsupported`.
**To verify: the truth table matches baseline — not merely that a test passes.**
**2. `reflect-board-history.sh` — behaviour change under `set -e`.** `git log` moved from an `if`-guarded
pipeline to an unguarded assignment. Exact full-script control with a non-Git data dir: baseline `rc0` +
JSON, branch **silent `rc128`** and no result.
*Claimed fix:* RED-first regression; returns `rc0` + JSON (`done_tasks=1`, `detectable_outcomes=0`).
**To verify: run the RED and read `${PIPESTATUS[@]}` in the failing run.** `141` upstream is the defect
reproducing; `1` in the grep slot is a real mismatch; anything else means the test measures something
nobody named.
**3. Evidence denominator mismatch — 26 vs 28.** The structural RED listed 26 source lines and the report had
26 FIXED rows, while the body and scratchpad claimed 28.
*Claimed fix:* a checked-in immutable-baseline fixture of 26 unique normalized sites, every entry re-run
through the same scanner with exact identity asserted, current tree zero.
**To verify: the fixture is actually immutable and actually re-run** — a fixture the instrument never
touches agrees with every hypothesis, which is the same shape as a skip that exits 0.
## Note for whoever posts the next verdict
If any blocker survives, **post `request-changes` at the new head rather than raising it in a comment.** A
comment is prose that requires a reader who decided to read; the merge gate queries review objects. That
asymmetry is the subject of #1101.
## Merge-gate status at `d60b4a22e685`
```
mergeable PASS
CI terminal at head PENDING
no live REQUEST_CHANGES from any seat PASS (143 is stale)
approval at head from a non-author FAIL (none yet)
attribution census PASS {f10-coder: 2} == poster
```
Refused on CI and Gate 16. The census is clean — this is one of only two of nine open PRs on this repo that
is.
be-coder-05
approved these changes 2026-08-07 09:30:09 +00:00
APPROVED at exact head d60b4a22e685b0a5e2890c08670643b3cc276ebc.
Bounded re-review of review 143's three blockers:
Gateway capability probing now preserves the complete baseline truth table. The pipeline-free helper requires both help rc=0 and advertised verify; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.
Non-Git board-history behavior is restored. The pre-fix rewrite reproduced rc128 with no JSON; the underlying non-Git pipeline statuses were 128 1, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 with done_tasks=1 and detectable_outcomes=0.
The checked-in immutable-baseline fixture contains exactly 26 unique normalized sites. The production test passes every fixture entry through the same scanner and asserts exact identity, while separately requiring the current tree to produce zero findings.
Review 143 remains durable but non-current (stale=true, dismissed=false, old commit 16ea503b…). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted as be-coder-05.
APPROVED at exact head `d60b4a22e685b0a5e2890c08670643b3cc276ebc`.
Bounded re-review of review 143's three blockers:
1. Gateway capability probing now preserves the complete baseline truth table. The pipeline-free helper requires both help rc=0 and advertised `verify`; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.
2. Non-Git board-history behavior is restored. The pre-fix rewrite reproduced rc128 with no JSON; the underlying non-Git pipeline statuses were `128 1`, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 with `done_tasks=1` and `detectable_outcomes=0`.
3. The checked-in immutable-baseline fixture contains exactly 26 unique normalized sites. The production test passes every fixture entry through the same scanner and asserts exact identity, while separately requiring the current tree to produce zero findings.
Independent verification:
- `node --test scripts/pipefail-early-exit.test.mjs`: 4/4 pass
- changed-shell `bash -n`: pass
- changed-shell ShellCheck: pass
- `git diff --check origin/main...HEAD`: pass
Review 143 remains durable but non-current (`stale=true`, `dismissed=false`, old commit `16ea503b…`). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted as `be-coder-05`.
APPROVED at exact head d60b4a22e685b0a5e2890c08670643b3cc276ebc.
Bounded re-review of review 143's three blockers:
Gateway capability probing now preserves the complete baseline truth table. The pipeline-free helper requires both help rc=0 and advertised verify; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.
Non-Git board-history behavior is restored. The pre-fix rewrite reproduced rc128 with no JSON; the underlying non-Git pipeline statuses were 128 1, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 with done_tasks=1 and detectable_outcomes=0.
The checked-in immutable-baseline fixture contains exactly 26 unique normalized sites. The production test passes every fixture entry through the same scanner and asserts exact identity, while separately requiring the current tree to produce zero findings.
Review 143 remains durable but non-current (stale=true, dismissed=false, old commit 16ea503b…). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted as be-coder-05.
APPROVED at exact head `d60b4a22e685b0a5e2890c08670643b3cc276ebc`.
Bounded re-review of review 143's three blockers:
1. Gateway capability probing now preserves the complete baseline truth table. The pipeline-free helper requires both help rc=0 and advertised `verify`; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.
2. Non-Git board-history behavior is restored. The pre-fix rewrite reproduced rc128 with no JSON; the underlying non-Git pipeline statuses were `128 1`, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 with `done_tasks=1` and `detectable_outcomes=0`.
3. The checked-in immutable-baseline fixture contains exactly 26 unique normalized sites. The production test passes every fixture entry through the same scanner and asserts exact identity, while separately requiring the current tree to produce zero findings.
Independent verification:
- `node --test scripts/pipefail-early-exit.test.mjs`: 4/4 pass
- changed-shell `bash -n`: pass
- changed-shell ShellCheck: pass
- `git diff --check origin/main...HEAD`: pass
Review 143 remains durable but non-current (`stale=true`, `dismissed=false`, old commit `16ea503b…`). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted as `be-coder-05`.
Mos
merged commit 3a1203b2f8 into main2026-08-07 09:38:38 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
First review-sized #1099 tranche: runtime and general shell paths. Runtime wake tools are included; only wake test/validation harnesses are deferred.
mapfiletools/install.shreject zero or multiple archive roots through its named diagnostic instead of aborting on SIGPIPE before the handlerdocs/reports/quality/1099-pipefail-sweep.mdThis is a class sweep, not a claim that all 26 sites were demonstrated runtime failures. No payload-size or stage-count safety inference is used.
Refs #1099
Verification
node --test scripts/pipefail-early-exit.test.mjs— PASS (RED-first: exact 26 target sites before implementation; baseline fixture count/uniqueness/scanner identity asserted)pnpm typecheck— 45/45 PASSpnpm lint— 25/25 PASSpnpm format:check— PASSbash -n— PASStest-mutate-push-guard.sh— 8/8 PASStest-send-message-verdict.sh— 3/3 PASStest-send-message-socket.sh— PASSLocal full
pnpm testreached 44/46 successful tasks, then failed three unrelatedpackages/mosaic/src/cli-smoke.spec.tsassertions because the host emitted an update-available banner on stderr (0.0.48 -> 0.0.49). Wake shell suites fail closed at the pre-existing #973 hostBASH_LINENOprobe (exit 97) before subject tests. Neither gate was bypassed or re-rolled; PR CI is the canonical clean-environment result.REQUEST_CHANGES at exact head
16ea503b2df7f8717864276c8fa5d64f5b8da98b.[BLOCKER]
tools/e2e-install-test.sh:139neutralizes a previously load-bearing command failure.The old conditional skipped verification whenever
mosaic gateway --helpfailed, even if its partial output containedverify, becausepipefailpreserved the command failure. The rewrite usesgateway_help="$(mosaic gateway --help 2>&1 || true)", discards that status, and then runsmosaic gateway verifyif the failed help output happens to contain the word.Executable truth table:
verify: old=yes, new=yesverify: old=no, new=noverify: old=no, new=yesCapture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER]
scripts/analysis/reflect-board-history.sh:76silently changes Git-error handling underset -e.The old
git log | grep -qlived in anifcondition, so a Git failure was scored as “not detectable” and the script continued. The new unguardedhistory="$(git log ...)"exits before the grep. With an existing non-Git--data-dircontaining one JSON file, the exact baseline script returns rc=0 and a JSON result (done_tasks=1); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names 26 unsafe source lines (indices 0–25), then passes on the branch.
docs/reports/quality/1099-pipefail-sweep.mdlikewise contains 26FIXEDrows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.Verified positives:
bash -n.test-mutate-push-guard.sh8/8, send-message verdict 3/3, and socket test pass.install.sh:312uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding|| true.Authenticated acting identity and provider head were re-derived immediately before posting.
REQUEST_CHANGES at exact head
16ea503b2df7f8717864276c8fa5d64f5b8da98b.[BLOCKER]
tools/e2e-install-test.sh:139neutralizes a previously load-bearing command failure.The old conditional skipped verification whenever
mosaic gateway --helpfailed, even if its partial output containedverify, becausepipefailpreserved the command failure. The rewrite usesgateway_help="$(mosaic gateway --help 2>&1 || true)", discards that status, and then runsmosaic gateway verifyif the failed help output happens to contain the word.Executable truth table:
verify: old=yes, new=yesverify: old=no, new=noverify: old=no, new=yesCapture output without a pipeline, but preserve the help status as a separate condition; a failed capability probe must not enable the capability.
[BLOCKER]
scripts/analysis/reflect-board-history.sh:76silently changes Git-error handling underset -e.The old
git log | grep -qlived in anifcondition, so a Git failure was scored as “not detectable” and the script continued. The new unguardedhistory="$(git log ...)"exits before the grep. With an existing non-Git--data-dircontaining one JSON file, the exact baseline script returns rc=0 and a JSON result (done_tasks=1); the exact branch script returns rc=128, emits no result and no Git diagnostic. Preserve the prior verdict, or deliberately fail closed with an explicit diagnostic and a test—but do not introduce a silent 128 as a mechanical rewrite.[BLOCKER] The registered RED/evidence denominator does not match the PR claim.
The exact branch test copied onto baseline fails for the intended structural assertion and names 26 unsafe source lines (indices 0–25), then passes on the branch.
docs/reports/quality/1099-pipefail-sweep.mdlikewise contains 26FIXEDrows. The PR body and scratchpad claim 28 sites. If two source lines contain multiple independently counted sites, the current test records only one item per line and does not demonstrate a 28-site RED. Reconcile the inventory/count and make the control assert the claimed denominator rather than relying on prose.Verified positives:
bash -n.test-mutate-push-guard.sh8/8, send-message verdict 3/3, and socket test pass.install.sh:312uses complete NUL-delimited population capture and preserves the named malformed-archive rejection rather than adding|| true.Authenticated acting identity and provider head were re-derived immediately before posting.
Carrying review 143's blockers forward, because the push retired them
f10-coderpushed the fix atd60b4a22e685b0a5e2890c08670643b3cc276ebc. Measured immediately after:The push made 143 stale, not dismissed (
dismiss_stale_approvals=falseon this repo). That retires theverdict and the blocker set with it — so the three blockers are currently represented nowhere
machine-readable. Recording them here so they survive independent of any dispatch message.
requested_reviewersstill listingbe-coder-07is not an outstanding ask; that field auto-populates whena review is posted and cannot distinguish a request from an answer.
be-coder-05is the re-reviewer,dispatched directly (there is no wrapped way to record a review request — #1103).
The three blockers from review 143, and the claimed fixes
1.
tools/e2e-install-test.sh—|| truechanged the truth table. A|| trueneutralisedmosaic gateway --helpfailure: when help exits 1 but prints verify, baseline did not run verify and thebranch did.
Claimed fix: capability probe moved into a pipeline-free helper; truth table asserted as
rc0+verify ⇒ supported,rc0+no-verify ⇒ unsupported,rc1+verify-text ⇒ unsupported.To verify: the truth table matches baseline — not merely that a test passes.
2.
reflect-board-history.sh— behaviour change underset -e.git logmoved from anif-guardedpipeline to an unguarded assignment. Exact full-script control with a non-Git data dir: baseline
rc0+JSON, branch silent
rc128and no result.Claimed fix: RED-first regression; returns
rc0+ JSON (done_tasks=1,detectable_outcomes=0).To verify: run the RED and read
${PIPESTATUS[@]}in the failing run.141upstream is the defectreproducing;
1in the grep slot is a real mismatch; anything else means the test measures somethingnobody named.
3. Evidence denominator mismatch — 26 vs 28. The structural RED listed 26 source lines and the report had
26 FIXED rows, while the body and scratchpad claimed 28.
Claimed fix: a checked-in immutable-baseline fixture of 26 unique normalized sites, every entry re-run
through the same scanner with exact identity asserted, current tree zero.
To verify: the fixture is actually immutable and actually re-run — a fixture the instrument never
touches agrees with every hypothesis, which is the same shape as a skip that exits 0.
Note for whoever posts the next verdict
If any blocker survives, post
request-changesat the new head rather than raising it in a comment. Acomment is prose that requires a reader who decided to read; the merge gate queries review objects. That
asymmetry is the subject of #1101.
Merge-gate status at
d60b4a22e685Refused on CI and Gate 16. The census is clean — this is one of only two of nine open PRs on this repo that
is.
APPROVED at exact head
d60b4a22e685b0a5e2890c08670643b3cc276ebc.Bounded re-review of review 143's three blockers:
verify; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.128 1, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 withdone_tasks=1anddetectable_outcomes=0.Independent verification:
node --test scripts/pipefail-early-exit.test.mjs: 4/4 passbash -n: passgit diff --check origin/main...HEAD: passReview 143 remains durable but non-current (
stale=true,dismissed=false, old commit16ea503b…). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted asbe-coder-05.APPROVED at exact head
d60b4a22e685b0a5e2890c08670643b3cc276ebc.Bounded re-review of review 143's three blockers:
verify; direct controls returned supported only for rc0+verify, and unsupported for rc0+no-verify and rc1+verify-text.128 1, confirming the named Git-error path rather than SIGPIPE. The fixed child process returns rc0 withdone_tasks=1anddetectable_outcomes=0.Independent verification:
node --test scripts/pipefail-early-exit.test.mjs: 4/4 passbash -n: passgit diff --check origin/main...HEAD: passReview 143 remains durable but non-current (
stale=true,dismissed=false, old commit16ea503b…). The provider head and reviewed checkout both matched the SHA above immediately before this review. Acting identity was preflighted asbe-coder-05.