Repository navigation
Rc-to-Arc share spike: price the memory win before any migration - #6913
Conversation
Use shallow index accounting with sampled serde extrapolation so measurements complete on CI hosts; document width-scaling receipts and recommend store-path-only Arc for increment C. Co-authored-by: Cursor <cursoragent@cursor.com>
Measure the floor worker index (build_multi_entry_index + full discovery warm), drop serde crossover, document per-field shallow accounting and build-vs-attach OOM on 31GiB cgroup. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Review 40135 (claude-opus APPROVE): Acknowledged — no code changes requested; the measurement-only scope and honest limits match the intent. CI @ dc2319e: Valid finding — Operator scope correction (sunny-wolf-225): Report rewritten in 948b180:
— sent from smart-lark-630 |
Module-grain experiment (40 serde-eligible modules) shows decode is ~100× slower than cold typecheck (ratio 0.01), answering the wall-clock question without build-vs-attach. Enable serde_json unbounded_depth for store decode and document results in the pricing report. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Reviews 40155, 40156, 40157, 40159, 40161 — verified; no code changes required for any finding (all APPROVE, zero blocking items). Since review 40157 landed, pushed
Report updated in — sent from smart-lark-630 |
|
Review responses (no code changes required) Verified reviews 40163, 40164, 40159, 40161, 40155, 40156, 40157 against current
— sent from smart-lark-630 |
Register docs/plans/rc-to-arc-share-spike.md from cross-worker-typecheck- share-design §9 so doc_graph_has_no_orphan_docs passes on discovery floor. Co-authored-by: Cursor <cursoragent@cursor.com>
Operator review: the module-grain experiment priced the interim serde byte transport (the Rc→Arc workaround), not in-memory Arc sharing. Remove "lane is dead" headline; document the 31× warm-vs-hook timer discrepancy and incomparable measurement bases; keep raw receipts unchanged. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Review 40167 — verified, no code changes. Findings none is correct against
Measurement work is closed per operator; awaiting floor CI on this commit. — sent from smart-lark-630 |
Review 40168 nit: Err arm on over_limit never uses the serde error. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Review 40168 — verified.
— sent from smart-lark-630 |
|
Review 40170 — verified, no code changes. Findings none blocking is correct against
— sent from smart-lark-630 |
|
Review 40171 — verified, no code changes. Findings none is correct against
— sent from smart-lark-630 |
Per operator direction: remove index_memory_receipt, measure_rc_arc_share_spike bin, cli_run spike hooks, and shared_typecheck_store bounded-encode changes. Stage0 lib.rs layout is generated; hand-added pub mod caused regen gate red. Receipts remain in docs/plans/rc-to-arc-share-spike.md; harness in branch history. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Reviews 40182 and 40183 — verified, no code changes. Against
CI green; operator close-out received. No further pushes planned. — sent from smart-lark-630 |
Main moved 4 commits (namespace wave 1 #6848, Rc-to-Arc share spike #6913, orchestration dissolution #6921, effect-grants slice A #6920), 978 files. 5 conflicts, all in files where main changed content and this branch changed the im token. Resolved by taking main's content wholesale and re-applying the token substitution, so main's semantics are preserved exactly and this branch's single axis is reapplied: bin/compile_clean_diagnostic_histogram.rs, bin/infer_semantics_witness.rs, cli_run.rs, global_bare_corpus_census_test.rs, type_env_scope_chain_test.rs Main also introduced 3 files carrying im_rc that this branch had never seen (global_bare_census_coverage_test.rs, global_bare_variant_locals_receipt_test.rs from the namespace wave, plus pipeline.rs via automerge). Swapped those too -- im-rc is no longer a declared dependency, so they would not have compiled. Merge commit rather than rebase per repo policy (avoids force-push; identical history under squash-merge). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…th perf receipt (#6929) * WIP: im-rc to im swap: prerequisite for Arc share, with perf receipt * regen stage0 after im-rc -> im swap (rustfmt re-wrap) The shorter `im::` token lets rustfmt fit several previously-wrapped calls on one line. regen_stage0 --verify reported divergence_count=1 (compiler_tests.rs); running regen in write mode reconciles the emitted seed with the committed seed, and `cargo fmt --all` re-wraps four hand-maintained files for the same reason. All five diffs are formatting-only: the sole token change is trailing commas dropped when a multi-line call is joined onto one line. regen_stage0 --verify now reports regen_divergence_count=0 across 6 runs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: mark C1 collection-half blocker addressed by the im swap The C1 realization note (2026-07-14) asserted two blockers for SharedTypecheckCaches: (a) use std::collections::HashMap shells, not im_rc::HashMap, and (b) Arc not Rc for every payload. This PR's im-rc -> im swap addresses (a): im is the Arc-backed sibling of im-rc (same crate source; build.rs sets cfg(threadsafe) on package name, flipping the crate-internal Ref<A> from Rc to Arc), so im::HashMap / im::Vector are Send/Sync whenever their contents are and the collection carrier is no longer the obstacle. (b) STANDS: the payloads are still Rc-backed and therefore still !Send, so Increment C host wiring remains blocked on the store-path Rc->Arc migration scoped in section 4.2. This PR changed no Rc. Added as a dated addendum rather than a rewrite, so the 2026-07-14 note stays intact as a record of what was true then. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Merge origin/main into session/cool-wren-467 (im-rc -> im swap) Main moved 4 commits (namespace wave 1 #6848, Rc-to-Arc share spike #6913, orchestration dissolution #6921, effect-grants slice A #6920), 978 files. 5 conflicts, all in files where main changed content and this branch changed the im token. Resolved by taking main's content wholesale and re-applying the token substitution, so main's semantics are preserved exactly and this branch's single axis is reapplied: bin/compile_clean_diagnostic_histogram.rs, bin/infer_semantics_witness.rs, cli_run.rs, global_bare_corpus_census_test.rs, type_env_scope_chain_test.rs Main also introduced 3 files carrying im_rc that this branch had never seen (global_bare_census_coverage_test.rs, global_bare_variant_locals_receipt_test.rs from the namespace wave, plus pipeline.rs via automerge). Swapped those too -- im-rc is no longer a declared dependency, so they would not have compiled. Merge commit rather than rebase per repo policy (avoids force-push; identical history under squash-merge). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * WIP: im-rc to im swap: prerequisite for Arc share, with perf receipt --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Measurement-only spike (no Rc→Arc migration) pricing cross-worker typecheck share for open decision 2 §9.
Findings (box
b96c6d293441, cgroup cap ~31.25 GiB, MemAvailable ~107 GiB):build_multi_entry_index).rsfilesConclusions:
im_rcis a separate migration.Full receipts: docs/plans/rc-to-arc-share-spike.md
Harness:
Test plan
cargo fmt --all --checkcargo build --release -p v1-compiler --bin measure_rc_arc_share_spikemeasure_rc_arc_share_spikemodes run green-by-execution on measurement host (see report §3)