UCCA — Technical Time Machine — 2026-07-02¶
Read me with the narrative TM. That one holds the arc and the rulings; this one holds the repo states, the file paths, the build entry points, and the traps. Nothing here is code yet — the input-path build has not started. This is the technical launch pad for it.
1. Repo states (verify live — git -C <repo> rev-parse --short HEAD)¶
| Repo | Path | HEAD @ 2026-07-02 | State |
|---|---|---|---|
| ucca-docs | docs/ucca-docs/ |
2dd8f27 |
main, in sync. All canon/contract/crossings filed + pushed. |
| ucca-engine | engine/ucca-engine/ |
e4f992b |
main, in sync. Last commit = INGEST.md legacy stamp. No input-path code yet. |
| rtopacks (other house) | ~/projects/rtopacks-project/ |
— | Fence rule: do not read for UCCA decisions; relay only via Tim. |
Workspace root ~/projects/ucca-project/ is not a git repo (holds the sub-repos + .credentials/).
2. What exists on disk in the engine repo¶
Input-contract primitives (present, the raw material the gate will use):
- engine/triumvirate/ — schema.py, ddl.sql — the triumvirate input schema (v1.0). The gate
validates against this.
- engine/envelope.py — the UCCO envelope (/ns/ucco/v1); also renderer/vc.py (W3C verifiable
credential) and workers/keys/ (keys.ucca.online — signing/verification reference; the CLAUDE.md
security reference impl).
- human_runs/UCCA-CARE-100-001__CHCPRT025__2026-03-09*/ — the validated run bundles. Their
outputs/course_data.json is what the frozen §4.1 schema was intent-typed from.
- generator/course_generator.py — the forward-direction generator (proven).
Existing FastAPI backend (NOT the gate — RTOpacks-era product endpoints):
backend/app/routers/ = catalogue · composer · dockets · identity · internal · onboarding · packs ·
portal. The input-path gate + /v1/jobs is a new surface; none of these is it.
ADR-0002 residue (the violation the build must sever — DoD):
worlds/ (115M), tga_data/ (8K), tga_pdfs/ (188K) still live inside the engine repo. The
engine no longer ingests, but the code is still folded in. Severing worlds/ from the engine is
half of ADR-0002's mint event.
Dev-only, not production (do not depend on): backend/jobs/poller.py — the Mac-Mini poller,
explicitly temporary per CLAUDE.md. The Mac Mini is never an operational dependency.
3. The thing to build — input path, against the FROZEN contract¶
Spec: docs-site/docs/strategy/ucca-input-path-contract-pack-v0.1.md (v1.0 FROZEN) +
ucca-content-payload-schema-v1.json. Build notes in the pack's §10, expanded into the full
step-by-step UCCA-INPUT-PATH-BUILD-BRIEF-01 (5 reviewable
steps + 3 DoD legs + 5 flagged v1.1 gaps). In one screen:
- Gate at the Cloudflare edge — structural verification ONLY (no domain knowledge): auth,
triumvirate schema version, structure, adapter signature, structural reference integrity,
validation-block-present, size/rate. Reject codes
GATE_*; malformed bounces WHOLE. Semantics are the conformer's warranty, never re-checked here. - Async job model —
POST /v1/jobs→202 {job_id, status:"accepted"};GET /v1/jobs/{id}→ status + UCCO envelope on complete;POST /v1/webhooksoptional. No sync call, no SLA.job_type: generationlive;diagnosis= honest501stub with full gate checks running. - Reasoner behind the gate (skin/body split — gate at edge, reasoner in its real runtime).
- UCCO envelope out — four parsed surfaces (content payload = the v1 schema; trace map at source_ref granularity; provenance block passing Q-A3 completeness; signatures). Machine signatures attest provenance only — never a human compliance signature. Output vocabulary speaks about material, never persons/verdicts (§4.4 — testable).
- Payload IDs module/block/question, stable within artefact version only; regeneration = new
version + new IDs. Blocks encoded
modules[].blocks[](open confirmation — see §5). - Definition of Done = ADR-0002 proof event: input path live + a conformed job exercised
gate→engine→envelope to terminal effect +
worlds/severed. On that day the register flips ADR-0002's remedyruled (B, pre-proof)→minted. - Drift-check every decision: "does this only work because the client is VET?" → adapter, not gate.
4. Infra / access (from UCCA-SEED-01 — WHICH IS NOT FILED; re-verify everything)¶
- SEED-01 is the access-state source of record and it is not in this repo (oldest unfiled reference — register flags it). Treat all infra state below as unverified until SEED lands or you re-check live.
- Two Cloudflare accounts (ADR-0003): UCCA account (engine/Authority) vs RTOpacks account. Verify
the account ID before ANY
wrangler/D1 action — cross-account is a data-isolation breach. - Three standing traps (from SEED): the
CF_ACCOUNT_IDpin, export-don't-source, wire-by-UUID. Re-verify tokens before any cloud action. - D1 UUIDs (per CLAUDE.md, may be stale — memory notes an RTOpacks-account DB migration): engine-db
0efa8970-…, ops-db00daba3d-…. Confirm against current state, not this line.
5. Open at the fence (the two questions the next head must ask Tim)¶
- Block-encoding confirmation. The stamped pack + v1 schema crossed to RTOpacks 2026-07-02.
Their conformer builds against
modules[].blocks[]. Has their confirmation (or a v1.1 clarification request) come back? As of this writing: nothing received — no drop, fence quiet. A divergence is a v1.1 clarification, not a re-freeze. - Has Alex broken ground on the input path, and is pack §10 a sufficient spec or does he need the build brief expanded? As of this writing: no input-path/gate code exists (grep clean); §10 is a thin build-notes section — offer to expand it into a full build brief if he wants one.
6. Gotchas (carry these)¶
worlds/is 115M inside the engine — severing it is a real diff; do it as its own reviewed step.--strictmkdocs build has one PRE-EXISTING warning (governance/contributing.md→ missingCODE_OF_CONDUCT.md) unrelated to canon — don't chase it as yours; it predates this work.- Received copies have the RECEIVED COPY header ABOVE frontmatter — so their frontmatter doesn't strict-parse as YAML but Material renders fine. Never edit them to "fix" it (respond-never-redline).
- Two docs have strict-YAML-invalid frontmatter by design (a mid-value colon /
#): sentUCCA-RESPONSE-CONTENT-PAYLOAD-01, receivedRTOPACKS-*. Verbatim = leave them. - Every canon change went through: feature branch →
git diff main HEAD --statreview → ff-merge → push. Keep that; it caught nothing bad because it was followed.
7. Pointers¶
- Frozen contract + schema:
docs-site/docs/strategy/. - Canon/register/ADRs/fossils:
knowledge-site/docs/canon/+.../decisions/canon/. - Every crossing artefact:
knowledge-site/docs/canon/sent/+.../received/. - The narrative baton:
ground/UCCA-TM-2026-07-02.md. - Staged outbound (already crossed):
~/Downloads/ucca-stamp-crossing-2026-07-02/.
Technical baton. No code yet — a frozen spec, a clean repo, a 115M residue to cut, and a definition of done. Verify the SHAs and the account ID before you touch anything; the fence and the drift-check are not optional. Build the input path; mint ADR-0002.