Sensitive Guardrail Fixture Packs
The sensitive abstains now have local evaluator mismatch fixtures, but no runtime or embedding promotion.
This slice converted the sensitive source-authority triage ledger into local evaluator mismatch fixture packs. It gives the next runtime-hardening lane concrete tests for legal, HR, education, finance, healthcare, customer-data, and public-sector risk. It still does not promote any sensitive abstain into runtime bridges, embeddings, public behavior, or production authority.
From Triage To Testable Fixtures
The new top_band_sensitive_guardrail_fixture_pack_v1 lane consumes top_band_sensitive_source_authority_triage_v1, creates one guardrail pack per risk bucket, and creates one evaluator mismatch fixture per candidate row. Non-candidates stay blocked with exact next actions.
The 25 Rows Are Now Actionable Without Promotion
The fixture pack creates local test scaffolding only. The blocked rows stay blocked because subtype confirmation, context resolution, or label repair is still required.
| Title | Rank | Decision | Next Action |
|---|---|---|---|
case manager | 122 | hold_for_learner_or_source_confirmation | Keep abstain until role subtype or source confirmation. |
teacher special education | 91 | hold_for_context_resolution | Resolve JD role context before guardrail fixture. |
paralegal corporate documentation | 402 | repair_labels_before_sensitive_guardrail | Complete label and text repair before guardrail fixture. |
Every Sensitive Bucket Has A Pack
| Bucket | Triage Rows | Fixture Rows |
|---|---|---|
legal_compliance | 17 | 14 |
people_hr_sensitive | 17 | 15 |
education_minors | 10 | 8 |
finance_regulatory | 9 | 7 |
public_sector | 4 | 3 |
customer_data | 3 | 2 |
healthcare_privacy | 3 | 2 |
The fixture counts are lower than the triage counts because the three held or repair-first rows still carry risk buckets but cannot receive evaluator fixtures yet.
Current Gates Are Green
uv run pytest tests/test_top_band_sensitive_guardrail_fixture_pack.py tests/test_top_band_sensitive_source_authority_triage.py tests/test_production_runtime_contracts.py -q uv run ruff check src/aina_data_engine/top_band_sensitive_guardrail_fixture_pack.py src/aina_data_engine/cli.py src/aina_data_engine/reports.py tests/test_top_band_sensitive_guardrail_fixture_pack.py uv run aina-data-engine --root /srv/aina/aina-data-engine-room top-band-sensitive-guardrail-fixture-pack uv run aina-data-engine --root /srv/aina/aina-data-engine-room validate uv run aina-data-engine --root /srv/aina/aina-data-engine-room ain-506-p0-gate uv run aina-data-engine --root /srv/aina/aina-data-engine-room ain-510-retrieval-promotion-gate uv run aina-data-engine --root /srv/aina/aina-data-engine-room production-runtime-readiness
Results: focused pytest 10 passed, ruff passed, fixture pack returned fixture_packs_ready, validation passed, AIN-506 passed, AIN-510 returned promotion_ready, and runtime readiness returned ready_to_harden_headless_production_runtime.
No Production Authority Was Expanded
Run The Fixtures Before Bridging
The next production-quality slice should execute these 22 mismatch cases locally, produce pass/fail receipts by fixture, bucket, and title, keep failures in abstain, and allow only passing rows to become candidates for a caveated sensitive fallback bridge.
Resume by running evaluator execution over the 22 fixture rows; do not bridge or embed them until those mismatch cases pass.