Skip to content

Fill composition overlays the closure onto the shared underlay (per-entry assembly) - #7836

Merged
briansrls merged 12 commits into
mainfrom
session/smart-badger-549
Aug 5, 2026
Merged

briansrls merged 12 commits into
mainfrom
session/smart-badger-549

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Per-entry index assembly composed an entry's closure census with a shared per-MultiEntryIndex underlay memo — the whole-pool qualified fill, and the whole-tree bare census for each source root the entry reaches — by walking the underlay's key list, probing the accumulator per key, and path-copying an insert for every miss. The underlay is constant across entries while the closure varies, so every entry paid O(|whole pool|) work and retained O(|whole pool|) fresh HAMT nodes to build an index that differs only by its own closure.

Both directions denote the same map — union of the key sets, closure value wins the intersection — so overlaying the closure onto the shared memo is identical at O(|closure|), from an O(1) persistent clone.

Authority is src/v1/04_infer.dag (symbol_index_with_qualified_fill, symbol_index_with_bare_fill); v1_compiler_infer.rs is the regenerated seed. DESIGN §6 bare-minimum-cost: a copied accumulator is fixed regardless of the realized n, and the identity of the two directions is what makes this a cost fix rather than a semantic change.

Measured benefit

Fixed 50-entry cohort, one process holding one MultiEntryIndex, both arms built from one tree with one variable, two reproductions per arm:

before (r1 / r2) after (r1 / r2) change
elapsed wall 268.4s / 248.0s 200.9s / 183.3s −25.6%
peak RSS 7.78 GiB / 7.73 GiB 5.54 GiB / 5.53 GiB −28.7%
additive resolve (50 resolves) 155.7s / 146.5s 105.0s / 94.6s −33.9%
Σ exclusive assembly 100.8s / 84.0s 41.0s / 36.0s −58.3%
symbol-index merge 34.7s / 28.4s 0.62s / 0.59s −98.1%
per-root symbol-index composition 27.1s / 18.6s 0.72s / 0.62s −97.1%

≈66 seconds recovered across 50 entries (1.32 s/entry in this cohort). Every aggregate is lower in both after runs than in both base runs, with no overlap. No fleet figure is claimed: these are additive spans plus this cohort's elapsed wall, not a required-path floor result.

Equivalence

  • All four arms: 48 PASS / 2 FAIL with identical result sets. The two failures are pre-existing hermetic-mode effect refusals, present in both arms.
  • regen_stage0 --verify → regen_divergence_count=0, with the seed rebuilt from the changed sources (not a stale-seed self-verify).
  • The corpus is the behavioral oracle: the required compile-clean gate and floor resolve every module through these two functions, and are green on this head.

Retained evidence

docs/plans/receipts/fill-composition-overlay-direction/ — nothing here asks a reader to trust a table cell:

  • subject.tsv — commits, both binary sha256s, host envelope, run order, memory instrument, invocation, selection
  • cohort.tsv — 50 rows: ordinal, entry, function
  • base-r{1,2}.tsv / after-r{1,2}.tsv + full per-run stderr
  • base-arm-revert.patch — the exact one-variable reversal; the base arm is this tree with that patch applied and nothing else
  • derive_summary.py → summary.json — computed only from the four arm files; refuses on a missing arm; keeps the inclusive rewire_total_observation row out of the exclusive sum

Two things are recorded rather than smoothed: the import-string rewiring row's +12% mean is one outlier inside a 35% within-arm spread (its other after run sits inside the base range), and the discovery-path pair is reported as an unpaired observation because both arms were OOM-killed — --roster-from-discovery does not restrict discovery to the supplied --entry rows.

Test plan

  • cargo test -p v1-compiler-tests symbol_index_fill_overlay — 2 passed
  • RED control executed: merge direction flipped in the seed → both arms red on the winner assertion (left: "probe.underlay" right: "probe.closure") while still producing the right key set, so the witness measures the direction and not the union. Seed restored.
  • regen_stage0 --verify → divergence 0, seed rebuilt from changed sources
  • cargo fmt --all --check
  • Exact-head CI green: build, regen, heal_generated_artifacts, floor

