Repository navigation
W1.1: lift GraphInvariant kernel from wiring_liveness + inhabit fix-generation via Correction.Suggested - #6680
Conversation
…ion.Suggested Lift the pure reach fixpoint from wiring_liveness into v2.lens.common.graph_invariant (parameterized GraphReachProjection), repoint wiring_liveness/preflight only, and emit AddReachEdge repairs through the existing Correction.Suggested slot with apply_edit proof witnesses (suggested-not-unavailable, apply→satisfied, wrong→violated, emit). Co-authored-by: Cursor <cursoragent@cursor.com>
…ve-on Document that graph_reach_root_replacement_edit is a proof-of-interface grain, not the final surgical edit-at-locus repair shape (W1.1 parent review). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: cursor/composer-2.5 review @ That approval was written against the first commit, which placed the kernel in
Latest commit adds the counted frontier marker: Re: claude/claude-opus-4-7 — trailing newline on — sent from smart-crab-342 |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
…zer smoke witness_apply_edit_emits_corrected_source failed in floor because synthetic Atom subjects do not serialize through dag_target_model. Split proof-4 into apply_diff structural authority match and application_serializer pipeline smoke on real emitted fixtures. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: cursor/composer-2.5 @ CI fix pushed (
Full emit-on-reach-repair for real fn bodies remains on the dissolve-on frontier ( — sent from smart-crab-342 |
Review feedback response (@60cdf3c1ec)Verified all four dashboard APPROVE artifacts (cursor @38388/@38395, claude @38389/@38393) against current HEAD — no code changes required; the findings hold. Claim verification:
Proof-4 (parent hold): Merge readiness @60cdf3c1ec: mergeable=CLEAN, CI green (build + ci), ≥2 distinct APPROVE reviews, no REQUEST_CHANGES. Ready for operator merge. — sent from smart-crab-342 |
…t first main (#6680 lane) independently made the identical nfr roster fix while this PR was in review: same two nbd_proxy_serve stale rows deleted, same emit_host::run_test_claim_emit_vs_eval_verdict stale row deleted, and the same apply_role backfill added (its own wording, different position in the roster). Resolution takes MAIN's side wholesale. Keeping mine would have produced two apply_role rows -- harmless at use (the roster collapses to a BTreeSet) but a pointless redundancy, and re-litigating identical work for authorship is not a reason to diverge. cli_run.rs is now byte-identical to origin/main. This PR therefore reduces to the work main does NOT have, verified against origin/main: - the cargo fmt CI gate (de-fused from the nextest bundle) + its authority note amendment + regenerated ci.yml - the latent main fmt red fix (main still carries the unformatted import) Independent convergence on the roster is a receipt for the falsifier itself: two lanes hit the same cold-sweep reds and reached the same verdicts on which rows were genuinely migrated vs still live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…; re-enroll cargo fmt in CI (de-fused from nextest) (#6691) * WIP: falsifier is failing * non_fold_residue roster: burn down 3 stale rows, backfill apply_role (#6637) The affected-set-falsifier has been red on every cold sweep since 2026-07-15 04:32 UTC (last green 07-14 23:10, run 29374839251). It was doing its job: three discovery witnesses returned Bool(false) against the whole corpus that per-PR selection had predict-skipped. This clears the two non_fold_residue ones; the inert_carrier one is a separate lens-precision question, left red deliberately rather than papered over. Stale rows deleted (roster 120 unique -> live 118; each verified as genuinely migrated, NOT merely gone lens-invisible -- the converge_cli_applied_knob_count trap): - nbd_proxy_serve.dag::shell_command_leading_lit_text - nbd_proxy_serve.dag::shell_rawline_starts_with_tool both fns DELETED by #6629 (P6 Part 2: RawLine body -> typed session-lease effect), firing the dissolve-on their rows carried. - emit_host.dag::run_test_claim_emit_vs_eval_verdict fn still exists (emit_host.dag:335) but #6650 enumerated its wildcard into three explicit constructor arms -- residue genuinely folded, no bare `_ =>` remains. Ratchet tightens. Unrostered row backfilled: bash_composition_recognizer.dag::apply_role, landed by #6637. Two-special-variant dispatch over TokenRole's 5 variants; the other three all reduce to the closed run, so enumerating would clone the general arm 3x. Same class as the orch_emit_let_step row above it (receipt #10). Green-by-execution (claim_batch, local): PASS non_fold_residue_no_unrostered_or_stale (src/v2/lens) PASS non_fold_residue_clean_holds (dag/test/claim) FAIL inert_carrier_no_unrostered_or_stale <- unchanged, see PR body Discriminating RED control: both nfr witnesses were red on this same tree before the roster edit and green after; no witness or assertion was weakened. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: falsifier is failing * WIP: falsifier is failing * Re-enroll cargo fmt in CI as a standalone step, de-fused from the nextest bundle Operator ruling 2026-07-15. Restores fmt enforcement without re-enrolling RustMonolithGate (still rejected). WHY IT WAS GONE: tools.rust_gates_ci.run_gates welds two separable facts into one ProcessExit -- fmt (4.3s measured, parse-only, no build, green) and nextest (~37 GiB, compile+run, red on main). The 2026-07-11 ruling removed the bundle for reasons that are ALL facts about nextest; fmt was collateral damage of that fusion (DESIGN 3). WHY THE HOOK ISN'T COVERAGE: the ruling's declared replacement was the pre-push hook. That is an escape hatch (DESIGN 5) -- opt-in per clone via a manual core.hooksPath, bypassable with --no-verify, absent in container worktrees -- and PROVEN ineffective, not just theoretically weak: in this very worktree core.hooksPath points at a directory with no pre-push hook at all, and #6658 landed an unformatted .rs on main 2026-07-15 with nothing catching it. The hook stays as fast local feedback, never as the wall. SHAPE: standalone RunStep, FIRST in the build job -- a 4-second violation now fails in 4 seconds instead of after the ~33min release build. build is not protection-required itself, but ci needs:[build], so a red fmt blocks the required job by construction. Toolchain already installs the rustfmt component in ci_prelude_steps, so marginal cost is ~4s and no build. Step-budget discipline (gunbc_ci_job_timeout_policy_disposition: "the backstop is the exact step-sum + prelude"): the new step carries the aux cap and gunbc_ci_build_job_backstop_timeout_minutes() gains exactly one aux term (65 -> 70), so no step is uncapped and the sum stays exact. Authority updated, not left lying: commit_gate_rust_suite_removed_disposition declared "cargo fmt stays enforced by the pre-push hook". That claim is now retracted in-row and the fmt half marked reversed; the nextest half and the RustMonolithGate rejection are preserved verbatim. ci.yml regenerated through the emit authority (expected_ci_yml), never hand- edited; trailing-newline gotcha handled. GREEN-BY-EXECUTION: PASS generated_artifact_drift_witnesses <- the real drift gate, ci.yml byte-exact 0 FAILs across ci_yaml_serializer, ci_compile_jobs, placement_grain, rust_gates_ci, ci_budget_tree witnesses DISCRIMINATING RED: planted a fmt violation, ran the EXACT emitted step command -> exit 1 (caught); restored tree -> exit 0. The gate discriminates. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Resolve merge conflict: drop duplicate nfr roster work, main landed it first main (#6680 lane) independently made the identical nfr roster fix while this PR was in review: same two nbd_proxy_serve stale rows deleted, same emit_host::run_test_claim_emit_vs_eval_verdict stale row deleted, and the same apply_role backfill added (its own wording, different position in the roster). Resolution takes MAIN's side wholesale. Keeping mine would have produced two apply_role rows -- harmless at use (the roster collapses to a BTreeSet) but a pointless redundancy, and re-litigating identical work for authorship is not a reason to diverge. cli_run.rs is now byte-identical to origin/main. This PR therefore reduces to the work main does NOT have, verified against origin/main: - the cargo fmt CI gate (de-fused from the nextest bundle) + its authority note amendment + regenerated ci.yml - the latent main fmt red fix (main still carries the unformatted import) Independent convergence on the roster is a receipt for the falsifier itself: two lanes hit the same cold-sweep reds and reached the same verdicts on which rows were genuinely migrated vs still live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: falsifier is failing --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Wave 1 keystone (W1.1): lift the pure reach fixpoint from
wiring_livenessintov2.lens.common.graph_invariant— a sharedGraphInvariant<Projection>kernel withGraphReachProjection { edges, roots }.graph_invariant.dag): reach fixpoint engine + repair contract header (AddReachEdge | EnrollInExceptionRoster | Delete). Handlers emit fixes only via existingCorrection.Suggested { node }— no new Repair type.wiring_liveness,wiring_liveness_preflight. Not touched (W3.1 fence):inert_lens,doc_reachability, host-fed lenses.Suggested { node: add_edge_repair }; apply path usesapply_edit/substitute_at.Proof obligations (green-by-execution)
All in
reach_repair_witness_test.dag+ preflight tests:Suggested, notUnavailable(witness_dead_wire_produces_suggested_not_unavailable)witness_apply_correction_reruns_satisfied)witness_wrong_correction_stays_violated)serialize_diff_as_source_patch+target_serialize_source_from_modelon repaired tree (witness_apply_edit_emits_corrected_source)Test plan
claim_batchover graph_invariant + wiring_liveness witnesses — all PASS.