Skip to content

Lane A E0308 re-baseline (Route-A last mile): CONTINUE emitter/seed-green-integration (do NOT start fresh). Assemble the REAL crate — emitted seed closure + the ~20 hand-written periphery modules (v1_interpreter/cli_run/v1_rt/lens kernel) — cargo-build it, and produce a CATEGORIZED E0308 count by va - #5705

Merged
briansrls merged 55 commits into
mainfrom
emitter/seed-green-integration
Jun 24, 2026

Conversation

@briansrls

@briansrls briansrls commented Jun 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

E0308 re-baseline for the Route-A last mile. Assembles the REAL faithful emitted
seed crate — the emitted seed closure (108 modules) + the 22 hand-written periphery
modules (v1_interpreter/cli_run/v1_rt/lens-kernel project modules) — and
cargo-builds it to measure the latent emitter-completeness gaps that the committed
hand-synced seed hides (it deliberately leaves the std-tower modules unwired in
lib.rs). Produces a categorized E0308 count by variety — the input the carrier-mark
dissolution trigger (node://adhoc-80af9ff8-40f) was waiting on.

Per DESIGN §6 (no parallel-ledger docs), the categorized baseline lives in this PR body /
lane node
, not in a revived docs/ file. The committed change is the reusable
apparatus: a non-destructive harness mode + a verified reproducer.

Result — the "~150 gaps" estimate was stale by ~4×

RUSTC_WRAPPER="" cargo build --lib on the assembled crate: 73 total errors, 38
E0308.
The 38 reduce to two emitter root causes covering 89%:

n family root cause fix locus
24 (+1 wrapped-label = 25) A — map-literal &str key emitter writes map keys as bare &str literals (__m.insert("true", …)) without .to_string(); values do get .to_string(), so the map infers HashMap<&str, V> vs the declared HashMap<String, V> map-literal emission (one fix → −25 E0308, 66%)
10 B — Box/Rc/Option wrap auto-wrap/unwrap coercion not inserted: Box<String>↔String (7), Rc<X> vs Option<Rc<X>> missing Some() (3) coercion-insertion at call/construct sites
3 C — scalar &str/String string literal not .to_string() in scalar position same coercion path, scalar arm

Worst files: v1_compiler_stage0_crates.rs (6), std_types.rs (5),
extdeps_languages_dag_syntax.rs (4).

Non-E0308 residue (the other 35) — distinct classes, separately owned

n code class where
12 E0560 measure-tower field emission (Rc<Measure<Q,U,i64>> has no field count) std_measure.rs
8 E0433 unwired periphery (inert_carrier_project / non_fold_residue_project not declared in emitted lib.rs — regen patch-list stale vs the 3 newest HAND_MAINTAINED modules) v1_interpreter.rs
5 E0425 unresolved fn/type (v1_rt::utf8_decode_bytes, SemVerConstraint) extdeps_cargo.rs, …
2+2+2+1×4 E0573/E0599/E0091/E0277/E0252/E0107/E0063 std-tower generic-emission residue std_realization_schedule / std_machine_constraints / std_types / std_termination

Honesty caveat (§5): the 38 is a lower bound. E0433 (8) and E0425 (5) are
resolution failures — rustc aborts type-checking in those regions, so they mask an
unknown count of further E0308. Families A and B are independent of those regions and
are the trustworthy, actionable core. (One confound was removed for this measurement: the
emitted Cargo.toml omitted im-rc, used by hand-written v1_interpreter → 2 spurious
E0432; the harness now adds it, mirroring the committed stage0 deps.)

Changes (the apparatus)

  • regen_stage0.rs: additive, opt-in --emit-fresh <dir> — runs the normal regen
    assembly phases (emit closure → copy periphery → patches → rustfmt) into a caller-named
    dir and stops (no copy-back, no temp cleanup). The committed seed is never mutated.
    write / --verify behaviour is untouched. Also adds im-rc to the assembled
    Cargo.toml.

Reproduce

cargo build -p v1-compiler --bin regen_stage0
./target/debug/regen_stage0 --emit-fresh <dir>          # ~20 min: full v1-seed self-compile
cd <dir>
RUSTC_WRAPPER="" cargo build --message-format=json --lib > build.json 2>&1   # ="" bypasses flaky sccache

# total + E0308 share:
grep -oE '"code":"E[0-9]{4}"' build.json | sort | uniq -c | sort -rn

# E0308 by expected->found pair (one per diagnostic; sums to 38):
jq -r 'select(.reason=="compiler-message") | .message | select(.code.code=="E0308")
        | ([.rendered | scan("expected `[^`]+`, found `[^`]+`")][0]) // "<pair-on-note>"' build.json \
  | sort | uniq -c | sort -rn

Implication for the regen-fixpoint lane

E0308-to-green is not 150 independent gaps — it is two emitter root causes
(map-literal key coercion; Box/Rc/Option auto-wrap) covering 34/38, plus a small scalar
arm. The remaining green work splits into separately-owned classes: the measure-tower
generic emission (12 E0560 + residue) and regen-harness wiring (8 E0433).

Test plan

  • cargo build -p v1-compiler --bin regen_stage0 — green; cargo clippy … -D warnings — green.
  • ./target/debug/regen_stage0 --emit-fresh <dir> — assembles 108 emitted + 22 periphery;
    verified the emitted lib.rs wires the full std-tower (committed wires only std_algebra).
  • RUSTC_WRAPPER="" cargo build --lib in <dir> — 73 errors / 38 E0308; the jq pipeline
    above reproduces the per-family pair counts (sums to 38).
  • No .dag authority or load-bearing pipeline stage modified; measurement + non-destructive
    harness only. No docs/ file added (avoids the doc-reachability orphan gate).

briansrls and others added 30 commits June 20, 2026 17:45
…ols (empty_intern_table, InductiveField, is_bare_leaf_item, SemVerConstraint) — clears E0425 from peeled/turbofish types not in source import set
…d-injection patch (clears E0433 x6 in bootstrap)
…ch (option d, container analogue of String/Nat) — guarded, List-only, at the 2 preserve-nominal sites; clears E0425/E0432 for newly-enrolled std files (realization_schedule Schedule, std_types list_length). v2-target faithful FreeMonoid untouched.
…s at the bare-nominal alias-RHS branch so Int/Nat as a generic ARG (Measure<...,Int>) lowers to i64 in the seed, consistent with the type Int = i64 alias def — clears the std_measure Int E0425
…r conflicts)

