Skip to content

Isolate fixture census on a scratch MultiEntryIndex - #13575

Closed
gunbai-bot[bot] wants to merge 35 commits into
mainfrom
session/zesty-wren-256
Closed

gunbai-bot[bot] wants to merge 35 commits into
mainfrom
session/zesty-wren-256

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Fixture census loaders no longer retain probe both-closure rows on the process-shared MultiEntryIndex (scratch dropped with the loader). That is a real leak class; it is not the floor blow-up.
  • B1 flattened ancestry_str_bindings stays. An empty-ancestry parent walk was tried and reverted: gunbc.commit_workflow closure reconcile went ~20× (main 15951783a2 62s vs walk head 1251s) with RSS in the same band.
  • Floor class (measured): Strict-prep of the gate already sits near CI memory.high (25 GiB). Planning the seven forged-probe census claims is a one-module keep-set increment, not a compiler-closure pull. RFM: required_floor_strict_prep_sits_on_memory_high. Sibling RFM fixture_compile_retained_on_the_process_shared_index stays for the probe-index leak.

Keep-set (prepare-only on main 15951783a2)

  • Gate seeds: keep 2981, prepare VmHWM 19.45 GiB.
  • Gate seeds plus test.claim.megarac_managed_host_forged_probe_witness: keep 2982, VmHWM 18.71 GiB.
  • Added identity: that witness alone (40 visible names); zero v1.compiler / v2.compiler modules.

Margin (named CI pair)

  • Green merge_group floor run 37744410173 (does not plan those seven claims): prepare-closure-resolve 17.3→21.7 GiB, high=0; prepared-subject-warm current=26840956928 (~25.00 GiB).
  • Control DRAFT: floor-control for #13575 (plan forged-probe census) #13576 run 37743678634 (plans them): prepare-closure-resolve 17.5→21.9 GiB; prepared-subject-warm current=26837438464 (~25.00 GiB); wall ~90 min, CANCEL.

Test plan

Brian Searls and others added 2 commits October 8, 2026 05:06
…e floor's process-shared index.

A compile-census probe that imports a wide stack (the MegaRAC forged witness) was writing parse, admission, and edge-map rows onto the MultiEntryIndex the claim fold consults. Extend that walk on a scratch shell that shares source bytes and is dropped with the loader; keep the enrolled control that reds if the shared slot grows.

Co-authored-by: Cursor <cursoragent@cursor.com>
The green control is silent if the old loader also happens not to grow the
warmed caches; this sibling must fail if the scratch route is reverted.

Co-authored-by: Cursor <cursoragent@cursor.com>
Brian Searls and others added 2 commits October 8, 2026 05:35
A missing process-shared slot is the subject of the RFM evidence, not an
excuse to return passed without asserting.

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

c2 showed planning that census witness (not claim count) pins before probe()
runs. This control refuses the hypothesis that Strict-prep of the changed
witness module both-closes production named only inside forged_probe_source.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 77883: the skip-green is gone on current head. Both fixture_closure_extension_does_not_populate_the_process_shared_index and fixture_closure_extension_via_shared_index_grows_both_closure_edges now panic if try_process_shared_index fails (5b615fd950). try_process_shared_index builds the slot on first call in a unit-test process (remote GREEN/RED both ran assertions).

