ci/woodpecker/pr/ci Pipeline failed
Addresses CPS-PRD-REV1-REVIEW-Q90 findings F1 and F3 on PR #1491: F1 (format gate): `prettier --write` on the 18 rev1 bundle documents. Whitespace, table padding, list markers and emphasis delimiters only — a normalized token comparison of every file before/after shows zero content difference, so the ratified text is unchanged and no re-ratification applies. F3 (rev0 relative links): the archived rev0 PRD stays byte-identical (sha256 60cc2f98...36afdf verified) per GOV.1 archive-never-edit. A sibling docs/PRDs/2026-08-26_PRD_rev0/README.md records the digest, the original location, the owner disposition that the in-file links are intentionally historical, and a resolution table for all 9 targets (11 occurrences), each verified to exist. Future relocated archives ship the same README instead of edited bytes. F2 (test step) is investigated separately against the CI log.
172 lines
9.9 KiB
Markdown
172 lines
9.9 KiB
Markdown
---
|
||
id: GOV.5
|
||
status: ratified
|
||
ratified: 2026-09-01 (Jason Woltje; PRD rev1 ratification PR)
|
||
---
|
||
|
||
# GOV.5 — Open questions (the grill list)
|
||
|
||
Every question the corpus could not settle. This is the E5 ms-grill-me input;
|
||
ratification is blocked until this list is empty or every remaining row is
|
||
explicitly deferred with an owner. IDs are stable; answered questions get their
|
||
ruling recorded here and flow into the owning section.
|
||
|
||
**Frontier status (2026-09-01, grill rounds 3–8 complete): EMPTY.** Every row
|
||
is ruled, dissolved, or deferred-with-owner. The operator-side Q-T3 canon
|
||
coalescence closed in round 8 and was executed the same day (brain commit
|
||
`59d43270`). E6 ratification executed 2026-09-01; this list is frozen with the
|
||
bundle.
|
||
|
||
## Data model
|
||
|
||
- **Q-D1** — **RULED, Jason 2026-09-01: consolidate.** `launch.env` folds
|
||
into `profile.json` (one seat record). Precondition verified same day:
|
||
`mosaic-core/lib/loader.ts seatRole()` parses profile.json as a generic
|
||
record and reads only `role` — widened files tolerated by construction.
|
||
Migration staged as lane work (ledger B1).
|
||
- **Q-D2** — **RULED, Jason 2026-09-01: per-provider map + broker refs.**
|
||
`profile.json` carries a per-provider map whose values are credential-broker
|
||
references (`environment/service/component/secret-name`), never secrets —
|
||
one seat, N providers, zero secrets in the brain tree. Flows to
|
||
[[DATA.1-record-authority]] and [[AUTHN.1-auth-accounts]].
|
||
- **Q-D3** — **RULED, Jason 2026-09-01: the projection engine owns.** One
|
||
writer: the role-projection engine (`role apply` path). The launcher seeds
|
||
nothing itself — it invokes the projector; Pi and every harness get
|
||
regenerated files on each role/seat change; hand edits are drift, flagged by
|
||
`validate`. Consistent with L2-D19 + Q-T5. Unblocks the reconciliation
|
||
features (lane ledger B3 → D8).
|
||
- **Q-D4** — **RULED, Jason 2026-09-01: role ceiling + seat choice.** The
|
||
Role Revision defines the allowed model set (policy ceiling); the seat
|
||
records preferences within it; effective models = intersection, consistent
|
||
with the L2-D39 intersection chain. Flows to [[HARN.1-harness-config]] and
|
||
role-harness-config DESIGN Q2 (same ruling, both doors).
|
||
- **Q-D5** — **DEFERRED with owner (Jason 2026-09-01)**: the mutating
|
||
config-engine half gets its own ruling after v1 read-only `validate`/`plan`
|
||
ships; owner = the mosaic-config workstream. ([[CLI.1-parity]] §v1 subset)
|
||
|
||
## Sessions
|
||
|
||
- **Q-S1** — **DEFERRED with owner (Jason 2026-09-01)**: the
|
||
session-id ↔ incarnation-id contract is settled inside the session-lifecycle
|
||
draft before it lands (which now carries the Q-S4 two-path requirement);
|
||
owner = that draft's ratification. ([[SESS.1-session-continuity]])
|
||
- **Q-S2** — **RULED, Jason 2026-09-01: step-up re-auth required.** Role
|
||
rebinding is an authority-changing act: fresh principal re-authentication
|
||
≤10 minutes before the confirmation lands, matching the S2
|
||
identity-lifecycle linking precedent. Flows to [[SEAT.1-seat-profile]]
|
||
§role-binding and the UI.1 seat-page spec.
|
||
- **Q-S3** — **DEFERRED with owner (Jason 2026-09-01)**: the measurable
|
||
continuity-degradation bar is settled inside the session-lifecycle draft
|
||
before it lands; owner = that draft's ratification.
|
||
- **Q-S4** — **RULED, Jason 2026-09-01: two-path requirement ratified.** The
|
||
session-lifecycle draft may not land with one relaunch path. Role change →
|
||
clean-session path (new incarnation + fencing token, ephemeral context
|
||
discarded, OD-02/OD-03); harness/model/provider change → continuity path (same
|
||
Stack session id, checkpointed context restored, OD-57–OD-61, no noticeable
|
||
degradation). Binding requirement on the draft, recorded in
|
||
[[SESS.1-session-continuity]] §state machine.
|
||
|
||
## Audit
|
||
|
||
- **Q-A1** — **RULED, Jason 2026-09-01: mechanical tooling.** The audit is
|
||
deterministic tooling over the grant/assignment record (witness-style, per
|
||
the S2 writer-coverage pattern); its output feeds the audit page read-only.
|
||
Agents may consume audit output but never produce the verdict ("prompt
|
||
adherence is not an enforcement mechanism"). Flows to
|
||
[[AUTHZ.1-capability-authority]] and [[UI.1-webui-surfaces]] §audit.
|
||
- **Q-A2** — **DISSOLVED by the Q-A1 ruling**: the auditor is code, audited by
|
||
ordinary review and CI witnesses, not a seat subject to misdirection.
|
||
- **Q-A3** — **DEFERRED with owner (Jason 2026-09-01)**: the computable
|
||
misdirection metric is designed inside the mechanical audit tooling ruled by
|
||
Q-A1; owner = the audit-tooling workstream (lane ledger C2).
|
||
|
||
## Surfaces
|
||
|
||
- **Q-N1** — **DEFERRED with owner (Jason 2026-09-01)**: technical
|
||
investigation of the in-browser OAuth flow (tmux-bridged terminal vs
|
||
server-side) runs before the auth page builds; owner = the auth-page
|
||
workstream (lane ledger D6). ([[AUTHN.1-auth-accounts]])
|
||
- **Q-C1** — **RULED, Jason 2026-09-01: CI witness in the stack repo.** The
|
||
parity matrix becomes a generated artifact with a drift-gate witness
|
||
(contract-9 pattern): CI regenerates the inventory from code and fails on
|
||
divergence from the committed matrix. Flows to [[CLI.1-parity]]; the
|
||
witness itself is E6-return follow-up work.
|
||
|
||
## Governance
|
||
|
||
- **Q-G1** — **RULED, Jason 2026-09-01: both ratified.** L2-D52
|
||
(least-privilege Assignment issuance, closes G1+G2) and the G6 WebUI
|
||
surface-scope fix applied per their return procedures after digest
|
||
re-verification; amendment files flipped to ratified; lane ledger A3/A4
|
||
closed.
|
||
- **Q-G2** — **RULED, Jason 2026-09-01: distinct prefixes at source.**
|
||
Stack keeps D1–D15; the operator DECISION-REGISTER renames to **OD-01…OD-65**
|
||
with a redirect table at the source doc; file-local D-numbering in drafts is
|
||
prohibited going forward (each decision doc declares a unique registry
|
||
prefix, rule lands in [[GOV.1-prd-lifecycle]]). Applied at E6 return for
|
||
stack references; brain-side rename on next DECISION-REGISTER touch.
|
||
- **Q-G3** — **RULED, Jason 2026-09-01: Jason marks; archive in bundle.**
|
||
Graduation is a ratification act — Jason marks it (grill or direct ruling);
|
||
the graduated contract text archives inside the then-current PRD revision
|
||
bundle ([[GOV.4-workstream-contracts]] gains a graduated-set section),
|
||
keeping the frozen-bundle model intact.
|
||
|
||
## Triage-raised (E2 sweep, 2026-08-31)
|
||
|
||
- **Q-T1** — **RULED B, Jason 2026-09-01: "shipped but frozen."** Amend D3 to
|
||
acknowledge federation M1–M3 exist (Step-CA, enrollment, grants, mTLS auth
|
||
guard, ScopeService, list/get/capabilities verbs; M3 landed 2026-06-24/25),
|
||
are excluded from the v1 bar, and are frozen; re-home tracking in
|
||
NORTH_STAR.yaml as a dormant workstream; frozen cert/auth code carries a
|
||
**security re-audit gate** before any resumption. Consequences at E6 return:
|
||
supersession/status banners on the three stale docs (root MISSION-MANIFEST,
|
||
federation/MISSION-MANIFEST, scratchpads/mvp-20260312), reconcile
|
||
guides/deployment.md with D15, NORTH_STAR.yaml dormant entry. The P5
|
||
scope ambiguity (governance-federation vs shipped mTLS-query federation)
|
||
stays open inside the future federation PRD, not rev1. Evidence: lane
|
||
`FEDERATION-DOSSIER-2026-08-31.md`.
|
||
- **Q-T2** — **RULED, Jason 2026-09-01: all three re-ratified** into the
|
||
rev1 decision map ([[GOV.3-decision-map]] §re-ratified orphans): "No Python"
|
||
in the monorepo; Matrix/MACP exactly-three-install-modes with Mode A
|
||
(split-domain) primary; OpenBrain excluded from consolidation scope. The
|
||
Matrix ruling's open DNS/domain prerequisite gets its own row (Q-T6).
|
||
- **Q-T3** — **RULED (partial), Jason 2026-09-01: coalesce under the
|
||
STRUCTURE-CANON name.** MOSAIC-CANON's more comprehensive content is
|
||
authoritative; `STRUCTURE-CANON.md` is the logical surviving document name;
|
||
the two coalesce into one. Conflict report delivered and all six
|
||
decision points ruled (grill round 8, 2026-09-01): per-seat credential
|
||
slots win; doc paths corrected to `fleet/auth/`/`fleet/memory/`;
|
||
ENTITY.md/README.md stay required with a 42-seat backfill task; merge
|
||
executed with the full reference sweep, MOSAIC-CANON reduced to a pointer
|
||
shim. Record: lane `CANON-COALESCENCE-2026-09-01.md`. Operator-side; not a
|
||
rev1 blocker.
|
||
- **Q-T4** — **RULED, Jason 2026-09-01, two parts.**
|
||
**(a) Two independent axes**: "Standalone/Enterprise" in the S2 corpus is a
|
||
multi-tenancy/isolation _mode_ (`platform_mode`, D3/D11); D15's "compose
|
||
standalone tier" is deployment _packaging_. Orthogonal. rev1 text always
|
||
says "standalone mode" vs "compose tier"; mode-conversion.md needs a
|
||
terminology note only, not a rewrite.
|
||
**(b) Own track, rev1 cites**: rev1 ratifies citing the nine contracts as
|
||
DRAFT successor material with status noted; each contract ratifies on its
|
||
own PR when its family lands. Extraction record: lane
|
||
`S2-EXTRACTION-2026-08-31.md`.
|
||
- **Q-T5** — **RULED, Jason 2026-09-01: scope to files.** Adopted wording:
|
||
"Generated settings _files_ are projections of the active Role Revision,
|
||
never authority (L2-D19). DB settings records written through audited
|
||
Gateway commands (`platform_mode`, `registration_mode`, `custody_config`,
|
||
`bootstrap.seed-company-name`, and their successors) are records of
|
||
authority like any other SOT row." No corpus conflict remains. Case law:
|
||
contract 1 §5.4, contract 8 §2.4, contract 9 §3.2.
|
||
- **Q-T6** — **DEFERRED with owner (Jason 2026-09-01)**: the Matrix/MACP
|
||
Mode A DNS/domain prerequisite (`archive/planning/matrix-macp/rfc-001:428`)
|
||
rules before any Matrix install work resumes; owner = whoever reopens
|
||
Matrix. Until then Mode A is primary-on-paper only.
|
||
|
||
## Deferred-by-scope (recorded, not blocking rev1)
|
||
|
||
- Federation design (D3 — roadmap placeholder; nothing in v1 may foreclose it).
|
||
_Q-T1 ruled B (2026-09-01): D3 to be amended — M1–M3 acknowledged, frozen,
|
||
security re-audit gate before resumption; design itself stays deferred._
|
||
- OS/kernel-level seat sandboxing (explicit lane non-goal; role-lane
|
||
discipline, not process containment).
|