Agent Journey — Bootstrap to Done
First agent-facing contract — redaction, permissions, no local copies, sandbox stop.
Body
Agent Journey — Bootstrap → Done
Status: binding entry runbook (read before acting)
Date: 2026-07-04 (fable-owned impress pass)
Audience: AI agents on any UAI lane
Canonical catalog slug (join): uai-doc-governance- + agent-journey-bootstrap-to-done
This is the first agent-facing contract for a session. It prevents mistakes before they happen. The full binding protocol remains uai-doc-governance- + uai-agent-protocol vnext (join). On conflict with older Explorer-only text, vNext + this journey win.
Read this first (before any action)
1. Redaction policy (prevent, do not only catch)
- Explorer is public-safe and server-side redacted. AI clients receive redacted packets only (
raw_available_to_client=false,redaction_boundary=server-side). - MUST NOT paste secrets, tokens, private keys, private paths, cookies, or unredacted survey material into catalog bodies, feedback, diary, plans, evidence, or receipts.
- Write-time gate: POST/PATCH that looks secret-like returns 422. Do not rewrite to smuggle the secret past the gate. Surface the block.
- Long catalog slugs may trip the high-entropy gate — reference them as join-segments in bodies; full slug stays in metadata/URL.
- Human HTML
/docs/{slug}is a redacted reading view, not authority. Agents MUST useGET /api/ai/context/{slug}and requireaudit_event_id+ redaction fields.
2. Permissions you have (AI role)
You MAY (with a valid AI PAT):
| Action | Endpoint |
|---|---|
| Ready / health | GET /ready, GET /health |
| Bootstrap contract | GET /api/ai/bootstrap |
| Catalog list | GET /api/ai/catalog |
| Context packet | GET /api/ai/context/{slug} |
| Author / edit docs | POST /api/ai/documents, PATCH /api/ai/documents/{slug} |
| Versions | GET /api/ai/documents/{slug}/versions |
| Capability map | GET /api/ai/capability-map (+ card / breadcrumb routes) |
| Feedback | POST/GET /api/ai/feedback |
| Promotion request | POST /api/ai/promotion-requests |
You MUST NOT use denied surfaces (admin, raw filesystem, uploads, SQLite, .env, .ssh, raw-survey-zone, arbitrary path search). Bootstrap lists them with reasons and alternatives.
Tag ACL: documents require tags that are a subset of your session tags. Missing tags on a required primary_context ⇒ stop and report (do not invent access).
3. Catalog-only truth
- Published Explorer catalog with context HTTP 200 is operational SOT for rules/runbooks.
- Local files, Mac archives, and live host processes are not policy by themselves.
- Live hosts = facts only (is it running?). Mac archives = preserve only. Feedback = signal only until promoted.
- MUST NOT hoard local mirrors of Explorer catalog, runtime DBs, or product data — read via API; authorized local files are handoff receipts and START_HERE entry only.
4. No local copies (prevent hoarding)
- Explorer is SOT. MUST NOT clone or store duplicate doc trees, databases, product data, or ecosystem state on Mac/agent workspace.
- Bootstrap from
GET /api/ai/context/{slug}— MUST NOT scrape and mirror catalog offline. - Runtime data lives on VPS, NUC, lab CTs — MUST NOT treat Mac as runtime data home.
mac_hosting=neverextends to data hoarding (local_data_hoarding=never).- Need persistence → Explorer feedback or designated remote path — not ad-hoc local caches.
- Authorized: wipe handoff receipts, START_HERE chain, owner preserve paths per runbook.
5. Promote path (rules and durable truth)
propose (local draft, no secrets)
→ sandbox verify (lane-appropriate; stop sandbox when done)
→ evidence receipt
→ promote lab (write-SOT)
→ promote public (manual; no auto-sync)
→ capability breadcrumb if infra-affecting
→ verify context HTTP 200 on lab and public for binding slugs
MUST NOT silently edit binding rules. Lab is write-SOT; public lags until explicit promote.
6. Sandbox stop rule (owner teeth)
- Sandboxes (CT123, CT124, CT126, peers) are KEEP, not retire.
- MUST stop sandbox containers when done (free RAM).
- MUST NOT destroy sandboxes unless a separate owner-signed stage lists that VMID.
- MUST NOT leave sandboxes idle-running after work.
- Explorer exploratory UI/app work: verify on CT126, promote to CT121 only when solid.
7. Infra roles (one-line)
| Surface | Role |
|---|---|
| VPS | Beacon + Cortex P0; public Explorer UI; Mail agent-first |
| NUC | Cadence canonical (cadence_runtime_home=nuc_lab_controller); VPS Cadence = drift |
| Lab Proxmox | Explorer lab SOT (CT121), sandboxes KEEP |
| Mac | Files/docs only — mac_hosting=never; no local data hoarding |
Session walkthrough (bootstrap → done)
- Ready probe —
GET /readymust showstatus=ready,public_safe_mode=true, server-side redaction, no raw survey mount. - Bootstrap —
GET /api/ai/bootstrap. Readclient_sequence,denied_surfaces_explained,stop_conditions,workflow_recipes,required_rules. - This journey — confirm redaction, permissions, catalog-only, no local copies, promote path, sandbox stop, infra roles (above).
- Binding protocol — read governance protocol vNext (authority layers, doc kinds, wipe MUST NOTs, post-wipe order).
- Primary context — fetch each
primary_contextwithaccessible_to_session=truevia/api/ai/context/{slug}. Require redaction packet fields. - Capability map — before mutating any host/service/hardware, look up its card. Missing card ⇒ abort + feedback
missing-context. - Plan — write Product / Task / Authority / Done when. Refuse if authority is insufficient.
- Execute — only on the correct host/sandbox. Mac = files only. No DNS/TLS/firewall/public exposure without a separate runbook.
- Evidence — receipts/probes (pointers in catalog). Optional diary for lineage (never authority).
- Promote — durable truth to lab, then public; breadcrumb infra changes.
- Stop sandboxes you started or used.
- Feedback — signal only; dedup first; no secrets.
- Done — report blockers honestly; do not claim SOT without context 200.
Project patterns (pick the right kind)
| Kind | When | Anti-pattern |
|---|---|---|
| runbook | Another agent must reproduce exactly | Diary-as-runbook |
| plan | Forward intent with gates / done_when | Plan as owner approval |
| evidence | Proves a claim | Secrets in body |
| diary | Dated lineage only | Citing diary as authority |
| feedback | Friction / missing-context / QoL | Treating feedback as a rule |
Pick rule: Reproduce? → runbook. Intent? → plan. Happened? → evidence. Should change? → feedback, then promote if it becomes rule.
Stop conditions (abort immediately)
From bootstrap + protocol (non-exhaustive): redaction 422 you cannot fix without losing meaning; required context inaccessible for missing tags; temptation to touch denied surfaces; contradiction between catalog and task; hot-patch prod instead of sandbox; missing capability card on mutate; secrets about to enter catalog; wipe-adjacent work without owner stage; destroy or idle-run a KEEP sandbox; local hoarding of catalog/runtime/product data on Mac/agent workspace.
What success looks like
- Rules were clear before action.
- Only allowed AI endpoints were used.
- Redaction policy was followed at write time.
- Catalog context 200 for anything claimed as SOT.
- Sandboxes stopped; nothing destroyed by default.
- Evidence + optional feedback; no secrets in any published surface.