Skip to content

Dense arm fences its SSI adult bands: no in-band adult pair after the one permitted recompute (#566/#567) - #577

Merged
MaxGhenis merged 5 commits into
mainfrom
dense-takeup-enforcement
Jul 29, 2026
Merged

Dense arm fences its SSI adult bands: no in-band adult pair after the one permitted recompute (#566/#567)#577
MaxGhenis merged 5 commits into
mainfrom
dense-takeup-enforcement

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

What

The dense diagnostic arm's SSI adult bands (18_64, 65_plus) are fenced — the under-18 pattern extended — instead of enforced. A fenced band's miss ships in the scorecard with its adjudication text; it no longer fails the release. The sparse certified default passes no fences and keeps hard enforcement, guarded structurally.

Why

The dense full-pool frame's SSI threshold-to-equilibrium map has no one-retry fixed point (populace#566/#567). The populace#508 delivered-weight recompute moves each adult band past the other, proven on two independent frames:

frame before retry (18-64 / 65+) after one retry
P2 dense +5.8% / +24.8% +8.2% / +20.0%
P3 dense in-band / +34.6% +8.3% / +19.8%

A second retry would recreate the deleted populace#463-class reconcile loop. Fencing with the documented adjudication publishes the dense diagnostic artifact without loosening a gate or shipping saturation-as-success: the miss stays visible, band-by-band, in the scorecard and the release record. Re-adjudicates when populace#566's damped fixed-point protocol lands.

How

  • us_ssi_take_up_delivery_gate gains enforcement_fences: Mapping[str, str] | None — normally-enforced bands named there route to fenced_rows carrying the supplied adjudication text. Validation refuses fences on never-enforced/unknown bands and fences without adjudication text.
  • Gate details now report the run's effective enforced set (enforced_band_keys minus fences) plus adjudication_fenced_band_keys — reporting the constant would misdocument a fenced band as an enforced contract.
  • US_DENSE_SSI_TAKE_UP_ENFORCEMENT_FENCES (release tool) carries the adjudication; a module-level assert pins it to exactly the enforced-band set, so a future enforced band demands a dense-arm adjudication before the tool imports.
  • The call site passes fences only under args.dense_default_dataset (AST-guarded, the #437 dropped the release H5 write; smoke gate scored a stale artifact (attempts 13/14) #443 pattern).
  • _enforce_ssi_take_up_delivery returns (failures, gate_result); the delivery gate result now rides the manifest gates block (gates.ssi_take_up_delivery) so a fenced release is distinguishable from an enforced one in the release record itself — previously the delivery gate left no manifest receipt at all.

Tests

  • Gate: fences override enforcement with their adjudication (miss ships as a fenced row, measurement intact); partial fence keeps the other band enforced; fences refused on never-enforced/unknown bands and without text; existing no-fence behavior unchanged.
  • Builder: fence table covers exactly the enforced bands and cites the adjudication; arm conditionality AST-guarded; delivery gate result threaded into every _build_manifests call and recorded under gates.ssi_take_up_delivery.
  • The sparse e2e harness now asserts the delivery gate sees enforcement_fences=None.

Dense leg of populace#567. Enables dense-P3 attempt 3 to publish through the existing netCG gate (exit criterion already met at −2.85% vs the 25% envelope).

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits July 29, 2026 10:46
…djudication

The dense full-pool frame's SSI threshold-to-equilibrium map has no
one-retry fixed point: the populace#508 recompute moves each adult band
past the other, proven on two independent frames (P2: 18-64 +5.8%/65+
+24.8% -> +8.2%/+20.0%; P3: 65+ +34.6% with 18-64 in-band -> +8.3%/
+19.8%). A second retry would be the deleted populace#463-class loop.

The delivery gate therefore gains per-run enforcement fences — the
under-18 pattern extended: a fenced band's miss ships in the scorecard
with its adjudication text, never as an enforced contract and never as
saturation-as-success. The dense diagnostic arm fences 18_64 and
65_plus; the sparse certified default passes no fences and keeps hard
enforcement (AST-guarded arm conditionality). Fences are validated —
only normally-enforced bands, never without adjudication text — and the
gate details report the run's EFFECTIVE enforced set plus the fenced
keys. The delivery gate result now rides the manifest gates block so a
fenced release is distinguishable from an enforced one in the release
record itself. Re-adjudicates when populace#566's damped fixed-point
protocol lands.

Fixes the dense leg of populace#567.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The enforcement wrapper now returns (failures, gate_result) so the
delivery gate receipt can ride the manifest; the three tests that call
it directly consume the tuple and additionally bind the receipt:
failed paths return a failed gate result, the pass path documents full
enforcement (no adjudication-fenced keys) alongside its empty failure
list.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…, truthful adjudication

Sol round-1 blockers, all four:

1. release_manifest.json now carries the ssi_take_up_delivery receipt
   (effective enforced set + fenced rows) alongside build_manifest.json's
   gates block — the release manifest alone must distinguish fenced from
   enforced delivery. The AST test now requires BOTH carrier dicts.

2. Fence validation is fail-closed: keys must be band-name strings
   (ValueError, not TypeError, on mixed types) and values must be
   nonblank strings — a None/zero/list value can no longer suppress
   enforcement while emitting a non-text adjudication or a half-fenced
   details block. The gate branch and details read only the validated
   dict.

3. The adjudication text claims only what the artifacts support: the
   single permitted populace#508 recompute left the adult pair out of
   band on both observed frames (P2 +5.8/+24.8 -> +8.2/+20.0; P3
   in-band/+34.6 -> +8.3/+19.8). Three of four band chains are monotone,
   so "the map oscillates" is withdrawn everywhere; a test now refuses
   the word.

4. The "second retry is the deleted loop" prose is now enforced:
   ssi_take_up_prior_basis_from_artifact refuses artifacts whose own
   prior_weight_basis kind is release_artifact (retry-of-retry), with a
   loader test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis changed the title Dense arm fences its SSI adult bands with the #566/#567 oscillation adjudication Dense arm fences its SSI adult bands: no in-band adult pair after the one permitted recompute (#566/#567) Jul 29, 2026
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Round 2 (ad21462) addresses all four sol blockers: (1) release_manifest.json now carries the ssi_take_up_delivery receipt too — the AST test requires both carrier dicts; (2) fence validation is fail-closed (string keys ValueError-enforced, nonblank-string values only — None/0/[] can no longer half-fence a band); (3) the adjudication text is rewritten to claim only what the artifacts support (the one permitted recompute left the pair out of band on both frames; 'oscillates' withdrawn everywhere and a test now refuses the word); (4) a chain-depth guard in ssi_take_up_prior_basis_from_artifact refuses retry-of-retry artifacts (prior basis kind release_artifact), making the 'second retry is the deleted #463 loop' claim enforced rather than prose. Also acknowledged: the chain_densep3.log basis label mismatch sol noted is in a runtime launcher log outside this repo — the authoritative JSON is correct.

MaxGhenis and others added 2 commits July 29, 2026 13:25
…told straight

Sol round-2 residue on blocker 3: the call-site comment still said
"oscillation adjudication" and the refusal test scanned only the fence
constants. The refusal now scans the WHOLE of both production sources,
and the adjudication text separates the two frames honestly — P2 is the
clean one-retry record; P3's attempts were already anchored on
delivered bases (its before-artifact records prior basis kind
release_artifact), a chain shape the new loader guard refuses outright.

Consequence recorded for populace#567: the certified sparse artifact
itself carries prior basis kind release_artifact, so anchoring the
dense arm on it would be a refused chain — dense attempt 3 runs from
current-frame weights, with both adult bands fenced and reported.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sol round-3 residue: the _enforce and gate docstrings still claimed a
"single permitted" recompute explained both frames; P3's record is a
refused delivered-basis chain. Both now match the adjudication constant.

Co-Authored-By: Claude Fable 5 <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.

1 participant