Resolved 4 conflicts in src/v1/05_emit_rust.dag and 1 in width_nat_type_arg_test.rs:
- render_rust_applied_type: keep branch's rust_seed_host_container_base (List->host Vec)
- rust_phantom_marker_inner: take main's join() simplification (equivalent, supersedes Optional-peel)
- emit_rust_expr_record_lit: take main's peeled_type_name refactor (branch lines were superseded duplicates)
- phantom-field comment: take main's wording (matches the refactor)
- machine_width test: keep active (un-ignore) — this branch carries the #5325 emitter fix the ignore waited on

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The test runs compile_sources against the in-process lib (committed stage0
seed), whose emit_rust.rs does not yet carry this branch's .dag peel fix
(branch updated 05_emit_rust.dag only, not the committed seed mirror). So it
must stay #[ignore]d until the seed regen lands (Track A step 3 / 2-stage
bootstrap). Reverts an over-eager un-ignore from the main merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…g/metering)

So `gunbc run` can interpret the live .dag compile/emit fold (compile_sources)
WITHOUT regenerating the seed mirror — making a .dag emitter fix verifiable BY
INTERPRETATION (DESIGN §5 green-by-execution, §7 self-host).

Additive only (fills previously-erroring builtin cases; cannot regress existing
behavior). Proven by execution: the interpreter now resolves the source closure
and runs the full lexer (tokenize) over a probe source, advancing into
parse/resolve. Remaining gaps are deeper interpreter semantics (e.g.
raw_map_lookup on a plain Record), not missing builtins.

- chars(s) -> List<Int>: code points (matches languages.dag emit template +
  lexer source_chars: List<Int>), method dispatch.
- chars_to_string(List<Int>, start, end) -> String: code-point slice -> token
  text, free-fn dispatch.
- record_source_chars_index_lookup(): no-op unit metering stub.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bounded spike (parent-approved) toward running the emit fold by interpretation.
Both additive / non-regressing (fill previously-erroring cases):

- raw_map_lookup: a Record without a callable `lookup` field is now treated as a
  record-form map (key looked up as a field name; miss -> Null -> Violates via the
  existing Witness bridge). Unblocks `data x: Map<K,V> = { ... }` literals, which
  the interpreter builds as Records. (Deeper root: literals are never built as
  type-directed Maps; this handles it at the consumption site.)
- list_push: dedicated method-dispatch arm (was free-fn only). Pushes the arg as
  a single element, unlike concat/append/push which merge a list-valued arg.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…59-2e3

The HAND-APPLIED-REGEN-MIRROR-SYNC mark previously pointed at snappy-swift-91 /
#5325 (done-but-re-drifted, unreachable). The live dissolution lane is
bright-stag's adhoc-1bdd0259-2e3: re-repair the 18-error regen-fixpoint hole +
add a regen-equals-committed CI drift-gate so a main-merge can never silently
re-drift the fixpoint. Comment-only; the panic! splice (code) is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The compile_error! -> panic! mirror splice shortened the string literal, so
rustfmt joins it onto one line (the original was split for the longer
compile_error! form). Hand-edit fmt-drift; cargo fmt --all applied. No code
change -- the splice is identical, only formatting. Restores rust_monolith_gate
fmt --all --check green on #5481.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…dag-only)

