Skip to content

CI floor time audit: redundant-work ledger + ranked levers (45–72min band) - #7106

Merged
briansrls merged 10 commits into
mainfrom
session/vivid-fox-471
Jul 23, 2026
Merged

briansrls merged 10 commits into
mainfrom
session/vivid-fox-471

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Measurement-only audit (no floor behavior changes) attributing the 45–72min CI band to redundant work per floor stage, not just phase walls.

Test plan

  • doc_graph_has_no_orphan_docs / doc_graph_has_no_dangling_links (pre-push)
  • No ci_floor_plan batch ordering or floor runtime changes
  • CI floor (measurement docs only; fleet gate)

briansrls and others added 4 commits July 23, 2026 04:46
Log-diff receipts on fleet runs decompose workflow vs ci-job wall time and name discovery resolve, self-host gates, and #7030 effectful recovery as the dominant buckets.

Co-authored-by: Cursor <cursoragent@cursor.com>
Re-derive run 29976989996 and five comparison arms; name per-stage duplicate work (per-entry resolve walks, ingest re-scan, cheap gates after compile) and price top levers in minutes without floor behavior changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Unblocks doc_reachability pre-push gate for the measurement-only audit PR.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title CI floor time audit: attribute the 45-72min band CI floor time audit: redundant-work ledger + ranked levers (45–72min band) Jul 23, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 23, 2026 05:13
@gunbai-bot

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Review 41687 (composer-2.5 APPROVE) — verified, no further changes needed.

