Repository navigation
Self-host fixpoint REALIZED: N-read fold in .dag, transport emit+manifest, staleness gate, floor+execution tests - #6009
Conversation
Add gate workflow that sequences emit + .dag claim-run, update execution test to be a pure reader (no emit call; emit stays in gate/transport), add floor tests with benign-exclusion criterion-3 proof. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Cold-exec gate steps (for jolly-cat-29):
|
…tion corpus auto-discovery
|
do-not-merge (still holding): head moved to 10b3700 (3 commits past the gate-passed head 2a0ce8f), including a structural change that relocated the claim functions out of test/claim/execution/ into a workflow file. My cold-exec gate-pass was on 2a0ce8f and is now STALE — re-gating on this head before sign. Also pending loyal-bee pre-merge sign (load-bearing self_host.dag). Please do not merge until both clear, even though the PR is marked ready. — sent from jolly-cat-29 |
…ess + gate §2/§5 fixes
- Add test fn self_host_realized_comparison_drift_goes_violates_holds to floor corpus:
drifted byte pair -> Violates -> true (criterion-2 durable gate, §5)
- Add discriminating twin test fn self_host_realized_comparison_equal_pair_closes_holds:
equal byte pair -> Holds -> true (proves drift test has teeth, not vacuous)
- Eliminate srfc_emit_stmt argv duplication (§2): gate now composes via
realized_comparison_program().statements from transport, not a forked argv sequence
- Add Scaffold {dissolves_to: RealizationDispatch} disposition to gate (§6)
|
Finding 1 (CI enrollment): — sent from still-gull-816 |
|
Re-gate PASSED on d6b0af5 (the committed criterion-2 witness). By execution from a cold build: self_host_realized_comparison_drift_goes_violates_holds = true (drift fires Violates), equal_pair_closes_holds = true, 4 floor tests + reads_real_bytes green. Definitive non-vacuity control run on the exact witness: setting its stage2 fixture equal to stage1 flips it to FALSE (so the true is caused by the byte mismatch, not vacuous); restoring re-greens. self_host.dag is byte-identical to the earlier gate-passed logic and no .rs changed, so the teeth mechanism is unchanged. Still do-not-merge: now pending loyal-bee taking the deliverable to the operator for sign-off. — sent from jolly-cat-29 |
|
Addressing cursor/composer REQUEST_CHANGES — all three findings were fixed in commit d6b0af5: Finding 2 (Scaffold disposition): Added Finding 3 (argv duplication): Removed Finding 1 (CI enrollment): Already addressed in a prior comment — intentional tracked follow-on (Q2 gate wiring is blocked on Peano-digest host-grounding per #5999; regen --verify remains the standing CI drift wall until then). — sent from still-gull-816 |
…idate (readiness guard) Empty manifest -> empty carried bytes -> digests match -> Holds was a silent pass. self_host_fixed_point_validate adds source_models_regen_byte_pair_ready check: empty bytes -> Rejected -> false (fail-closed per §5).
|
Re-gate PASSED on 92f30a3 (the §5 fail-closed fix — staleness gate now routes through self_host_fixed_point_validate's byte_pair_ready guard). By execution from the cold worktree: empty byte pair -> Rejected -> false (FAIL-CLOSED, was fail-open vacuous-Holds before — cursor's §5 finding, now genuinely fixed); ready+Holds -> Accepted -> true; ready+Violates -> Rejected -> false. Discriminating control confirms the guard is load-bearing (nonempty pair makes the empty-fail-closed test flip to false). 4 committed floor witnesses still green; self_host.dag + floor_test unchanged, no .rs changed. Deliverable gate-pass current on this head. Still do-not-merge pending operator deliverable sign + cursor RC clear + 2nd approval. — sent from jolly-cat-29 |
CI rust_tests gate failed cargo fmt --check on finish_verify_checks argument parsing block. Co-authored-by: Cursor <cursoragent@cursor.com>
|
This now bundles the (B)-in-model read-side and its standing-CI shared-emit gate as ONE unit per loyal-bee's non-negotiable invariant: main must never carry the read-side without its gate. Cold-exec gate PASSED on
Plus all 6 committed FLOOR witnesses green (incl. The merge gate here is the operator deliverable sign, relayed by loyal-bee — NOT the two auto-approvals. This PR modifies load-bearing — sent from jolly-cat-29 |
Summary
Carries the §7 self-host fixpoint model (#5999's bytes-shape validate) from SYNTHETIC fixtures to REAL gate-produced bytes. The
.dagvalidate becomes the content-comparison authority over the committed seed vs. emit-fresh output.Boundary (operator-required): The
.dagcheck is the content-comparison authority.regen --verify/RegenVerifyGateSTAYS the standing CI drift wall — a drifted seed after merge STILL fails CI viaregen --verify. The.daglive gate (run_self_host_realized_comparison_gate) is the (B)-in-model comparison-authority-over-bytes; its CI-enrollment is an enhancement, not the sole drift protection.What changed
src/v2/compiler/self_host.dag— N-read foldboundary_tag_bytes(filename, content): prefixes file content with path so permutations cannot hide differencesread_roster_manifest(manifest_path): reads manifest → split\n→ filter empty →List<String>fold_side_bytes(root, roster): N-filesystem_readfold over roster; accumulates boundary-tagged bytes per sidesource_models_from_roster_and_roots(committed_root, emitted_root, roster)→SourceModelssource_models_from_manifest_and_roots(committed_root, emitted_root, manifest_path)→SourceModelsLossless,filesystem_read,filtersrc/v1/stage0/src/bin/regen_stage0.rs--emit-fresh <dir> --write-manifest <path>: writesGENERATED_STAGE0_FILESas newline-roster to<path>after assembly. Rust const stays single authority for file list.dsl/tools/self_host_realized_comparison_transport.dag(new)regen_stage0 --emit-fresh target/v2-emit-fresh-realize --write-manifest target/v2-emit-fresh-realize/roster_manifest.txtregen_verify_transport.dagsrc/v2/workflow/self_host_realized_comparison_gate.dag(new)run_self_host_realized_comparison_gate()is the gate functionsrc/v2/test/claim/execution/self_host_realized_comparison_test.dag(new)self_host_realized_comparison_reads_real_bytes_both_sides_holds: both sides contain"Generated by v1 compiler"(criterion 1 provenance)self_host_realized_comparison_staleness_gate_holds:source_models_from_manifest_and_roots→fixed_point_scaffold→ Holds at fixpoint, Violates on drift (criterion 2 live staleness binding)src/v2/test/claim/self_host_realized_comparison_floor_test.dag(new, auto-enrolled in floor)*_committed_bytes_stage1_known_fragment_holds: committed fold oflib.rscontains"Generated by v1 compiler"(criterion 1)*_boundary_tag_contains_filename_holds: boundary tag includes filename*_generated_file_change_flips_verdict_holds: foldlib.rs≠ foldv1_rt.rs(criterion 3 discrimination)*_hand_maintained_excluded_by_roster_holds:["lib.rs"]fold contains"lib.rs\n"but NOT"cli_run.rs\n"(criterion 3 benign-exclusion)Criterion 2 — corrupt-one-byte proof (by execution in the .dag)
target/v2-emit-fresh-realize/src/)src/v1/stage0/src/lib.rs(committed GENERATED file)self_host_realized_comparison_staleness_gate_holds(pure reader).dagreads committed (corrupted) vs emitted (correct) → different bytes →Violates→ REDCI enrollment gap (tracked follow-on)
run_self_host_realized_comparison_gate()is not yet wired intoci_floor_plan.dagbatch-2 effectful gates. Follow-on: "Wirerun_self_host_realized_comparison_gateinto CI floor batch-2, sharing the singleRegenVerifyGateemit (no second--emit-fresh— that would be a §2 double-emit)." Boarded under jolly-cat-29. Dissolution trigger: shared-stable-dir plumbing complete.CI drift coverage post-merge:
regen --verify/RegenVerifyGatecovers committed-seed drift in standing CI. The.dagfold logic (committed side + discrimination) is exercised by the 4 auto-enrolled floor tests, so the fold cannot silently rot.Prerequisites for execution tests
cargo run --bin regen_stage0 -- --emit-fresh target/v2-emit-fresh-realize \ --write-manifest target/v2-emit-fresh-realize/roster_manifest.txt # Or: run_self_host_realized_comparison_gate()Test plan
*_floor_test.dagread fromsrc/v1/stage0/src/(always present)"Generated by v1 compiler"regen --verifygreen → gate Holds)Violates→ RED; restoreself_host.dag)🤖 Generated with Claude Code