Foundational half of the class-3 corpus-representation-coherence fix (the
realization-layer handler-selection root behind the 26 List + 15 generic-syntax
census errors). Adds the named selector RustCorpusRepr = HostNative |
FaithfulFreeMonoid (04_emit_info.dag, auto-committed) and computes it ONCE as
the single authority in build_emit_graph_info (rust_corpus_repr over the whole
module corpus), threading it as the corpus_repr field through all 7 EmitGraphInfo
construction sites (each COPIES the field, never recomputes — quick-seal's
field=authority/param=read invariant).

INERT checkpoint: the type-renderer leaf gates still read the old per-module
rust_corpus_includes_v1_compiler/rust_emit_faithful_text_carrier, so emitted
output is byte-unchanged. Typechecks clean via the existing binary (0
diagnostics, 410 files emitted). The gate-switch + ~15-fn corpus_repr threading
+ leaf-fn param swap + dead-gate deletion + exact mirror transcription land in
the next pass, then the full-loop census oracle.

Realization-layer coherence fix, not a model change (List<e>=FreeMonoid<e> at
std/types.dag:227 untouched). Carrier B-home, idiom-threaded (per quick-seal).
adhoc-1bdd0259-2e3 dissolution lane. #5481.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
briansrls and others added 23 commits June 22, 2026 03:13
…ough emitter (class-3 representation-coherence)

Realization-layer-not-model-change: replaces the per-module host-vs-faithful
gate (rust_emit_faithful_text_carrier(source_indices)) with a single corpus-global
RustCorpusRepr (computed once in rust_corpus_repr, stored on EmitGraphInfo.corpus_repr),
threaded as the corpus_repr selector to every renderer/emitter/seam site. Deletes the
old per-module gate fns (§5 single-authority: divergence was writable). §6-transitional:
collapses to HostNative when src/v1 is deleted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ass-3 logic

The auto-committed regen'd seed pulled in pre-existing .dag<->seed drift (the
extdeps.cargo_version import wiring + faithful-emitted orphan modules) that breaks
the v1-compiler build — that drift is the regen-lockstep capstone's domain, not
class-3. The class-3 representation-coherence work stays fully in the .dag source;
the seed regen lands via the regen-lockstep lane once a class-3 gunbc emits the
bundled extdeps modules host-mode. Seed .rs reverted to the committed fixpoint so
CI's rust gate is green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…gain)

Local class-3 verification re-ran the regen in the working tree, which the harness
auto-committed and re-broke the seed build. Seed reverted to the committed fixpoint;
class-3 logic remains entirely in the .dag source. Seed regen is the regen-lockstep
lane's deliverable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…deleted → FaithfulFreeMonoid, not HostNative)

quick-seal by-execution review: 05_emit_rust.dag:221 stated the dissolution
collapse backwards. src/v1 deleted → no seed → has_seed=false → FaithfulFreeMonoid
(the pure-v2 faithful target), matching 04_infer.dag:6395 and the §6 ruling.
Comment-only; the code (04_infer.dag else-branch) was already correct.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
HAND-SYNCED MIRROR, not a regen fixpoint. Splice the three class-3 emitter
files (v1_compiler_emit_rust.rs, v1_compiler_infer.rs, v1_compiler_infer_emit_info.rs)
from a faithful regen of the class-3 .dag onto the committed seed; every other
module stays byte-identical to committed. Two local drifts hand-resolved:
- cargo header inlined in emit_rust so it does not import the deliberately-unwired
  extdeps_cargo_version orphan (byte-identical to committed emit);
- wire policy passed by value (Rc clone) at wire_value_serialize.rs to match the
  class-3 by-value policy_* signatures.

