> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twirx.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Genesis Atlas policy control plane

> Exact candidate selection, evidence-gated maturity, reviewed policy binding, and an offline dry-run frontier.

> **Authority:** Normative summary · **Status:** E3.1 control candidate implemented; selected-origin retrieval blocked · **Applies to:** E3 · **Verified against:** current checkout · **Source:** `spec/atlas/ATLAS_CONTROL_PLANE_0_1.md`, `schemas/json/atlas-selection.schema.json`, `schemas/json/atlas-policy-set.schema.json`, `schemas/json/atlas-registry.schema.json`

## Purpose

The Atlas control plane makes breadth and depth independently inspectable. Its
committed selection contains exactly 500 A0 candidates. A candidate is not a
cataloged, policy-approved, profiled, observed, compiled, semantic, or live
origin.

```bash theme={null}
make build
bin/twirx-atlas validate --root .
bin/twirx-atlas metrics --root .
bin/twirx-atlas plan --root . --at 2026-08-10T00:00:00Z
```

The current metrics report 500 selected candidates, one reviewed policy
record, one A2 origin, and zero A3–A9 origins. The A2 TWIRX record is
`review_required`; its scheduler is disabled and its dry-run decision is
`access_not_allowed`. No candidate origin is contacted by these commands.

## Data model

```text theme={null}
selection.json (A0 only)
        ↓ identity must match
policies.json (review evidence; one review-required record)
        ↓ exact artifact digest and fields must bind
registry.json (A1–A9 attestations)
        ↓ deterministic derivation
atlas-metrics.json
```

Every registry origin has one highest maturity and an ordered evidence-bearing
attestation for every level it has reached. The metrics expose exact-highest
and at-or-above counts so a higher level cannot be inferred from a large
candidate list.

## Policy and robots rules

An A2 origin must reproduce a dated human policy record covering robots,
terms, attribution, authentication, rate, retention, and risk. `allow`,
`deny`, and `review_required` are distinct; absence and uncertainty do not
authorize access. The exact policy-set bytes are SHA-256 bound from the
registry.

The offline RFC 9309 evaluator is bounded at 500 KiB and has conformance,
malformed, percent-encoding, wildcard, longest-match, and fuzz tests. It has no
HTTP client. Robots rules inform crawler behavior but are not publisher
authorization or a factual claim about content.

## Dry-run frontier

The frontier requires an explicit UTC planning time and emits only origin IDs,
bounded budgets, due times, and visible decisions. It never emits a destination
URL and carries `network_access: disabled`. A job requires an A2-or-higher
allow decision and active per-origin scheduler state; cooldown, policy denial,
review-required state, and disabled scheduling fail closed.

## Read-only API

The implemented API is loopback-only:

```text theme={null}
GET /api/v1/atlas/status
GET /api/v1/atlas/metrics
GET /api/v1/atlas/origins
GET /api/v1/atlas/origins/{origin_id}
```

`family`, `maturity`, `limit`, and `cursor` are the only list filters. There is
no URL parameter, invocation route, write route, crawler, browser, model, or
HTTP client in this process.

## Failure behavior and security

Duplicate keys, unknown fields, trailing JSON, duplicate origins, non-HTTPS or
credentialed identities, quota drift, maturity skips, missing policy binding,
unsafe scheduler state, incomplete attestations, and unbounded API queries fail
closed. The server accepts only a literal loopback listener. Selected-origin
observation remains disabled until the applicable policy changes to `allow`
and a separately admitted public-origin egress gate passes.

## Implementation status

E3.1's policy/frontier control and one A1/A2 publisher-origin admission are
implementation candidates, not E3 gate admission. The remaining 499 identity
and policy reviews are undone. The separate local-fixture worker does not
contact or promote a selected origin. Profiles, selected-origin observations,
schemas, adapters, semantic links, live origins, and publisher verification
remain later subgates.
