Files
stack/docs/federation/TASKS.md
Jarvis f74fc9687f
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
docs(federation): mark FED-M1-02 done (PR #471 merged)
2026-04-19 19:02:39 -05:00

8.8 KiB
Raw Blame History

Tasks — Federation v1

Single-writer: orchestrator only. Workers read but never modify.

Mission: federation-v1-20260419 Schema: | id | status | description | issue | agent | branch | depends_on | estimate | notes | Status values: not-started | in-progress | done | blocked | failed | needs-qa Agent values: codex | glm-5.1 | haiku | sonnet | opus | (auto)

Scope of this file: M1 is fully decomposed below. M2M7 are placeholders pending each milestone's entry into active planning — the orchestrator expands them one milestone at a time to avoid speculative decomposition of work whose shape will depend on what M1 surfaces.


Milestone 1 — Federated tier infrastructure (FED-M1)

Goal: Gateway runs in federated tier with containerized PG+pgvector+Valkey. No federation logic yet. Existing standalone behavior does not regress.

id status description issue agent branch depends_on estimate notes
FED-M1-01 done Extend mosaic.config.json schema: add "federated" to tier enum in validator + TS types. Keep local and standalone working. Update schema docs/README where referenced. #460 sonnet feat/federation-m1-tier-config 4K Shipped in PR #470. Renamed teamstandalone; added team deprecation alias; added DEFAULT_FEDERATED_CONFIG.
FED-M1-02 done Author docker-compose.federated.yml as an overlay profile: Postgres 17 + pgvector extension (port 5433), Valkey (6380), named volumes, healthchecks. Compose-up should boot cleanly on a clean machine. #460 sonnet feat/federation-m1-compose FED-M1-01 5K Shipped in PR #471. Overlay defines postgres-federated/valkey-federated, profile-gated, with pg-init for pgvector extension.
FED-M1-03 done Add pgvector support to packages/storage/src/adapters/postgres.ts: create extension on init (idempotent), expose vector column type in schema helpers. No adapter changes for non-federated tiers. #460 sonnet feat/federation-m1-pgvector FED-M1-02 8K Shipped in PR #472. enableVector flag on postgres StorageConfig; idempotent CREATE EXTENSION before migrations.
FED-M1-04 in-progress Implement apps/gateway/src/bootstrap/tier-detector.ts: reads config, asserts PG/Valkey/pgvector reachable for federated, fail-fast with actionable error message on failure. Unit tests for each failure mode. #460 sonnet feat/federation-m1-detector FED-M1-03 8K Worker delivered; reviewer flagged 3 issues (Valkey timeout, pgvector error discrimination, federated/non-bullmq guard) — fixed.
FED-M1-05 not-started Write scripts/migrate-to-federated.ts: one-way migration from local (PGlite) / standalone (PG without pgvector) → federated. Dumps, transforms, loads; dry-run + confirm UX. Idempotent on re-run. #460 codex feat/federation-m1-migrate FED-M1-04 10K Do NOT run automatically. CLI subcommand mosaic migrate tier --to federated --dry-run. Safety rails.
FED-M1-06 not-started Update mosaic doctor: report current tier, required services, actual health per service, pgvector presence, overall green/yellow/red. Machine-readable JSON output flag for CI use. #460 sonnet feat/federation-m1-doctor FED-M1-04 6K Existing doctor output evolves; add --json flag. Green/yellow/red + remediation suggestions per issue.
FED-M1-07 not-started Integration test: gateway boots in federated tier with docker-compose federated profile; refuses to boot when PG unreachable (asserts fail-fast); pgvector extension query succeeds. #460 sonnet feat/federation-m1-integration FED-M1-04 8K Vitest + docker-compose test profile. One test file per assertion; real services, no mocks.
FED-M1-08 not-started Integration test for migration script: seed a local PGlite with representative data (tasks, notes, users, teams), run migration, assert row counts + key samples equal on federated PG. #460 sonnet feat/federation-m1-migrate-test FED-M1-05 6K Runs against docker-compose federated profile; uses temp PGlite file; deterministic seed.
FED-M1-09 not-started Standalone regression: full agent-session E2E on existing standalone tier with a gateway built from this branch. Must pass without referencing any federation module. #460 haiku feat/federation-m1-regression FED-M1-07 4K Reuse existing e2e harness; just re-point at the federation branch build. Canary that we didn't break it.
FED-M1-10 not-started Code review pass: security-focused on the migration script (data-at-rest during migration) + tier detector (error-message sensitivity leakage). Independent reviewer, not authors of tasks 01-09. #460 sonnet FED-M1-09 8K Use feature-dev:code-reviewer agent. Specifically: no secrets in error messages; no partial-migration footguns.
FED-M1-11 not-started Docs update: docs/federation/ operator notes for tier setup; README blurb on federated tier; docs/guides/ entry for migration. Do NOT touch runbook yet (deferred to FED-M7). #460 haiku feat/federation-m1-docs FED-M1-10 4K Short, actionable. Link from MISSION-MANIFEST. No decisions captured here — those belong in PRD.
FED-M1-12 not-started PR, CI green, merge to main, close #460. #460 (aggregate) FED-M1-11 3K Queue-guard before push; wait for green; merge squashed; tea issue-close #460.

M1 total estimate: ~74K tokens (over-budget vs 20K PRD estimate — explanation below)

Why over-budget: PRD's 20K estimate reflected implementation complexity only. The per-task breakdown includes tests, review, and docs as separate tasks per the delivery cycle, which catches the real cost. The final per-milestone budgets in MISSION-MANIFEST will be updated after M1 completes with actuals.


Milestone 2 — Step-CA + grant schema + admin CLI (FED-M2)

Deferred to mission planning when M1 is complete. Issue #461 tracks scope.

Milestone 3 — mTLS handshake + list/get + scope enforcement (FED-M3)

Deferred. Issue #462.

Milestone 4 — search + audit + rate limit (FED-M4)

Deferred. Issue #463.

Milestone 5 — cache + offline + OTEL (FED-M5)

Deferred. Issue #464.

Milestone 6 — revocation + auto-renewal + CRL (FED-M6)

Deferred. Issue #465.

Milestone 7 — multi-user hardening + acceptance suite (FED-M7)

Deferred. Issue #466.


Execution Notes

Agent assignment rationale:

  • codex for most implementation tasks (OpenAI credit pool preferred for feature code)
  • sonnet for tests (pattern-based, moderate complexity), doctor work (cross-cutting), and independent code review
  • haiku for docs and the standalone regression canary (cheapest tier for mechanical/verification work)
  • No opus in M1 — save for cross-cutting architecture decisions if they surface later

Branch strategy: Each task gets its own feature branch off main. Tasks within a milestone merge in dependency order. Final aggregate PR (FED-M1-12) isn't a branch of its own — it's the merge of the last upstream task that closes the issue.

Queue guard: Every push and every merge in this mission must run ~/.config/mosaic/tools/git/ci-queue-wait.sh --purpose push|merge per Mosaic hard gate #6.