The std-tower orphans (std_measure / std_algebra / std_realization_schedule /
std_machine_constraints / std_integer / extdeps_version_semver / extdeps_cargo_version)
stay UNWIRED exactly as on main. A faithful full regen would wire them and surface
the deferred ~150-gap emitter-completeness lane (regen-fixpoint emitter-self-host);
that lane is NOT closed here and `regen_stage0 --verify` is expected to differ.
Carrier mark recorded in regen_stage0.rs + the 3 spliced file headers (self-contained;
breadcrumb node://adhoc-80af9ff8-40f).

Validated in scratch: cargo build -p v1-compiler --release --features
text_lookup_work_counter --bins = 0 errors / 0 warnings (all 5 bins); cargo fmt
--all --check clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…veat

Comment-only. Append quick-seal's verbatim invariance line to all four carrier
marks (regen_stage0.rs registry + the 3 spliced file headers): the class-3
host-vs-faithful selection is representation-invariant on the v1-bundled host seed
at this tip (CONTROL B gate-isolated revert builds green; CONTROL A errors are the
wire policy confound, not representation), so the selection's behavioral
discriminating-proof is OWED by the deferred faithful target where the selection
actually fires. Keeps the HAND-SYNCED-MIRROR / not-regen-fixpoint / deferred-~150-lane
mark intact. Still cargo-green (0 errors/0 warnings, all 5 bins; fmt --all --check clean).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Assemble the REAL Route-A crate (emitted seed closure + 22 hand-written
periphery modules) via a new non-destructive `regen_stage0 --emit-fresh <dir>`
mode and cargo-build it to measure the latent emitter-completeness gaps the
committed hand-synced seed hides (std-tower modules unwired in lib.rs).

Result: 73 total errors, 38 E0308 -- the carrier-mark "~150 gaps" estimate was
stale by ~4x. The 38 E0308 reduce to two emitter root causes (89%):
  A (24+1) map-literal `&str` keys not coerced to String -> HashMap<&str,V>
  B (10)   missing Box/Rc/Option auto-wrap coercion
  C (3)    scalar &str/String
Non-E0308 residue (measure-tower E0560, unwired-periphery E0433) categorized
separately with an honest masking caveat. Baseline + reproducer in
docs/plans/e0308-rebaseline-route-a.md.

Also: --emit-fresh adds im-rc to the assembled Cargo.toml (mirrors committed
stage0 deps) so the hand-written v1_interpreter resolves -- removes a spurious
E0432 confound from the measurement.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 24, 2026 03:25
…ility orphan gate)

The categorized baseline as a standalone docs/plans/*.md file is an orphan doc
(nothing in the roadmap_authority/design_document doc graph links it), which reds
both the .dag doc_reachability witness and the rust live_tree_has_no_orphan_docs
test -- the 2 failing CI checks. Per DESIGN §6 (no parallel-ledger docs), the
measurement findings + verified reproducer now live in the PR body / lane node;
the committed change is just the reusable apparatus (--emit-fresh harness mode +
im-rc Cargo patch).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per claude-opus-4-7 review: the prior guard early-returned on `ureq` presence,
so a future emitted Cargo.toml carrying ureq-but-not-im-rc would skip im-rc.
Add each dep presence-gated and idempotently instead. No-op today (emit produces
neither dep); robustness for future re-baselines.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 283bc45 into main Jun 24, 2026
2 checks passed
@briansrls
briansrls deleted the emitter/seed-green-integration branch June 24, 2026 13:19
briansrls added a commit that referenced this pull request Jun 24, 2026
…sedes stale ~12,600) (#5713)

* ROADMAP §5: Lane A cargo-green re-baseline (execution-grounded, supersedes stale ~12,600)

deep-wolf (#5705) assembled the real emitted crate (108 modules + 22 periphery)
and cargo-built it: 73 errors / 38 E0308, where 38 is a LOWER BOUND (8 E0433
wiring failures mask further E0308). 89% of E0308 = two emitter root causes
(Family A map-key to_string = 66% from one fix; Family B Box/Rc/Option auto-wrap),
not the stale ~12,600 / ~150-latent estimate (~4x over).

Enriches the bare §5 `5-cargo-green` Route-A-last-mile item with the grounded
shape + the pole (Family A → B) + the §5 honesty bound: unmask E0433 early so
the true ceiling surfaces; "done" is a re-measure-after-unmask, not 38→0.

ROADMAP.md regenerated (drift-gate green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: ROADMAP planning

* ROADMAP §5: re-measure-after-unmask — true E0308 ceiling 647 (38 was E0433-masked), pole moved to first-Option family (633/647); Family A cleared by #5714

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ROADMAP §5: correct root cause by execution — pole is Optional-on-String-carrier RENDERING (638), faithful-rendering fix 647→9 (#5716); refutes the pipe-first-unwrap premise; residual 9 = out-of-scope tail + 3 model-hole consumers

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ROADMAP §5: pin Route-A tail — pole CLEARED 647→9→6 (#5716 faithful rendering + 3 fail-closed unwraps); residual 6 all pre-existing out-of-scope, separately owned

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ROADMAP §5: reframe finish-line — 0 E0308 is a MILESTONE not cargo-green; full build shows 32 other pre-existing errors (measure-tower 19 dominant, gated); done = 0 TOTAL errors

Refutes the '0 E0308 = done' pin by full-cargo execution (deep-wolf). Measure full-cargo, never a grep of one error family.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant