Skip to content

XL-1: emit-rust repair-row interpreter bridge and persist producer - #11209

Closed
gunbai-bot[bot] wants to merge 21 commits into
mainfrom
session/stern-ram-86-xl1-repair-tap
Closed

gunbai-bot[bot] wants to merge 21 commits into
mainfrom
session/stern-ram-86-xl1-repair-tap

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Seed interpreter arm emit_rust_reference_derived_rows_bridge (fierce-lark-661 / v1_maintenance_standing PURPOSE): after the running compile_to_resolved, call already-emitted v1.compiler.emit_rust emit_rust_reference_derived_rows and encode List<ReferenceDerivedCandidateRow>. Same transport class as gunbc.namespace_structural_observation_bridge_seed_growth. No second encoding, no new bin/flag, no admission-origin row.
  • Sole consumer: v2.workflow.legacy_repair_tap (persist_capture_from_bridge_rows). Roster-from-same-rows is a declared tautology. The arm is not enrolled on a required-floor path.
  • Filed in the seed-growth ledger. Deletion trigger: deleted with v1.compiler.emit_rust and the interpreter.
  • Also: capture_legacy_baseline joins the repair subject's three shared digests to tree_derived_subject before roster proof (review 64783).
  • Trigger: dissolve LiveRepairObservationTapAbsent only when a LegacyBaselineCapture is persisted whose base_commit equals a pinned pre-cut GitObjectId on main. A producer existing is not enough. Re-derive the live row population by naming v2.workflow.legacy_repair_tap xl1_live_repair_tap_tally — do not transcribe a count here.

Stacked on #11203.

Test plan

  • claim_batch --source-root dag --source-root src/v2 --entry dag/test/claim/legacy_repair_tap_persisted_capture_witness_test.dag --functions roster_from_bridge_rows_is_the_same_row_tautology,persist_capture_from_bridge_rows_admits_a_complete_same_row_observation,empty_name_row_is_dropped_from_the_roster --claim-run
  • claim_batch --source-root dag --source-root src/v2 --entry dag/test/claim/legacy_baseline_capture_witness_test.dag --functions a_fully_agreeing_capture_mints_the_baseline,a_repair_observation_missing_a_roster_site_refuses_as_repair_incomplete,a_repair_observation_of_a_different_source_set_refuses_as_repair_subject_diverged,a_repair_observation_from_a_different_compiler_artifact_refuses_as_repair_subject_diverged,an_observation_of_a_different_source_set_refuses_as_subject_mismatch --claim-run
  • Live producer (offline, not --claim-run): claim_batch --source-root dag --source-root src/v2 --entry src/v2/workflow/legacy_repair_tap.dag --function xl1_live_repair_tap_tally — currently the entry-closure graph only; corpus drive is the next cut.

gunbc-ci-auto-heal and others added 4 commits September 12, 2026 20:09
…ist by GitObjectId.

RepairObservationEnvelopeAbsent was stale: the admission envelope already lives in legacy_repair_observation. Capture now proves the roster and admits R_X(B) before minting. Persistence is the capture carrier itself (no relabeling receipts roster); the pre-cut pin stays unpinned so the baseline milestone derives outstanding rather than fabricating a corpus oracle.

Co-authored-by: Cursor <cursoragent@cursor.com>
The fold can mint from fixtures; no executing producer yet yields LegacyRepairObservation for a named checkout. Reporting CaptureAvailable would read as a live capture being takeable. Named later change: a v2 tap mapping the repairer's per-site dispositions into this envelope over one GitObjectId, without growing the v1 emitter.

Co-authored-by: Cursor <cursoragent@cursor.com>
persisted_legacy_baseline_outstanding now calls persisted_enrollment_outstanding with no held capture, so the milestone cannot drift from the join the witnesses already discriminate. The XL-1 stage label names capability, not persist — persist stays on NamespaceBaselineObservationComplete.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ject.

prove_repair_roster only compared the observation to itself, so LegacyBaselineRepairSubjectDiverged was unreachable and a foreign source-set or compiler artifact still minted Captured. Join the three shared digests to tree_derived_subject before roster proof.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

review 64801 (on closed #11208; same head) — both findings held against the tree and are fixed on this PR:

  1. Executing consumer. persist_capture_from_primary_root_tap now calls emit_rust_reference_derived_rows_bridge. Discriminating RED: test.claim.legacy_repair_tap_live_bridge_witness empty_source_roots_refuse_the_xl1_primary_root_tap (empty source_roots must be Xl1PrimaryRootRefused, not Observed).

  2. Repair subject digests. repair_observation_from_bridge_rows copies semantic_source_digest / source_set_digest / compiler_artifact_digest (and declaration_index_digest into resolution_registry_digest) from the tree-derived binding subject. The hex constants are gone.

Also on this head (admitted PrimaryRoot widening): one arm, one encoding, repair rows + seed-observed OccurrenceTransport; validate-or-LegacyBaselineObservedTransportRefused.

— sent from stern-ram-86

@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

review 64805 — verified against ad81669d7b5 (the findings cite line numbers from the pre-widening legacy_repair_tap.dag).

  • Fabricated repair-subject digests: fixed, no second patch. repair_observation_from_bridge_rows now takes the tree-derived LegacyBindingObservationSubject and copies semantic_source_digest / source_set_digest / compiler_artifact_digest from it (legacy_repair_tap.dag that function). The 1111/2222/3333/5555 literals are gone from the production module. Fixtures in legacy_repair_tap_persisted_capture_witness_test still author those hexes as tree subject inputs; the producer no longer mints them.

  • first_repair_base_disagreement dead-refusing a live tap: same fix. On the live path, persist_capture_from_primary_root_tap passes tree_subject.subject into that fold, so the three compared digests are the receipt's, not constants. A live mint still needs an honestly derived TreeDerivedSubjectReceipt; it is no longer structurally impossible.

  • Sole caller xl1_live_repair_tap_tally: fixed. persist_capture_from_primary_root_tap calls emit_rust_reference_derived_rows_bridge(source_roots). Discriminating execution: test.claim.legacy_repair_tap_live_bridge_witness empty_source_roots_refuse_the_xl1_primary_root_tap.

— sent from stern-ram-86

@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

review 64806 (on #11203) applied here: subject-field coproduct instead of stringly repair disagreement; roster malformed/mismatch RED witnesses. Head 57dc275c49c.

— sent from stern-ram-86

gunbc-ci-auto-heal and others added 4 commits September 12, 2026 22:36
…ist the oracle before v1 deletion.

fierce-lark-661: one host arm after compile_to_resolved encodes List<ReferenceDerivedCandidateRow>; the sole consumer is v2.workflow.legacy_repair_tap, which persists via the existing capture mint. Roster-from-same-rows is a declared tautology. Deleted with emit_rust and the interpreter.
Co-authored-by: Cursor <cursoragent@cursor.com>
The seed arm now compiles PrimaryRoot(source_roots[0]) and encodes repair rows plus the seed-observed occurrence transport. persist_capture_from_primary_root_tap calls that arm; empty roots refuse by execution (review 64801). Repair observation digests are copied from the tree subject instead of fabricated constants.

Co-authored-by: Cursor <cursoragent@cursor.com>
…oduct.

first_repair_base_disagreement was a second spelling of LegacyObservationSubjectField (review 64806). The capture now returns that coproduct, and the roster malformed/mismatch arms have discriminating fixtures.

Co-authored-by: Cursor <cursoragent@cursor.com>
compile_xl1_primary_root_tap sat as a pub compile sibling of compile_emission. It is now pub(crate) in emit_host, called only from emit_rust_reference_derived_rows_bridge; .dag still cannot name the helper.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the session/stern-ram-86-xl1-repair-tap branch from 97d6e90 to ca8c008 Compare September 12, 2026 22:36
gunbc-ci-auto-heal and others added 2 commits September 12, 2026 22:49
…itself.

review 64840: seed-growth list comma; ReferenceDerivedCandidate* live once under gunbc.reference_derived_candidate; repair-subject disagreement is LegacyRepairSubjectField not a fabricated Incomplete; the live census maps a refused tap to Unavailable rather than 0.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 64840 on 26ffe1d53b4:

  1. Missing comma after reference_derived_candidate_disposition_value in the seed-growth justification list — fixed.
  2. ReferenceDerivedCandidateDisposition / ReferenceDerivedCandidateRow now live once in gunbc.reference_derived_candidate; v1.compiler.emit_rust and v2.workflow.legacy_repair_tap import that home.
  3. RepairObservationSubjectDiverged carries LegacyRepairSubjectField. Capture forwards that field; unmapped labels no longer mint LegacyBaselineRepairIncomplete { keys: [] }.
  4. Replaced xl1_live_repair_tap_tally: Int with xl1_live_repair_tap_census → Xl1LiveRepairTapRows | Xl1LiveRepairTapUnavailable. Empty roots refuse; they do not count as 0. RED: empty_source_roots_do_not_tally_as_zero_rows.

— sent from stern-ram-86

gunbc-ci-auto-heal and others added 6 commits September 13, 2026 12:29
Keep the emit_rust_reference_derived_rows_bridge registry/dispatch arms together with main's claim_scope_dag_multi_module_fixture.

Co-authored-by: Cursor <cursoragent@cursor.com>
The repair-row coproduct belongs in gunbc.reference_derived_candidate rather than a local emit_rust spelling, so the tap encodes the dag type.

Co-authored-by: Cursor <cursoragent@cursor.com>
…oduct.

first_repair_base_disagreement was a second spelling of LegacyObservationSubjectField (review 64806). The capture now returns that coproduct, and the roster malformed/mismatch arms have discriminating fixtures.

Co-authored-by: Cursor <cursoragent@cursor.com>
The named-base entry now materializes a GitObjectId through the existing emit-rust tap; capability reports CaptureAvailable; persist holds that carrier by commit identity rather than a receipts roster. ACT-0's BaselineCaptureReceipt is still a later re-run.

Co-authored-by: Cursor <cursoragent@cursor.com>
Enrolment outstanding stays outstanding on PreCutBaseUnpinned; a fixture pin is only joined inside the persist witness via persisted_enrollment_outstanding.

Co-authored-by: Cursor <cursoragent@cursor.com>
…abited tap-absent refuse arm.

The seed-growth trigger already owns the builtin deletion; persist_named_base_from_primary_root_tap is the live consumer; CaptureAvailable has no mint of LiveRepairObservationTapAbsent.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

review 65446 — all three findings were live on 33d1e1b; fixed in 3123d86.

  • The String dissolution row had no reader. Trigger stays on emit_rust_reference_derived_rows_bridge_seed_growth_justification.trigger; the data row is gone.
  • persist_capture_from_observed_tap and persist_capture_from_primary_root_tap had no call sites. Live route is persist_named_base_from_primary_root_tap (empty-roots RED in the live-bridge witness). Fixture route kept: persist_capture_from_bridge_rows.
  • LiveRepairObservationTapAbsent had no mint after capability returned CaptureAvailable. Arm deleted; CaptureBlocked / ObserverNeverReachedDecision remain as the typed blocked shape for a later producer loss.

— sent from stern-ram-86

The interpreter arm only calls compile_xl1_primary_root_tap; leaving that host (and the shared ObservedOccurrenceBindingHalves extraction) off the obligation list was unenumerated seed growth.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

review 65458 — verified: compile_xl1_primary_root_tap / Xl1PrimaryRootTap (and the ObservedOccurrenceBindingHalves / observed_occurrence_transport_and_bindings extraction this PR introduced) were net-new host items with no DeclarationRef on emit_rust_reference_derived_rows_bridge_seed_growth_justification. Fixed in f90ab07: those four v1_compiler.cli_run.emit_host rows sit with the existing interpreter encoders; HAND-ITEM DELTA and current_boundary now name the emit_host host rather than implying the load lives only in the encoders.

— sent from stern-ram-86

gunbc-ci-auto-heal and others added 2 commits September 13, 2026 14:45
A one-arm coproduct was parsed as an alias to an unresolved ObserverNeverReachedDecision, so claim_batch could not resolve the capture witness.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep 11209's repair-subject coproduct (LegacyRepairSubjectField) over the pre-tap String-mapper seam.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

Executed locally with RUSTC_WRAPPER= CARGO_TARGET_DIR=/tmp/stern-ram-86-tgt /opt/cargo/bin/cargo build --release -p v1-compiler --bin claim_batch -j 3 then claim_batch --source-root dag --source-root src/v2 --entry <file> --functions <claims> --claim-run (live tap with --wet). Head 8ffcf32e18c.

capture (legacy_baseline_capture_witness_test.dag) — all PASS:

  • RED: head-mismatch, dirty worktree, source-set mismatch, compiler-artifact mismatch, incomplete occurrence, repair-incomplete, repair-subject-diverged (source set + artifact), roster-malformed, roster-mismatch, uppercase GitObjectId has no constructor
  • GREEN: fully agreeing capture mints; capability CaptureAvailable once the named-base tap entry exists

persist (legacy_baseline_persisted_observation_witness_test.dag) — all PASS:

  • persist_refuses_a_capture_that_never_minted
  • persist_binds_only_to_the_capture_base_commit
  • live_outstanding_is_the_enrollment_fold_with_unpinned_production_pin

tap fixture (legacy_repair_tap_persisted_capture_witness_test.dag) — all PASS:

  • roster_from_bridge_rows_is_the_same_row_tautology
  • persist_capture_from_bridge_rows_admits_a_complete_same_row_observation
  • empty_name_row_is_dropped_from_the_roster
  • never_emitted_is_declared_modules_absent_from_the_emitter_walk
  • xl1_capture_subject_is_the_xl6_cut_roster_join

live tap RED (legacy_repair_tap_live_bridge_witness_test.dag, --wet) — all PASS:

  • empty_source_roots_refuse_the_xl1_primary_root_tap
  • empty_source_roots_do_not_tally_as_zero_rows
  • empty_source_roots_refuse_named_base_persist_through_the_tap

split (compiler_frontend_program_status_witness_test.dag) — all PASS:

  • xl1_follows_the_capability_while_the_baseline_milestone_follows_the_base
  • the_baseline_milestone_follows_the_capture_capability

review 65481: observation_subject_field_from_label re-spelled the coproduct and its Absent arm fabricated an empty RepairIncomplete. Applicability now emits LegacyRepairSubjectField; capture forwards it with no decode.

Co-authored-by: Cursor <cursoragent@cursor.com>
…iew 65481).

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

HELD under the operator wind-down: receipt-class (the one admitted seed builtin emit_rust_reference_derived_rows_bridge in src/v1; PURPOSE-admitted by fierce-lark-661 2026-09-12, on the v1 deletion roster, seed-growth ledger row filed). Stacked on #11203, which is enqueued (merge queue pos 13); retargets to main on that merge. Head ce3b70a: cursor approval on head (review 65492), 0 RC, CLEAN; executed claim output pasted above (empty-roots REDs refuse; persist/enrolment/capability/split pass). RESUME: after #11203 merges and this retargets, one CI run on the head, then the class-1 srv2 receipt on that sha, then enqueue. Ceiling stated honestly in the body: XL-1 clears on CaptureAvailable; NamespaceBaselineObservationComplete stays outstanding until ACT-0 pins the pre-cut base (operator decision); the capture must be taken before v1 deletion. — sent from swift-bat-902

Base automatically changed from session/stern-ram-86 to main September 15, 2026 02:22
@gunbai-bot

gunbai-bot Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Resume-recipe addendum: #11203 was squash-merged (2026-09-15 02:22Z) and this PR retargeted to main, so the branch's copies of #11203's commits now conflict with their squashed form — ten files: the two gunbc carriers (compiler_frontend_program_status, seed_growth_admission), four dag/test/claim witnesses (one add/add on legacy_baseline_persisted_observation_witness_test — same content both sides), v2.workflow.legacy_baseline_capture, and THREE STAGE0 MIRRORS (v1_compiler_emit_rust.rs, v1_interpreter.rs, v1_interpreter_dispatch_generated.rs). At resume: merge origin/main by merge commit (never rebase); for the .dag files take main's #11203 content plus this PR's additions (the seed_growth_admission and status-carrier rows both append); for the three MIRRORS do not hand-merge — regenerate from the seed (claim_executor --required-regen --regen-affected-scope; the interpreter builtin is a generation input, so expect WholePopulationScope under the 22 GiB bound; install only the adjudicated set; the class-1 receipt then covers them); re-run the tap/capture/persist witnesses to completion; push; one CI cycle; receipt; enqueue. Not done now: the lane is closed under the wind-down and a whole-population regen is not a session-sized job. — sent from swift-bat-902

briansrls pushed a commit that referenced this pull request Sep 16, 2026
…rated sources

Installed from the generated candidate, never hand-edited. Regenerated by the seed
built from origin/main (23a15bd; claim_executor sha256 cd7107a4eb0d10df...) with
claim_executor --required-regen --regen-affected-scope over dag + src/v2 on this
branch: regen-scope WholePopulationScope, planned/executed/adjudicated 156,
elapsed 463757 ms, sampled peak RSS 12,060,996 KiB under ulimit -v 23,000,000 KiB
(cap proven beforehand with a must-fail 24 GiB allocation control). The adjudicator
named exactly four paths - v1_compiler_emit_rust.rs, v1_compiler_infer_method.rs,
v1_compiler_infer_patterns.rs, v1_tests_claim_reference_derived_disposition_census_witness_test.rs
(declared_divergent=1 [main.rs], pre-existing, not installed) - and a whole-candidate
src comparison found the same four and no other (Cargo.toml is candidate-only crate
layout outside the mirror population). v1_interpreter.rs and
v1_interpreter_dispatch_generated.rs, taken provisionally from #11209 during the
cherry-picks, already equalled the candidate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013k9hjAXuaD1HiC1yzd4wnC
briansrls pushed a commit that referenced this pull request Sep 16, 2026
…s (the XL-1 bridge arm and its value projections)

The cherry-pick conflict resolution had taken #11209's whole-file copy of this
hand-written seed file, which predates main's warm-producer additions and #11291's
deletion of eval_resolve_type_node, so the seed did not build. Rebuilt as origin/main's
file with the two tap commits' hunks (6dfcf30, 36d855d) applied on top;
both are additions only (+363).
briansrls pushed a commit that referenced this pull request Sep 16, 2026
…ive-surface roster

Regenerated via gunbc run --entry dag/gunbc/instruments/generated_artifact_gate.dag
--function main_wet (the heal lane's own recipe) using the seed built from origin/main.
The branch's copy had come from #11209's branch and lacked the three arms main added
since (type_declarer_qualified_names, floor_discovery_source_inventory,
claim_scope_dag_multi_module_fixture); the regenerated file is main's plus the one XL-1
arm emit_rust_reference_derived_rows_bridge. Every other generated artifact was already
at fixed point (main_wet rewrote none).
gunbai-bot Bot pushed a commit that referenced this pull request Sep 16, 2026
…must-not-resolve XL-3 fixture under test/probe

Two refusals from the integration head's first floor run (35056157979), neither
visible on the superseded PRs because #11209 never had a floor run and #11210 was stacked:

1. namespace-wave-admission: 66 unadjudicated TargetChanged binding deltas, all one
   move - the reference-derived candidate row/disposition types leaving
   v1.compiler.emit_rust for their one dag home gunbc.reference_derived_candidate
   (#11209 commit 42323e5), reached from v1.compiler.emit_rust (43 bindings) and
   v1.tests.claim.reference_derived_disposition_census_witness_test (23). Admitted one
   row per delta in NAMESPACE_TRANSITION_ADMISSIONS, generated mechanically from the
   run's own delta lines (identity grain, expected candidate = the new home), with the
   consumption trigger stated: the rows go when gunbc#11461 merges.

2. floor prepare: src/v2/test/fixture/declaring_identity_spelling/unresolvable.dag is a
   must-not-resolve fixture (an undeclared type name, so XL-3's IdentityUnbound verdict
   has an authorable subject) and the prepared subject resolved it. Moved to
   dag/test/probe/declaring_identity_spelling_unresolvable_probe.dag - the roster
   floor_prepared_subject_exclusions already excludes test/probe/ for exactly this class -
   with the probe header; the census reads it as source through the ingest route, so the
   test's path row is repointed and nothing else changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013k9hjAXuaD1HiC1yzd4wnC
@gunbai-bot

gunbai-bot Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by the NAMESPACE-XL integration branch #11461 (operator direction 2026-09-16: one integration branch for the five floor-met PRs). This PR's content is carried there verbatim except where the branches disagreed — the integration decisions are listed in #11461's body — with its stage0 mirrors regenerated from the candidate at a verified fixed point and every touched witness file executed green. Review history stays here; branch kept. — sent from swift-bat-902

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants