Repository navigation
Workflow-shape lane (group 3c): dispatch items as typed workflows — sized rows reconciled against the in-flight UI-model branch + srv4 receipts - #7118
Merged
Conversation
…ive sized rows reconciled against in-flight UI-model branch + srv4 receipts on the host-state lane Group 3c lands the machine for the group-3 lifecycle discipline (operator directive 2026-07-23), gated prose-wise on the first live dispatch round-trip: - ts-wf-shape: lane anchor with the reconciliation seams — presentation half owned by claude/ui-modeling-hand-layer-o0mhyn (#7113 + D1-D5 addendum), stage-0 dependency ts-dispatch-redispatch, terminal absorption into enforcement-intent, verdict capture via md-to-dag delta. - ts-wf-node-schema (i:med v:med): decompose the node prose blob into typed fields incl. authored-at/last-verified; freshness at dispatch (priced by the stale 5-regen-cutover dispatch). - ts-wf-stage-artifacts (i:high v:med): ModelArtifact -> Brief -> Attempt -> Verdict chain; the verdict is the only status mover; done derived. - ts-wf-belt-refusals (i:med v:small): dispatch-time walls (no model artifact, stale receipts, rework = fresh session with payload); edges on stage-artifacts + redispatch. - ts-wf-lens-walls (i:med v:small): floor lenses done-has-verdict / residue-counted / dispatched-has-model-artifact, each with RED control, declared dissolution into StandingIntent. - ts-wf-progress (i:low v:small): completion as pure projection (verdict bits, Volume weights, RoadmapEdge fan-in), rendered through the UI branch's register machinery. Also: ts-dispatch-lifecycle gains the operator sharpening (MODEL stage unskippable and first, citation bar per the ed25519 precedent); ts-host-state gains the srv4 incident receipts (not-a-member + no-live-actuator diagnosis, interim hand-fix table, the 0-to-3 brief, derived-interference ruling). ROADMAP.md regenerated (main_wet, ExitSuccess); roadmap_authority_witnesses true and roadmap_frontier_witnesses PASS by execution. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
|
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. |
briansrls
pushed a commit
that referenced
this pull request
Jul 23, 2026
briansrls
pushed a commit
that referenced
this pull request
Jul 23, 2026
The PR's first floor run failed exactly one gate: generated_artifact_drift on ROADMAP.md — main's committed copy (post-#7118) carries a trailing blank line its own generator does not emit, so the merge tree drifted. Regenerated via main_wet on the merged authorities; ci.yml converged byte-identical with main's auto-heal of the fleet-converge line this branch had healed independently. Budget-coverage witness re-proven true on the merged tree (7 batches, 7 budget rows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44
briansrls
added a commit
that referenced
this pull request
Jul 23, 2026
* CI floor endgame: per-batch claim pool, teardown fast-exit, selection-control shared index, discovery phase receipts, THE COST WALL, wet-lane re-homes (D1-D6) D1: batch-0's claim-backed gates share ONE pooled claim_batch child (tools.cheap_gate_pool — the union of the two concern authorities, ByDerivation; K sub-pools sized to the slot via cheap_gate_pool_max_claims_per_child, the section-9.1 cliff wall; child stays a separate process). New CheapClaimPoolGate runs it; layering/ extdeps gates became non-vacuous enrollment walls asserting chunk-transform totality (bare pool membership would be a tautology). Ingest's 4 mktemp overlay children stay — the genuine constraint, named in-row (ingest_pool_separation_note). D2: floor_terminal_fast_exit after receipts flush skips the 2.5-3.1min Drop walk of the ~16GB retained store (twice-confirmed). Exit code preserved (walk_exit_code, unit-pinned); truncated receipts still red (unwritable_receipt_base_reds_not_vanishes RED control). Terminal path only. D3: the selection-control step's 4m51s was three cold whole-pool index builds inside floor_skip_discovery_witness; the warmup case now rides resolve_entry_graph_shared (one shared build + the deliberately-cold Class-B control build, named). Step stays per-PR; ledger row added. D4: discovery pump phases land as typed rows in the floor resolve receipt (discovery_pump_wall_ms / roster_walk / diff_observe / frontier_attribution / shared_index_build / preresolve_calibration / runner_resolve + corpus resolve/eval serial sums). Lever-1 stays retired as priced; the fresh profile names the next mechanism before any spend. D5 THE COST WALL: per-batch wall budgets as data (gunbc.ci_spec.gunbc_ci_floor_batch_wall_budget_seconds, sum 53min under the 55min cap; per-batch never per-run — the plumbing-PR profile), read fail-closed at arm time, enforced as typed FLOOR-BATCH-OVER-BUDGET refusals (never a widen), recorded as typed receipt rows (target/floor-batch-wall-receipt.txt). Ruling reconciliation in the carrier note (budgets are admission/scheduling, never witness verdicts — the 5s-eval-law split; endgame brief operator is the sign-off). Raise requires an appended receipt note. RED control both directions proven by execution on the tighten-only injection fixture (budget_red_control_plan.dag). D6: bin_witness_wet_per_row_wall_budget_seconds=60; the two rows over it (floor_skip keystone 289s — also a per-PR duplicate of the selection-control step — and cross_shard_seam live-tree 183s) re-home to falsifier wet lane 5 as typed frontier rows (falsifier_rehomed_bin_wet_rows, reasons + dissolve_on, registry enrolled); 52 rows remain the per-PR smoke subset. Also: carries #7123's docs baseline (journey + attribution 9-9.2, now linked into the doc graph), appends attribution 9.3 with the <=30min post-merge prediction, retires completed lever rows, appends the cost-wall landing to the timeout-note bounce history, and heals ci.yml's stale fleet-converge.sh heal-line (its artifact and registration were deleted by #7121; the committed yml predated the regen). Proven by execution: executor battery 18/18; budget gate RED (witness PASSes, batch refusal fires, exit 1, OverBudget receipt row) and GREEN (exit 0, WithinBudget) on the fixture plan; ONE claim_batch child ran all 4 batch-0 gates with the ONE nested 12-claim pooled child (3 PASS + drift PASS post-regen); chunk-totality witnesses 4/4 incl. the RED discriminator; ci_floor_plan_witnesses PASS (membership 4, falsifier 5 lanes, budget coverage); whole-tree compile: zero new error identities vs main (main itself reds 2,647 pre-existing unlisted-import rows — the flagged non-goal); doc-reachability wall green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Merge main + heal ROADMAP.md trailing-newline drift on the merged tree The PR's first floor run failed exactly one gate: generated_artifact_drift on ROADMAP.md — main's committed copy (post-#7118) carries a trailing blank line its own generator does not emit, so the merge tree drifted. Regenerated via main_wet on the merged authorities; ci.yml converged byte-identical with main's auto-heal of the fleet-converge line this branch had healed independently. Budget-coverage witness re-proven true on the merged tree (7 batches, 7 budget rows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * D6 follow-through: FalsifierRehomedBinWet consumer cadence — the re-homed rows name their executing consumer (Phase 0(b)) The a9744d3 floor red was WITNESS ADMISSION REFUSAL cause=UnexecutedDeferredWitness count=2: the D6 re-home removed the two rows from bin_witness_wet_entries but the admission machinery had no concept of the new falsifier lane, so the excluded witnesses read as enrolled-with-zero-consumers — the invariant working as built. Wired through every reader: std.witness_admission gains the FalsifierRehomedBinWet cadence variant; ci_layer_roots re-exports it, flips floor_skip_discovery_witness_test.dag's exclusion row onto it (with its own reason/dissolve strings; the seam file stays BinWitnessWet — its algebra row still backs it), and adds the witness_exclusion_row_is_rehomed_bin_wet predicate (all 7 existing cadence matches gain the arm); v2.workflow.witness_admission routes consumer_for_explicit_rosters and the explicit-consumer manifest through falsifier_rehomed_bin_wet_entries and adds rehomed backing to witness_exclusion_explicit_roster_rows_consistent (new param); cli_run's source-scan classifier gains the RehomedBinWetRow head and the classification roster gains the name; the refusal message names the lane. Proven by execution: reconciliation witnesses 5/5 green incl. the NEW RED control (an unbacked FalsifierRehomedBinWet row reds); witness_admission_invariant_holds green with the two new rows (the keystone row classifies FalsifierRehomedBinWet and the manifest covers it); Rust unit test pins the RehomedBinWetRow head parse. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Operator sign-off round: budget-note signature + follow-up rows, D2 comment scope fix, 9.3 process lesson + on-call notes - gunbc_ci_floor_batch_wall_budget_note gains the dated operator signature (briansrls 2026-07-23) affirming the admission/verdict reading — the declared human-signed exemption row the 2026-07-10 ruling requires — and the amended raise discipline (raising needs a dated operator-signed line naming run id + enrollment; tightening by ordinary receipt note; remedy is diagnose-or-signed-raise, never rerun), plus three named follow-up rows: the prelude coverage hole (~5min before batch-1 arms is outside every budget), identity-keyed budgets (index coupling rides the ComputationIdentity lane), and the K=16 union-RSS receipt (provisional until the pooled child's per-shard-peak-rss lands in a CI log; local proxy 1.82GB). - floor_terminal_fast_exit doc corrected: it is the common tail of run()'s walk path (all plan walks), not floor-only. - Attribution 9.3 gains the process lesson (every piece proven by execution except one full floor walk — the lane that redded, twice) and the on-call pre-positioning (batches 3/6 at 1.29x/1.45x headroom inside slot noise; first organic over-budget expected within days; diagnose-or-signed-raise, never pre-widen). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Admission head-scan: word-boundary guard — a head substring inside a longer identifier is not a roster row Run 30033250697 panicked (exit 101, fail-closed as designed) because the raw substring scan matched bin_wet( inside the NEW predicate name witness_exclusion_row_is_rehomed_bin_wet(row: ...) — no entry: literal in the window, so the scanner stopped the line. The class fix: a head occurrence preceded by an identifier char is a longer name, skipped before parsing. Unit-pinned both ways (head_scan_ignores_longer_identifiers_containing_a_head; the live-file witness_admission_deferred_rows_have_consumers test now covers the exact CI path — it sat in the locally OOM-killed battery, which is how this escaped: the section-9.3 process lesson at unit grain). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Census re-admission: regenerate witness_entry_eligibility_census for cheap_gate_pool_test (864 -> 865) Run 30035504886's exit-101 was #7127's census refusal working correctly: the floor's witness_execution_leg_label refuses any discovery entry with no census TSV row, and this branch's new dag/test/claim/ cheap_gate_pool_test.dag postdated the committed census. Regenerated via scripts/witness_entry_eligibility_census.sh (the emit transport itself refused at 865 roster vs 864 declared — fail-closed both ways), witness_entry_eligibility_census_entry_count bumped 864 -> 865, and the three .dag sync witnesses proven green by execution through claim_batch (declared-count exposed, carrier paths, tsv sync). The Rust sync test is CWD-fragile by construction (relative witness_layer_roots under cargo's package-dir cwd — the same pre-existing local-suite class as the two scope-test failures reproduced on pristine main); the .dag witnesses are the CI-executing consumers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 * Heal census-count hand-pin drift: witness literal + note 876 -> 880 fbd55eb's floor red was the census_count witness (from main's #7127) — witness_entry_eligibility_census_count_holds hardcodes the entry count as a literal (== 876) SEPARATE from the data constant this branch already bumped to 880, so 880 == 876 was false. The tsv-sync witness could not catch it (it checks declared == TSV-rows, both statically 880). Verified the true count is 880, not an emit artifact: tree clean (zero untracked test files), independent git-tracked find of *_test.dag with test fn/data = 880, TSV data rows = 880, cheap_gate_pool_test present. Decomposition: main's committed 876 is STALE — main's live find is 879 (git ls-tree find on origin/main), undetected because affected-set selection skips this witness on PRs that do not touch its import closure; this plumbing PR's affected set is the first to run it against the drifted tree. So 880 = main's true 879 + this PR's cheap_gate_pool (+1), and updating the literal HEALS main's 3-file latent census drift in passing. The count lives in four hand-synced copies (this literal, its note, witness_entry_eligibility_census_entry_count, the committed TSV) — a §3 parallel-representation main's carrier keeps in sync by hand; restructure is out of this PR's scope, noted in the witness note. Proven by execution: all census witnesses across census_test / classification_test / tsv_sync_test green through claim_batch (count_holds, the six classification rows incl. bulk-pending default for the new entry, tsv sync). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Rc3TWb8FFexdVQDNbb44 --------- Co-authored-by: Claude <noreply@anthropic.com>
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.
Sheet-only change, three parts (operator directives 2026-07-23):
Group 3c — the workflow-shape lane
The group-3 lifecycle rows are the discipline; this lane is the machine — typed stages and verdicts on the roadmap node carrier, enforced at dispatch time (belt refusal arms) and floor time (lenses as pure readers), with status and progress derived, never written. Five rows, four sized for dispatch:
claude/ui-modeling-hand-layer-o0mhyn(Belt B: roadmap serve, component model, and sandbox (P0–P4) #7113 P0–P5 + the D1–D5 dissolution addendum); this lane renders through that machinery. Stage-0 dependency:ts-dispatch-redispatch. Terminal absorptions declared (enforcement-intent StandingIntent; md↔dag delta for verdict capture) — convergences, not forks.Lifecycle sharpening
ts-dispatch-lifecyclegains the operator ruling: the MODEL stage is unskippable and first — DFS-associate to existing authorities, create holistically to the citation bar (the ed25519 precedent: every referenced upstream entity carries its own authority); a brief without the model stage's output is not dispatchable.srv4 receipts on the host-state lane
ts-host-stategains the incident record: the not-a-member + no-live-actuator diagnosis, the interim hand-fix table (owed modeled axes), the 0→3 dispatch brief, and the derived-interference ruling (claims as verb×subtree facts on the shared memory model; conflict computed, never a named domain or hand roster; UnmodeledOccupant refuses; TakeoverRuling is the only signed takeover path).ROADMAP.md regenerated (
main_wet, ExitSuccess);roadmap_authority_witnessestrue androadmap_frontier_witnessesPASS by execution (the new sized rows enter the spawn frontier cleanly).🤖 Generated with Claude Code
https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
Generated by Claude Code