Note on where the unit control executes: nextest was removed from CI 2026-07-11, so v1-compiler-tests compiles in CI but does not run there. The direction control executes locally (output above); the in-CI evidence is the corpus green.

Scope

Fill-composition slice: delivered. Broader shared-entry-view program: open. The surviving assembly rows — import-string rewiring, the per-entry closure census, the per-root variant base — are different defects needing module-grain reuse, and are deliberately not in this PR. Neither is the Rust build-path work.

Worker attestation

  • Title/body describe the current scope only
  • Tests executed locally, both green and red arms, with output
  • No secrets / surprise commits

gunbc-ci-auto-heal and others added 2 commits August 5, 2026 05:33
symbol_index_with_qualified_fill and symbol_index_with_bare_fill composed an
entry's closure census with a per-index underlay memo (whole-pool qualified
fill; whole-tree bare census per source root) by walking the UNDERLAY's key
list, probing the accumulator per key, and path-copying an insert per miss.
The underlay is constant across entries while the closure varies, so every
entry paid O(|whole pool|) work and retained O(|whole pool|) fresh HAMT nodes
to build an index that differs only by its own closure.

Both directions denote the same map -- union of the key sets, closure wins the
intersection -- so overlaying the closure onto the shared memo is identical at
O(|closure|), from an O(1) persistent clone. DESIGN 6 bare-minimum-cost.

Measured, fixed 50-entry cohort, two reproductions per arm:
  symbol-index merge          25,517.7 / 26,279.1 -> 530.6 / 538.8 ms  (-97.9%)
  per-root symbol-index comp  16,734.2 / 17,063.9 -> 531.7 / 491.4 ms  (-97.0%)
  sum exclusive assembly      74,876.0 / 76,535.5 -> 34,856.8 / 33,671.5 (-54.7%)
  additive resolve               129,779 / 132,623 -> 92,332 / 90,940  (-30.2%)
Outcomes byte-identical in both arms (48 PASS / 2 FAIL, same two pre-existing
hermetic-mode refusals); regen_divergence_count=0 with the seed rebuilt from
the changed sources.

symbol_index_fill_overlay_direction_test is the discriminating control on the
direction clause, executed both ways: green as landed, and both arms red on
the winner assertion when the merge direction is flipped in the seed.

