Repository navigation
fix(rex): S-4 cap in decide() records its reason (FALSIFY-RXG-008) - #5415
Conversation
decide() capped a devbox or unnamed-primary lane above tripwire at Tripwire without adding a reason when the report alone was below tripwire, so the Decision said Tripwire while its reasons explained shadow. The S-4 branch now pushes one "S-4:" reason unless capped() already did. RXG-008 asserts exactly one S-4 reason for vote and tie-breaker lanes on a shadow report and on a full one. It goes red with the fix reverted. Follow-up to the C314 refusal on #5393. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
left a comment
There was a problem hiding this comment.
seat 2, aprender-seat-s12 @9852b061a5 APPROVE (no blocking finding)
Read-only review of the one Opus-authored commit (trailer Claude Opus 5.5), 2 files: ladder.rs +6, ladder_tests.rs +11.
- Before the change,
decide()'s S-4 cap path (devbox or unnamed primary, current > Tripwire) set mode to Tripwire and returned, without recording a reason when the report alone was already at or below Tripwire. Onlycapped()pushes "S-4:", and only when its own mode is above Tripwire. The patch adds the reason indecide()guarded by!reasons.any(starts_with "S-4:"), so thecapped()case is not double-counted. dis alreadymut.Modederives Debug, so the{current:?}and{:?}format args compile. The mode is read before it is overwritten, so the text reports the report-alone mode.- Tests: the loop over Vote and TieBreaker on the devbox_h4_fail fixture (report alone = Shadow) asserts Tripwire plus exactly one "S-4:" reason. The
devboxfixture at Vote asserts exactly one, which pins the dedupe wherecapped()already pushed. Both directions of the count are covered. - Not run locally: no isolated build of the PR head here. CI shards (workspace-test-shard 1-3, x86-main) were still pending when I read them, so the tests' pass state rests on CI.
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
noahgift
left a comment
There was a problem hiding this comment.
seat 1, aprender-seat-s11 @9852b061a5 APPROVE (no blocking finding)
Read the 2-file diff and ran cargo test -p aprender-review-experiment --lib ladder in a throwaway worktree at 9852b06 (removed after the run): 10 passed, 0 failed, including falsify_rxg_008. I did not open the C314 receipt.
- The early-return S-4 branch in
decide()now records its reason. It only adds an "S-4:" reason whencapped()did not already add one, so the reason appears exactly once. The mode result is unchanged: still Tripwire, same early return. - Tests: Vote and TieBreaker lanes on a devbox report whose own verdict is Shadow are capped at Tripwire with exactly one "S-4:" reason. The plain
devboxreport on a Vote lane also shows exactly one S-4 reason, which covers the path wherecapped()already pushed it.
Non-blocking: when the report alone says Shadow, the capped lane moves up to Tripwire. That predates this PR, and the new reason text states it ("the report alone gives Shadow").
What
decide()inaprender-review-experimentcaps a lane at Tripwire when its primary cell is devbox or unnamed (S-4), but recorded no reason for the cap. It now pushes oneS-4:reason, so the decision log says why the lane dropped. A reason already present fromevidence()is not duplicated.Why
Follow-up to the review finding on #5393: a capped lane produced a mode change with an empty reason trail.
Falsification
FALSIFY-RXG-008(ladder_tests.rs) asserts exactly oneS-4:reason for vote and tie-breaker lanes. It goes red with the fix reverted.Verification
cargo test -p aprender-review-experiment --lib: 234 passed-D warningsandcargo fmt --all -- --check: cleanRefs #4354
keep-open: #4354 stays open, this is one step of its work.
🤖 Generated with Claude Code