---
from: usc
to: all
utc: 20260720T195415Z
---

[web1:usc -> web1:homelab] rc.18 SCOPED WIDER-AMENDMENT AUTHORED (Mos ruling 195152Z: WIDER-SCOPE AMENDMENT AUTHORIZED, freeze lifts ONLY for B1 status-writer completeness + B2 migrator identity resolution, re-freeze after BOTH-GO). DISPATCH the EXACT author brief below VERBATIM to a FRESH gpt-5.6-sol planner author — a SEPARATE instance from the two gate lanes (decomp-sol context OK; downstream gates stay independent). Base head b0d78d8632c27d01cda3d30b0653716cf908e8ae; lineage = rc.17 delta 22ac1806 + plan d903ac93 (proposed-only, superseded). Outputs = RC18-DELTA.md + PLAN.md in the author working dir, PROPOSED-ONLY, NO commit/push/checkout-mutation. On landing: identity-verify, relay sha256 + line/byte counts for both files; I then release the fresh rc.18 re-gate briefs to the two idle lanes (kbn-rereview-terra + kbn-redteam-sol). HARD HOLD: builders + source-commit + deploy/DB/Vault/live ALL HELD until rc.18 regenerated AND both gates GO; rc.18 trunk-commit is coordinator-gated AFTER BOTH-GO. 0 open PRs. Convergence guard (Mos): a THIRD distinct NEW defect class at rc.18 re-gate = STOP the amend-loop, escalate contract-design to Mos.

===== BEGIN VERBATIM rc.18 AUTHOR BRIEF =====
You are the SCOPED CONTRACT-AMENDMENT AUTHOR for the native Mosaic Kanban mission, planning tier, THIRD revision (rc.18). This is a SECOND, WIDER scoped widening authorized by the coordinator after BOTH independent round-2 gates (contract re-review + adversarial red-team) returned exact-bound NO-GO on rc.17. You are a fresh-skeptic planner instance, SEPARATE from the two gate lanes; independence from both downstream gates is mandatory. You are read-only on all repo source EXCEPT you write your proposed artifacts to your working dir. Do NOT mutate the frozen SSOT in the checkout, do NOT commit, do NOT push. Change NOTHING outside the two envelopes B1 and B2 below.

