Skip to content

2026-10-20 buildout — operations index

Written: 2026-10-20, after the day’s waves landed. Scope: what shipped, what is deployed, what proved it, what is still open, and where the money and credential gaps are. One page, with the runbooks in docs/runbooks/ holding the detail.

This is a record, not a live status. Every row carries its evidence and the time it was observed. status.json and gate-results.json are snapshots; the live probe results below were taken while writing this file. Anything not observed is marked unknown, never inferred from a merge.

Observed with authenticated gh against each repository on 2026-10-20. #128 appears twice on purpose: acumen and fox both have one.

RepoPRWhat it changedStateMerged (UTC)
tcpsystems/acumen#133Cost truth: settle from live-overlaid prices, unify cache-write accounting, failover per-attempt accountingmerged19:16:56
tcpsystems/acumen#131Closes C1: consumer keys limited to chat/embeddings, admin operator-only, atomic key+grant writes, capped count_tokensmerged19:01:53
tcpsystems/acumen#130Gateway overhead benchmark with path-verifying scenariosmerged19:00:43
tcpsystems/acumen#128Security: verify the tailnet-only admin edgeopen—
foxcorecloud/fox#128Read-only capacity ledger and shared design languagemerged18:41:44
tcpsystems/radar#1Production packaging, honest health, release builds (repo moved from foxcore-cloud)merged18:51:56
foxcorecloud/floki#5Define domains from real files; enforce the VPS NIC contractmerged18:49:36
foxcorecloud/foxd#41Sentry reporting for panics and boundary errorsmerged19:11:04

Tagged releases observed: acumen v0.1.2, published 2026-10-19T08:00:35Z, the latest tag; the C1 line has moved past it. No tags or GitHub releases were observed for fox, radar, foxd, floki or this harness, so radar’s “release builds” means buildable artefacts, not a published release.

SurfaceStateEvidence
acumen C1 consumer plane, ai.tcp.systemsliveGET / returned 200 (title acumen); /signin 200, /app 303, /healthz 200 (ok), /v1/models 401, /readyz 401 — probed 2026-10-20 while writing this file
acumen operator surfacestailnet-only100.64.0.5:8088 listener; public :8088 refuses; /console, /metrics and /v1/router/stats returned 404 on the public host (edge runbook, verified 18:33)
acumen binaryC1 main, ahead of v0.1.2PRs #131/#133 merged onto the C1 line; the deployed commit was not re-read from the host in this pass — unknown
Self-hosted Sentry, sentry.tcp.systemsliveGET / 302 to the sign-in route; 28/28 compose services running at 26.10.0 (sentry-local runbook)
Hindsight memory (core)healthyGET core.ts.tcp.systems:8888/health → {"status":"healthy","database":"connected",...}; control plane :9999 not reachable from the edge
tcp harness gatenot green at HEADnode harness/check.mjs 10 pass · 1 warn · 2 fail at 675d39f; failures are the gitignored memory consent policy and three citations that depend on it, plus a missing peer checkout. Pre-existing, not introduced by this change
fox / radar / floki / foxdmerged, deploy not observedMerge state read from GitHub; no host or Worker read was made in this pass — unknown

The last committed snapshot (status.json, generated 2026-10-20T17:36:58Z) says 12 gates, one product (harness) passing, 8 wayfinder tickets with an empty frontier, and a dirty tree at 7ce9612. HEAD has since moved to 675d39f. Treat the snapshot as evidence at 17:36, not now.

Commands run for this page, with the result that matters:

node harness/check.mjs 10 passed · 1 warning · 2 failed · 128 ms (exit 1)
curl -o /dev/null -w '%{http_code}' https://ai.tcp.systems/ 200
curl -o /dev/null -w '%{http_code}' https://ai.tcp.systems/signin 200
curl -o /dev/null -w '%{http_code}' https://ai.tcp.systems/app 303
curl -o /dev/null -w '%{http_code}' https://ai.tcp.systems/v1/models 401
curl -o /dev/null -w '%{http_code}' https://sentry.tcp.systems/ 302
curl http://core.ts.tcp.systems:8888/health status healthy, database connected
gh pr view <n> --repo <repo> --json state,mergedAt eight PRs, table above

What the day’s PRs say they proved, in their own words: #133 ran build, vet, all tests, gofmt, diff-check and race across both the C1 and cost suites; #130 adds path-verifying benchmark scenarios; #131 closes C1 with build, vet, 24 packages, gofmt, diff-check and race/shuffle. Those are the authors’ gate reports, not re-runs here.

Edge verification is recorded separately in the edge runbook: the console bind, the off-tailnet 404, the Grafana http_addr, and the public-port refusals were re-read on the host at 18:33 after the fix, and the exposed admin key was rotated.

