Repository navigation
Conversation
added 12 commits
August 24, 2026 08:33
…ding, correct PATH_2 prose
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Collaborator
Author
|
Superseded for review by #793; the trust trail will be emitted there. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Generalises
/merge's Phase 1.4 trust gate so the trail's instrument is a data field —Reviewed-by: uberdev/<instrument>@<sha>over the closed set{review-pr, premerge}— instead of a hardcodeduberdev/review-pr@prefix./premergeemits that trail on a green clean gate.Implements the
## Steer (2026-08-24)direction on #716: relax the gate's strictness rather than bolt on a parallel PATH_3. The literalPATH_3was in fact unbuildable — two guards intests/merge.test.shred the build if that token appears in the extracted Phase 1.4 body (:673and:903onmain;:730and:1040on this branch, which adds 137 lines to that file).Refs #716 — this PR does NOT close it
Two blocking findings survive, both confirmed by execution. Closing #716 on this PR would be a false claim, so it deliberately says
Refsrather thanCloses.BLOCKER 1 — the emitted trail is unreadable by
/mergeon/premerge's own default path### 5-trailemits the anchor, then### 5alandschore(release): vX.Y.Zon top of it./mergecan only read a trailer buried under a release commit whenrelease-anchor.shreturnstolerated; on this repo's CHANGELOG style it returnsnone.Measured against real history —
2c6db441(the v0.56.0 release commit, itself produced by a/premergestack run) givesRELEASE_ANCHOR=none RELEASE_ANCHOR_REASON=diff_too_large, and four older release commits givenoneforchangelog_shape/non_version_paths. Cause:RELEASE_ANCHOR_MAX_DIFF_LINES=400plus the added-line shape predicate, which admits onlybump-version.sh's bare stub — and 5a explicitly replaces that stub with real notes.TRUST_HEADtherefore falls back to the release commit, which carries noReviewed-by:, and the gate failstrust_trail_trailer_missing. The stack PR is structurally unlandable again, which is the condition #716 exists to remove.The obvious workaround is foreclosed: emitting after the bump makes the gate fence's HEAD binding return
TRAIL=skipped REASON=head_moved, publishing nothing. This needs a design decision — widenrelease-anchor.sh's tolerance to this repo's CHANGELOG shape, have 5a amend rather than stack, or re-gate after the bump — not a patch.BLOCKER 2 — a deferred-CRITICAL trail can now land without
--accept-critical-deferredAdmitting
uberdev-approved-with-concernsas a review-pr-instrument label moves a YELLOW PR from refuse-at-(a) to evaluate-at-(c). The Phase 2.5 gate that should then catch it is inert whenever the audit JSON is not locally discoverable:(c.0)defaultsPHASE2_5_AUDIT_STATE=absentwithPHASE2_5_CRITICAL_COUNT=0, the evaluator'sabsentarm skips the Phase 2.5 gate, and(d)'s ABSENT path emitsgate_pass.Concretely:
/review-prruns in a solver worktree under/tmp/uberdev-solve-*and defers 2 CRITICAL findings;/mergeruns from the main checkout (the documented split); the discovery helper searches only repo-root-relative layouts, finds nothing, and the PR lands with 2 unresolved CRITICAL findings and no flag.This relaxation is orthogonal to #716's stated scope — it arrived bundled with the instrument generalisation.
/review-pralready writesseverity=critical-deferred count=Ninto the trailer and(b.5)already parses it into$TRAILER_SUFFIX, but nothing reads it; gating on that suffix would close the hole using the same reasoning already applied one tier over. Reverting the label admission is the other option.Also unfixed (review budget exhausted)
The fix round could not be dispatched — TB2 hit 24/24, in part because a session-limit outage killed five review agents at their first tool call and the counter charged those seats again on re-dispatch.
references/phase-contracts.md:191— definesPREMERGE_ATTEMPTfor the gate fence as the last CONVERGE ledger row, but Phase 4c advances the counter and writesgate-<N+1>.jsonwhile writing no ledger row. A controller following the contract passes N, the fence reads a gate stamped with the pre-simplify HEAD, printsREASON=head_movedand exits 0 — a green stack silently gets no trail on the default path. The same section contradicts itself at:196.merge-pipeline/SKILL.md:862— PATH_2's terminal instruction stampsuberdev_review_trailunconditionally, so every premerge trail on a fresh clone records the wrong anchor, defeating tier distinguishability. Mirrored atagents/trust-trail-evaluator.md:157.merge-pipeline/SKILL.md:533— the (a.5) release-anchor paragraph asserts the anchor is "unchanged"uberdev_review_trail, on what D8 makes the primary premerge path.merge-pipeline/SKILL.md:1002,:1734— PATH_2 mirrors still enumerate only a/review-prtrail, against the file's own editors' note at:1004requiring all five mirrors to move together. Mirror 5 is inusing-uberdev/SKILL.mdand is unowned.agents/trust-trail-evaluator.md:29— theReviewed-basebullet still hardcodesuberdev/review-pr@and saysnullwhen absent; read literally it sends every premerge trail to the STALE arm.merge-pipeline/SKILL.md:59—UBERDEV_APPROVED_LABEL's "Used by" cell still says "label presence check", the mechanism (a) replaced.casematchespremerge-approvedfirst, so running/review-pron a stale-trailed stack PR (which/merge's own diagnostic suggests) yields a permanentgate_failuntil the label is removed by hand.gh pr edit --add-labelfails) has no re-entry path: re-running the gate returnshead_moved. Moving the idempotentgh label create --forceabove the push would close the window.What was verified
The integration pass ran the full authoritative list from
.github/workflows/test.ymlon this exact tree — 132run_onerows, 0 reds, on macOS. Reported per-suite there: merge 550/0, premerge 275/0, premerge-phase5 85/0, trust-trail-base-identity 117/0, trust-trail-evaluator 40/0, skill-size 49/0, prkit-publish 11/0, docs-accuracy 309/0, vendor-provenance 63/0, findings-to-issues 202/0.The delivery pass independently re-ran the seven suites this change actually touches, reading each exit code directly:
merge550/0,premerge275/0,premerge-phase585/0,trust-trail-base-identity117/0,trust-trail-evaluator40/0,vendor-provenance63/0,skill-size49/0 — allrc=0, every count matching the integration pass.The macOS smoke job's 8 fixtures are all members of the shape-checks list and were covered by that run. Windows is not covered and was not reproducible locally; 4 Windows-only argv shapes ran as Darwin proxies and
code-fixer-contract-windows.test.pyrefuses to run off native Windows. Git Bash CR handling and MSYS path translation are untested until CI.The new gate and emit fences are extracted and executed under both bash and zsh, not transcribed — including a recording
git/ghPATH shim proving the skip path makes no call at all, with a control run proving the shim is not blind. Every new assertion row was mutation-tested to confirm it can actually fail.Invariants held
/mergestill never merges without an explicit operator command for that PR;/premergenever merges anything (0 merge or auto-merge verbs across all 1097 added lines); head-SHA binding, base-identity equivalence and force-push detection untouched;/premergecannot claim thereview-prinstrument (P10 retargeted, not weakened, and mutation-proved to red on four separate forgeries);/goalunaffected, since it readsuberdev-approvedby exact equality; no version surface moved.Refs #716