Repository navigation
Complete the bounded incremental-review pilot and final candidate gate #109
Description
Goal
Finish the measured bounded-correction pilot that underpins the 1.0 claim of bounded autonomous delivery.
Required invariant
Bounded incremental checkpoints may reduce repeated review scope, but the completion boundary must still prove the assembled candidate. A correction budget is cumulative for one root task and cannot be reset by renaming a prompt, creating another commit, or reopening the same plan.
Landed foundation
PR #120 added the cadence ledger, summary tooling, and initial pilot contract. #158 now rejects forbidden reviewer tool use, and #157 truthfully classifies partial outcomes. Their completion does not permit a review exception or automatic retry.
Frozen v4 result — 2026-08-23
- Worktree:
/Users/stefanayala/codex-sdlc-issue109-v4 - Branch:
fix/issue-109-bounded-incremental-v4 - Base/HEAD:
a07fc3d3fb77767de4c6e677e24bce628256668a - Staged candidate tree:
6f7c46cda02685feaf27eabe45e83c7fd1d604b2 - Focused proof: benchmark 16/16 and roadmap 15/15.
- Canonical proof: 11/11; fingerprint
sha256:9250d3fec6f4bf36e0dfb46be85341df4ec01bcc92440377f6b636bf3ac10717. - Maintainer 1.0 decision: tune. Retain bounded completion-boundary dual review for high-risk/proof/security/release work, keep ordinary work risk-tiered, and continue measurement after 1.0.
- The single bounded final gate was consumed without certification. Fable High attempted forbidden Bash use; the runner classified non-transient
invalid_execution, recommended no retry, cancelled the incomplete Sol peer, and wrote an explicitly non-certifying partial receipt. - No commit, push, PR, or merge occurred. The candidate and recovery stash remain frozen. Do not resume obsolete v2/v3/v4 gates.
Current dependencies
- fix(review): prevent Fable built-in tools before required review #167 must provide a Fable lane that prevents forbidden built-in tools before required review. Detection alone is not a usable release gate.
- Enforce Sol High implementation and High-only planning/review #86 implements the current owner decision that Sol High is the only autonomous Sol effort and removes the former xhigh maintainer exception.
- After both integrate, create an explicitly authorized fresh Complete the bounded incremental-review pilot and final candidate gate #109 replan/checkpoint from then-current main. Carry the evidence delta recoverably; do not reset cumulative correction or proof accounting.
1.0 completion criteria
- fix(review): stop tool-free cross-model reviews when Claude invokes advisor #158 integrated; its one-time exception is consumed.
- Dual-review should distinguish infrastructure failure from reviewer verdict #157 integrated with truthful partial non-certifying receipts.
- v4 refreshed onto then-current main without resetting the root-task correction budget.
- Source-bound evidence fails closed when referenced Git objects are unavailable.
- Count and token fields reject fractional values.
- Focused tests and one canonical broad proof passed on v4.
- Maintainer recorded the 1.0 decision: tune.
- fix(review): prevent Fable built-in tools before required review #167 integrates and proves a usable tool-free required Fable lane.
- Enforce Sol High implementation and High-only planning/review #86 integrates the Sol High-only autonomous effort policy.
- A fresh bounded completion gate certifies the carried candidate under the new policy.
- The resulting immutable checkpoint is delivered through the exact-candidate path and recorded in the cadence ledger.
Stop rule
No review exception is available. Do not retry the v4 gate, deliver its partial receipt, reuse #158's exception, or continue under an autonomous xhigh policy.
Activity
BaseInfinity commentedon Aug 9, 2026
Dogfooding clarification from
m180-jumpseat:The desired workflow is not "commit the known-bad baseline after the first review." It is a review checkpoint over the current working tree.
After an initial full
codex review --uncommitted, Codex should be able to:A possible native shape would be
codex review --continue <review-id>or--since-review <review-id>, with output separating previously reviewed content, new corrective edits, and unresolved findings.Today, rerunning
review --uncommittedrereads the entire HEAD-to-worktree diff. Committing only clean slices reduces that scope, but there is no equivalent incremental loop for fixing findings inside one not-yet-clean slice.[-]Evaluate incremental slice reviews with a final whole-branch gate[/-][+]Implement incremental corrective commits with a final whole-PR review gate[/+]BaseInfinity commentedon Aug 9, 2026
Prioritized for 0.7.37 based on the #86 release-candidate loop.
Measured failure mode on 2026-08-08:
Required implementation shape:
The final gate should produce a concise ledger mapping: finding -> corrective commit -> regression test/proof -> final whole-PR certification.
BaseInfinity commentedon Aug 9, 2026
Adopted workflow clarification: chained incremental certification
The goal is not to rereview the whole branch after every correction.
Local branch loop
Initial pull-request gate
merge base -> current PR head).PR correction loop
previously certified PR head -> new PR head; do not reread the unchanged whole PR.Final merge invariant
Before merge, verify mechanically that:
This produces cumulative assurance: one whole-PR review establishes the baseline; dual-reviewed incremental deltas extend it. A new whole-PR review is required only when the certification chain is missing/broken, history is rewritten, the merge base changes materially, or an integration-risk rule explicitly requires it.
CI/CD may run tests and enforce the certification ledger, but it is not itself a code reviewer unless an actual configured review agent produces a bound review result.
BaseInfinity commentedon Aug 9, 2026
Fresh dogfood evidence from the #98/#91 Windows repair on 2026-08-09:
git-guard.cjs prove --reviewedsolely to write its stamp.Required KISS outcome for this issue: one canonical proof invocation per frozen tree, proof/review receipts bound to the exact tree hash rather than expiring while the tree is unchanged, and correct command-working-directory/worktree resolution. Do not make agents rerun an unchanged 8–18 minute suite merely to translate already-current evidence into another local stamp.
BaseInfinity commentedon Aug 9, 2026
Audit evidence from the 2026-08-09 overnight run: between 01:00 and 15:00 PDT the repo produced five local commits, closed two tracking issues, merged zero PRs, and shipped zero releases. The current release slice completed repeated full-proof runs plus reviewer-triggered duplicate suites while the uncommitted parser patch kept growing. The gates found real P1 defects, but delivery cadence entered diminishing returns.
Add these requirements to the prototype:
BaseInfinity commentedon Aug 9, 2026
Proposed cadence after an m180 negative pilot
The m180 v0.3 candidate is a clean counterexample to “review more often” as a complete answer. Commit
dff6867combined three issues into 37 files (+4,692/-253). The full 1,659-test Pester suite stayed green, but two completed review rounds found eight legitimate defects and further review attempts timed out or returned no usable result. The pushed branch closed no issue.I think the efficient form of this issue is:
That preserves the real-life two-reviewer merge gate the maintainer wants without turning each development commit into a miniature merge ceremony. It also makes #73's tree-bound proof receipt load-bearing rather than an optimization.
Suggested pilot metrics for 10 issue-sized changes: planned vs actual diff, tripwire count, unique findings per reviewer, correction rounds, broad-suite runs, review wall time, issues closed, PRs merged, and milestones closed. “Green candidate pushed” should be recorded separately from “delivered.”
BaseInfinity commentedon Aug 9, 2026
VisualHUD comparison: incremental checkpoints delivered; an uncommitted final slice stalled\n\nProduct-repo dogfood from Sunday 2026-08-09 gives a useful A/B result for this issue:\n\n- Nine incremental commits closed five v1.2 issues; each bounded issue reached green CI and main ended synchronized.\n- The remaining uncommitted issue #15 grew to 684 new-file lines plus 70 tracked additions / 174 deletions, including a 333-line custom auditor and 279-line test.\n- Repeated whole-slice review found valid new defects but kept recertifying the broad candidate and expanding its mechanisms.\n- The unattended goal reached about 12.9 hours / 3.9 million tokens with the milestone still 5/8 and no release.\n- Two commits were pushed directly to main with red CI before follow-up repairs.\n\nInterpretation: immutable reviewed increments materially improved delivery and attribution, but the incremental sensor needs #110's breaker. The measured default should be:\n\n1. bounded TDD + affected proof + exact-delta review per increment;\n2. one tree-bound full proof and whole-issue Sol/Fable gate at completion;\n3. one compact reconciliation only on blocker/disagreement;\n4. bounded corrective delta review, not whole-issue rereview;\n5. stop/replan/split after two correction rounds, >2x estimated scope, or a new parser/enforcement mechanism outside the scope card;\n6. high-risk work uses an issue branch and required latest-SHA CI before main.\n\nTrack closed issues and milestone boundaries, not commit count alone. Also record proof duplication, review rounds, blocker locus, wall time, and tokens per completed issue.\n\nFull source receipt: claude-sdlc-harness#534.
BaseInfinity commentedon Aug 10, 2026
Refined implementation and ten-delivery pilot contract
Independent evidence from codex-sdlc-wizard, m180-jumpseat, and VisualHUD plus the Sol/Fable reconciliation on #110 narrows this issue from open-ended research to a measurable pilot.
Cadence
Cumulative accounting
Incremental commits must not reset the review budget.
Bind accounting to one root task identity:
A renamed prompt or new commit does not create a new root budget. New authorized scope is recorded as a child decision; it does not erase prior cost.
Ten eligible delivery measurements
For ten issue-completion candidates record:
After ten eligible deliveries, a human chooses keep, tune, or sunset reconciliation/risk tiers. No silent promotion to permanent policy.
Dependencies and propagation
claude --printas the zero-cost cross-model reviewer (mirror of what claude-sdlc-wizard does with codex exec) #64 supplies the isolated subscription-backed Fable leg.Only after the pilot earns its complexity, propagate the validated lifecycle through the maintainer harness, canonical repo-local SDLC skill, and installer/plugin/update templates.
10 remaining items
BaseInfinity commentedon Aug 12, 2026
m180 v0.15 pilot: add an external-evidence eligibility gate before final review
Reporting repo:
BaseInfinity/m180-jumpseat; issue #49. Process evidence only—no source, credentials, tenant identifiers, or private proof.This auth/security card reached:
The reviewers added real value: they caught a Windows junction escape, an unvalidated cached Graph context being called healthy, and a ServiceNow wrapper trusting child exit status instead of run-bound artifact readback.
But the card was not actually BoundaryEligible when final review began. A provider-required ServiceNow MFA step still blocked the two required live unattended repeats. Completing that live proof will update canonical evidence and release-state docs, changing the candidate and invalidating the final approval identity. So CLEAN/CLEAN was technically premature even though the code was ready.
Suggested refinement for #109:
This preserves the security bar while avoiding clean reviews that must be repeated because a known external gate later changes the candidate. Instrument
BoundaryEligibleAt,FinalReviewStartedAt, andKnownExternalGateCountAtReview; the desired invariant is zero known candidate-mutating external gates when final review starts.BaseInfinity commentedon Aug 12, 2026
Fresh measurement from BaseInfinity/m180-jumpseat (shared with the maintainer''s explicit permission; process metadata only).
Pilot result
From v0.15 publication to #65 closure, 8h02m53 elapsed. The revised cadence produced:
The eight late one-issue cards had a median of about 8.5 files / +332 lines and a maximum of 16 files / +620 lines, versus the earlier failed three-issue review unit at 37 files / +4,692 lines. The completion boundary was not the bottleneck. One-issue scope cards materially improved throughput and reviewability.
Did TDD and dual final review earn their cost?
Yes, with risk-tiering.
TDD caught real portability and security behavior. Most notably, #60''s linked-checkout green did not conceal a standalone-clone run with 11 ambient-dependency failures; those were repaired before a clean 1,875/1,875 result.
The two review legs found complementary defects:
That supports two independent final reviewers for security, CI, proof, release, and public-claim cards. It does not justify two broad reviewers on every ordinary commit.
Avoidable churn
#58 needed six Fable verdict passes across successive frozen trees. The findings were real, but two process defects made them arrive late:
#65 showed the healthier shape: both reviewers examined one bounded card, found different defects, one combined correction landed, bounded rechecks passed, and it shipped.
Recommended harness behavior
This complements #111: approval identity should be exact-tree-bound, and any mutation while review or the full suite is running should mark that result stale candidate, not CLEAN or FAIL.
Secondary observations worth measuring, but not enough evidence for new trackers yet: long-running suite calls can outlive a client timeout and overlap a retry; proof/commit command quoting and receipt expiry were difficult to diagnose. Structured receipts and explicit running-process/candidate IDs would make those failures safer.
Conclusion: keep TDD and the quality gates. Improve orchestration, acceptance tracing, and reviewer concurrency; do not add another review layer.
BaseInfinity commentedon Aug 14, 2026
Additional m180 pilot datapoint: dual review found distinct mutation-boundary defects
Reporting repo:
BaseInfinity/m180-jumpseat, issue #74. Process evidence only; no account, tenant, recipient, or private-binding data.A single frozen candidate for an exact test-owned draft/resume-send authorization route passed affected proof and the full 2,054/2,054 required suite. Two independent final reviewers still produced non-overlapping P1 findings:
The findings were reconciled into one bounded correction: authorization now precedes every write, the canonical wrapper revalidates exact paths/context/evidence at the mutation seam, the broker derives evidence identity from the retained draft proof, the root route is exercised end-to-end with deterministic children, and attachment bytes are bound. Both reviewers then returned CLEAN on the same tree.
Interpretation: risk-tiered dual review earned its cost here. The two legs were not duplicate readers; each caught a different authority/proof class that green TDD had missed. The efficient shape was one frozen candidate, parallel independent findings, one combined ledger/correction, targeted recheck, and no third broad review round.
A separate hosted PR gate then caught an unrelated clean-checkout portability defect: a release test treated
git archiveZIP bytes as cross-version deterministic. Local Windows Git 2.53 and hosted Windows Git 2.55 do not produce the same asserted archive hash from the same staged tree. That reinforces two harness rules: empirical instructions/proofs need execution on the claimed environment, and clean-checkout CI failures should be classified by locus rather than attributed automatically to the PR diff.BaseInfinity commentedon Aug 15, 2026
#111 duplicate-proof measurement — 2026-08-14
A fresh #111 corrective delta produced a direct measurement of the proof-translation cost this issue is meant to remove.
The corrected frozen tree ran the canonical proof directly:
The direct run did not refresh the tree-bound
.git/codex-sdlc/proof.jsonreceipt. Before the final dual-review gate, the same unchanged frozen tree therefore had to run the same suite again throughgit-guard.cjs prove --reviewedsolely to write the receipt:No source changed between those runs. The second run bought receipt translation, not new behavioral coverage.
This strengthens the KISS acceptance criterion here: one canonical proof invocation per frozen tree must both execute the suite and atomically populate the candidate-bound receipt. A caller that already ran the suite without the stamping entrypoint should report that evidence as non-reusable rather than silently rerun; the normal documented path should frontload the stamping entrypoint so duplicate broad proof is avoided.
BaseInfinity commentedon Aug 16, 2026
2026-08-16 high-risk planning pilot checkpoint
/private/tmp/codex-sdlc-issue109-v2fix/issue-109-bounded-incremental-v2f391740ca461bb48343ac7801e30e101682b2e10tests/test-skill.shRED then 22/22 GREENsha256:19f61dc706274e421d033efd52a4428850e8ae33f408b4a1e39be5549095341fResume rule: do not edit the staged tree. After Fable quota is available, rerun one current canonical proof if the prior receipt has expired, then run exactly one bounded
Sol High + Fable Highfinal gate. If certified, deliver through the immutable dual-review delivery command and open a PR withRefs #109; keep #109 open for the multi-issue pilot. If another P0/P1 appears, stop and replan rather than starting a third correction loop.BaseInfinity commentedon Aug 17, 2026
2026-08-16 bounded pilot stop: do not ship the current plan-review recipe
Candidate worktree:
/private/tmp/codex-sdlc-issue109-v2Candidate tree:
1fc2f71d58a6976561678e98c41572d4ac8d17abEvidence:
NOT CERTIFIED;The final gate retained two Sol P1s:
claudewith ambient routing variables, so the actual review can diverge from the consented subscription lane.The cross-model leg certified at 78 confidence and treated these as P2/P3, but the Sol leg remained
NOT CERTIFIEDat 97 confidence. Per the two-correction breaker, no third patch/review loop was started.Decision: do not merge this candidate. The high-risk pre-code challenge experiment expanded beyond #109's incremental corrective-review acceptance criteria into a cross-platform trusted reviewer-launcher problem. Resolve that as a separately planned runner or reuse an existing hardened runtime; do not keep extending prose commands. #109 remains open for its measured multi-delivery incremental-review pilot.
BaseInfinity commentedon Aug 17, 2026
Bounded v3 candidate result (2026-08-16): NOT CERTIFIED; no commit, push, or PR.
Evidence:
Remaining blocker:
Nonblocking correctness follow-up:
The two allowed corrective rounds are exhausted. The v3 staged candidate remains frozen as evidence. Replan scope for v4 is deliberately narrow: define an explicit fail-closed or explicitly-skipped provenance contract for non-full-history contexts, add strict integer validation for count/token fields, then run focused tests, one canonical broad proof, and one bounded final gate.
BaseInfinity commentedon Aug 18, 2026
Release-train checkpoint: the v4 pilot candidate remains frozen while P0 reviewer-infrastructure issue #158 is corrected. The live v4 gate exposed forbidden advisor use that the runner did not reject safely; this is infrastructure failure and not a finding against the unchanged #109 evidence candidate. Do not resume obsolete v2 or v3 work. After #158 integrates, rebase or refresh v4 deliberately against current main, preserve its measured evidence, and continue the bounded #109 completion gate without resetting the correction budget.
[-]Implement incremental corrective commits with a final whole-PR review gate[/-][+]Complete the bounded incremental-review pilot and final candidate gate[/+]BaseInfinity commentedon Aug 22, 2026
1.0 release audit (2026-08-22): replaced the stale 0.7.36/research framing with the current v4 checkpoint and finite completion criteria.
The staged v4 candidate remains at
/Users/stefanayala/codex-sdlc-issue109-v4, tree915130665ff2877f89397eb00ea0ecde460008c3, blocked by #158 and the narrowed #157 classification contract. The longer measurement program may continue after 1.0; this issue closes for 1.0 when the current candidate is refreshed, proven, boundedly certified, delivered, and the keep/tune/sunset decision is recorded.BaseInfinity commentedon Aug 22, 2026
#158 is integrated via PR #165 at exact commit
af037604a6f8d8ac2b9a3279b176aebed61aefb5; its one-time owner exception is consumed and normal fail-closed policy has resumed.The v4 worktree and staged tree were rechecked and remain unchanged. Do not rebase or mutate them yet: #157 is now the sole dependency and the active 1.0 engineering slice. After #157 lands, deliberately refresh v4 onto then-current
mainwithout resetting the cumulative correction budget.BaseInfinity commentedon Aug 23, 2026
Dependency cleared — v4 resume audit
#157 integrated through PR #166 at exact commit
a07fc3d3fb77767de4c6e677e24bce628256668a; pre-merge and post-merge Windows CI both passed. The 1.0.0 milestone now has 7 open blockers, and #109 is authoritative next.Frozen v4 audit before refresh:
/Users/stefanayala/codex-sdlc-issue109-v4;fix/issue-109-bounded-incremental-v4;a5763fe197d012935a2cc2d443a4b5b84c458f10, four commits behind current main;915130665ff2877f89397eb00ea0ecde460008c3;Cumulative history is preserved: v3 exhausted its two same-plan corrections; v4 remains the explicitly authorized narrow replan for fail-closed unavailable provenance plus strict integer fields. The earlier v4 live gate was blocked by reviewer infrastructure (#158/#157), not a candidate verdict, so it did not create a new corrective round.
Next: recoverably carry the exact staged v4 delta onto current main, add only the now-required #109 ROADMAP activation sync, run focused proof/self-review, one guarded canonical proof, and one bounded normal joint gate. No obsolete v2/v3 candidate or review exception will be reused.
BaseInfinity commentedon Aug 23, 2026
v4 refreshed candidate — focused proof and self-review complete
a07fc3d3fb77767de4c6e677e24bce628256668a(currentorigin/main; +0/-0)/Users/stefanayala/codex-sdlc-issue109-v4fix/issue-109-bounded-incremental-v46f7c46cda02685feaf27eabe45e83c7fd1d604b215ce3361b112dc1cb7afeb3d7bd0dc3195ffbaba. The four source/evidence paths remain byte-identical to that preserved v4 candidate; the benchmark test only adds an independent fractional-token probe.ROADMAP.md: tune — retain bounded completion-boundary dual review for high-risk/proof/security/release work, keep ordinary work risk-tiered, and continue measurement post-1.0 into 1.1.Next and only remaining candidate gates: one guarded canonical 11/11 proof, then one bounded normal Sol High + Fable High gate. A new P0/P1 stops for explicit direction; no exception or correction-budget reset is available.
BaseInfinity commentedon Aug 23, 2026
Canonical exact-tree proof complete
6f7c46cda02685feaf27eabe45e83c7fd1d604b2a07fc3d3fb77767de4c6e677e24bce628256668agit-guard.cjs prove --reviewedwith the canonical proof runner2026-08-23T08:24:49.228Z2026-08-23T12:24:49.228Zsha256:9250d3fec6f4bf36e0dfb46be85341df4ec01bcc92440377f6b636bf3ac10717Next: exactly one bounded normal Sol High + Fable High final gate. No review exception is available.
BaseInfinity commentedon Aug 23, 2026
v4 completion gate stopped fail-closed — forbidden reviewer tool use
The single bounded normal completion gate terminated without certification. This was not an auth, quota, or timeout failure.
6f7c46cda02685feaf27eabe45e83c7fd1d604b2a07fc3d3fb77767de4c6e677e24bce628256668asha256:9250d3fec6f4bf36e0dfb46be85341df4ec01bcc92440377f6b636bf3ac10717INVALID_VERDICTstatus=partial,certifying=false,joint_verdict=NOT CERTIFIEDinvalid_execution;infrastructure_failure=false;transient=false;retry.recommended=falseforbidden reviewer tool use: Bash; no verdict completed.Evidence:
codex-sdlc/review-run.jsoncodex-sdlc/dual-review.jsoncodex-sdlc/review-logs/1787473524277-6f7c46cda026/Per #157 and the #109 v4 checkpoint, forbidden reviewer execution is non-transient and must not be retried automatically. The one bounded v4 final gate is consumed. Resume only with explicit maintainer direction for a new bounded replan; do not deliver this candidate, reuse an exception, or treat the partial receipt as certification.