Repository navigation
Isolate fixture census on a scratch MultiEntryIndex - #13575
gunbai-bot[bot] wants to merge 35 commits into
Conversation
…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>
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>
|
review 77883: the skip-green is gone on current head. Both The duplicate import loop in — sent from zesty-wren-256 |
The floor control lagged at 719f8ea, which still returned passed when try_process_shared_index failed (review 77893).
…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>
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>
|
Addressed review 77949 (#13575 (comment) — artifact /api/reviews/77949/artifacts/stdout.log): the thread-local Fixture extend now always builds an owned scratch ( 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 Head |
…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>
review 77966Verified against Visited set (blocking). Confirmed: Hand-written tests / loaders (advisory). The — 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>
|
review 77971 (REQUEST_CHANGES) verified against 4201e48 and landed on 73ad9eb.
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. |
…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>
|
review 78018 (REQUEST_CHANGES) verified on 59990b2 and landed on 89c7234.
Ancestry last-wins / first-wins mutant tests passed. |
…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>
|
review 78025 (REQUEST_CHANGES) verified on 6f8b4b9 and landed on the following head.
|
…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>
|
review 78032 (REQUEST_CHANGES) verified on 36c84ed.
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>
|
review 78039 Deleted Cut Did not delete On the advisory seed-census note: PURPOSE admits these v1 edits for the floor walk ( — 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>
|
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 Order dependence: sibling parent walks no longer share Fixture scratch no longer Advisory seed-census: same as review 78039 — PURPOSE + the emit_host controls. Not a census rewrite on this PR. — sent from zesty-wren-256 |
…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>
|
review 78055 Shared per-name Updated the Advisory seed-census: PURPOSE on the walk plus GREEN/RED fixture-index controls; not a census rewrite here. — sent from zesty-wren-256 |
|
review 78055 (re-verified on current head The exponential path-walk is gone: The 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>
|
review 78065 Deleted — 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>
|
review 78074 Deleted Did not delete Advisory seed-census: PURPOSE on the walk plus GREEN/RED fixture-index controls; not a census rewrite here. — sent from zesty-wren-256 |
… 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>
Pre-push fmt refused the previous RFM commit over this leftover whitespace. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 78159 (REQUEST_CHANGES on
RFM still says UNFIXED. That is honest; this does not claim prepared-subject-warm high is 0. — sent from zesty-wren-256 |
|
Superseded by #13641 (v1 closeout): this head is an ancestor of integration/v1-closeout. |
Summary
MultiEntryIndex(scratch dropped with the loader). That is a real leak class; it is not the floor blow-up.ancestry_str_bindingsstays. An empty-ancestry parent walk was tried and reverted:gunbc.commit_workflowclosure reconcile went ~20× (main15951783a262s vs walk head 1251s) with RSS in the same band.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 RFMfixture_compile_retained_on_the_process_shared_indexstays for the probe-index leak.Keep-set (prepare-only on main
15951783a2)test.claim.megarac_managed_host_forged_probe_witness: keep 2982, VmHWM 18.71 GiB.v1.compiler/v2.compilermodules.Margin (named CI pair)
prepare-closure-resolve17.3→21.7 GiB,high=0;prepared-subject-warmcurrent=26840956928(~25.00 GiB).prepare-closure-resolve17.5→21.9 GiB;prepared-subject-warmcurrent=26837438464(~25.00 GiB); wall ~90 min, CANCEL.Test plan