Session sess_2026-07-02_flywheel
7/8 tasks completed, touching 5 sites: subagentcoworkers.com, subagentapi.com, subagentevaluations.com, subagentdatamodels.com, subagentcontracts.com.
All tasks in order
Mirror Figma wireframe board in durable ledger
Architecture board https://www.figma.com/board/f3POlLrQzTL7JmDIbi7BX3 (full-system: 14 cwc-* plugins, identity directives, primitives, 50-site fleet) is recorded in plugins/cwc-design/wireframes.json; in-fleet rendering is subagentdevices.com/architecture (operates edges live 2026-07-02). This row is the durable mirror per the architecture-wireframes skill ledger rule.
Flywheel: add 13 missing sites to the RFC 9727 api-catalog
DONE 2026-07-02: linkset now 49 entries (was 37) via FAMILY_LINKSET_EXTRAS in workers/subagentapi/src/index.ts (kept separate from CATALOG so /health routes[0] probing and the primitives-count copy stay correct). subagentdatamodels.com deliberately excluded — no zone yet; a dead anchor is anti-flywheel. Deployed 74fb554c, curl-verified: .well-known/api-catalog returns 49.
Flywheel: subagentevaluations.com llms.txt missing family catalog link
DONE 2026-07-02: fixed by redeploy — the live worker predated the shared kit's llmsTxt family section; no code change needed. curl-verified: llms.txt now links subagentapi.com/api/catalog. Steady-state crosslink metric 48/50 = subagentsubdomains.com (by design, it IS the directory) + subagentdatamodels.com (no zone).
Flywheel: replicate the /mcp endpoint + server card fleet-wide
DONE 2026-07-02: workers/_shared/kit/mcp.ts factors subagentapi.com's Fable-5-reviewed handler (notifications→202, in-protocol errors over HTTP 200, parse-error id:null, GET→405, CORS, isError only for recognized-tool runtime failures) into a reusable handleMcp factory. Wired into all 24 D1 primitives (3 parallel lanes, sequential deploy+curl-verify per site — every site handshake-verified: initialize, notification 202, tools/call returning real rows). subagentapi.com catalog now advertises POST /mcp on all 24 entries and server-card describedby on 25 linkset entries (version 5d0fb34d). scripts/flywheel-metrics.sh measures 25/50 live MCP endpoints, up from 1/50 baseline.
Flywheel: link rel=alternate llms.txt in every shell() head
DONE 2026-07-02: link rel=alternate type=text/plain href=/llms.txt added to workers/_shared/kit/shell.ts head; all 63 kit workers redeployed (3 batches); 6 bespoke-shell sites (web/jobs, db, workers, etl, wc2026/data, models — models turned out bespoke, not kit) patched individually and deployed. curl-verified 49/50 homepages advertise it; only zoneless subagentdatamodels.com missing.
Register subagentdatamodels.com (purchase decision — operator only)
ROOT CAUSE CORRECTED 2026-07-02: the domain is UNREGISTERED — whois against whois.verisign-grs.com (the .com registry itself) returns No match. Every credential approach (wrangler OAuth scopes, docker mcp secrets, dashboard Add Site) was moot: there is no domain to add a zone for. Fix: operator registers subagentdatamodels.com (~$10/yr, Cloudflare Registrar recommended so NS wire automatically) — a financial transaction Claude will not execute, and gated by cwc-finance spend_commit anyway. Once registered: zone create (dashboard or token), [[routes]] per workers/subagentdatamodels/README.md, deploy, add to subagentapi.com FAMILY_LINKSET_EXTRAS + MCP set — all automated. Interim mitigation SHIPPED: subagentdomains.com directory now links the live workers.dev URL instead of the dead apex (version 7ba1d000), so the fleet no longer teaches agents a dead link.
Flywheel: cite_as canonical URL on API rows (stage 6)
DONE 2026-07-02: citeBase added to workers/_shared/kit/d1crud.ts (list/get append cite_as: <citeBase>/<id>); 58 CRUD specs wired across 48 workers (auto-derived table→route plus an 11-site explicit map for non-derivable routes like legal_coworker_facts→/api/legal-facts); placement + table↔route pairing audited fleet-wide (0 misplaced, 0 mispaired); 51 workers deployed. Live-verified samples: roles/citations/identities/brands/news rows all carry resolvable cite_as URLs. Note: my first pass-2 insert script corrupted 3 files via stale offsets while mutating — caught by typecheck, repaired with reverse-order insertion, documented here so the pattern isn't repeated.
Flywheel: /api/changes polling feeds on contracts/tasks/memories (stage 5)
DONE 2026-07-02: GET /api/changes live on subagentcontracts.com (contract_ledger), subagenttasks.com (tasks.updated_at), subagentmemories.com (memory_versions) — thin newest-first {type, ref, at, cite_as} events, cursor+limit verified (page-2 strictly older than cursor; cursor must be URL-encoded, it contains a space). llms.txt lines added; subagentapi.com catalog advertises all three (version 838c624e); scripts/flywheel-metrics.sh now reports per-feed freshness (contracts 2026-07-01 20:55, tasks 2026-07-02 19:09, memories 2026-07-02 01:54).