docs(design): convert hard tabs to spaces in SEA-1442 sentinels record - #289
Open
seal-agent wants to merge 1 commit into
Open
docs(design): convert hard tabs to spaces in SEA-1442 sentinels record#289seal-agent wants to merge 1 commit into
seal-agent wants to merge 1 commit into
Conversation
seal-agent
added a commit
that referenced
this pull request
Aug 12, 2026
Add `docs/operations/dogfood-provisioning.md` — a step-by-step runbook for bringing a Compass **server + runner** pair up on a single host over the authenticated TLS network door, using only the binaries this repository already ships (`compass-server`, `compass-runner`, `compass-mint-runner-token`, `compass-gen-cert` under `go/cmd/`). No new tooling. Scope is the loopback bring-up that produces the `https://127.0.0.1:8443` door. Serving it onto a tailnet and baking the UI bundle are called out as separate downstream steps that consume this door, not covered here. Contents: - **Prerequisites** — fail-fast, each tied to the exact enforcing code path (Go toolchain, a reachable Postgres + DSN, state dir). - **Two-shell bring-up** — server (Shell 1) and runner (Shell 2), both foreground/long-lived, with cert generation, runner-token minting, and runner-trust steps. - **Verify** — `curl` against the door (no reflection service is registered, so `grpcurl` is not an option), plus the ListAccounts-over-socket step that yields the bootstrap-admin account id. - **Accepted-risk** notes on runner-token lifetime and single-operator exposure. Every code citation is source-verified against the current tree. State-dir creation follows the ruled `mkdir -p "$STATE" && chmod 700 "$STATE"` form (not `mkdir -m 700`). Stacked on #289 (`compass-runner-1442-doc-tabs`): this is a docs PR, so the whole-repo markdownlint CI gate runs and would red on main's pre-existing hard-tab errors in the SEA-1442 sentinels record until #289 lands. Files are disjoint (this PR touches only the new runbook). **Merge order: #289 first, then this PR.** Once #289 merges I will rebase this onto main and re-verify CI. Verified: CI-exact whole-repo `moon run root:markdownlint` = 0 errors across 84 files on this stacked tree. Spec-impact: none. Refs SEA-1943. Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com> tmp
seal-agent
added a commit
that referenced
this pull request
Aug 12, 2026
Add `docs/operations/dogfood-provisioning.md` — a step-by-step runbook for bringing a Compass **server + runner** pair up on a single host over the authenticated TLS network door, using only the binaries this repository already ships (`compass-server`, `compass-runner`, `compass-mint-runner-token`, `compass-gen-cert` under `go/cmd/`). No new tooling. Scope is the loopback bring-up that produces the `https://127.0.0.1:8443` door. Serving it onto a tailnet and baking the UI bundle are called out as separate downstream steps that consume this door, not covered here. Contents: - **Prerequisites** — fail-fast, each tied to the exact enforcing code path (Go toolchain, a reachable Postgres + DSN, state dir). - **Two-shell bring-up** — server (Shell 1) and runner (Shell 2), both foreground/long-lived, with cert generation, runner-token minting, and runner-trust steps. - **Verify** — `curl` against the door (no reflection service is registered, so `grpcurl` is not an option), plus the ListAccounts-over-socket step that yields the bootstrap-admin account id. - **Accepted-risk** notes on runner-token lifetime and single-operator exposure. Every code citation is source-verified against the current tree. State-dir creation follows the ruled `mkdir -p "$STATE" && chmod 700 "$STATE"` form (not `mkdir -m 700`). Stacked on #289 (`compass-runner-1442-doc-tabs`): this is a docs PR, so the whole-repo markdownlint CI gate runs and would red on main's pre-existing hard-tab errors in the SEA-1442 sentinels record until #289 lands. Files are disjoint (this PR touches only the new runbook). **Merge order: #289 first, then this PR.** Once #289 merges I will rebase this onto main and re-verify CI. Verified: CI-exact whole-repo `moon run root:markdownlint` = 0 errors across 84 files on this stacked tree. Spec-impact: none. Refs SEA-1943. Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com> tmp tmp2
seal-agent
added a commit
that referenced
this pull request
Aug 12, 2026
Add `docs/operations/dogfood-provisioning.md` — a step-by-step runbook for bringing a Compass **server + runner** pair up on a single host over the authenticated TLS network door, using only the binaries this repository already ships (`compass-server`, `compass-runner`, `compass-mint-runner-token`, `compass-gen-cert` under `go/cmd/`). No new tooling. Scope is the loopback bring-up that produces the `https://127.0.0.1:8443` door. Serving it onto a tailnet and baking the UI bundle are called out as separate downstream steps that consume this door, not covered here. Contents: - **Prerequisites** — fail-fast, each tied to the exact enforcing code path (Go toolchain, a reachable Postgres + DSN, state dir). - **Two-shell bring-up** — server (Shell 1) and runner (Shell 2), both foreground/long-lived, with cert generation, runner-token minting, and runner-trust steps. - **Verify** — `curl` against the door (no reflection service is registered, so `grpcurl` is not an option), plus the ListAccounts-over-socket step that yields the bootstrap-admin account id. - **Accepted-risk** notes on runner-token lifetime and single-operator exposure. Every code citation is source-verified against the current tree. State-dir creation follows the ruled `mkdir -p "$STATE" && chmod 700 "$STATE"` form (not `mkdir -m 700`). Stacked on #289 (`compass-runner-1442-doc-tabs`): this is a docs PR, so the whole-repo markdownlint CI gate runs and would red on main's pre-existing hard-tab errors in the SEA-1442 sentinels record until #289 lands. Files are disjoint (this PR touches only the new runbook). **Merge order: #289 first, then this PR.** Once #289 merges I will rebase this onto main and re-verify CI. Verified: CI-exact whole-repo `moon run root:markdownlint` = 0 errors across 84 files on this stacked tree. Spec-impact: none. Refs SEA-1943. Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com> tmp tmp2 tmp3
seal-agent
added a commit
that referenced
this pull request
Aug 12, 2026
Add `docs/operations/dogfood-provisioning.md` — a step-by-step runbook for bringing a Compass **server + runner** pair up on a single host over the authenticated TLS network door, using only the binaries this repository already ships (`compass-server`, `compass-runner`, `compass-mint-runner-token`, `compass-gen-cert` under `go/cmd/`). No new tooling. Scope is the loopback bring-up that produces the `https://127.0.0.1:8443` door. Serving it onto a tailnet and baking the UI bundle are called out as separate downstream steps that consume this door, not covered here. Contents: - **Prerequisites** — fail-fast, each tied to the exact enforcing code path (Go toolchain, a reachable Postgres + DSN, state dir). - **Two-shell bring-up** — server (Shell 1) and runner (Shell 2), both foreground/long-lived, with cert generation, runner-token minting, and runner-trust steps. - **Verify** — `curl` against the door (no reflection service is registered, so `grpcurl` is not an option), plus the ListAccounts-over-socket step that yields the bootstrap-admin account id. - **Accepted-risk** notes on runner-token lifetime and single-operator exposure. Every code citation is source-verified against the current tree. State-dir creation follows the ruled `mkdir -p "$STATE" && chmod 700 "$STATE"` form (not `mkdir -m 700`). Stacked on #289 (`compass-runner-1442-doc-tabs`): this is a docs PR, so the whole-repo markdownlint CI gate runs and would red on main's pre-existing hard-tab errors in the SEA-1442 sentinels record until #289 lands. Files are disjoint (this PR touches only the new runbook). **Merge order: #289 first, then this PR.** Once #289 merges I will rebase this onto main and re-verify CI. Verified: CI-exact whole-repo `moon run root:markdownlint` = 0 errors across 84 files on this stacked tree. Spec-impact: none. Refs SEA-1943. Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com> tmp tmp2 tmp3
seal-agent
added a commit
that referenced
this pull request
Aug 12, 2026
Add `docs/operations/dogfood-provisioning.md` — a step-by-step runbook for bringing a Compass **server + runner** pair up on a single host over the authenticated TLS network door, using only the binaries this repository already ships (`compass-server`, `compass-runner`, `compass-mint-runner-token`, `compass-gen-cert` under `go/cmd/`). No new tooling. Scope is the loopback bring-up that produces the `https://127.0.0.1:8443` door. Serving it onto a tailnet and baking the UI bundle are called out as separate downstream steps that consume this door, not covered here. Contents: - **Prerequisites** — fail-fast, each tied to the exact enforcing code path (Go toolchain, a reachable Postgres + DSN, state dir). - **Two-shell bring-up** — server (Shell 1) and runner (Shell 2), both foreground/long-lived, with cert generation, runner-token minting, and runner-trust steps. - **Verify** — `curl` against the door (no reflection service is registered, so `grpcurl` is not an option), plus the ListAccounts-over-socket step that yields the bootstrap-admin account id. - **Accepted-risk** notes on runner-token lifetime and single-operator exposure. Every code citation is source-verified against the current tree. State-dir creation follows the ruled `mkdir -p "$STATE" && chmod 700 "$STATE"` form (not `mkdir -m 700`). Stacked on #289 (`compass-runner-1442-doc-tabs`): this is a docs PR, so the whole-repo markdownlint CI gate runs and would red on main's pre-existing hard-tab errors in the SEA-1442 sentinels record until #289 lands. Files are disjoint (this PR touches only the new runbook). **Merge order: #289 first, then this PR.** Once #289 merges I will rebase this onto main and re-verify CI. Verified: CI-exact whole-repo `moon run root:markdownlint` = 0 errors across 84 files on this stacked tree. Spec-impact: none. Refs SEA-1943. Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com> tmp tmp2 tmp3 tmp4
seal-agent
force-pushed
the
compass-runner-1442-doc-tabs
branch
from
August 13, 2026 00:43
9c8a708 to
f3f83d6
Compare
The Go code fences in the compass-runner gateway/operator-fault error sentinels design record carried literal tabs (pasted from gofmt output), tripping markdownlint MD010/no-hard-tabs on the push-to-main full sweep. Convert the 17 leading tabs to spaces at 2-per-indent-level, matching the universal repo convention for Go fences in design docs. Content-preserving; no change to the frozen contract. Co-authored-by: Matt Wilkinson <matt@rigel.build>
seal-agent
force-pushed
the
compass-runner-1442-doc-tabs
branch
from
August 13, 2026 00:45
f3f83d6 to
5888b39
Compare
seal-agent
added a commit
that referenced
this pull request
Aug 13, 2026
…or first turn (SEA-1820 case-1)
## What
Design record for **SEA-1820 case-1**: the `@compass` system-sender representation and the root-supervisor first-turn Setup-thread flow. The merged first-turn-delivery record froze the *mechanism* (`@compass` = the system-sender alias) and scoped these two things out to this follow-up; this record decides exactly them.
Pure design — no code. `docs/designs/product/compass-system-sender-first-turn/design.md`.
## Decisions (Matt-ruled on the draft; folded, frozen on merge)
- **(A) `@compass` representation — a dedicated `system` account type.** A third first-class account shape alongside user and agent (not a `user_accounts` subtype, not a bare `accounts` row), mirroring the existing subtype pattern end to end: a `system_accounts` table, `Account.System`, a third `scanAccount` arm + `LEFT JOIN`, a proto `SystemAccount system = 12` oneof case (+ regen), a third `accountToWire` arm, and a UI arm. Seeded at startup via an idempotent `EnsureSystemAccount` beside `BootstrapAdmin`. The win over a user-subtype: a system row rides only the shared-channel `EXISTS` disjunct in `accountVisibleFromWhere`, so it is cleanly out of BOTH the `ListAccounts` directory and `GetRoster` (agent-only INNER JOIN) with no added exclusion clause. Never-a-deliver-recipient stays **structural** (no `agent_accounts` row ⇒ absent from the agent-only delivery JOIN; pinned by guard tests). Reserved-handle guard (positive grammar + the server's reserved-mention names) + an `IssueToken` refusal make it un-registrable and un-authenticatable.
- **(B) Setup-thread flow** — `postSetupThread` fired from `seedRootSupervisor` on both up-arms, idempotent via a **supervisor-scoped** `client_request_id` (immune to a recreated supervisor), posted as `@compass` into the supervisor's home channel from a `go:embed`'d `setup_thread.md`, riding the built deliver lane. Membership is ensured via a new idempotent `EnsureChannelMember` (not `UpdateChannelMembers`, which chicken-and-egg-gates on the actor already being a member).
- **T-BL absorbs the parent barrier-lift.** The Setup delivery depends on the fresh-start replay barrier being lifted, which is unbuilt on main (no production sender of `AgentControl{replay_complete}`; agent barrier defaults closed). Matt ruled this record's implementation builds it — a Runner fresh-start `replay_complete` send (the TS agent side is already built) — as **T-BL, ordered before T4**.
Plan is T1–T6 + T-BL (T1–T4 + T-BL server/runner lane, T5 compass-ui REQUIRED — the wire shape changes, T6 driver ledger).
## Review posture
Drafted, red-teamed by a `design-critic` pass (per `skill://design`), and reviewed by a `review` agent (0 high / 3 medium / 1 low, all folded). The load-bearing red-team find — the unbuilt fresh-start barrier — is now T-BL above. The three freeze-gating Open Questions were batched to Matt and ruled: OQ-2 (system account type, above), OQ-6 (absorb T-R3 as T-BL), OQ-1 (ledger reconciliation — renumber the parent's four never-landed first-turn rows DL-187..190 + a mapping note, never editing frozen prose; this record's rows follow as DL-191..192). All three are recorded under **Resolved decisions**, not left open. Remaining Open Questions (OQ-4/5/7) are explicit non-load-bearing deferrals.
## CI note
Base is `main@origin` which currently carries a **pre-existing shared markdownlint red** — 17 MD010 hard-tab errors in `docs/designs/platform/compass-runner-gateway-error-sentinels/design.md`, **not this PR's file** (this record lints clean: `markdownlint-cli2` → `0 issues`). That red is fixed by #289 and lifts for every compass PR when #289 merges. It is not a failure of this diff.
Spec-impact: none (product design record; no proto/spec surface changed).
Ledger-impact: none in this PR — the ledger rows (T6) are gated on OQ-1's reconciliation and land in a follow-up per the record; this PR adds a design record only and declares no `DECISIONS.md` delta yet.
Refs SEA-1820.
Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com>
seal-agent
added a commit
that referenced
this pull request
Aug 13, 2026
…or first turn (SEA-1820 case-1)
## What
Design record for **SEA-1820 case-1**: the `@compass` system-sender representation and the root-supervisor first-turn Setup-thread flow. The merged first-turn-delivery record froze the *mechanism* (`@compass` = the system-sender alias) and scoped these two things out to this follow-up; this record decides exactly them.
Pure design — no code. `docs/designs/product/compass-system-sender-first-turn/design.md`.
## Decisions (Matt-ruled on the draft; folded, frozen on merge)
- **(A) `@compass` representation — a dedicated `system` account type.** A third first-class account shape alongside user and agent (not a `user_accounts` subtype, not a bare `accounts` row), mirroring the existing subtype pattern end to end: a `system_accounts` table, `Account.System`, a third `scanAccount` arm + `LEFT JOIN`, a proto `SystemAccount system = 12` oneof case (+ regen), a third `accountToWire` arm, and a UI arm. Seeded at startup via an idempotent `EnsureSystemAccount` beside `BootstrapAdmin`. The win over a user-subtype: a system row rides only the shared-channel `EXISTS` disjunct in `accountVisibleFromWhere`, so it is cleanly out of BOTH the `ListAccounts` directory and `GetRoster` (agent-only INNER JOIN) with no added exclusion clause. Never-a-deliver-recipient stays **structural** (no `agent_accounts` row ⇒ absent from the agent-only delivery JOIN; pinned by guard tests). Reserved-handle guard (positive grammar + the server's reserved-mention names) + an `IssueToken` refusal make it un-registrable and un-authenticatable.
- **(B) Setup-thread flow** — `postSetupThread` fired from `seedRootSupervisor` on both up-arms, idempotent via a **supervisor-scoped** `client_request_id` (immune to a recreated supervisor), posted as `@compass` into the supervisor's home channel from a `go:embed`'d `setup_thread.md`, riding the built deliver lane. Membership is ensured via a new idempotent `EnsureChannelMember` (not `UpdateChannelMembers`, which chicken-and-egg-gates on the actor already being a member).
- **T-BL absorbs the parent barrier-lift.** The Setup delivery depends on the fresh-start replay barrier being lifted, which is unbuilt on main (no production sender of `AgentControl{replay_complete}`; agent barrier defaults closed). Matt ruled this record's implementation builds it — a Runner fresh-start `replay_complete` send (the TS agent side is already built) — as **T-BL, ordered before T4**.
Plan is T1–T6 + T-BL (T1–T4 + T-BL server/runner lane, T5 compass-ui REQUIRED — the wire shape changes, T6 driver ledger).
## Review posture
Drafted, red-teamed by a `design-critic` pass (per `skill://design`), and reviewed by a `review` agent (0 high / 3 medium / 1 low, all folded). The load-bearing red-team find — the unbuilt fresh-start barrier — is now T-BL above. The three freeze-gating Open Questions were batched to Matt and ruled: OQ-2 (system account type, above), OQ-6 (absorb T-R3 as T-BL), OQ-1 (ledger reconciliation — renumber the parent's four never-landed first-turn rows DL-187..190 + a mapping note, never editing frozen prose; this record's rows follow as DL-191..192). All three are recorded under **Resolved decisions**, not left open. Remaining Open Questions (OQ-4/5/7) are explicit non-load-bearing deferrals.
## CI note
Base is `main@origin` which currently carries a **pre-existing shared markdownlint red** — 17 MD010 hard-tab errors in `docs/designs/platform/compass-runner-gateway-error-sentinels/design.md`, **not this PR's file** (this record lints clean: `markdownlint-cli2` → `0 issues`). That red is fixed by #289 and lifts for every compass PR when #289 merges. It is not a failure of this diff.
Spec-impact: none (product design record; no proto/spec surface changed).
Ledger-impact: none in this PR — the ledger rows (T6) are gated on OQ-1's reconciliation and land in a follow-up per the record; this PR adds a design record only and declares no `DECISIONS.md` delta yet.
Refs SEA-1820.
Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Go code fences in the compass-runner gateway/operator-fault error
sentinels design record carried literal tabs (pasted from gofmt output),
tripping markdownlint MD010/no-hard-tabs on the push-to-main full sweep.
Convert the 17 leading tabs to spaces at 2-per-indent-level, matching the
universal repo convention for Go fences in design docs. Content-preserving;
no change to the frozen contract.
Co-authored-by: Matt Wilkinson matt@rigel.build