The duplicate import loop in extend_fixture_imports_on_process_shared_index stays as the enrolled pre-fix route: it is the RED that grows both_closure_edges on the shared slot. Folding it into a production parameter is the RFM next-rung trigger (shared index not in the function's reachable parameter set), not this cut.

— sent from zesty-wren-256

gunbai-bot Bot pushed a commit that referenced this pull request Oct 8, 2026
The floor control lagged at 719f8ea, which still returned passed when
try_process_shared_index failed (review 77893).
Brian Searls and others added 2 commits October 8, 2026 05:54
…ex loaders.

GREEN and RED now differ only by which MultiEntryIndex the one closure
authority extends, so the red cannot drift onto a second BFS.

Co-authored-by: Cursor <cursoragent@cursor.com>
The floor refused MultiEntryIndexBuiltTwiceForOneNameSet: scratch over the
shared source_files map was recorded as two extra builds of the same 8044
names. Empty caches over an already-indexed set are not a second index.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Oct 8, 2026
#13576's floor hit the same BuiltTwice refusal as #13575; without this
the planner-poke run cannot print a cgroup series.
Brian Searls and others added 2 commits October 8, 2026 09:12
A fresh scratch per compile made every compile_dag_diagnostic_census
cold-extend (~20s fills) and cancelled the floor at 90 minutes. The
fixture slot still does not write the process-shared index the fold reads.

Co-authored-by: Cursor <cursoragent@cursor.com>
A thread-local fixture index kept every census both-closure for the process
(review 77949). Scratch is per compile again, copied from the shared slot's
already-computed edge and parse rows so a census does not cold-walk the gate,
then dropped without writing MegaRAC rows back onto the fold's index.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 77949 (#13575 (comment) — artifact /api/reviews/77949/artifacts/stdout.log): the thread-local FIXTURE_EXTENSION_INDEX is gone.

Fixture extend now always builds an owned scratch (new_multi_entry_index_scratch_over), seeds it by copying the shared slot's already-computed both_closure_edges, parsed-reference, admission, and parse-cache maps (new Rc around a cloned edge index so later Rc::make_mut cannot mutate the fold's slot), then drops that scratch when the loader returns. Writes such as the MegaRAC both-closure stay on the scratch and die with it; they are not the union-of-every-fixture-on-the-thread retention the review named.

The GREEN control already panics if the shared slot is missing, so it cannot skip-green the isolation claim. The RED still asserts that routing the same extend onto the process-shared slot grows both_closure_edges. A second-extend reuse test on the old thread-local slot was deleted because that slot no longer exists.

Head d3fe0ec2ca. Floor / plan-time pin on stacked #13576 still required before asking to land.

Brian Searls and others added 4 commits October 8, 2026 09:37
…s seed.

A green merge_group floor hits the 25 GiB watermark at prepared-subject-warm
with tens of high events. Planning the forged-probe census adds ~25 more, not
gigabytes. Enrol that class, and refuse a both-closure that would make this
13 KiB module a second corpus.

Co-authored-by: Cursor <cursoragent@cursor.com>
Main's warm seam holds ~2962 typed gate modules; the dominant carrier is
te.ancestry_str_bindings (~10.5M nearly-unshared entries). That overlay is
typecheck-only once the subject is closed. Lookup now walks parents when the
overlay is empty, so the prepared repository can drop it. RFM
required_floor_strict_prep_sits_on_memory_high stays unfixed until the floor
peak is below memory.high.

Co-authored-by: Cursor <cursoragent@cursor.com>
Dropping the flatten after Strict-prep still paid the prep peak. The redundant
work is the unshared copy itself. Interface envs keep the parent Rc chain;
a non-empty overlay is complete (no walk); an empty overlay walks last-wins.
build_type_env checks chain vs overlay on real modules, then stores empty.

Co-authored-by: Cursor <cursoragent@cursor.com>
The per-module flatten is the Strict-prep pin: planning the forged-probe
census witness still runs prepare_repository_from_corpus over the gate
typed graph, which retained ~10.5M unshared overlay entries. Equivalence
is a last-wins flatten test plus a first-wins mutant. Cache.str_bindings
is locals only. Fixes the E0382 source move in the witness-module test.

Co-authored-by: Cursor <cursoragent@cursor.com>
lookup_binding_on_chain_seen and collect_chain_bare_names_seen now key
the visited set by module_path in 04_env.dag. The stage0 rust matches
that fold instead of a HashSet of Rc pointers the dag cannot name.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 77966

Verified against 4201e483cc.

