Repository navigation
CI floor time: child-spawn attribution (Pi-3 bench × srv1) — corroborate + correct #7106 - #7136
Merged
Merged
Conversation
…— corroborate + correct #7106 Measurement receipt only (docs + one doc-graph bind row); no floor behavior, substrate, or unit-modeling changes. Re-runs the merged #7106 audit on a Raspberry Pi 3 used as a slowdown-exaggeration bench against srv1, with release bins built from the merged head. Corroborates the phase walls, resolves_total=4, and the materialization receipt; corrects the attribution: - ~48% of the floor (26 cold `gunbc` child processes across batches 1/6/7, Σ≈23min) is spawned one-per-ClaimRun by run_gunbc_claims_ready (host_prelude.dag:177), invisible to resolves_total. The third instance of "cold index per execution unit" (per-thread #7030, per-repeat double-resolve-rewire, per-process here). - srv counterfactual: pooling batch-1's 12 claims 479.6s→93.4s (5.1×). Pi counterfactual: pooling ≈ spawn-sum — the win vanishes at the memory wall, so the fix must pair with per-worker footprint reduction. - #7106 lever #1 (per-entry fixpoint) is stale: #7030/#7056 are in the measured run's ancestry with no recovery. Lever #2 (ingest re-walk) targets the wrong mechanism (the bin is 0.008s). Two unledgered costs added: selection-control 4m51s, teardown ~2.5m. - Side finding (needs root-cause): standalone `gunbc compile --target dag` reds with 2652 UnlistedImportUse errors on the CI-green tree; the floor gate consumes the executor's internal receipt instead — two compile-clean realizations, one class. Bind: docs/plans/ci-floor-child-spawn-attribution.md → tools.host_prelude::run_gunbc_claims_ready (dissolves when the child-spawn class is dissolved). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Measurement-only follow-on to the merged #7106 CI-floor audit. Same mandate, re-run on a
Raspberry Pi 3 used as a slowdown-exaggeration bench against srv1 (Ampere Altra, same
class as the CI runners), with release binaries built from the merged head. Everything is by
execution; no floor behavior, substrate, or unit-modeling changes — the only
.dagedit is onedoc-graph bind row.
Corroborates #7106: phase walls,
resolves_total=4, materialization receipt, width=1 at the16 GiB cgroup ceiling.
Corrects the attribution:
wet gate discharges witnesses through
run_gunbc_claims_ready(dag/tools/host_prelude.dag:177),which spawns one cold
gunbcprocess perClaimRun. 26 children across batches 1/6/7 ≈23 min ≈ 47.5% of the 48.4-min floor — invisible to
resolves_total=4, identical on trivialdiffs. It's the third instance of "cold index per execution unit" (per-thread Floor time: dissolve the #6848 once-per-entry fixpoint + reconcile-miss qualified-fill (~18min residual) #7030, per-repeat
session/double-resolve-rewire, per-process here).(5.1×) on srv. But on the Pi, pooling ≈ spawn-sum — the win vanishes at the memory wall
(the unioned closure swap-thrashes), so the fix must be paired with per-worker footprint
reduction or it won't help the capped fleet runners.
are ancestors of the measured run's commit with no recovery; lever Codex/graph viz test helpers #2 (ingest re-walk) targets
the wrong mechanism — the
discover_source_root_ingestbin is 0.008s (2 file reads), the12 min is the child-spawn class.
teardown (~2.5m, swap 5.5→9.4 GB during
Drop).gunbc compile --target dagover the three witness-layer roots reds with 2652
UnlistedImportUseerrors on the CI-greentree; the floor gate consumes the executor's internal shared-index receipt instead — two
compile-clean realizations, opposite policy on the class the namespace lane is mid-promotion on.
Recommendations (plan doc §8): dissolve the child-spawn class toward the
process_shared_index"resolve once, share by reference" terminal (interim: pool per gate), gated on footprint;
re-open the discovery 643s as an unknown; ledger the two unledgered costs; keep a footprint probe
on the emit stage (337× Pi stretch — the most memory-shaped compiler stage).
Carriers
docs/plans/ci-floor-child-spawn-attribution.md— narrative, corrections, recommendationsdocs/probes/ci_floor_pi_srv_stretch_2026-07-23.tsv— phase × CI × srv × Pi × stretch × shapedocs/probes/ci_floor_child_spawn_counterfactual_2026-07-23.tsv— pooled-vs-spawned ledgerdag/gunbc/doc_graph_roots.dag— oneHandAuthoredDocBindrow →tools.host_prelude::run_gunbc_claims_readyTest plan
doc_graph_has_no_orphan_docs/doc_graph_has_no_dangling_links/ slug wall — verified by execution on srv1 (results in-thread)ci_floor_planbatch ordering or floor runtime changes (diff is docs + one doc-graph bind row)tools.host_prelude::run_gunbc_claims_readyresolves in-tree🤖 Generated with Claude Code