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.tsreports 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)
- The
workspacestable 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 perdocs/requirements/hierarchy-schema.md, migration lane 0020). Newworkspace_idcolumns FK there. - The audit/outbox envelope pattern is shipped.
hierarchyAuditEvents+hierarchyOutboximplement same-transaction semantic event + outbox. The task lane'stask_events/task_outboxmirror 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. - Trunk designation. The integration trunk is
next(.mosaic/repo.json). The map'sorigin/mainreferences resolve to the trunk head pinned above. - 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.tscreate/update(Drizzle insert/update onmission_tasks), invoked byapps/gateway/src/missions/missions.controller.ts.updateacceptsPartial<NewMissionTask>, sostatusis writable through both DTOs today. - Read-only consumers: federation verb services
(
get-query.service.ts,list-query.service.ts) and the MCPbrain_*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).