Applies the document contract from
docs/plans/2026-08-20_stack-docs-flatten-and-alignment.md section 3, partially:
`kind` and `status` only. `parent` is deliberately held until the flatten in
section 4 lands, so that 127 documents do not have to be re-pointed by hand
when docs/fleet/NORTH_STAR.yaml moves to docs/NORTH_STAR.yaml.
Scope, measured on origin/next at 63069149:
127 live docs = all *.md under docs/ minus docs/archive/ minus docs/_old_structure/
104 stamped here
19 held operator judgement (plan section 9), worklist in the same PR
3 held the SUPERSEDED TASKS.md stamps, which cite the moving path
1 untouched docs/fleet/FLEET-DOCTRINE.md, already stamped in W1
Kinds applied: 54 guide, 34 record, 9 spec, 6 tracking, 1 projection.
Every row carries a confidence and a one-line rationale in the worklist.
Two collisions with the existing state, both flagged rather than resolved:
1. docs/README.md:150-160 already documents a front-matter convention
(title/type/audience/status/source_of_truth) with its own allowed values.
It is applied to 4 of 127 files. Its `status` vocabulary is
current|draft|deprecated|historical; the new contract's is active|superseded-by.
The key collides. This commit lets the new contract win and rewrites
`status: current` to `status: active` on those 4 files, keeping their other
legacy keys untouched. No code reads any of them: `git grep source_of_truth`
outside docs/ returns nothing. docs/README.md still prescribes the old
convention and is an operator row, so it is not edited here.
2. Two of the plan's 20 operator rows are YAML files, not markdown
(docs/fleet/examples/roster-v2.yaml, docs/openapi-tess.yaml), and the
contract's front-matter form has no defined meaning for a .yaml document.
That gap also applies to docs/fleet/NORTH_STAR.yaml, the source of truth
itself. Raised in the worklist.
A third row from the plan, docs/fleet/north-star.md, no longer exists: W1
renamed it to docs/fleet/FLEET-DOCTRINE.md.
Verification: 104/104 parse with the expected kind and status in front matter;
the check was shown to reject a wrong kind before it was trusted. The diff
removes 4 lines total, all of them `status: current`.
5.9 KiB
5.9 KiB
kind, status
| kind | status |
|---|---|
| record | active |
#751 Native Kanban/SOT canonical publication — Ultron final gate
Verdict: GO — zero BLOCKER/HIGH findings.
Scope / integrity
- Reviewed
/home/hermes/agent-work/stack-kanban-canonstaged delta only: exactly 16 documentation/contract artifacts; no unstaged delta;git diff --cached --checkpasses. - This is a publication canon, not a runtime implementation. The explicit implementation hold prevents feature work until canon merge and prerequisite release (
docs/requirements/native-kanban-sot.md:8-9;docs/native-kanban-sot/TASKS.md:45-67).
Acceptance mapping and findings
| Requirement area | Final evidence / result |
|---|---|
| Sole PostgreSQL SOT, generated projections, outage proposals | Requirements D3/D4 and fixed invariants prohibit alternate writers and import (docs/requirements/native-kanban-sot.md:22-23,32-44). Health contract keeps public observation separate from branded transaction-local proof (contracts/health-state.v1.ts:44-84) and freezes 503/409/502/504 mappings (:91-184). Proposal table uses workspace-aware event FKs (contracts/kanban-schema.v1.ts:847-908); exact submission/acceptance transaction semantics are specified (SHARED-CONTRACT.md:81-89). PASS. |
| Workspace tenancy, planning, assignments, evidence | Workspace-composite task and proposal relations plus active-member rules are explicit (SHARED-CONTRACT.md:40-48; kanban-schema.v1.ts:587-637,875-908). Lease/checkpoint relations bind workspace/task/assignment/session/fence, with one active lease and bigint fencing (:1062-1114). PASS. |
| Coordinator, gates, concurrency/recovery | Pure Coordinator has snapshot-only decision methods (mechanical-coordinator.v1.ts:186-198); persistence port owns locked ID validation and recovery (:371-407). Requirements forbid Coordinator scope/gate/certification/merge authority and Certifier merge authority (requirements:39-40; MISSION-MANIFEST.md authority table). Recovery validator rejects unknown fields, PITR/WAL/RPO/storage/high-assurance violations (recovery-posture.v1.ts:193-369). PASS. |
| Migration/N-1/API/task decomposition | N-1 expand/backfill/compatibility/switch/contract order and proposal DDL sequence are concrete (SHARED-CONTRACT.md:69-115). Frozen exact Gateway/DTO registry and non-overlapping lane ownership/prerequisites are present (SHARED-CONTRACT.md:244-282; TASKS.md:45-67,81-259). PASS. |
| Documentation / seven owner decisions / evidence | D1–D7 are all explicitly ratified (requirements:20-26); all 26 REQ sections contain acceptance criteria. Index/manifest/task graph link requirements, frozen contracts, ownership, and evidence. Relative-link audit passes. PASS. |
Independent verification performed
git diff --cached --check PASS
./node_modules/.bin/prettier --check <all publication paths> PASS
./node_modules/.bin/tsc --noEmit --strict <health/coordinator/recovery> PASS
Python relative Markdown link audit PASS (0 errors)
Python requirement acceptance audit PASS (26 requirements; 0 missing acceptance sections)
Static staged scope/status check PASS (16 staged docs-only; no unstaged delta)
The full schema-contract strict type check cannot resolve drizzle-orm from this docs-only worktree; this is an environment dependency-resolution limitation, not a contract diagnostic. Independent external publication validation and final re-review record the strict all-four-contract check against the current Stack Drizzle toolchain as PASS.
Residual items
- LOW: implementation must deliver the declared KBN-100/KBN-110/KBN-140 proposal-event-chain, tenant, failure-mapping, and SecReview evidence before P0/P1 release. This is a forward implementation obligation already frozen in the canon, not a publication defect.
- LOW: selected infrastructure backup provider/recovery tier and migration/cutover thresholds remain owner-controlled implementation decisions, bounded by the normative recovery contract and change control.
No source, staging, commit, provider, CI, or deployment state was mutated.