Checked each claim against head 652ec6544f:

  • Docs-only measurement receipt: diff is docs/plans/*, three docs/probes/*.tsv, and one HandAuthoredDocBind row — no ci_floor_plan batch ordering or floor runtime edits.
  • DESIGN.md subordination + dissolution trigger: plan header names DESIGN.md + carriers as authority and cites realization_measurement_loop Phase-0 Gantt carrier (same trigger family as ci-floor-fractal-gantt).
  • HandAuthoredDocBind anchor: gunbc.ci_materialization::ci_floor_declared_resolve_count resolves in-tree (dag/gunbc/ci_materialization.dag:177).
  • No parallel authority / hand-Rust modeling: prose + TSV only; the only .dag edit is doc-graph registration.

CI fix (separate from review): CI red on non_fold_residue_no_unrostered_or_stale — two #7088 Gate membership predicates (gate_in_cheap_floor_membership, spec_enrolls_gate) landed unrostered; surfaced when doc_graph_roots.dag re-ran the whole-corpus nfr receipt. Roster backfill in 652ec6544f.

— sent from vivid-fox-471

@gunbai-bot

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Reviews 41724 (opus) and 41726 (composer-2.5) — verified, no further changes needed.

Checked each claim against head 652ec6544f:

Claim Verdict
Plan doc + three TSV probe receipts ✓ docs/plans/ci-floor-time-45-72-band-attribution.md + docs/probes/ci_floor_{phase_attribution,redundancy_ledger_skeleton,lever_ranking}_2026-07-23.tsv
hand_authored_doc_binds registration with named dissolution trigger ✓ doc_graph_roots.dag row binds gunbc.ci_materialization::ci_floor_declared_resolve_count; dissolution cites realization_measurement_loop Phase-0 Gantt carrier
NON_FOLD_RESIDUE_ROSTER backfill with burn-down note ✓ two #7088 sites (gate_in_cheap_floor_membership, spec_enrolls_gate) with receipt comment naming the fold-migration burn-down
No floor behavior / substrate / unit-modeling changes ✓ diff is docs + doc-graph bind + roster hygiene only; ci_floor_plan.dag untouched
No absorbing fallbacks ✓ measurement prose only

Merge readiness (2026-07-23T06:18Z): mergeable=CLEAN · reviews 41687 + 41724 + 41726 all APPROVE · CI run 29983840359 in progress on 652ec6544f (build green; ci job running). Awaiting green floor before operator merge.

— sent from vivid-fox-471

briansrls and others added 3 commits July 23, 2026 06:56
…PR diff

The layering batch-1 red on 652ec65 was caused by our redundant cli_run.rs
NFR backfill (already landed on main as #7114), which forced a whole-tree
compile-clean on .rs and a heavier batch-1 path. doc_graph_roots bind row
checked: import-bearing file, module_path in string literal — no new
layering edge (not 7080-class). PR diff vs main is now docs + doc_graph only.

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

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Review 41752 (opus) — verified, no further changes needed.

Checked against head 861b355b40 (docs-only diff vs main after #7114 merge + duplicate roster cleanup):

Claim Verdict
Docs + probe receipts + one HandAuthoredDocBind ✓ plan md + 3 TSV probes + doc_graph_roots.dag row
No substrate / hand-Rust / floor behavior ✓ zero .rs diff vs main; no ci_floor_plan or carrier edits
Bind target resolves in-tree ✓ gunbc.ci_materialization::ci_floor_declared_resolve_count at dag/gunbc/ci_materialization.dag:177
Dissolve-on shared with fractal-gantt sibling ✓ same realization_measurement_loop Phase-0 Gantt carrier trigger
Measurement receipt, not parallel-ledger design ✓ header subordinates prose/TSV to DESIGN.md + carriers

Nit (non-blocking): the only .dag touch is doc-graph registration metadata (HandAuthoredDocBind), not substrate modeling — same pattern as the existing witness-realization-plan row.

Merge readiness: mergeable=CLEAN · reviews 41687 + 41724 + 41726 + 41752 all APPROVE · CI run 29986976013 queued on 861b355 (prior layering red fixed by restoring docs-only diff).

— sent from vivid-fox-471

briansrls pushed a commit that referenced this pull request Jul 23, 2026
…dence (run 29995111208)

Green pull_request floor on this branch, same probe format as the #7106
baseline: compile_clean 3.58 -> 2.89, cheap gates 10.15 -> 4.65, compile-gate
consume 27s -> 8ms (walk-memo hit), ingest 12.15 -> 5.24, reads_real_bytes
3.30 -> 3.13, discovery unchanged by design (lever 1 out of mandate);
resolves_total 3 == declared 3 (the resolve-receipt gate's own green line).
Ledger rows cheap_gates_batch1 / compile_gate_consume flip to
consumes-receipt; source_root_ingest_gate to necessary-first-touch (pooled),
each with this run id as evidence. Batch-4 exec-corpus anomaly (52min, the
interp_recorded_fixture row) is footnoted in the row's class and attributed
in the PR thread — not a mandated stage; bisection in progress.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
Run 29986954853 (one-file v1_deletion_plan.dag diff) killed at ci-step
timeout-minutes:270 — corpus/infra-bound tail, not diff-size-driven.
TSV row + plan §1.1 + lever 5 sharpen + new lever 9 (silent ceiling ride).

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

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Review 41841 (composer-2.5) — verified, no further changes needed.

Checked against head 0d9c7a132b (5-file docs-only diff vs main):

Claim Verdict
Plan + 3 TSV probes + one doc_graph_roots bind ✓
No floor / Rust / shell / substrate modeling ✓ zero .rs diff; no ci_floor_plan or carrier edits
Fractal-gantt receipt pattern (carriers authoritative, named dissolve-on) ✓ plan header + bind dissolution cites realization_measurement_loop Phase-0 Gantt carrier
Bind target is existing gunbc.ci_materialization decl ✓ ci_floor_declared_resolve_count at dag/gunbc/ci_materialization.dag:177
No DESIGN.md violations on changed lines ✓ measurement-only prose/TSV; §1.1 extreme-tail row is additive receipt data

Merge readiness: mergeable=CLEAN · reviews 41687 + 41724 + 41726 + 41752 + 41841 all APPROVE · CI in progress on 0d9c7a1 (build green).

— sent from vivid-fox-471

@gunbai-bot

gunbai-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Review 41842 (opus) — verified, no further changes needed.

Checked against head 0d9c7a132b:

Claim Verdict
Pure measurement: plan + 3 TSV probes + HandAuthoredDocBind w/ dissolve-on ✓ 5-file docs-only diff vs main
No .dag behavior / unit-modeling / hand-Rust / shell-emit ✓ only doc-graph registration metadata in doc_graph_roots.dag; zero .rs
DESIGN §6 denominate-benefit scoping ✓ product = redundancy ledger + ranked levers priced in displaced minutes
§5 absorbing-fallback called out as follow-up lever (not smuggled fix) ✓ plan §1.1 names 270m action-ceiling silent ride; lever 9 in TSV is measurement-only recommendation

Merge readiness: mergeable=CLEAN · 6 APPROVE reviews (41687, 41724, 41726, 41752, 41841, 41842) · CI in progress on 0d9c7a1 (build green).

— sent from vivid-fox-471

briansrls added a commit that referenced this pull request Jul 23, 2026
…(job backstop derives 600 -> 130; effective main wall ~75m) (#7120)

Operator ruling 2026-07-23 ('main needs a timeout, 75 seems reasonable for
now; even 1 hour is absolutely ridiculous'), priced by today's receipt:
run 29976854620 hand-killed at t=227m — 16.3G pinned at memory.high,
34.4G swap, 37,096,823 high_events, PSI 33.8, oom_kill=0, governor
'hard back-off 1->1' for hours — the memory.high throttle-crawl class,
with 8 subsequent main pushes wedged identically behind it. The old
270m floor cap LEGALIZED a 4.5-hour crawl.

Changes, all in the authority (ci.yml regenerated via main_wet, never
hand-edited):
- gunbc_ci_floor_step_timeout_minutes 270 -> 55 (recent green floors run
  39-45m; 55 is a ceiling, not a target). The timeout-history note gains
  today's receipt plus the regression ledger (8m pre-#6848 -> 18m -> 40-50m
  cap-saturated -> 4h cap lost: one disease, retention — never an accepted
  baseline) and the named follow-ups (governor crawl-refusal arm; #7106
  levers) so the cap becomes the backstop, not the diagnostic.
- NEW gunbc_ci_regen_step_timeout_minutes = 15: the regen step (measured
  ~5m green) previously borrowed the floor's cap, double-counting the
  floor budget in the job backstop sum and allowing a wedged regen to sit
  for hours.
- gunbc_ci_job_backstop_timeout_minutes() derives 600 -> 130 (sum with the
  regen term replacing the second floor term).

Policy recorded on the carrier: superseded main runs are NOT cancelled
(operator 2026-07-23) — per-commit verdict history is bisection evidence;
the timeout is the bound.


Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg

Co-authored-by: Claude <noreply@anthropic.com>
@briansrls
briansrls merged commit 1b67b55 into main Jul 23, 2026
1 of 2 checks passed
@briansrls
briansrls deleted the session/vivid-fox-471 branch July 23, 2026 12:16
briansrls added a commit that referenced this pull request Jul 23, 2026
…tion (levers 2/3/8 of #7106) (#7122)

* docs: attribute the CI floor 45-72min band by ci-job phase and batch.

Log-diff receipts on fleet runs decompose workflow vs ci-job wall time and name discovery resolve, self-host gates, and #7030 effectful recovery as the dominant buckets.

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

* docs: CI floor redundant-work ledger, phase TSV, and ranked levers.

Re-derive run 29976989996 and five comparison arms; name per-stage duplicate work (per-entry resolve walks, ingest re-scan, cheap gates after compile) and price top levers in minutes without floor behavior changes.

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

* docs: register ci-floor-time audit plan in doc_graph_roots.

Unblocks doc_reachability pre-push gate for the measurement-only audit PR.

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

* WIP: CI floor time audit: attribute the 45-72min band

* WIP: CI floor time audit: attribute the 45-72min band

* fix(ci): drop duplicate NFR roster + merge #7114 — restore docs-only PR diff

The layering batch-1 red on 652ec65 was caused by our redundant cli_run.rs
NFR backfill (already landed on main as #7114), which forced a whole-tree
compile-clean on .rs and a heavier batch-1 path. doc_graph_roots bind row
checked: import-bearing file, module_path in string literal — no new
layering edge (not 7080-class). PR diff vs main is now docs + doc_graph only.

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

* One tree, one resolve: floor stages consume the compile-clean computation (redundant-work ledger levers 2/3/8)

STEP-1 model (gunbc.ci_materialization ci_floor_resolve_receipt_note, Receipt 5):
the compile-clean receipt's typed store — the main-thread process_shared_index the
eager install warms — is the consumable fact; later floor stages consume it, and a
stage that cannot be served is counted, never a silent re-walk. Declared
cold-resolve count 4 -> 3 consciously (the note's own rewire discipline); ci.yml
regenerated to match.

Lever 3 (executor realization): batch_unit_lane clause (c) — a resolve-group
sharing an (entry, execution_mode) some batch resolves on the memo path is
colocated there, so the batch-0 cheap-gate group rides the store the eager
compile-clean install warmed instead of re-deriving the same closure cold on a
spawned thread (where thread-local process_shared_index is invisible); the
compile anchor and emit-host then consume its walk_memo context as hits. No
schedule fact added or reordered (#7088 batch-0 ordering untouched).

Lever 2 (transport realization): run_gunbc_claims pools ONE gunbc child per call
(gunbc.Cli.RunClaims; argv grammar gunbc.cli_invoke.cli_claim_spec
'ENTRY::FUNCTION', decoder parse_pooled_claim_spec — one grammar, both
directions) instead of one child per claim row: N rows over K distinct entries
pay one pool build + K entry resolves against the child's per-process shared
store (resolve_entry_graph), full-ledger conjunction preserved by construction.
Residue (one pool build per call; overlay manifests are composed input) counted
in the redundancy ledger; dissolve-on the W3 cross-process content-keyed store.
Dead per-claim argv helper gunbc_claim_run_args deleted (zero consumers).

Lever 8 (partition authority): CompileCleanPartitionBoundary.entry_roots =
witness_layer_roots — the roster enumerates exactly the tree the whole-tree gate
compiles, never witness_layer_roots.first() ('dag' only). Closes both directions
of the roster-subset asymmetry: src/v2-only .dag diffs scope to their entry
closures instead of falling to the no-shard-intersection whole-tree baseline
(run 29976989996's shape), and a dag-rooted touch now selects affected src/v2
importers on scoped runs. Totality glob follows the boundary (both roots; join
fixed for newline-trimmed shell stdout). Every fail-closed arm unchanged.

Proven by execution: executor lane tests (promotion + RED control + mode
keying); pooled claim-spec grammar tests; floor_fast_plan_scopes_src_v2_entries_
both_directions on the live tree; live-tree shard totality over both roots;
pooled overlay run of the real_ingest leg (3/3 PASS — stub supersession through
the pooled resolve path); typed-op witnesses incl. RunClaims red control;
cargo fmt clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

* ci: retrigger pull_request run (empty)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

* Phase-0(b) admission: enroll the two RunClaims typed-op witnesses on the bin_witness_wet roster

typed_witness_invocation_test.dag is discovery-excluded by pattern; every fn
in it rides the explicit bin_wet roster. The two pooled-op witnesses added
with gunbc.Cli.RunClaims landed excluded-but-unrostered and the floor refused
loudly (WITNESS ADMISSION REFUSAL cause=UnexecutedDeferredWitness count=2,
run 29993198712) — the admission invariant working as designed; these rows
give them their executing consumer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

* Acceptance receipts: phase-attribution row + ledger flips + lever evidence (run 29995111208)

Green pull_request floor on this branch, same probe format as the #7106
baseline: compile_clean 3.58 -> 2.89, cheap gates 10.15 -> 4.65, compile-gate
consume 27s -> 8ms (walk-memo hit), ingest 12.15 -> 5.24, reads_real_bytes
3.30 -> 3.13, discovery unchanged by design (lever 1 out of mandate);
resolves_total 3 == declared 3 (the resolve-receipt gate's own green line).
Ledger rows cheap_gates_batch1 / compile_gate_consume flip to
consumes-receipt; source_root_ingest_gate to necessary-first-touch (pooled),
each with this run id as evidence. Batch-4 exec-corpus anomaly (52min, the
interp_recorded_fixture row) is footnoted in the row's class and attributed
in the PR thread — not a mandated stage; bisection in progress.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

* Rework R1-R3: per-gate pooled claim_batch child (the section-9 cold-child class); interim gunbc-run claim grammar deleted as a duplicate; interp_recorded per-PR enrollment reverted

R1 (child-pool lever, walls honored): run_gunbc_claims realizes as ONE
claim_batch child per call — claim_batch's own pre-existing pooled
--entry/--function grammar, one shared MultiEntryIndex per process, per-claim
verdicts NAMED by its PASS/FAIL-per-function loop, no short-circuit, exit
nonzero iff any failed. The gunbc run --claim flag, gunbc.Cli.RunClaims op,
and the ENTRY::FUNCTION spec grammar this branch had introduced are deleted:
claim_batch already owned the pooled-claims surface (one grammar, not two).
Cheap-gate transports consolidate to one call per GATE (layering 7 rows -> 1
child, was 7 cold children; extdeps 5 -> 1, was 5; the former cross-call &&
short-circuit inside a gate is deliberately removed — every claim reports on
every run, stated in the transport notes). The pooled child stays a SEPARATE
process by design — never in-executor evaluation (the executor is the
16GiB-pinned process; the child dies and frees). extdeps' private roots datum
dissolved into witness_layer_roots (a nickname).

R2 (batch-4 disposition at the witness grain): interp_recorded_fixture's
per-PR enrollment REVERTED to OfflineLocalRecipe — its ~13+ claim_batch
children each cold-index the whole workspace root (2556s on run 29995111208,
the dominating row of the 53.2min batch-4 wall); too heavy for the falsifier
wet lane's 600s receipt budget as-is, so local-recipe with a pooled/scoped
re-enrollment dissolve-on rather than an enshrined nightly refusal.

Proven by execution: pooled child 10/10 PASS over 4 entries in one process
(incl. the argv-shape witness pinning claim_batch_claims_argv's exact
output); RED control exit 1 with the failing claim NAMED and later rows still
reporting; ingest overlay leg 3/3 through the claim_batch loader (stub
supersession held); whole-tree --target dag compile green; artifact drift
clean; cargo fmt clean; executor lane + scope-plan test batteries green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

* R4 re-measure: run 30009199696 phase row + ledger evidence (floor 49.5m fits the 55m cap; wet 53.2->10.82; cheap 3.08 and ingest 6.90 land as counted residue vs the 2min targets)

Fresh phase-attribution row from the post-rework pull_request run
30009199696 (head 6fe8d02, all gates green, resolves_total 3 == declared
3, peak 15.0GiB cgroup-post): ci_job 99.2->61.1min, floor step 49.5min
under the 55min cap; wet wall 53.20->10.82min from the interp_recorded
de-enrollment (surviving pools 20+54 rows, eval 9.35min serial).

The two R1 acceptance targets MISS and are recorded as counted residue
in the redundancy ledger, mechanism named per row: cheap gates
4.65->3.08min (2 pooled children at ~88s/~64s — each claim_batch child
pays a corpus-denominated MultiEntryIndex build regardless of roster
size); source_root_ingest 5.24->6.90min, a +1.66min REGRESSION vs the
interim vehicle (4 children at ~82-118s; the claim_batch child costs
~25-30s/process more than the deleted gunbc-run vehicle — loader-parity
gap on top of the shared corpus-denominated index). Dissolve-on for
both: the W3 cross-process content-keyed store (or claim_batch loader
parity), never a silent re-widen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 23, 2026
CI floor time: child-spawn attribution (Pi-3 bench × srv1) — corroborate + correct #7106
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