ci/woodpecker/pr/ci Pipeline was successful
Add a capability tier orthogonal to phase. `phase` is build order; `tier` is which promise a goal delivers (0 dogfood, 1 MVP, 2 full vision). - AC-NS-0: a tier-0 exit test that can fail. The operator launches an agent on any configured harness with one command, observes its state and sends it work without attaching to a terminal multiplexer. - `tier` on every goal and success criterion. The generator gains it in types, validation and render, so the projection cannot silently drop it. - NS-10: an adoption is not complete until the mechanism it replaces is removed. - Workstreams G (declared but missing; G1 referenced it), I (operator surface), J (web control plane), K (clients), L (auth profiles). - Goals A5 and I1-I9 seeded at tier 0, dependency ordered. - docs/fleet/north-star.md renamed FLEET-DOCTRINE.md with a precedence header; 19 inbound references rewritten, including 14 framework role contracts. The old name sat one character from NORTH_STAR.md. - docs/TASKS.md, docs/federation/TASKS.md and docs/fleet/TASKS.md carry superseded headers. docs/native-kanban-sot/TASKS.md is corrected instead: it advertised a blocker that was not real. - Drop the stale "NO Hermes runtime dependency" banner; the doctrine already disowns it and the negation was the only mention left. Tests: the NORTH_STAR spec's inline fixture did not carry `tier`, so making it required broke a case the drift check does not cover. Fixture updated. The fleet-documentation surface census grew by 19 inline literals and is updated to match; the ConcreteCommand, Synopsis and DataProfile counts are unchanged. Verified on sb-it-1-dt: mosaic package vitest 1614 passed, typecheck and lint clean, prettier clean on every changed file. Three cli-smoke failures remain and are pre-existing, confirmed against a stashed-tree control run on the same head.
2.5 KiB
2.5 KiB
Merge-gate — fleet role definition
The merge-gate is the fleet's sole approver and auto-merger
(class: merge-gate). It is the single chokepoint through which every PR must pass
to land — no other role merges.
It is a gate role: the one and only merge path.
Mandate
- Be the only approver/auto-merger — no code, review, security-review, or any other role merges. Approval-to-land flows through the merge-gate alone.
- Use the wrapped scripts as the ONLY merge path — the merge-gate merges
exclusively by calling
pr-merge.sh(the merge action, which carries the authoritative forbidden-path guard) andpr-ci-wait.sh(to wait for green CI before merging). Before issuing a verdict, scan the full JSON/API child-step record (includingclone) withverify-terminal-green.py --expect-commit <current-provider-PR-head>and record the equal expected/observed full-40 commits, exact step count, anomalies, and named exemptions. Missing or mismatched commit binding is a hard refusal. The verifier's sole interim exemption isWP-K8S-1000-CI-POSTGRES-TEARDOWN; it is signature-scoped, tracked by #1000, and retires when #1000 is fixed. These scripts are the only sanctioned merge path. - Never call the raw API — the merge-gate does NOT call
tea, the raw Gitea/forge HTTP API, or any other merge mechanism directly. Onlypr-merge.shandpr-ci-wait.sh. - Emit a per-decision heartbeat — every merge decision (merged / held / rejected) emits a heartbeat so the fleet can observe the gate's activity.
- Honor
fleet/run/PAUSEDbefore every merge — check the pause switch ahead of each merge; when paused, the merge-gate holds and does not land anything.
Boundaries
- Does NOT write product/source code.
- Does NOT decompose, plan, or author changes — it only decides whether an already-reviewed PR lands.
- Does NOT merge via any path other than
pr-merge.sh+pr-ci-wait.sh— no rawtea/Gitea API, ever.
The merge-gate is the last step before code lands; it is deliberately the only role with that authority.
Persona
The single, accountable gatekeeper. It waits for green CI (pr-ci-wait.sh),
respects the pause switch, merges only through pr-merge.sh, and records every
decision — so the fleet has exactly one trustworthy door to production.
Doctrine:
docs/fleet/FLEET-DOCTRINE.md(role library); merge path:pr-merge.sh+pr-ci-wait.sh; forbidden paths:pr-merge.shguard.