Skip to content

Live-condition the enrolment Roster ground; retire the stored cost-debt reading - #11700

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
session/calm-eagle-42-roster-gate
Sep 19, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
session/calm-eagle-42-roster-gate

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The enrolment-margin Roster ground (typed cost-debt admission) is now live-conditioned, and the stored reading that used to justify an admission is retired. Split out of #11622 so a change to a load-bearing floor gate is reviewed as one.

The defect (review 68363 on #11622). enrolment_margin_standing_for admitted any declared identity and decided nothing from its cost. A typed row therefore held by authorship: a stored figure was compared against the line once, when the row was written, and never again. There was also a hole: a planned identity with no cost row was refused as NotMeasured if undeclared but admitted if declared, so a declaration bought an exemption from being measured at all.

The change, on both the decider and its mirror:

Roster ground, this run's reading standing blocks
observed over the per-subject CPU line expensiveness_declared no
observed at or under the line roster_ground_stale (new; the row must delete) yes
no cost row (planned) not_measured, the existing cause no_claim_cost_row_for_a_planned_identity yes
lower bound over the line expensiveness_declared no
lower bound at or under the line bound_without_ceiling / ceiling_censored, the undeclared arms yes

Long-home is unchanged, under the declared drop long_home_enrolment_margin_observed_only, and its prose now says the drop does not cover Roster.

Retiring the stored reading (DESIGN §3, replacement migration). Once live, a stored reading and the live one answer the same question and can disagree (a stored 681 says admit while a live 200 says stale), with nothing to say which wins. The stored reading also decides nothing and is a figure transcribed into source. So FloorCostDebtReadingAttempt, floor_cost_debt_row, the verdict axis and the admission fold are deleted. A row is now FloorCostDebtTypedAdmission { identity, reason }, and the list is empty on this PR.

Test dispositions (DESIGN §4b(4)). The climb deletes production machinery, never evidence:

  • Re-homed onto the live arms (v2.test.floor_enrolment_margin):
    • 325ms tripwire → a_roster_admission_at_325ms_is_stale_and_blocks
    • above the ceiling admitted → a_roster_admission_over_the_line_stays_declared, plus the boundary row ..._exactly_at_the_line_is_stale
    • bound with no ceiling, and censored at the ceiling admitted → a_roster_admission_with_a_bound_over_the_line_stays_declared
    • 1ms censored refused → a_roster_admission_with_a_bound_under_the_line_blocks_on_its_own_arm
    • the enrolment suite's 325ms constructor row → the stale row above
  • New: a_roster_admission_with_no_reading_is_not_measured, with long-home as its control (the same absent reading is still only reported there).
  • Deleted with the apparatus they tested:
    • censored row whose ceiling mismatches the supplied one: the live gate supplies no ceiling to the reading
    • censored row that reached a verdict: the verdict axis is gone, and verdicts stay owned by changed-witness
    • the admission fold, which no longer exists

Seed edit, framed correctly. This is v1 maintenance, not seed growth. It repairs the logic of an existing function (v1_compiler.cli_run required_floor_runner enrolment_margin_standing_for) that decides the v2 required floor, which serves the v2 self-host program. floor_per_subject_cpu_line_ms is the existing policy read, pulled out so the budget and the Roster ground share one read.

Which side CI executes. The decider is Rust. cargo test -p v1-compiler --lib is off the merge path, under the standing declared drop rust_unit_tests_off_the_merge_path, which this inherits rather than adding a new one. So:

  • The executing logic evidence is the .dag mirror rows, which the floor runs.
  • The Rust unit test the_roster_ground_admits_only_on_a_live_reading_over_the_line is local diligence. It was run remotely: it passes, and so do the other enrolment/declared_identity tests.
  • The stale refusal cannot be enrolled as a live CI red: authoring a row for a cheap witness would red the floor. That is a §4b(1) authorability limit, not coverage.
  • This PR does not execute the live Roster arm on the real path, because its admission list is empty. The first execution will be the floor run on Admit G0 service family so the native door clears leftover service #11622 rebased onto this, when it adds its identity-plus-reason row. That claim belongs to that head, not this one.

Long-home no-reading exposure: population 0 in the observed run, reachable whenever a long-home module is touched. In floor run 35432097694, joining its required-floor-disposition and required-floor-claim-cost artifacts against long-home-storage-agreement gives this: all 380 long-home identities were declined_long_module, because that run touched no long-home module, and 0 were planned without a cost row. The 0 describes that sample, not the design. A PR that touches a test/claim/long file makes the floor plan those rows as changed witnesses (gunbc#11004 measured exactly this on accumulator_copy_compile_gate_test.dag). A planned long-home identity that produces no cost row then reaches the declared branch and is admitted as Absent instead of refused as NotMeasured. Re-derive the count per run from those three artifacts; don't trust this one. Follow-up for the long-home lane; not widened here.

Unrelated pre-existing red, noted. cli_run::nfr_tests::nfr_roster_receipt fails with 69 unrostered and 1 stale non-fold-residue sites, all in .dag files this PR does not touch. It is also off the merge path.

🤖 Generated with Claude Code

…bt reading.

A typed cost-debt admission now carries identity and reason only. The
enrolment-margin gate decides the Roster ground from THIS run's live reading
against the per-subject CPU line: over the line admits, at or under it is
stale and blocks (the row must delete), a planned identity with no cost row
is NotMeasured exactly as an undeclared one is, and a lower bound admits only
if the bound itself clears the line. Long-home is unchanged (declared drop
long_home_enrolment_margin_observed_only).

Replacement migration at the root (gunbc#11622 review 68363): the stored
reading and the live one answered the same question and could disagree, and
the stored one decided nothing once the gate went live. The constructor,
reading and verdict axis are removed with it; their behaviours are re-homed
onto the live arms in floor_enrolment_margin_test, and a Rust unit test
covers the seed realization in required_floor_runner.

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

Review 68380: the seed's Roster match ended in a wildcard that defaulted any
new reading shape to admit; the admitting arms are now spelled, matching the
exhaustive .dag mirror. floor_cost_claim_qualification_unavailable (and its
docs projection) and the eval-step denomination plan still named cost-debt
admission as a CPU-line consumer; that comparison is gone, and they now name
the live Roster ground in floor_enrolment_margin.

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

gunbai-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor Author

Review 68380: both findings fixed in 454c4d7.

  • The seed's Roster match no longer ends in _ => {}. The admitting arms (Observed over the line, BoundWithoutCeiling over the line) are spelled out, so a new EnrolmentDeclaredCostReading shape fails to compile here instead of defaulting to admit, matching the exhaustive .dag mirror. The Rust unit test was re-run remotely and passes.
  • floor_cost_claim_qualification_unavailable (and its docs/design-rung-drops.md projection) and docs/plans/enrolment-margin-eval-step-denomination.md Phase 3 no longer name cost-debt admission as a CPU-line consumer. They now name both consumers in floor_enrolment_margin: the margin budget, and the live Roster ground enrolment_declared_measured_standing. Phase 3's remaining subject is the Roster ground.

— sent from calm-eagle-42

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 19, 2026
Merged via the queue into main with commit c2e70c2 Sep 19, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/calm-eagle-42-roster-gate branch September 19, 2026 16:19
gunbai-bot Bot pushed a commit that referenced this pull request Sep 19, 2026
…11574 rebase

Co-Authored-By: Claude Opus 5 (1M context) <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.

0 participants