Logo Xantham

Xantham Execution Plan — Steps

The steps document. LANDSCAPE.md holds context/analysis, GOALS.md the acceptance criteria (layer definitions L0–L3, phase exits), *STATUS.md the dated state — generated, machine-sourced from the gate baselines; read progress THERE, not here.** This file holds the remaining steps and their closure criteria, plus a compressed dated record of closed steps. A step closes only when its criterion is met with evidence (a gate passing, an artifact existing, a number reported); the full engineering narratives live where the evidence lives — the dated comment blocks in scripts/partition-gate.baseline / golden-gate.baseline and git history — not here.*

Doer tags: [owner] = decision/markup only the owner can make. [gen] = generator-side work (this repo). [both] = gen produces, owner reviews/acks.

Model-tier tags (added 2026-07-03): Phase 1 built a machine-checked enclosure — four ratcheting gates, 1,020 test pins, the advisory ledger, and baseline files whose dated narratives double as execution briefs — which converts much of the remaining work from "trust the model's judgment" into "trust the gate." Accordingly each open step carries a tier: [frontier] = diagnosis, design, or first-contact debugging IS the work (new defect classes, API shape decisions, unknown-unknowns) — run on a frontier-class model. [delegable] = the mechanism is already written down (in the step itself, a baseline narrative, or a memory brief) and the gates/closure criterion fully enclose the change — suitable for a Sonnet/Opus-class session under the Delegation protocol (standing rules, below). A frontier session that resolves an unknown should end by writing or refreshing the briefs its findings unlock, converting downstream [frontier] steps to [delegable].


Phase 0 — Declare the surface — CLOSED 2026-07-02

All nine steps closed 2026-07-02 (constellation survey; cloudflare.pilot.toml v0; multi-entry crawl seeding + per-entry provenance; recipe loader/entry resolution; first v0 crawl, 31 roots / 30,719 types; status-report.sh → generated STATUS.md with the L0 gate; re-baseline of all four gates; exit: unassigned = 0, every reached package policied). Owner recipe markup deferred by owner ("defaults stand, ratified by use"). Findings ledger (module-twin DECISION reversed by measurement; MISSREF crawl-gating deferred to Phase 4) — details in git history of this file and the baselines.

Phase 1 — Partitioned emission + per-area L1 gates — CLOSED 2026-07-03

Exit criterion MET 2026-07-03: every unit's own-file error count = 0 (compiles + produces its assembly) — the STATUS matrix is all-zero.

Closed steps (dated; narratives in scripts/partition-gate.baseline unless noted):

Closed 2026-07-05 (continued): MCP AT 0 (obj-alias→empty-interface verdict shape ×215 ledgered + 0-typar export-key arity recording + function-return parenthesization; fifth cell); CODEMODE AT 0 (stdlib-ALIAS substitution at the remap mint — PropertyKey class; sixth cell); Agents first real count 4 → 2 (decorator-context types joined the obj map).

Closed 2026-07-03 (agents-close): AGENTS AT 0 — PHASE-1 EXIT, 7/7 UNITS ASSEMBLE. The cross-owner cache-hit class closed on the REF side (scrubDanglingSelfRefs — fired exactly 4×, zero false positives; def-side adoption measured 3 ways, pinned 3-for-3 negative), which unmasked 14 later-phase latents (the Workers-88 pattern) burned to 0 by four seam fixes (collection mergeTypeLike, render-entry groupFunctionsByName, partition property-vs-method drop, and two unification-KEY corrections: bare-Erased.X-as-obj + two-channel optionality). +22 coverage pins (suite 620, new OverloadUnification.fs plane); arity gate ratcheted 11→0 disagreeing names; golden callbacks 75→69, synth-public 1067→1058. Full narrative: the baseline's agents-close entry.

2026-07-03 dated note (divergence-edit per standing rules): the DEFERRED-TOGETHER pair closed differently than designed — the ref side (scrub) sufficed for assembly; the def side (cross-owner def materialization) and the params scrub-host correction are NOT landed and NO LONGER BLOCK any unit. Their remaining value is fidelity (real types instead of ledgered obj degradations), so they move to the Phase-3 fidelity catalogue below, alongside the SharedLiterals manifest-placement item (same reclassification: its dangle class is scrubbed-to-obj + ledgered, not erroring).

Phase 2 — Ship the first slice (the near-term goal)

Deployment model (owner directive 2026-07-05): NO WRANGLER/MINIFLARE. Fidelity.CloudEdge's deployment side already exists and is largely solved: the SpeakEZ clef-lang-site repo's cli (Hawaii-generated Cloudflare management-API bindings, consumed as the published Fidelity.CloudEdge.Management nupkg). Its reusable primitives — generic buildWorker (dotnet fable → esbuild ESM bundle) + deployWorker/UploadWorkerWithBindings (multipart script upload with metadata/bindings, workers.dev subdomain enable), env-var auth (CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID) — are the proof-run harness. The worker-side bindings that CLI's workers consume today are Glutinum-built (Fidelity.CloudEdge/src/Runtime/*); Xantham's units are their replacement. Worker entry shape in production there: [<ExportDefault>] createObj [ "fetch" ==> fun req env ctx -> promise { ... } ].

Recommended order: 2.1 and 2.2 are independent and can run in either order; 2.3 needs both; 2.4 inherits 2.3's findings; 2.5 can run any time after 2.1; 2.6 is the exit.

Phase 3 — L2 conventions per area (after the milestone)

Phase 4 — L3 + steady-state operation


Standing rules: - Work lands against this plan; progress is read in STATUS.md (generated from the gate baselines — regenerate with scripts/status-report.sh whenever a baseline moves). When a step closes, it moves to its phase's dated Closed list as ONE line; the narrative stays with the evidence (baseline comments, git history). When reality diverges from a step, the step is edited (with a dated note), never silently skipped. - Test-coverage parity (owner directive 2026-07-02): every new code structure lands with its parallel unit + integration coverage in the same change, and coverage remains in relative parity to new code as it is ratified within the design's scaffolding. Coverage reporting is part of status-report.sh (per-module test counts). A structure without its coverage plane is not closed. - Delegation protocol (added 2026-07-03; governs every [delegable] step): one step per session, with the step's brief (its bullet + the pointed-to baseline narratives/memory) as the session's whole scope. Hard rules for the executing session: (1) all four gates + both test suites pass before handoff — a failing gate or any surprise outside the brief means STOP AND REPORT, never improvise a workaround; (2) PINNED NEGATIVES ARE BINDING — approaches documented as measured-negative (def-side adoption, the thin-reference store fix, the broad decl-oracle proxy, ...) are not re-attempted; (3) baselines ratchet DOWN only, with a dated justification comment — never up, never silently; (4) coverage parity applies — a fix without its pin is not closed; (5) judge by generation correctness, not error-count movement (the count is a smoke detector, not the target). A [frontier] step stays on a frontier-class model end-to-end; its closing act is writing/refreshing the downstream briefs.

Type something to start searching.