Visited set (blocking). Confirmed: 04_env.dag lookup_binding_on_chain was a plain parent fold while the committed rust used HashSet<usize> of Rc pointers. That is a proven cost-shape defect on diamond imports (§6) and a dag/rust fork (§3). Fixed in this head: lookup_binding_on_chain_seen / collect_chain_bare_names_seen are authored in 04_env.dag, keyed on module_path (the identity the dag can name; not a host pointer). The stage0 rust is that same fold. Full seed re-emit of v1_compiler_infer_env.rs is not a one-function regen; the two sources now agree.

Hand-written tests / loaders (advisory). The emit_host.rs tests are the RED/positive control the floor brief required (last-wins flatten on real dag/std modules; first-wins mutant must go red). They are not a production scaffold. scratch_index_for_fixture_closure_extension is the fixture-index isolation from earlier on this PR, PURPOSE-admitted under v1_seed_standing. No deleted-scaffold census row: nothing here is scheduled to be thrown away.

— sent from zesty-wren-256

…rd scratches as a typed kind.

The Err(_) fallback dropped try_process_shared_index's error and rebuilt a name-set index over every shared root. Scratch construction now records ScratchCachesOverExistingSet so the sharing control can count it without treating it as a second NameSetIndex.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 77971 (REQUEST_CHANGES) verified against 4201e48 and landed on 73ad9eb.

  1. Shared-index Err(_) widen: confirmed. scratch_index_for_fixture_closure_extension dropped try_process_shared_index and walked canonical_shared_index_roots. That arm is gone; the error is now ?. A missing slot refuses instead of paying a corpus walk.

  2. Scratch as escape hatch: confirmed. new_multi_entry_index_scratch_over skipped record_multi_entry_index_site so MultiEntryIndexBuiltTwiceForOneNameSet would not fire. Both constructors now record. NameSetIndex is still the twice-refuse kind; ScratchCachesOverExistingSet is countable and is not a second name-set index. Sharing-control unit tests plus fixture_scratch_shell_is_not_a_second_index_of_the_name_set passed.

The dashboard payload truncated a third finding ("Every fi…"). Nothing further in the current code was identified from that fragment.

