Skip to content

Enrolment margin: a typed cost-debt reading just under the per-subject line is its own typed standing - #12853

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
session/fierce-cat-881-line-envelope
Oct 1, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
session/fierce-cat-881-line-envelope

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Why

A typed cost-debt row asserts its claim costs more than the per-subject CPU line on a runner the measured envelope admits. The self-staling rule compared every reading against the line itself, and the line is the bound for a p90-slow runner. So a fast runner's reading of a genuine member staled the row that the slow runs needed.

Specimen: test.claim.machine_intake.mtcollins1_boot_acceptance_matrix_test an_interrupted_attempts_dead_hold_is_recovered_by_the_next_one (it runs the real boot entry twice):

run runner CPU
PR floor 36765162766 srv1 523 ms
PR floor 36775473983 srv3 582 ms
PR floor 36783312538 srv3 543 ms
merge group 36793281217 srv4 466 ms → enrolment_roster_ground_stale, gunbc#12800 dequeued

No row stays valid on all three runners. Typed cost debt is stale on srv4. A dead-band row is the wrong ground on srv1/srv3.

This is the mirror at the line of #12752's margin repair. Ruling of eager-owl-205, 2026-10-01 (option 1, its own PR, the same discipline as #12752).

What

v2.workflow.floor_enrolment_margin floor_enrolment_roster_envelope_floor applies the same measured p90 envelope (floor_enrolment_margin_envelope_permille) to the line, through the same implied_clean_run_budget the margin uses (line 500 ms → floor 302 ms). No literal is added. With a typed cost-debt row:

  • over the line: declared, unchanged;
  • (floor, line]: EnrolmentRosterGroundWithinRunnerEnvelope, reported with both bounds; named roster_ground_within_runner_envelope; does not block;
  • at or under the floor: EnrolmentRosterGroundStale, now carrying the floor; blocks and names the row's deletion.

Only a declared cost-debt row reaches the new arm:

  • an undeclared reading over the margin still refuses (the discriminating red);
  • a dead-band row reading over the line is still the wrong ground.

Seed mirror (required_floor_runner):

  • gains the arm and the field;
  • reads the floor out of the model beside the line, refusing with EnrolmentRosterFloorUngrounded unless 0 < floor < line;
  • passes it to enrolment_margin_standing_for.

Claims re-homed (each encoded the old rule):

Both keep a discriminating red at the new boundary.

Bookkeeping:

  • seed growth rostered in gunbc.enrolment_dead_band_seed_growth;
  • the straddle filed as the third form of gunbc.recurring_failure_mode enrolment_dead_band_has_no_representable_standing.

Evidence (local, release build)

  • required_floor_runner unit tests: 110/110. The roster test pins 500/466/303 within the envelope, 302/200 stale, and an undeclared 466 refused as measured_over_margin.
  • v2.test.floor_enrolment_margin: 44/44, including:
    • the_roster_envelope_floor_is_derived_from_the_line_and_the_envelope;
    • the_line_envelope_is_reachable_only_through_a_typed_cost_debt_row.
  • test.claim.enrolment_margin_seed_mirror_witness_test: 2/2. Every model arm's name and cause is mirrored in the seed.
  • tools.generated_artifact_gate main_wet: no drift.

After it lands

gunbc#12800 merges main and re-cites the interrupted-attempt row with merge-group run 36793281217, and the integration is requeued.

🤖 Generated with Claude Code

…t line is its own typed standing

A typed cost-debt row asserts that its claim costs more than the per-subject CPU line on a runner the
measured envelope admits. The self-staling rule compared every reading against the line itself,
which is the bound for a p90-slow runner. So a fast runner's reading of a genuine member staled the
row the slow runs needed. test.claim.machine_intake.mtcollins1_boot_acceptance_matrix_test
an_interrupted_attempts_dead_hold_is_recovered_by_the_next_one read 523, 582 and 543 ms on srv1 and
srv3, then 466 ms on srv4 in merge-group run 36793281217, which dequeued gunbc#12800.

This mirrors gunbc#12752 at the line (ruling of eager-owl-205, 2026-10-01).
v2.workflow.floor_enrolment_margin floor_enrolment_roster_envelope_floor applies the same measured p90
envelope (floor_enrolment_margin_envelope_permille) to the line through implied_clean_run_budget
(line 500 ms -> floor 302 ms); no literal is added. With a typed cost-debt row:
- over the line: declared, unchanged;
- (floor, line]: EnrolmentRosterGroundWithinRunnerEnvelope, reported with both bounds, not blocking;
- at or under the floor: EnrolmentRosterGroundStale (now carrying the floor), blocks.
Only a declared row reaches it. An undeclared reading over the margin still refuses, and a dead-band
row over the line is still the wrong ground; v2.test.floor_enrolment_margin pins both.