This is one slice of the shared-entry-view hypothesis, not the whole of it:
import-string rewiring, the per-entry closure census, and the per-root variant
base are untouched and are different defects. No fleet wall is claimed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot gunbai-bot Bot changed the title CI Perf (actual benefits) Fill composition overlays the closure onto the shared underlay (per-entry assembly) Aug 5, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 5, 2026 06:12
@gunbai-bot
gunbai-bot Bot marked this pull request as draft August 5, 2026 06:38
gunbc-ci-auto-heal and others added 8 commits August 5, 2026 06:41
The heal job reds with HealAuthorCommitRequired: the CI app lacks
workflows:write, so a drifted .github/workflows/** generated artifact can only
be repaired by an author commit. The drift is NOT from this branch --
main's committed falsifier.yml carries no `id: release_bins` while
generated_artifact_gate main_wet emits it, so main has been carrying the drift
since the step id landed in its spec, with every heal attempt unable to push it.

Regenerated with:
  gunbc run --source-root dag --source-root src/v2 \
    --entry dag/tools/generated_artifact_gate.dag --function main_wet

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

The note emitted its whole narrative into the seed -- compile and binary
material inside the PR whose subject is unnecessary work. The mechanism's
detail already has a document authority; the row keeps only the law (closure
overlays the underlay, same denotation, different cost grain) and names the
receipt and the witness.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The first receipt carried conclusions, not the evidence they derive from, and
its base binary predated the main merge -- two variables, not one.

Both arms are now built from ONE tree with ONE variable: the after arm is this
commit, the base arm is this commit with base-arm-revert.patch applied (the two
fill functions and nothing else). Binary digests for both are retained, so a
reader rebuilds an arm and checks a hash instead of trusting a table cell.

Retained under docs/plans/receipts/fill-composition-overlay-direction/:
  subject.tsv            commits, binary digests, host envelope, run order,
                         memory instrument, invocation, selection
  cohort.tsv             50 rows: ordinal, entry, function
  base-r{1,2}.tsv        per-arm scalars + the three receipt lines
  after-r{1,2}.tsv
  *.stderr.txt           full run stderr, as the predecessor receipt retains
  base-arm-revert.patch  the exact one-variable revert
  derive_summary.py      summary.json is computed from the four arm files ONLY;
                         refuses on a missing arm; keeps the inclusive
                         rewire_total_observation row out of the exclusive sum
  summary.json           derived, not transcribed

Corrected figures on the same-tree arms (two reproductions each):
  symbol-index merge          34,654.4 / 28,420.1 -> 624.6 / 585.4    (-98.1%)
  per-root symbol-index comp  27,095.2 / 18,642.2 -> 719.4 / 618.5    (-97.1%)
  sum exclusive assembly     100,773.3 / 83,980.4 -> 41,011.9 / 36,017.0 (-58.3%)
  additive resolve            155,680 / 146,484 -> 105,012 / 94,624   (-33.9%)
  elapsed wall                268,369 / 247,963 -> 200,932 / 183,286  (-25.6%)
  peak RSS (VmHWM)          8,160,560 / 8,108,424 -> 5,804,768 / 5,803,012 (-28.7%)
Outcomes identical in all four arms.

Two honesty notes are recorded in the receipt rather than smoothed: the
import-string rewiring row's +12% mean is one outlier inside a 35% within-arm
spread (its other after run sits inside the base range), and the discovery-path
pair is reported as an UNPAIRED observation because both arms were OOM-killed --
--roster-from-discovery does not restrict discovery to the supplied --entry rows.

The execution grain is also corrected: the cohort is ONE process holding ONE
MultiEntryIndex with 50 entry groups, not 50 invocations.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
.gitattributes marks the generated stage0 sources merge=generated-artifact.
Merging #7834 (named-argument refusal on function values) resolved
v1_compiler_infer.rs to this branch's side and dropped main's 103-line
addition, while 04_infer.dag -- the authority -- merged correctly and carried
it. Git reported no conflict; the tree was left authority-ahead-of-seed, which
is exactly the state the self-host gate exists to catch, and regen --verify
reported the divergence.

Regenerated from the merged .dag, then bootstrapped properly: rebuild from the
regenerated seed and verify again, because the binary that emitted it predates
the change it was emitting. Second pass reports regen_divergence_count=0.

The two falsifier witnesses that redded main (falsifier_job_steps() arity,
repaired upstream by #7843) now pass here by execution.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Second occurrence of the same class: .gitattributes marks generated stage0
sources merge=generated-artifact, so merging main resolved
v1_compiler_infer.rs to this branch's side and dropped main's newer emit
(CallPositionalDeficit, param_node_default_value) while 04_infer.dag -- the
authority -- merged correctly and carried it. Git reported no conflict.

Regenerated from the merged authority, then bootstrapped: rebuild from the
regenerated seed and verify again, because the binary that emitted it predates
the change it was emitting. Second pass reports regen_divergence_count=0.

This branch's own mechanism was verified present in BOTH the authority
(04_infer.dag symbol_index_with_qualified_fill / symbol_index_with_bare_fill)
and the regenerated seed, rather than assumed to have survived the merge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 5, 2026 17:32
Operator ruling 2026-08-05: the slice's disposition is Delivered and the
broader shared-entry-view program stays Open. The note carried the numbers but
not the ruled status, so the repo's own authority did not say which of the two
it was.

Also records the selection rule for the next slice: identify the duplicated
construction first, never target the largest surviving row on size -- this
receipt's rewiring figure carries a 35% within-arm spread, so size alone
selects nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 26c36ec into main Aug 5, 2026
5 checks passed
@briansrls
briansrls deleted the session/smart-badger-549 branch August 5, 2026 19:19
gunbai-bot Bot pushed a commit that referenced this pull request Aug 5, 2026
… silently taking ours

merge.generated-artifact.driver answered `true` — the shell builtin, which leaves
the ours side in place and exits 0. Git recorded a CLEAN merge and the other side's
authority-derived bytes were gone with no signal: the DESIGN §5 absorbing fallback at
the integration boundary, whose failure arm answered instead of refusing and destroyed
the one fact worth keeping, that a provisional choice was made at all.

Measured class (#7836, twice in one session): merging main into a branch that also
touched src/v1/stage0/src/v1_compiler_infer.rs resolved the SEED to the branch side and
dropped main's emit changes (103 lines, then 130) while src/v1/04_infer.dag — the
AUTHORITY — merged correctly and carried them. No conflict either time; the tree was
left authority-ahead-of-seed and surfaced a CI cycle later as a red regen job.

The refusal is precise, not a widen, and that is measured rather than argued: git
reaches a low-level merge driver only when both sides changed the path since the merge
base. On a four-case matrix (one-sided theirs, one-sided ours, identical both sides,
different both sides) the driver was invoked in exactly the fourth case. So it fires
exactly where taking either side drops the other, and adds no stop to a merge that was
previously correct.

The driver writes nothing to the result file, so git keeps the ours side verbatim —
clean bytes, no conflict markers — marks the path unmerged, and exits nonzero with the
located regeneration recipe (including the two-pass rebuild, since one regen_stage0
pass can self-verify at divergence 0 for the wrong reason).

Rung, at its honest ceiling: mitigatable → mechanically preventable at the merge
boundary. NOT structural — a resolver can still `git add` the provisional bytes, and a
clone that never converged the repo-local binding gets vanilla text merge. Next trigger
is the existing countable row gunbc.commit_workflow commit_writer_binding_work (the
DashboardAutocommit and heal-arm writers calling admit_commit_writer at their write
boundary); until those land, an out-of-repository autocommit can stage through the
unmerged path, and that residue is stated rather than unnoticed.

Found and fixed on the way: the generated hook line that converges this binding rendered
its argv through git_shell_join_argv, which by that module's own standing ruling is a
join and never a quoter. Nothing quoted, so a multi-word driver value degenerated into
seven arguments where git expects two — the self-healing converge block would have
failed on every hook invocation while reading as ordinary in the diff. It now renders
through extdeps.exec.command shell_command_render, which fixes the class rather than
this value.

Evidence, green by execution (claim_batch --wet):
  divergent_generated_artifact_merge_refuses_by_real_execution — exit nonzero, 3 index
    stages, ours content, no markers
  divergent_generated_artifact_merge_under_true_driver_silently_drops_theirs_red_control
    — the SAME reproduction with `true`: exit 0, no unmerged stage, theirs gone. The
    discriminating RED; it fails the moment take-ours returns
  one_sided_generated_artifact_change_merges_clean — the non-widen control
The temp repository executes the emitted script text and the modeled config value, not
a copy. 47 further passes across the drift, gitattributes, hook-emit and repo-config
witnesses; the new quoting claim asserts key-followed-by-single-quoted-value, so it reds
on the unquoted form rather than moving with the renderer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Aug 6, 2026
… silently taking ours (#7870)

* WIP: Correctness (NOT the speed lane): merge=generated-artifact silently drop

* WIP: Correctness (NOT the speed lane): merge=generated-artifact silently drop

* merge=generated-artifact refuses the concurrent divergence instead of silently taking ours

merge.generated-artifact.driver answered `true` — the shell builtin, which leaves
the ours side in place and exits 0. Git recorded a CLEAN merge and the other side's
authority-derived bytes were gone with no signal: the DESIGN §5 absorbing fallback at
the integration boundary, whose failure arm answered instead of refusing and destroyed
the one fact worth keeping, that a provisional choice was made at all.

Measured class (#7836, twice in one session): merging main into a branch that also
touched src/v1/stage0/src/v1_compiler_infer.rs resolved the SEED to the branch side and
dropped main's emit changes (103 lines, then 130) while src/v1/04_infer.dag — the
AUTHORITY — merged correctly and carried them. No conflict either time; the tree was
left authority-ahead-of-seed and surfaced a CI cycle later as a red regen job.

The refusal is precise, not a widen, and that is measured rather than argued: git
reaches a low-level merge driver only when both sides changed the path since the merge
base. On a four-case matrix (one-sided theirs, one-sided ours, identical both sides,
different both sides) the driver was invoked in exactly the fourth case. So it fires
exactly where taking either side drops the other, and adds no stop to a merge that was
previously correct.

The driver writes nothing to the result file, so git keeps the ours side verbatim —
clean bytes, no conflict markers — marks the path unmerged, and exits nonzero with the
located regeneration recipe (including the two-pass rebuild, since one regen_stage0
pass can self-verify at divergence 0 for the wrong reason).

Rung, at its honest ceiling: mitigatable → mechanically preventable at the merge
boundary. NOT structural — a resolver can still `git add` the provisional bytes, and a
clone that never converged the repo-local binding gets vanilla text merge. Next trigger
is the existing countable row gunbc.commit_workflow commit_writer_binding_work (the
DashboardAutocommit and heal-arm writers calling admit_commit_writer at their write
boundary); until those land, an out-of-repository autocommit can stage through the
unmerged path, and that residue is stated rather than unnoticed.

Found and fixed on the way: the generated hook line that converges this binding rendered
its argv through git_shell_join_argv, which by that module's own standing ruling is a
join and never a quoter. Nothing quoted, so a multi-word driver value degenerated into
seven arguments where git expects two — the self-healing converge block would have
failed on every hook invocation while reading as ordinary in the diff. It now renders
through extdeps.exec.command shell_command_render, which fixes the class rather than
this value.

Evidence, green by execution (claim_batch --wet):
  divergent_generated_artifact_merge_refuses_by_real_execution — exit nonzero, 3 index
    stages, ours content, no markers
  divergent_generated_artifact_merge_under_true_driver_silently_drops_theirs_red_control
    — the SAME reproduction with `true`: exit 0, no unmerged stage, theirs gone. The
    discriminating RED; it fails the moment take-ours returns
  one_sided_generated_artifact_change_merges_clean — the non-widen control
The temp repository executes the emitted script text and the modeled config value, not
a copy. 47 further passes across the drift, gitattributes, hook-emit and repo-config
witnesses; the new quoting claim asserts key-followed-by-single-quoted-value, so it reds
on the unquoted form rather than moving with the renderer.

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

* chore: regenerate drifted generated artifacts (ci auto-heal)

* Regenerate .gitattributes and ci.yml from the merged authorities

The merge of main into this branch was governed by this PR's own driver, which is
the first live execution of it. It refused on exactly two paths — .gitattributes and
.github/workflows/ci.yml, the two generated projections both sides had changed since
the merge base — left the ours bytes in the worktree with no conflict markers, and
printed the regeneration recipe. dag/gunbc/ci_layer_roots.dag is authored and merged
textually with both sides' rows, and every src/v1 seed file changed on main only, so
no driver ran there and nothing was dropped.

The refusal was not decorative. The ours side of .gitattributes was missing
src/v1/stage0/src/v1_tests_claim_v1_complexity_eviction_hazard_test.rs, a row main had
added; under the retired `true` driver that row would have merged CLEAN and vanished.
Regeneration recovered it.

Followed the recipe the driver printed: rebuilt from the merged sources first (main
moved 32 src/v1 files, so the pre-merge binary would have emitted from a stale seed),
then main_wet, then regen_stage0 — 133 files written, none changed — and
regen_stage0 --verify reports regen_divergence_count=0 against a binary built after
the merge, so the fixed point is a claim about the merged authorities rather than
about a stale binary.

RECEIPT FOR THE RESIDUE THIS PR ALREADY NAMED, observed rather than predicted: the
out-of-repository autocommit committed through the unmerged index at 00:05 UTC while
the resolution was in progress, producing a two-parent merge commit carrying the
provisional ours bytes. That is exactly the DashboardAutocommit row in
gunbc.commit_workflow commit_writer_binding_work — the writer that does not call
admit_commit_writer at its write boundary — and it is why this PR reports the class as
mechanically preventable rather than structural. The driver still did its work: the
divergence was visible, the recipe ran, and the regenerated bytes land here. Had the
driver answered `true`, there would have been nothing for the autocommit to commit
through and no signal at any point.

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

* Integrate main (CIT-0) and regenerate ci.yml from the merged authorities

main moved again while the previous integration was in flight. This merge produced
no driver refusal — the two generated projections it touches changed on main's side
only, which is the one-sided case git resolves without reaching a low-level driver at
all, exactly as the non-widen control in this PR asserts.

Regenerating from the merged authorities then added the include-hidden-files row that
arrived with main's workflow change. Against origin/main the committed ci.yml now
differs only by this PR's own two additions (the generated-artifact-merge exclude and
its staging line), and main_wet reports no further drift.

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

---------

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 6, 2026
Fixed post-#7836 50-entry cohort, interleaved base/after arms on one
executor: −1.5% wall, −4.7% assembly, +1.8% peak RSS; closure_env and
rewired memos 0 hits on this roster. Raw arms and derived summary.json
retained under docs/plans/receipts/entry-view-assembly-direction/.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 6, 2026
Cohort A/B on the post-#7836 roster: −1.5% wall, −4.7% assembly,
+1.8% peak RSS; closure_env and rewired memos 0 hits / 50 misses.
Delete process-lifetime memos, claim_batch receipt line, and witness
controls — retain measurement receipts only.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls pushed a commit that referenced this pull request Aug 6, 2026
* WIP: PR B: construct entry views from shared module and root facts (rewiring,

* Fix PR B entry-view assembly: compile, fmt, and shared memo wiring.

Wire closure/root assembly env and rewire memos through reconcile, fix im::Vector
type mismatches, and drop the per-module census RefCell path that panicked at runtime.

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

* Fix PR B memo key completeness before A/B measurement.

Delete the dead type_name_export_index_memo path, fold variant-eligibility
and source_indices derivation into memo digests with documented notes, and
enroll discriminating witness controls in entry_view_assembly_memo_witness_test.

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

* WIP: PR B: construct entry views from shared module and root facts (rewiring,

* Delete inner global_bare_variant_base_memo after cohort count.

Representative 50-entry cohort: 1 cross-grain hit in 106 builds — closure/root
coarse memos retain the win; the v2 digest recomputed eligibility on every miss.
Remove the stale claim_batch receipt hook that broke fmt at 257175f.

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

* WIP: PR B: construct entry views from shared module and root facts (rewiring,

* Address operator P0 review on entry-view assembly receipts.

Delete the hollow fallback counter (no fallback arm exists), add memo hit/miss
and key-count instrumentation for retention receipts, document variant-base
cache key completeness at closure/root grain, and enroll the discriminating witness.

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

* Document root-key invariant in variant-base cache key note.

Name why bare source_tree_root suffices for tree_bare_census_for_root within a
fixed MultiEntryIndex, and when incremental index population re-opens the key.

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

* Add entry-view assembly cohort A/B receipts (measured miss).

Fixed post-#7836 50-entry cohort, interleaved base/after arms on one
executor: −1.5% wall, −4.7% assembly, +1.8% peak RSS; closure_env and
rewired memos 0 hits on this roster. Raw arms and derived summary.json
retained under docs/plans/receipts/entry-view-assembly-direction/.

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

* Remove entry-view assembly memos after measured cohort miss.

Cohort A/B on the post-#7836 roster: −1.5% wall, −4.7% assembly,
+1.8% peak RSS; closure_env and rewired memos 0 hits / 50 misses.
Delete process-lifetime memos, claim_batch receipt line, and witness
controls — retain measurement receipts only.

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

* Link entry-view assembly receipt into doc graph.

The new receipt md was unreachable from registered roots, so
doc_graph_has_no_orphan_docs failed on PR #7867.

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

* Headline root_env 92% hit / 1.5% wall in entry-view receipt.

Make the load-bearing finding — a working cache that still does not
move wall — the headline; state cohort bounds and equivalence honestly
before undraft.

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

* Strip ANSI escapes from remote_cohort_run3.log receipt.

Raw terminal colour codes made the PR diff undiffable for review
tooling (resolve-pr-diff + gh api fallback both failed).

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

* Fill binary_sha256.txt; align floor-prep with root_env headline.

Receipt cited an empty binary hash file; populate claim_batch
digests from summary.json. Floor-prep follow-on now leads with
root_env 92% hit / −1.5% wall per receipt headline.

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

* Address review 49494: memo parser, arm TSVs, shell scaffolds.

- Fix derive_summary.py to retain closure_env/root_env/rewired breakdown
  (was flattening to last-wins rewired-only dict).
- Commit per-arm TSV + stderr artifacts extracted from remote_cohort_run3.log
  (fill-composition precedent); regenerate summary.json.
- Add SCAFFOLD + dissolve-on headers to run_all.sh and run_ab_cohort.sh.

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

---------

Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls restored the session/smart-badger-549 branch August 7, 2026 06:56
gunbai-bot Bot pushed a commit that referenced this pull request Aug 16, 2026
Merge commit rather than rebase: the working agreement is squash-merge, so
branch history is flattened on landing anyway, and a rebase would force-push a
branch whose instrumentation commits have been cited by sha all evening.

Four conflicts, resolved by two different rules.

DESIGN.md is a generated projection and was regenerated from
dag/gunbc/design_document.dag, not hand-resolved. The merge driver refuses
rather than answering true, so it leaves the ours side in the worktree with no
conflict markers and marks the path unmerged -- a file that looks resolved and
is wrong, which is the failure recorded twice on #7836. Verified afterwards
that the projection carries both sides' authority-derived content: main's
replacement-cut rule and Altra rows, and this branch's floor-cut rung drop.

The three stage0 .rs files are hand-maintained (not in .gitattributes) and were
merged by hand:

  v1_interpreter.rs   took both sides -- this branch's ctx.indexes.service_ops
                      and main's str_value helper.
  cli_run.rs          took the deletion. Main modified the selection-degradation
                      receipt machinery that the floor cut removes; no reference
                      to any of its symbols survives anywhere in the tree.
  claim_executor.rs   took main's str_value helper and dropped its selection_tag
                      and _with_selection arguments. Those pass parameters the
                      .dag authority on this branch does not declare --
                      floor_component_row_of_failure_mode takes no selection_tag,
                      and neither _with_selection constructor exists -- so
                      carrying them would have called constructors that are not
                      there.

Main also changed Value::Str to carry Rc<str> and added str_value(), so ten
construction sites in cli_run.rs were migrated. Two of those were match
PATTERNS, where the variant must stay and only the payload handling changes;
a blanket rewrite hit them and the compiler refused, which is the intended
outcome of that kind of edit rather than a surprise.

Verified after the merge, because the instrumentation is one line away from
regressing to the na it just stopped emitting: both cgroup readers resolve
through floor_cgroup_dir(), no hardcoded root read survives, both decode seams
are present, and a live run emits real cur_kb/ev_high/ev_max. regen_stage0
--verify reports regen_divergence_count=0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 27, 2026
The conflict was an ADD/ADD on the census module and its witness, which is the
tell that this PR's content had already reached main by squash merge. Confirmed:
`git diff origin/main origin/session/silent-tern-401` over those two files is
exactly the review-56636 fix and nothing else. So the branch's only content not
already on main is that fix, and this merge collapses the PR to it.

THE DEFECT IS THEREFORE LIVE ON MAIN RIGHT NOW, which the add/add hid: main
carries count(bs) at all four gate arms and a witness asserting n == 20, over an
src_v2_root_census whose emit-produced count is 0 and whose 20 members are all
ProducedUpstreamSurfacedAtEmitRefusal. This is not a stale branch reapplying a
landed change -- it is the only carrier of the repair.

RESOLUTIONS, each read rather than defaulted:

  census module + witness -- took HEAD. Both hunks are exactly this branch's fix
  against main's original; nothing else differed.

  DESIGN.md -- took MAIN, which is a strict superset. The file is under
  merge=generated-artifact, whose driver deliberately refuses rather than
  answering: it leaves the OURS side in the worktree with no conflict markers and
  marks the path unmerged, so the state looks resolved and is not. Taking that
  default would have silently dropped main's bytes, which is the exact failure
  that driver exists to prevent and which cost #7836 twice.

  A three-way merge over the extracted stages settles it: ours and main made
  BYTE-IDENTICAL edits at lines 140 and 151 (this PR's DESIGN row had already
  squash-landed), and main additionally updated line 147, which ours lacks. So
  main's version contains everything ours does plus one row. merge-file returns
  clean and its output is identical to main's side.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013crMNyLvjKC2Q5UF851PKy
@gunbai-bot gunbai-bot Bot mentioned this pull request Sep 7, 2026
6 tasks
briansrls pushed a commit that referenced this pull request Sep 8, 2026
…e function

Five conflicts, and in four of them BOTH sides were right about different
things. Taking a side would have silently reverted work.

pair_serving_desired: main pinned max-num-batched-tokens with its own fleet
measurements; this branch corrected the KV dtype and window. They annotate
DIFFERENT FIELDS of one function whose merged body already carries both
decisions, so both annotation blocks survive, ordered to follow the fields as
the body declares them.

pair_serving_realization: main added conditional prefill flags rendered only
when requested; this branch made the model path come from the declared
snapshot, which makes the whole render optional. These compose exactly -- main
decides WHICH FLAGS the prefill policy contributes, this branch decides
WHETHER THERE IS A LINE AT ALL -- so the renderer keeps the optional
signature and concatenates main's flags.

The witness needed more than text. Main's two new prefill assertions call the
renderer with one argument, which no longer typechecks against the
snapshot-taking signature. They are ADAPTED rather than weakened or dropped:
a helper renders through the declared snapshot and answers empty when
unpinned, so an unpinned snapshot cannot quietly satisfy an assertion about a
line nobody launches.

ci_layer_roots: this branch adds a note above one main edited. The new note is
kept and the v1 note is taken from MAIN, because its wording changed there and
this branch never touched it -- keeping the stale copy would have reverted an
edit nobody asked to revert.

docs/design-rung-drops.md is GENERATED and is not resolved here. The merge
driver refuses rather than answering, leaving the ours side unmerged with no
markers, so hand-picking a side would drop the other's authority-derived
bytes silently -- the defect that driver exists to prevent, which happened
twice on #7836. It is staged provisionally and regenerated from the merged
authorities before this lands.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013g351i6QQQPDBjwAe3iyVb
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