# First Substantive Current Source Extraction Profile Slice V01

Issue: #327

Parent issue: #271

Status: product-architecture and validation artifact for an already implemented runtime profile. This note does not mutate source registries, enable sources, promote sources, or change runtime configuration.

## Purpose

This slice records the first substantive current-source extraction-profile pattern for Package + current context enrichment. It codifies the NIST AI RMF profile that already landed through issue #276 and PR #273, and gives Source Registry Admin product requirements a concrete extraction-profile reference without starting Source Registry Admin implementation.

The goal is to move beyond source-existence and source-classification evidence toward bounded, cited, substantive source-grounded enrichment while keeping current/public sources outside package authority.

## Selected Source

Selected source ID: `nist-ai-rmf-public-framework-candidate`.

Selected source title: NIST AI Risk Management Framework.

Canonical document location: `https://www.nist.gov/itl/ai-risk-management-framework`.

Allowed origin: `https://www.nist.gov`.

Allowed path prefix: `/itl/ai-risk-management-framework`.

Selection rationale:

- The source is the safest current/public target because repo-local evidence shows it has owner authorization, active posture evidence, runtime profile coverage, and existing proof-fixture coverage.
- The first implementation slice already exists as closed issue #276 and merged PR #273, so this issue documents and validates that slice rather than duplicating runtime implementation.
- The source is official NIST public material and remains current/public context only, not package authority.

## Source Approval And Active-State Evidence

Repo-local evidence used for this selection:

- `docs/product-architecture/current_source_owner_authorization_nist_v01.json` records `nist-ai-rmf-public-framework-candidate`, authorized by Tony on 2026-06-24 for the single-source production current-context test, with `target_retrieval_enabled: true`, `approved_for_single_source_production_test: true`, `package_authority_promotion: false`, `browser_side_current_source_fetches_allowed: false`, `arbitrary_web_search_allowed: false`, and `user_provided_url_retrieval_allowed: false`.
- `scripts/source_registry_admin_inspection.py` records active posture snapshots that include `nist-ai-rmf-public-framework-candidate` in Preview and Production documented source sets.
- `functions/api/source-grounded-chat.js` contains a source-specific runtime profile for `nist-ai-rmf-public-framework-candidate`.
- `validation/scripts/check_current_source_registry_governance.py` contains NIST AI RMF profile constants and marker checks.
- `validation/scripts/check_minimal_external_chat_proof.py` asserts that a natural NIST prompt routes to `nist-ai-rmf-public-framework-candidate`, uses `nist_ai_rmf_framework_bounded_html_extract_v01`, and returns substantive NIST AI RMF markers.
- `validation/receipts/AI_Capability_Playbook_SUBSTANTIVE_CURRENT_SOURCE_EXTRACTION_PROFILES_V01_2026-06-26.md` records the original NIST AI RMF extraction-profile implementation evidence, boundaries, rejected alternatives, and validation.

The repo v02 candidate catalog remains a governance catalog and does not itself mutate runtime state. Active-state evidence for this slice comes from owner authorization, runtime profile implementation, documented active posture snapshots, and validation receipts.

## Extraction-Profile Metadata

Profile ID: `nist_ai_rmf_framework_bounded_html_extract_v01`.

Source ID: `nist-ai-rmf-public-framework-candidate`.

Runtime adapter: `allowlisted_public_fetch`.

Canonical document location: `https://www.nist.gov/itl/ai-risk-management-framework`.

Allowed origin: `https://www.nist.gov`.

Allowed path prefix: `/itl/ai-risk-management-framework`.

Response byte limit: `120000`.

Snippet character limit: `4000`.

Extraction start marker: `Overview of the AI RMF`.

Required source markers:

- `Overview of the AI RMF`
- `The NIST AI Risk Management Framework (AI RMF)`
- `voluntary use`
- `trustworthiness considerations`

The profile is exact-source scoped. It does not authorize sibling NIST pages, broad NIST crawling, PDF retrieval, arbitrary web search, user-provided URLs, wildcard origins, or browser-side source fetches.

## Retrieval And Extraction Boundaries

The runtime keeps current/public retrieval server-side through `/api/source-grounded-chat`.

The profile is bounded by these controls:

- HTTPS-only current/public fetch.
- Exact allowed origin match.
- Exact allowed path-prefix match.
- Redirect containment inside the same allowed origin and path prefix.
- Credential-free fetch with cookies and credentials omitted.
- Response byte cap at `120000`.
- Source-specific snippet cap at `4000`.
- HTML stripping before snippet construction.
- Start-marker extraction when `Overview of the AI RMF` is present.
- Fail-closed required-marker validation.
- Current/public references capped separately from package references.

The profile was created because the default 1200 character snippet could be consumed by NIST page chrome before substantive AI RMF content. The source-specific profile narrows extraction to substantive framework text without broadening global retrieval limits.

## Citation-Lane Behavior

The selected source remains a current/public citation lane only.

Required citation behavior:

- Package claims continue to cite package citations.
- NIST AI RMF claims cite current/public citations.
- Current/public citations include source title, source URL or reader target, retrieval timestamp, source type, trust label, freshness label, and claim boundary.
- NIST AI RMF citations do not become approved package, CLM, release, or internal policy authority.
- Provider synthesis must keep `Package says`, `Current/public source says`, `Synthesis / implications`, and `Divergence / update candidate` lanes separate in Package + current context mode.

This slice does not change citation mapping. It records that the existing mapping is sufficient for the first substantive source-grounded enrichment slice because current/public citations already carry source URL, retrieval timestamp, trust/freshness labels, claim boundary, retrieval profile ID, content type, byte length, and snippet.

## Refusal Behavior

The profile fails closed when retrieved source text is insufficient.

Required refusal and failure behavior:

- If the runtime registry is absent or invalid, current context retrieval remains unconfigured.
- If no allowlisted current/public source matches the package-supported question, the current/public lane is not retrieved.
- If the NIST AI RMF URL, redirect, content type, content length, response bytes, extracted text, or required source markers fail validation, the current/public source is not cited.
- If source text does not support a claim, the answer must say the claim is not found in the cited sources rather than inventing detail.
- Package-only behavior remains the default. Package + current context remains explicit opt-in.

This refusal behavior is the no-assumption gate at runtime: current/public enrichment is allowed only when bounded retrieved text supplies the required source markers.

## Validation Coverage

Current validation coverage includes:

- `validation/scripts/check_current_source_registry_governance.py` requires the NIST AI RMF profile ID, byte limit, snippet limit, start marker, required markers, and runtime profile presence.
- `validation/scripts/check_minimal_external_chat_proof.py` asserts a natural NIST prompt returns one NIST current/public ref, uses `nist_ai_rmf_framework_bounded_html_extract_v01`, keeps package and current/public citations separate, and includes substantive NIST markers in the retrieved snippet and answer.
- `validation/receipts/AI_Capability_Playbook_SUBSTANTIVE_CURRENT_SOURCE_EXTRACTION_PROFILES_V01_2026-06-26.md` records the implementation evidence and validation outcomes for the original runtime slice.
- `validation/scripts/check_first_substantive_current_source_extraction_profile_slice.py` validates this product-architecture artifact against the runtime profile, existing validators, discoverability links, and context-pack registration.

Required validation for this issue:

- `python3 -B scripts/build_context_pack.py`
- `python3 -B validation/scripts/check_context_pack.py`
- `python3 -B validation/scripts/check_minimal_external_chat_proof.py`
- `python3 -B validation/scripts/check_backlog_closure_governance.py`
- `python3 -B validation/scripts/check_first_substantive_current_source_extraction_profile_slice.py`
- `python3 -B validation/scripts/run_all.py`
- `git diff --check`

## Relationship To #271

#271 remains open for the broader extraction-profile roadmap.

This child issue records the first concrete slice under #271. It closes only #327 when the documentation, validator, receipt, and context-pack updates land.

Completed first-slice lineage:

- #276 implemented the first NIST AI RMF runtime profile.
- PR #273 merged that implementation and referenced #271 without closing it.
- #327 documents and validates the first-slice architecture evidence for ongoing #271 work.

Remaining #271 work may continue with the next extraction-profile source or with deeper section-aware extraction after owner decision. This note does not authorize additional source implementation.

## Relationship To Source Registry Admin Product Requirements

Source Registry Admin product requirements depend on useful retrieval and extraction metadata because source administration should not only know that a source exists. It also needs to know whether a source can produce bounded, cited, substantive enrichment.

This slice gives Source Registry Admin a concrete reference pattern:

- source identifier
- extraction profile identifier
- canonical source location
- allowed origin and path prefix
- byte and snippet limits
- required markers
- citation-lane boundary
- refusal behavior
- validation evidence
- receipt evidence

This artifact does not start Source Registry Admin implementation, create Source Registry Admin child issues, mutate source records, or add admin commands.

## Boundary Confirmations

Confirmed boundaries for #327:

- No Preview source set is mutated.
- No Production source set is mutated.
- No source is enabled, disabled, retired, or promoted.
- No source registry is mutated.
- No arbitrary web search is added.
- No user-provided URL retrieval is added.
- No broad crawling is added.
- No wildcard origin is added.
- No browser-side source fetch is added.
- No browser-side provider or current-source call is added.
- No Cloudflare CLI/API operation is required.
- No Cloudflare Access/WAF setting is changed.
- No provider/model configuration is changed.
- No Access service token is created or modified.
- No current/public source is promoted to package authority.
- Source Registry Admin implementation is not started.
- #271 remains open.
- #269 remains closed.
- `codex-automerge` is not applied.

## Post-Closeout Next Action

Explicit owner decision point:

After this first extraction-profile documentation slice is merged and locally closed out, choose whether to continue with the next extraction-profile source or create the first Source Registry Admin design child ticket.
