Dense arm fences its SSI adult bands: no in-band adult pair after the one permitted recompute (#566/#567) - #577
Conversation
…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>
|
Round 2 (ad21462) addresses all four sol blockers: (1) |
…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>
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:
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_gategainsenforcement_fences: Mapping[str, str] | None— normally-enforced bands named there route tofenced_rowscarrying the supplied adjudication text. Validation refuses fences on never-enforced/unknown bands and fences without adjudication text.enforced_band_keysminus fences) plusadjudication_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.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_deliveryreturns(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
_build_manifestscall and recorded undergates.ssi_take_up_delivery.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