This does not discharge the floor brief (main Strict-prep pin / #13576). RFM remains unfixed.

Brian Searls and others added 2 commits October 8, 2026 12:45
…runs or a control PR.

RFM receipts named job IDs, watermark bytes, and throwaway #13576 as the next-rung trigger. The trigger is now that Strict-prep (including a planned forged-probe census) finishes with high at 0 well below memory.high; measurements point at required_floor_runner.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ted state through sibling walks.

Cache merge no longer flattened str_bindings, so the novelty gate's conflict channel was always empty. Forks are recorded from each import's TypeEnv chain without retaining an overlay. collect/lookup now return updated seen so a diamond is walked once.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78018 (REQUEST_CHANGES) verified on 59990b2 and landed on 89c7234.

  1. Binding-fork channel emptied: confirmed. merge_type_env_cache_guarded no longer called guarded_union_str_bindings, so binding_forks was always empty and the novelty gate had no ledger. Restored as ledger_peer_import_binding_forks over each peer import's TypeEnv chain (overlay-wins, same-authority skip). Cache str_bindings stays empty so Strict-prep does not retain a flatten. No rung-drop: the refusal/ledger distinction is preserved.

  2. Sibling walks cloned one seen map: confirmed. collect_chain_bare_names_seen and lookup_binding_on_chain_seen now return the updated seen and thread it through the parent fold, so a diamond is visited once per module.

Ancestry last-wins / first-wins mutant tests passed.

Brian Searls and others added 2 commits October 8, 2026 13:00
…bjects.

The forged-probe both-closure control now discriminates only on MegaRAC paths from the string literal. The ancestry last-wins control requires the named types and integer modules to exist instead of skipping them.

Co-authored-by: Cursor <cursoragent@cursor.com>
Last-wins on the full parent chain let a leaked homonym beat a name an earlier import declared. Lookup now takes last-wins of parent locals first, then walks ancestry only on a miss. Binding forks stay ledgered from the TypeEnv chain, not a flattened cache overlay.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78025 (REQUEST_CHANGES) verified on 6f8b4b9 and landed on the following head.

  1. merge_type_env_cache_guarded still does not flatten str_bindings (that flatten is the Strict-prep pin). Binding forks are not dropped: union_parent_type_env_caches already calls ledger_peer_import_binding_forks over each peer import's TypeEnv chain (89c7234). A comment now says so at the cache merge. No rung-drop; the novelty-gate ledger is preserved.

  2. Direct-selected vs transitive leak: confirmed. Last-wins on the whole parent chain let a later import's leaked homonym beat an earlier import's own export (v2 memory-control audit + witness-realization plan + P0 field wall (568→45 drained) #6663 x Ground fnv1a64 hash fork: unify v2.std.node.Hash with std ContentHash #6686). Lookup now last-wins parent locals first, then walks transitive ancestry only on a miss. Discriminating control: earlier_direct_export_beats_later_transitive_leak (lookup takes a; full flatten still takes the leak c). Ancestry overlay stays empty in production.

…ookup walks.

Collecting names then looking up each one again was names × chain per import. The ledger now memoizes a lookup-equivalent index per module_path. A retained ancestry overlay is the Strict-prep pin; misses re-read the parent Rc chain the graph already holds.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78032 (REQUEST_CHANGES) verified on 36c84ed.

  1. Quadratic fork ledger: confirmed. collect_chain_bare_names then lookup_binding_on_chain per name was names × chain per import. ledger_peer_import_binding_forks now builds a lookup-equivalent index in one pass, memoized by module_path across the union.

  2. Lookup miss walks the parent DAG: confirmed, and kept. The shared-state LCA of bare-name resolutions is the module TypeEnv; materializing ancestry_str_bindings there is the Strict-prep pin (unshared overlay per typed module on prepared.graph). A per-closure index that outlives typecheck is that overlay again. Walk cost is O(direct parents) on a one-hop hit and O(unique modules on the chain) on a miss, paid per lookup, not retained in the prepared subject. That derivation is in the lookup comment and RFM required_floor_strict_prep_sits_on_memory_high.

The dashboard payload truncated a further finding.

… import_path.

Fork detection already lives on the parent TypeEnv chain; the cache merge only unions deps and locals, so it no longer takes a path or conflict list. TypeEnvCache.str_bindings stays: build_type_env still fills it with the module's own locals.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78039

Deleted ancestry_chain_mismatch_name in 04_env.dag and the rust mirror. It had no call site, fold, or test.

Cut import_path and the pass-through conflicts list off merge_type_env_cache_guarded. It now takes two caches and returns a cache. union_parent_type_env_caches still ledgers forks with ledger_peer_import_binding_forks and only then folds the cache union. ParentCacheRow is gone with the unused path.

Did not delete TypeEnvCache.str_bindings. The merge writes empty_map() because a unioned parent cache must not flatten ancestry, but the per-module cache still stores locals: build_type_env sets cache_str_bindings = final_env.str_bindings, and type_env_cache_from_bindings fills the same field. Removing the field is a TypeEnvCache schema replacement, not this leaf cut.

On the advisory seed-census note: PURPOSE admits these v1 edits for the floor walk (v1_seed_standing); consumers are union_parent_type_env_caches, lookup_binding_on_chain, and the emit_host ancestry / scratch controls. The RFM rows are .dag, not more seed Rust. A full census of remaining seed surface is a later v1-maintenance change, not this PR's cutover.

— sent from zesty-wren-256

…ing lookup seen across sibling parents.

A diamond skipped under a later parent made last-wins disagree with the fork ledger. Fixture scratch now reads through the shared index instead of cloning its maps; parse_cache stays local because it is intern-paired.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title Drop fixture-closure both-closure rows off the floor's shared index Walk empty TypeEnv ancestry instead of flattening; isolate fixture index rows Oct 8, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78042

Did not split the resolution change into another PR. The empty-ancestry walk is the Strict-prep pin cut (not retain a flatten on every typed module). Title is now "Walk empty TypeEnv ancestry instead of flattening; isolate fixture index rows". PURPOSE on lookup_binding_on_chain now states the semantics change: homonyms the overlay took from a later leak resolve to the earlier direct export (#6663 x #6686). RFM still says UNFIXED; this commit does not claim the floor class is discharged.

Order dependence: sibling parent walks no longer share seen. A diamond re-entered under a later parent last-wins in that parent's order, matching collect_chain_lookup_index_seen. Control: diamond_reentered_under_later_parent_last_wins_with_that_parent.

Fixture scratch no longer clone_froms shared parsed_references / bare_reference_admission / both_closure_edges. It reads through scratch_underlay and writes locally. parse_cache is not underlaid: those rows are intern-paired with the slot that parsed them, so sharing them would mix intern tables. Scratch reparses.

Advisory seed-census: same as review 78039 — PURPOSE + the emit_host controls. Not a census rewrite on this PR.

— sent from zesty-wren-256

Brian Searls and others added 2 commits October 8, 2026 14:15
…export over a later leak.

Required-ci on the floor control refused when that preference split host String and FreeMonoid<Char> String in one if. The pin remains an empty overlay, not a homonym-precedence change.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ts that still described a flatten.

Sibling parent walks share seen and hits so a diamond is visited once per name, matching the ledger's last-wins without retaining an overlay on TypeEnv.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78055

Shared per-name seen plus hits (binding memo keyed by module_path) across sibling parent walks. A diamond is visited once per name, last-wins still overlays a later parent's full chain using the memoized result — same order as collect_chain_lookup_index_seen, without retaining an overlay on TypeEnv.

Updated the interface_env_for_import / interface_env_surface comments that still said flattened ancestry maps.

Advisory seed-census: PURPOSE on the walk plus GREEN/RED fixture-index controls; not a census rewrite here.

— sent from zesty-wren-256

@gunbai-bot

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78055 (re-verified on current head a218af3f58, not c413df4a)

The exponential path-walk is gone: lookup_binding_on_chain_seen threads st.seen and st.hits through the parents fold. A later sibling that reaches the same module_path returns the memoized hit (or miss) instead of walking that DAG again. Hits are dropped with the lookup; they are not a retained TypeEnv overlay.

The interface_env_for_import / interface_env_surface comments no longer claim flattened ancestry maps.

RFM still says the memory class is UNFIXED. That is honest; this memo does not claim prepared-subject-warm high is 0.

— sent from zesty-wren-256

…ports beat leaks.

Lookup last-wins the parent walk (flatten-equivalent); leaving the old named rule beside that path was a meaning fork. Kernel skip stays overlay_skips_kernel_name.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78065

Deleted overlay_direct_import_exports (uncalled) and direct_import_export_precedence_note (it still said direct-selected beats leak). Executing path is empty ancestry_str_bindings and lookup_binding_on_chain last-wins of the parent walk, matching flatten — later leak can win. build_ancestry_precedence comments now say that. Kernel skip remains overlay_skips_kernel_name. Namespace-cut roster probe now names lookup_binding_on_chain. Diamond-test comment updated: sibling walks share seen/hits.

— sent from zesty-wren-256

…onto interface caches.

Forks live on ledger_peer_import_binding_forks. TypeEnvCache.str_bindings stays module locals; union/interface caches leave it empty. The skip-equal cache merge is named for what it does.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78074

Deleted guarded_union_str_bindings / _into_acc / _into_overlay and GuardedStrBindingsUnion. Nothing called them; forks are ledger_peer_import_binding_forks. Kept union_base_choice_note for the remaining skip-equal unions (deps_map, cycle_set_str, variant_locals).

Did not delete TypeEnvCache.str_bindings: it still holds the module's locals on a per-module cache (build_type_env, typed-module type_env_cache). Union and interface caches now leave it empty (merge_type_env_cache_skip_equal, interface_cache_from_module) so the field is not a flattened overlay. Renamed merge_type_env_cache_guarded to merge_type_env_cache_skip_equal.

Advisory seed-census: PURPOSE on the walk plus GREEN/RED fixture-index controls; not a census rewrite here.

— sent from zesty-wren-256

Brian Searls and others added 9 commits October 8, 2026 17:16
… it.

Per-lookup parent walks kept runner-local high at 0 but cancelled the #13576
floor at 90 minutes in nominal-subject-seeds. The overlay is demand for that
typecheck only; retained TypeEnvs stay empty so prepared.graph does not pin it.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ibed run numbers.

Co-authored-by: Cursor <cursoragent@cursor.com>
Dropping it per module forced every later module to rebuild the parent
index; the floor control sat 80 minutes in compile.reconcile with high=0.
Strip on the prepared graph, the process typed-module cache, and at
compile_to_resolved exit. Production walks ignore leftover parent overlays.

Co-authored-by: Cursor <cursoragent@cursor.com>
…merging a copy per importer.

Typecheck looks up names in locals then that shared prefix map, so each probe is O(1) and importers of the same parent reuse the same storage.

Co-authored-by: Cursor <cursoragent@cursor.com>
… not a 180s guess.

The ignored control prints wall and peak RSS from compile_to_resolved; a 180s cutoff failed a 20-minute closure that is still the instrument, not a unit-lane gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
The RFM already named the next-rung trigger; it did not say the production scratch is final and the shared-index extender is only the enrolled red.

Co-authored-by: Cursor <cursoragent@cursor.com>
…t_workflow reconcile instrument.

This is a span count for the 20× vs main, not another index shape.

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

A 20× reconcile regression cannot land while the floor still Strict-prepares the gate graph. Probe-index writes stay on a throwaway MultiEntryIndex.

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

The empty-ancestry walk does not ship; citing it as the lookup realization overstated the class.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title Walk empty TypeEnv ancestry instead of flattening; isolate fixture index rows Isolate fixture census on a scratch MultiEntryIndex Oct 8, 2026
Pre-push fmt refused the previous RFM commit over this leftover whitespace.

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

gunbai-bot Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

review 78159 (REQUEST_CHANGES on c78a48b437) verified against 9b93cc159d.

  1. LOOKUP REALIZATION / title vs reverted walk: confirmed. The receipt named a scratch overlay and seam=nominal-subject-seeds after the empty-ancestry walk after B1 flatten was restored. Rewritten: flatten (ancestry_str_bindings on prepared.graph) is what ships; the walk is recorded as tried and reverted (~20× commit_workflow reconcile). PR title is now the scratch-index isolation this diff actually delivers.

  2. MEASURED MARGIN / STRUCTURAL PREDICTION as unattributed settled facts: confirmed. MEASURED MARGIN now names merge_group run 37744410173 and DRAFT: floor-control for #13575 (plan forged-probe census) #13576 run 37743678634. STRUCTURAL PREDICTION now cites the prepare-only pair on main 15951783a2 (keep 2981 vs 2982, one added module).

RFM still says UNFIXED. That is honest; this does not claim prepared-subject-warm high is 0.

— sent from zesty-wren-256

@gunbai-bot

gunbai-bot Bot commented Oct 10, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #13641 (v1 closeout): this head is an ancestor of integration/v1-closeout.

@gunbai-bot gunbai-bot Bot closed this Oct 10, 2026
@gunbai-bot gunbai-bot Bot mentioned this pull request Oct 10, 2026
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