87 lines
4.6 KiB
Markdown
87 lines
4.6 KiB
Markdown
---
|
|
kind: verification
|
|
status: 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`](./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).
|