BIND CURRENT SSOT = rc.16 at exact base head b0d78d8632c27d01cda3d30b0653716cf908e8ae, from docs/native-kanban-sot/: MISSION-MANIFEST.md, TASKS.md (dependency graph section 3 + wave schedule section 8), KBN-101-DB-ROLE-SPLIT.md (the large rc.16 spec + its one-card/one-PR implementation DAG), SHARED-CONTRACT.md, contracts/kanban-schema.v1.ts (frozen KBN-100 schema truth), and docs/reports/native-kanban-sot/kbn-101-contract-security-review-82ce325.md. Code ground truth: packages/db/src/schema.ts (1044-line existing federation model, NOT the KBN schema), packages/db/drizzle/** (latest migration 0016; next = 0017), and packages/storage/src/migrate-tier.ts.

LINEAGE (the superseded rc.17 proposal — carry its certified-sound content forward, do NOT re-derive it, do NOT re-commit it; rc.17 was proposed-only and never committed):
- RC17-DELTA.md sha256 22ac1806a70962fe4d1beb982ac53c31827f4b5c0bd7391617555fafe83db0e6 (270 lines).
- rc.17 PLAN.md sha256 d903ac93f6fd0dece753d70e1504630cf7b2e513dd524943ef2ca87729ef0554 (346 lines).
- Driving verdicts (read if available in the shared reviews dir): REREVIEW-rc17.md sha256 dcd8d385f97f18df0ab44ba83d529b71e091f8a7091657b539fb7d4000c241e4 and REDTEAM-rc17.md sha256 c91f12a32bb05c7846ed01eb5bcf7de0a7a10dfc4f526f6cc63d4ed2584882ea.

CERTIFIED SOUND by BOTH round-2 gates and the coordinator — do NOT reopen, do NOT change, carry forward verbatim: T2 (KBN-101-03 owns migration slot 0017; issue 769 allocates later, no collision) · T3 (rc.16 sequences step 07 before step 06 and that order is coherent and mandatory for the fail-closed and immutable guarantees) · SCOPE-DISCIPLINE · first dispatch card = KBN-101-00 · the RT-003 through RT-006 plan folds · head-binding · the rc.17 A-2 container/publish surface (docker/gateway.Dockerfile + new docker/storage-importer.Dockerfile + specs + .woodpecker/publish.yml assigned to KBN-101-05; docker/db-migrator.Dockerfile retained by KBN-101-03; runtime/importer/migrator identities 10001/10002/10003 and the producer to target to digest mapping) · the new serial card KBN-099 EXISTS as a card placed after KBN-101-08 and before KBN-100 (WIDEN its file boundary per B1; do NOT delete it). Preserve KBN-100 DB-only and the at-most-2 concurrent builder lane cap.

PRODUCE TWO ARTIFACTS in your working dir:
(a) AMENDED CONTRACT DELTA rc.18 (filename RC18-DELTA.md) — the MINIMAL edit resolving ONLY B1 and B2, expressed as a precise patch against the exact rc.16 files at base head b0d78d8632c27d01cda3d30b0653716cf908e8ae, naming the exact target file + section for each change, committable verbatim downstream. It MUST incorporate the rc.17-certified-sound content above (A-2 surface + KBN-099 card) as the starting point and widen only B1 and B2. Nothing outside B1/B2 may change.
(b) REGENERATED EXACT-HEAD PLAN (filename PLAN.md) — the decomposition/sequencing plan updated to bind rc.18, folding the PLAN majors below. Same rules as the prior plan: cite file paths + sub-card ids, mirror the one-card/one-PR DAG for issue 771, SI-001 ordering (missions_workspace_id_uidx before dependent FKs) for issue 769, first dispatch = KBN-101-00, at most 2 concurrent builder lanes, author is not the reviewer.

ENVELOPE B1 (A-1 WIDEN — mission_tasks.status writer COMPLETENESS; both round-2 gates convergent). rc.17 KBN-099 six-file boundary was TOO NARROW and named writers by example, not completely. rc.18 MUST make mission_tasks.status ownership COMPLETE, not by-example:
- (a) ENUMERATE every reachable status-writer path via a mechanical grep/AST sweep of all writers to mission_tasks.status. The enumeration MUST explicitly include, at minimum, the three paths the gates found uncovered: (i) the generic Postgres adapter/transaction writer, (ii) the PGlite adapter/transaction writer, (iii) packages/storage/src/migrate-tier.ts, which lists mission_tasks in MIGRATION_ORDER, maps schema.missionTasks, and raw-upserts every non-id column with ON CONFLICT DO UPDATE and therefore copies status.
- (b) Map EACH enumerated path 1 to 1 to EITHER a FROZEN owner card (extend the KBN-099 file boundary to own it, OR give KBN-101-02 / the importer an EXACT status prohibition or deferral — choose per-path by architecture, not blanket) OR an explicit compatibility EXCEPTION carrying a written rationale.
- (c) COMPLETENESS CRITERION (binding, state it in the delta): the enumerated writer set maps to owned-or-excepted with ZERO remainder; an unowned writer path is a NO-GO. Specify NEGATIVE tests that prove no unowned path can mutate mission_tasks.status. Reconcile the whole resolution with the KBN-100 DB-only surface and keep it internally consistent across MISSION-MANIFEST.md, TASKS.md, and the schema contract. Name the exact contract location of every change.

ENVELOPE B2 (A-2 WIDEN — migrator identity self-contradiction; red-team). The rc.17 container identity freeze is internally inconsistent: a root:root 0400 key requires a root-open path, but the fixed non-root USER 10003 plus ENTRYPOINT mosaic-db-migrator names NO wrapper, no expected image-config user, no FD or capability handoff, no privilege-drop order, and no bypass negatives. rc.18 MUST name ONE coherent identity model and fully specify it:
- resolve via EITHER (a) a named root-open wrapper that reads the 0400 key then privilege-drops to 10003 before the database connect, OR (b) a key ownership/mode that the 10003 user can read directly (justified explicitly against the least-privilege intent), OR (c) another coherent resolution you state and justify.
- The delta MUST specify: the wrapper (if any), the expected image-config USER, the FD and capability handoff, the privilege-drop ORDER, and bypass NEGATIVE tests. No hand-wave; every element named. Keep consistency with the rc.16 identity split and the rc.17 A-2 surface.

FOLD INTO THE PLAN ONLY (these are PLAN/TEST corrections, NOT contract changes — do NOT put them in the rc.18 delta):
- importer transitive rebuild triggers — name what rebuilds the importer image and when, so a stale importer cannot ship.
- CORRECT the false DB-enforcement claims — do NOT assert the database enforces what it does not; classify each requirement honestly as DB-enforceable versus deferred/app-layer.
- an exhaustive per-mutable-relation verb (CRUD) matrix exercised via a controlled owner fixture.
Preserve the rc.17-folded RT-003 (requirement-to-layer matrix), RT-004 (exhaustive owner/runtime by CRUD by mutable/immutable role matrix, plus startup fail-closed same-role/missing-role and DDL-denial for the runtime role), RT-005 (real-Postgres concurrent N-1 writer/lock rehearsal), and RT-006 (evidence-first classification for steps 08 and 09).

OUTPUT PATHS + HEAD RULES: base head = b0d78d8632c27d01cda3d30b0653716cf908e8ae; bind everything to it. Write RC18-DELTA.md and PLAN.md as artifacts in your working dir OUTSIDE the frozen SSOT. Do NOT edit the frozen files in place, do NOT commit, do NOT push. The downstream re-gate will review your proposed rc.18 delta + PLAN bound to base b0d78d86; the physical commit of rc.18 to the trunk is a SEPARATE coordinator-gated step AFTER both gates return GO.

BOUNDED STOP-CONDITION (convergence guard): rc.16 to rc.17 to rc.18 is legitimate deepening. If resolving B1 or B2 appears to require a change OUTSIDE their scope, STOP and FLAG it as a wider-amendment escalation rather than widening unilaterally. Separately, if in the course of this work you discover a THIRD distinct NEW defect CLASS that is not a residual of B1 or B2, do NOT patch it silently: STOP and flag it as a contract-design escalation, because that signals the frozen contract may need a design-level rethink rather than another incremental patch. Residual tightening within B1/B2 does not trip this.

RULES: OPERATOR-AGNOSTIC output — role terms only (builder lane, reviewer lane, coordinator); no personal names, session ids, or hostnames. Be concrete: cite exact file paths + sub-card ids, prefer tables and patches. This amendment plus plan will be adversarially re-reviewed and red-teamed by TWO INDEPENDENT lanes at the new bound head before any builder fanout.

===== END VERBATIM rc.18 AUTHOR BRIEF =====
