Skip to content

Workflow-shape lane (group 3c): dispatch items as typed workflows — sized rows reconciled against the in-flight UI-model branch + srv4 receipts - #7118

Merged
briansrls merged 1 commit into
mainfrom
claude/ci-audit-management-4ok4ac
Jul 23, 2026
Merged

briansrls merged 1 commit into
mainfrom
claude/ci-audit-management-4ok4ac

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

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:

  • ts-wf-shape (anchor): reconciliation seams checked against in-flight work — the presentation half is owned by 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.
  • ts-wf-node-schema (i:med v:med): the node prose blob decomposes 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; the verdict is the only status mover; backing up is a re-derivation because downstream is generated.
  • ts-wf-belt-refusals (i:med v:small): no dispatch without a model artifact; stale receipts refuse; rework dispatches a fresh session with (brief + prior diff + located debts). Edges: stage-artifacts + redispatch.
  • ts-wf-lens-walls (i:med v:small): done-has-verdict / residue-counted / dispatched-has-model-artifact, each with a RED control and a declared dissolution into StandingIntent.
  • ts-wf-progress (i:low v:small): completion as a pure projection (verdict bits × Volume weights up the RoadmapEdge fan-in) — no stored percentage anywhere.

Lifecycle sharpening

ts-dispatch-lifecycle gains 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-state gains 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_witnesses true and roadmap_frontier_witnesses PASS 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

…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
@cursor

cursor Bot commented Jul 23, 2026

Copy link
Copy Markdown

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
briansrls merged commit 88bc77f into main Jul 23, 2026
3 checks passed
@briansrls
briansrls deleted the claude/ci-audit-management-4ok4ac branch July 23, 2026 16:38
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>
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.

2 participants