The seed mirror gains the arm, reads the floor out of the model beside the line (refusing unless
0 < floor < line), and its unit test pins 500/466/303 within the envelope, 302/200 stale, and an
undeclared 466 refused. The two model claims that encoded the old rule are re-homed at the new
boundary: the gunbc#10994 tripwire now pins staleness at the floor, and the at-the-line claim pins
the envelope standing. Seed growth is rostered in gunbc.enrolment_dead_band_seed_growth. The line
straddle is filed as the third form of gunbc.recurring_failure_mode
enrolment_dead_band_has_no_representable_standing.

Local: required_floor_runner 110/110; v2.test.floor_enrolment_margin 44/44; the seed-mirror witness 2/2.

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

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE-MERGE — exact head 5a9bcb2f754cf3594758f00a218640c9dbc9aa49

No blocking findings.

The production floor is grounded rather than authored: floor_enrolment_roster_envelope_floor sends the per-subject line through the existing implied_clean_run_budget with floor_enrolment_margin_envelope_permille. The latter is the existing p90 runner policy, and integer division rounds downward. The host mirror evaluates that model projection and refuses unless the result is strictly positive and strictly below the line; there is no production 302 threshold literal.

The roster partition is total and bounded:

  • exact observed > line: existing EnrolmentExpensivenessDeclared;
  • exact observed (envelope floor, line]: named EnrolmentRosterGroundWithinRunnerEnvelope, nonblocking, paired to the declared row;
  • exact observed <= envelope floor: EnrolmentRosterGroundStale, blocking and requiring deletion.

This is not an absorbing widen. The envelope is applied once to the line; the new arm neither recurses below its floor nor admits incomplete evidence. Absent readings, censored readings, and lower bounds retain their existing blocking/reporting arms. An undeclared exact reading is still classified by the ordinary enrolment margin, and a dead-band declaration above the line remains EnrolmentDeadBandWrongGround.

The re-homed controls still discriminate the policy boundaries:

  • exactly at the derived floor is stale, while floor + 1 is within the runner envelope;
  • exactly at the line is within the envelope, while line + 1 is the existing declared arm;
  • the 466 ms specimen reaches the new arm only with the typed cost-debt row;
  • the same 466 ms undeclared remains measured_over_margin;
  • a dead-band row at line + 1 remains wrong-ground.

The Rust mirror carries the same partition, names, causes, pairing standing and blocking status; its unit controls cover 500/466/303, 302/200, and the undeclared 466 red. The seed mirror includes the new model arm, and the failure-mode row records the third specimen without changing the rung.

Source approval is bound to this exact head. Queue only after the exact-head and merge-group gates are green.

…e EnrolmentThresholds

Run 36799314024's lint step refused 5a9bcb2: clippy too_many_arguments (8/7) on
enrolment_margin_standing_for, after the roster envelope floor became its eighth argument. The four
thresholds -- the margin, the dead band's envelope floor, the per-subject line and the typed
cost-debt envelope floor -- are read out of v2.workflow.floor_enrolment_margin together and always
passed together, so they are one value: EnrolmentThresholds, passed by reference. No lint is
suppressed and no decision changes. The unit tests share one TEST_ENROLMENT_THRESHOLDS carrying the
values the model derives today.

Local: cargo clippy --all-targets -p v1-compiler -- -D warnings clean; required_floor_runner 110/110.

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

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE-MERGE — exact head 04b5b9adbf51efb469f5de10766ad2d2618fdcdc

No blocking findings in the successor delta.

The successor is one commit touching only required_floor_runner.rs. EnrolmentThresholds carries exactly the four prior scalar arguments. The production route reads the same four model values, constructs one carrier immediately, and passes it by reference; enrolment_margin_standing_for destructures it into the same local names before the unchanged decision body. The test callers likewise replace their repeated 302/182/500/302 argument sequence with one constant carrying those same fixtures. No lint allowance or alternate decision route was introduced.

The prior derivation, non-absorbing partition, undeclared-reading red, dead-band wrong-ground red, and re-homed boundary controls therefore remain approved. Queue after the exact-head checks and normal merge-group gate are green.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 1, 2026
Merged via the queue into main with commit e44119f Oct 1, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/fierce-cat-881-line-envelope branch October 1, 2026 03:53
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