The day’s non-PR work, each with the one fact that makes it more than a claim:

  1. acumen C1 live. The consumer plane answers on the public origin while every operator route stays 404 there; the machine API still requires a key (401 without one). See the consumer launch spec and edge runbook.
  2. Local Sentry. Self-hosted on core, 28/28 services, one test event created and read back through the public hostname. No cloud Sentry account is involved.
  3. Hindsight memory. Server reinstalled on 2026-10-20 behind a stable client endpoint; its health route reports a connected database. Its earlier failure mode is in the logs: reflect returned 401 “virtual key required” when the memory bank routed through acumen without a key — fixed by the key file created during the reinstall.
  4. Routing / cost recovery. Routing now ranks and settles on live-overlaid prices instead of the compiled catalog (#133), so a vendor price change no longer silently distorts routing or margin. The known residual is issue #132: the prepaid gate still reserves from the compiled tier, measured at a 2.4× shortfall on one xAI model. Settlement is correct; the reserve is not.
  5. Edge exposure. Two operator surfaces that answered anonymously on the public IP are closed: the acumen console and Grafana. The fix is applied on the host; the verification PR (#128) is still open.

Ordered by what would hurt first.

RiskWhereState
Prepaid budget gate under-reserves on tiered models (2.4× measured)acumen #132open, known, settlement unaffected
Tailnet edge verification not in the repoacumen #128open PR
Host firewall is absent: ufw inactive, no Hetzner cloud firewalltcpopen — the binds are the only control (edge runbook)
Sentry has no offsite backup, no HA, no SMTP, no alertingcoreopen, recorded as gaps 1–6
Radar intentionally commits credential material and serves an unauthenticated JSON APIradaropen; must move before any wider share
Fox’s server-side Sentry capture was wired but never initialisedfoxwas a no-op; foxd #41 landed node reporting, Worker capture still needs verification
Harness gate is red on a fresh checkoutthis repoopen: memory consent policy is gitignored, so three citations cannot resolve
Snapshot is stale relative to HEADthis repostatus.json at 7ce9612/17:36, HEAD 675d39f

Funding. No funding record exists in this tree, and none was observed today: workspace.json records stage venture, with no investor, grant or runway figure. Treat funding as unknown, not as zero and not as secured. What is known is the margin-sensitive pair: cost truth landed (#133) and the reserve shortfall is open (#132). Pricing and market context live in the buildout research notes, not here.

Credentials. From the local-versus-production gap table (35 rows: 29 agent auth rows, 3 console rows, 3 CLI stores):

  • 47 of 77 non-directory catalog seats are keyed on tcp; the ~147 dir-* seats are placeholders with no credentials.
  • Of the 35 local rows: 12 wired with an identical key, 10 wired with a different key, 1 key local-only, 5 with no local seat, 4 OAuth-versus-key mismatches, 3 file seats unplaced.
  • One credential is installable as a static env value without an expiry problem. Three file seats (claude, codex, grok) are installable only as files with expiry constraints; two OAuth sets are already expired.
  • 28 seats have no local source at all.
  • Sentry admin, DSN and tunnel material live in root-only files (0600) outside the repository; the admin password has no rotation record beyond the edge rotation of the acumen key.

No credential value is reproduced in this repository. The gap table itself is operator-local because it enumerates stores; this section carries only counts and classes.

All seven were copied from the day’s working notes and sanitized (no credential values, no personal identifiers, absolute home paths normalized). See the runbooks index for what each one answers and whether it records a plan or an applied change.

RunbookAnswers
sentry-local.mdHow the self-hosted Sentry runs, is verified, backed up and restored
sentry-rollout.mdPer-service SDK plan, blockers, PII rules and rollout order
TOOLPLANE.mdWhich MCP tools and credentials are connected, and their blast radius
consumer-launch-spec.mdThe public consumer plane: routes, limits, rollout, rollback
edge-security.mdWhat the internet can reach on tcp, and the fixes applied
opencode-cache-report.mdPrompt-cache behaviour and what it costs per session
opencode-skills-audit.mdWhich skills are installed, duplicated, shadowed or stale

Source: the operator’s harness-rescue working notes of 2026-10-20. Copied with these transformations only:

  • personal mailboxes and account identifiers replaced with a role address or <redacted>;
  • absolute operator home paths normalized to ~, and session identifiers redacted;
  • external host paths that are not repository files left in prose rather than backticked, because the gate’s citation check treats a backticked path as a repository claim.

No other edit was made to the runbook bodies. If a runbook and a live probe disagree, the probe wins and the runbook needs a dated correction.