Skip to content

fix(I-24): parity_block.py — a zero or empty COMPARATOR band is a named refusal, never a ZeroDivisionError traceback; case table both polarities wired into guard-runner-labels (PMAT-972, #2887, #2735) - #3006

Merged
noahgift merged 12 commits into
mainfrom
agent/I-24
Sep 14, 2026

Conversation

@noahgift

@noahgift noahgift commented Sep 6, 2026 •

Copy link
Copy Markdown
Contributor

PP-066 DAG row I-24 (issue #2887; defect #2735; epic #2873; ticket PMAT-972; owner perf-gate; receipt docs/audits/impl-PMAT-972-receipt.md, status: partial until merged).

The defect (#2735, verified on main): a zero-token SUBJECT band refused cleanly, a zero-token COMPARATOR band reached median(subject) / median(comparator) and died with a Python ZeroDivisionError traceback — a crash where a verdict belongs.

What lands: _comparator_median(values, label) in scripts/lib/parity_block.py — every median-as-divisor site goes through it; an empty comparator band refuses band <c> comparator: no samples is not a measurement, a non-positive median refuses band <c> comparator: non-positive rate is not a measurement, both through the script's existing refusal path (exit 1); the subject refusal is untouched. scripts/check_parity_block_refusals.sh --selftest (RED first at 72383a9): four generated fixtures — control rc 0; zero comparator, zero subject, empty comparator rc 1 with their texts — every row also asserting no Traceback; wired into guard-runner-labels. Contract contracts/apr-parity-block-refusals-v1.yaml (kind: pattern); README 1812 contracts. _executor_side/_executor_lane/build/main decomposed by pure code motion because the pre-commit complexity gate refused the file over debt three of them carried on main already.

Acceptance, re-run by the orchestrator

A_i rc
bash scripts/check_parity_block_refusals.sh --selftest (4 fixtures) PASS
python3 -m py_compile scripts/lib/parity_block.py · bash scripts/check_thresholds_in_matrix.sh --selftest 0 · 6 passed
pv validate · pv lint · check_contract_test_binding.sh · check_contract_enforcement.sh · check_readme_claims.sh · check_no_claim_literals.sh · check_roadmap_diff_additive.sh · check_guards_are_wired.sh · check_workflow_env_defined.sh · bashrs lint (0 errors) 0 each

Mutation — RED, then restored GREEN: the guard call and the guarded division replaced by the bare statistics.median(subject_values) / statistics.median(comparator_values) → row 2 FAILED with ZeroDivisionError: float division by zero and contains forbidden text: Traceback; restored → PASS.

Recorded: a first docstring (0 / positive == 0.0) read as a float comparison to check_thresholds_in_matrix.sh's CMP regex and broke its self-test — reworded; the card's mutation line numbers had drifted, the sites are now one helper. Receipt for this PR itself: advisory, not produced (driver A1).

no-close: #2873 is the epic this row implements one item of, and the remaining refs are cited as context; an epic is not closed by one of its rows.

…and is a ZeroDivisionError traceback, not a verdict (#2735)

Pmat-Ticket: PMAT-972
…ed refusal (band <c> comparator: non-positive rate / no samples is not a measurement), never a ZeroDivisionError; every median-as-divisor site guarded through _comparator_median; _executor_side/_executor_lane/build/main decomposed to fit the complexity gate (PMAT-972, #2887, #2735)

Pmat-Ticket: PMAT-972
…t comparison to check_thresholds_in_matrix.sh; check_parity_block_refusals.sh --selftest wired into guard-runner-labels (PMAT-972)

Pmat-Ticket: PMAT-972
…comparator band is a named refusal, never a traceback; README contract count 1812 (PMAT-972, #2887)

Pmat-Ticket: PMAT-972
@noahgift
noahgift enabled auto-merge September 6, 2026 06:12
@github-actions

github-actions Bot commented Sep 6, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=3006 head=e15ad77d5fadda2800aa0e08c93649fc35e9c2f3 verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

…ork dir, not /usr/bin/apr (check_apr_bin_pinned ABS-APR, guard-runner-labels red on #3006)

Pmat-Ticket: PMAT-972
@noahgift
noahgift disabled auto-merge September 7, 2026 11:53
@noahgift noahgift added this to the 0.68.0 milestone Sep 10, 2026
@noahgift noahgift added the needs-rebase mergeStateStatus DIRTY: conflicts with main; rebase before it can enter the queue label Sep 11, 2026
…nder guard_tree, so it now runs bare); README regenerated; roadmap/estimates unioned (T-5 R-4)

main replaced the per-guard ci.yml steps with `guard_tree.sh --no-cargo`, which runs every
`scripts/check_*.sh` BARE (and `--self-test` first when --help advertises it). This guard
only had a `--selftest` mode and exited 2 bare — it would have turned the required job RED on
arrival. It now runs its case table bare, under --selftest and under --self-test, and --help
names self-test. Measured in the merged tree: bare rc=0, --self-test rc=0, --bogus rc=2.

Pmat-Ticket: PMAT-1098
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@noahgift
noahgift enabled auto-merge September 13, 2026 10:16
…ss — allowlisted with the reason

guard-tree on the merge: check_no_competing_harnesses.sh count=1 baseline=0 on scripts/lib/parity_block_selftest.sh. It writes synthetic comparator-band receipts for the refusal case table; it measures nothing. Re-run rc=0, --selftest rc=0.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
check_roadmap_diff_additive.sh reported base id(s) missing at head: this branch forked before they landed on main, and a plain update takes one side of the file whole. Resolved as main's roadmap plus this branch's own new entries, each at its sorted slot among same-prefix peers. The other three roadmap guards pass on the result.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@noahgift
noahgift added this pull request to the merge queue Sep 13, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 13, 2026
noahgift and others added 2 commits September 14, 2026 02:57
…enerated (T-5 R-4)

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
check_roadmap_diff_additive.sh reported base id(s) missing at head: this branch forked before they landed on main, and a plain update takes one side of the file whole. Resolved as main's roadmap plus this branch's own new entries, each at its sorted slot among same-prefix peers. The other three roadmap guards pass on the result.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@noahgift
noahgift added this pull request to the merge queue Sep 14, 2026
Merged via the queue into main with commit 63effd9 Sep 14, 2026
1 check failed
@noahgift
noahgift deleted the agent/I-24 branch September 14, 2026 06:07
noahgift added a commit that referenced this pull request Sep 14, 2026
…is the answer

One conflict, docs/audits/impl-estimates.jsonl. Both sides APPENDED: this branch
added four PMAT-991 rows, main added three PMAT-972 rows (via #3006). Taking
either side whole deletes measurements nothing else records.

Resolved as the union, main's rows first since they are already in main's
history. Verified after: 46 rows, every one valid JSON, zero duplicates, no
conflict markers.

Pmat-Ticket: PMAT-1098

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@noahgift noahgift mentioned this pull request Sep 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-rebase mergeStateStatus DIRTY: conflicts with main; rebase before it can enter the queue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: PP-066 — 0.66 performance-parity release

1 participant