Skip to content

E9 STRATT federation is blocked on a STRATT read surface

Date: 2026-07-07 Status: resolved — read surface shipped (stratt-run #211, 2026-07-07) Supersedes: none Superseded-by: none — current

Update (2026-07-07): The upstream blocker is cleared. stratt-run #211 added GET /councils, GET /graph, GET /fingerprints to services/orchestrator-http, CLI-JSON-compatible. /graph + /fingerprints are DB-backed (live published library); /councils is filesystem-sourced (STRATT_COUNCILS_DIR) and returns [] until the deploy mounts the councils dir. The remaining E9 work is host-side: author stratt.consumption.v1 + StrattSource on the P1 HTTP modality.

With the P1 HTTP source modality in place, closing the federation reads is a matter of writing one *Source per upstream. KahnSource (E7) and RalphSource (E8) landed cleanly because KAHN Scope and ralph serve expose read-only HTTP APIs with list/detail run endpoints.

STRATT (E9) is different. The neverland intent for E9 is “STRATT’s law visible to the control plane” — the council catalogue, the chain graph, and fingerprint status. An investigation of stratt-hq found:

  • STRATT does run an HTTP service, services/orchestrator-http, with POST /sessions, GET /sessions/:id (per-session-token-gated), GET /sessions/:id/stream (SSE), GET /audit/slice/:sessionId, GET /health, GET /blast-radius, GET /queue/:actor, GET /intelligence/signals.
  • But the law surface E9 needs is CLI-only: the council catalogue is stratt council list --json (no HTTP endpoint), the chain graph is stratt graph --format json (only GET /blast-radius, impact-only, exists over HTTP), and fingerprint status is stratt fingerprint --verify (no HTTP surface).

A StrattSource reading only /health + /intelligence/signals + token-gated single sessions would not make STRATT’s law visible — it would be a hollow reader that satisfies the edge on paper without delivering E9’s intent.

Do not build a thin StrattSource now. E9 is blocked on stratt-hq exposing a read surface for its law. The blocker is upstream, not in petrova. Record the precise endpoints STRATT must add; build StrattSource (trivially, on the P1 modality) once they exist.

Required stratt-hq read endpoints (read-only, mirror the CLI JSON output):

  1. GET /councils — the council catalogue (currently council list --json).
  2. GET /graph (and/or GET /units?domain=&type=) — the full chain DAG (currently graph --format json; blast-radius is impact-only).
  3. GET /fingerprints or GET /units/:id/fingerprint — fingerprint / verification status (currently fingerprint --verify, per-file only).

Authoring stratt.consumption.v1 (the consumption pin) follows once the surface exists.

  • Build a health/session-only StrattSource now — rejected: does not make STRATT’s law visible; adds token-plumbing complexity for a reader that misses E9’s intent.
  • Read STRATT’s filesystem (councils/ dirs) from a sibling path — rejected: the host would need a stratt-hq checkout; the graph and fingerprint status are computed, not static files; and it duplicates the CLI’s derivation logic. The HTTP surface is the right seam.
  • Call the STRATT CLI from the host — rejected: shells out of a read-only aggregator; no auth/tenancy story; brittle.

For code:

  • No StrattSource yet. host/src/sources/http.ts is ready for it.

For docs:

  • docs/neverland/01-connector-map.md E9: refine the gap from “no host source” to “blocked on STRATT read endpoints (councils/graph/ fingerprints)”. E7 → read built (KahnSource).

For in-flight phases:

  • E7 read done; E9 waits on an upstream stratt-hq task (build the three read endpoints). That task belongs in stratt-hq’s backlog, not petrova’s.

For invariants:

  • None. No MR (MR-9).
  • docs/neverland/01-connector-map.md — edges E7, E9.
  • docs/neverland/02-shared-contracts.mdstratt.consumption.v1 (to author once the surface exists).
  • stratt-hq services/orchestrator-http/src/routes.ts — the existing session/health surface (not the law surface).
  • stratt-hq packages/cli/src/commands/{council,graph,fingerprint}.ts — the CLI-only law surface to be promoted to HTTP.
  • host/src/sources/kahn.ts / ralph.ts — the reader pattern E9 will follow once unblocked.
  • Subagent: neverland federation-read tier (E7 built, E9 scoped), 2026-07-07
  • Human: <<pending — Alex confirm>>