Files
stack/docs/native-kanban-sot/P0-MAP-CURRENCY-2026-08-29.md
T
2026-08-29 15:41:00 -05:00

4.6 KiB

kind, status
kind status
verification active

P0 Field-Map Currency Verification — 2026-08-29

Purpose: REQ-MIG-001 (native-kanban-sot.md §5) accepts only when "P0 publishes the current origin/main field-by-field expand/backfill/compatibility/switch/contract map before any schema lane starts." That map exists: SHARED-CONTRACT.md §5, inspected at packages/db/src/schema.ts @ e72388b2cbfe400842fe940fa6cabf984ed43711 (2026-07-13). The M4-3 schema lane (expand migration 0021+) now opens against the integration trunk next. This document re-verifies the map's currency at the lane-opening head and records the measured pre-expand writer inventory. It amends nothing normative in SHARED-CONTRACT.md; where the two disagree, SHARED-CONTRACT.md wins.

1. Currency verification (measured)

  • Map pin: e72388b2cbfe400842fe940fa6cabf984ed43711 (2026-07-13, main).
  • Lane-opening head: abb0c93601e878035557a34e142c73e91c68d363 (origin/next, 2026-08-29).
  • Measurement: git diff e72388b2 abb0c936 -- packages/db/src/schema.ts reports 300 insertions, 0 deletions, 0 modifications.
  • The insertions are exclusively new declarations, none of them mapped sources: logicalAgentConnectorLeases, connectorLeaseAuditLog, and the hierarchy layer (companies, estates, platformProjects, workspaces, hierarchyGrants, hierarchyAuditEvents, hierarchyOutbox, plus their enums and constant arrays).

Consequence: every source column mapped in SHARED-CONTRACT.md §5.4 — teams/team_members, projects, missions, tasks, mission_tasks, agents, fleet backlog — is byte-identical to the declaration the map inspected. The field map is current as written. No row changes.

2. Refinements available since the pin (context, not map changes)

  1. The workspaces table exists. The map predates contract 1's hierarchy layer; its "bootstrap workspace" backfill step now has a shipped target: workspaces (uuid PK, chained under platform projects per docs/requirements/hierarchy-schema.md, migration lane 0020). New workspace_id columns FK there.
  2. The audit/outbox envelope pattern is shipped. hierarchyAuditEvents + hierarchyOutbox implement same-transaction semantic event + outbox. The task lane's task_events/task_outbox mirror the pattern but are workspace-scoped with the composite (workspace_id, id) key required by §5.3 and REQ-SOT-004. The hierarchy tables are a pattern reference, never a shared store for task events.
  3. Trunk designation. The integration trunk is next (.mosaic/repo.json). The map's origin/main references resolve to the trunk head pinned above.
  4. Seat roster succession. SHARED-CONTRACT.md §6 assigns schema/migration ownership to the July mission seat coder2. That roster is superseded by the current M4 delivery lane (webui-audit, M4-PLAN). The invariant §6 protects is unchanged and binding: exactly one lane generates migrations; expand is additive; no drop/rename/narrow; constraints validate before NOT NULL.

3. Pre-expand writer inventory (measured 2026-08-29 at abb0c936)

SHARED-CONTRACT.md §5.1 phase 1 requires an N-1 patch that stops mission_tasks.status as a write source, plus a writer inventory, before any expand DDL.

  • Sole write path: packages/brain/src/mission-tasks.ts create/update (Drizzle insert/update on mission_tasks), invoked by apps/gateway/src/missions/missions.controller.ts. update accepts Partial<NewMissionTask>, so status is writable through both DTOs today.
  • Read-only consumers: federation verb services (get-query.service.ts, list-query.service.ts) and the MCP brain_* tools select only.
  • Ruling 5 freezes this surface for new consumers but does not stop existing writes.

Standing work item: the phase-1 stop-write patch (reject or ignore status on mission_tasks create/update) MUST land before the expand DDL of migration lane M4-3a. It is N-1-safe per the §5.4 row for mission_tasks.status (linked status is ignored; the column stays declared and readable through the whole N-1 window; retirement only after no readers).

4. Lane opening

With this verification merged, REQ-MIG-001's P0-map precondition is satisfied for the M4-3 schema lane at pinned head abb0c936. The ordered phases (§5.1), mission candidate-key DDL order (§5.2), audit/proposal DDL order (§5.3), field map (§5.4), and required migration tests (§5.5) bind as written. External import machinery (jarvis-brain/Vikunja shadow import, REQ-MIG-001) and client cutover (REQ-MIG-002) remain out of scope for M4-3; legacy consumers stay frozen meanwhile (Ruling 5).