Skip to content

docs(compass): migrate the design corpus, decision ledger, and ledger gate from sealed - #179

Merged
mattwilkinsonn merged 1 commit into
mainfrom
designdocmigration-sea-1794-compass-records
Aug 6, 2026
Merged

docs(compass): migrate the design corpus, decision ledger, and ledger gate from sealed#179
mattwilkinsonn merged 1 commit into
mainfrom
designdocmigration-sea-1794-compass-records

Conversation

@seal-agent

Copy link
Copy Markdown
Contributor

Executes eng-docs T4/T5 (folded from SEA-1794 per Matt's ruling) against the frozen docs/designs/repo/compass-eng-docs/design.md. compass becomes the source of truth for Compass design records; review continues here, not in sealed.

What lands

  • The sanitized design corpus — 41 docs/designs/product/compass-* records + compass.md, plus 3 docs/designs/platform/compass-*. Each ran through the frozen T4 four-class sanitizer (tools/docs-migrate/migrate.ts): linear.app tracker links → bare SEA-<n> ids, oss/compass/ path prefixes stripped, private seal-*.md links de-linked to prose, security sections kept verbatim.
  • The decision ledgerdocs/designs/product/DECISIONS.md, 115 rows (the full ledger minus the two seal-product rows DL-045/046, which stay in a sealed-side residual ledger next to the seal records they cite; frozen Q1). The ## Seal section is dropped here.
  • The ledger gatetools/design-ledger-gate/ ported verbatim (PRODUCT_DIR unchanged), registered as a moon project in .moon/workspace.yml; swept by compass's single moon run :ci (no meta.ts wiring).
  • The specsdocs/specs/product/compass.md + a fresh Compass-only README.md.

Sanitizer gate fix

The T4 gate flagged a bare linear.app hostname literal in a proto-field comment (compass-issue-model) as residue, though the policy target is tracker links (https://linear.app/…), not a documented SaaS host string in fenced code. Narrowed the gate's linear check to the tracker-URL form the transforms actually strip — symmetric with the seal/oss checks — with two-sided red-green tests (bare literal passes, a real tracker URL still reds).

Verification

  • moon run design-ledger-gate:ci green: gate OK — 115 ledger rows, 41 record headers valid; 71 unit tests pass. The cut is edge-clean (zero severed supersession edges, zero dangling Record links).
  • bun install --frozen-lockfile clean; markdownlint 0 errors; biome clean.
  • NOTE: the eng-docs gather.ts is still a T1 stub (T2 unmerged), so the docsite renders a placeholder, not this corpus — the corpus is gated by design-ledger-gate + markdownlint; docsite rendering follows when T2 lands.

This is PR 1 of 2. The companion sealed PR (delete side) must merge AFTER this one.

Refs SEA-1794
Refs SEA-1767

Co-authored-by: Matt Wilkinson matt@sealedsecurity.com

@linear-code

linear-code Bot commented Aug 6, 2026

Copy link
Copy Markdown

SEA-1794

SEA-1767

… gate from sealed

Executes eng-docs T4/T5 (folded from SEA-1794 per Matt's ruling) against the frozen `docs/designs/repo/compass-eng-docs/design.md`. compass becomes the source of truth for Compass design records; review continues here, not in sealed.

## What lands

- **The sanitized design corpus** — 42 `docs/designs/product/compass-*` records + `compass.md`, plus 3 `docs/designs/platform/compass-*`. Each ran through the frozen T4 four-class sanitizer (`tools/docs-migrate/migrate.ts`): linear.app tracker links → bare `SEA-<n>` ids, `oss/compass/` path prefixes stripped, private `seal-*.md` links de-linked to prose, security sections kept verbatim.
- **The decision ledger** — `docs/designs/product/DECISIONS.md`, 123 rows (the full ledger minus the two seal-product rows DL-045/046, which stay in a sealed-side residual ledger; frozen Q1). The `## Seal` section is dropped here.
- **The ledger gate** — `tools/design-ledger-gate/` ported verbatim (`PRODUCT_DIR` unchanged), registered as a moon project in `.moon/workspace.yml`; swept by compass's single `moon run :ci`.
- **The specs** — `docs/specs/product/compass.md` + a fresh Compass-only `README.md`.

## Ledger reconciliation (SEA-1738 batteries bundle)

The `compass-batteries-included` record + its 8 ledger rows merged to sealed main (SEA-1738) after this migration's branch-cut, and its rows DL-135..142 collided with the migrating manager rows DL-135..139. Per Matt's ruling, the batteries rows are renumbered +5 → DL-140..147 (a uniform shift scoped strictly to the batteries record + its 8 rows), including the immutable in-cell cross-refs and the Record-cell anchor slugs; the manager rows keep DL-135..139. No id collision remains.

## Sanitizer gate fix

The T4 gate flagged a bare `linear.app` hostname literal in a proto-field comment as residue, though the policy target is tracker *links* (`https://linear.app/…`), not a documented host string in fenced code. Narrowed the gate's linear check to the tracker-URL form the transforms strip — symmetric with the seal/oss checks — with two-sided red-green tests.

## Verification

- `moon run design-ledger-gate:ci` green: gate OK — 123 ledger rows, 42 record headers valid; 71 unit tests pass; edge-clean (zero severed supersession edges, zero dangling Record links); zero duplicate ids.
- `bun install --frozen-lockfile` clean; markdownlint 0 errors; biome clean.
- NOTE: the eng-docs `gather.ts` is still a T1 stub (T2 unmerged), so the docsite renders a placeholder, not this corpus — the corpus is gated by design-ledger-gate + markdownlint; docsite rendering follows when T2 lands.

This is PR 1 of 2. The companion sealed PR (delete side) must merge AFTER this one.

Refs SEA-1794
Refs SEA-1767

Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com>
@seal-agent
seal-agent force-pushed the designdocmigration-sea-1794-compass-records branch from 68c9fc9 to 7caaf0c Compare August 6, 2026 03:13
@mattwilkinsonn
mattwilkinsonn merged commit 8829312 into main Aug 6, 2026
1 check passed
@mattwilkinsonn
mattwilkinsonn deleted the designdocmigration-sea-1794-compass-records branch August 6, 2026 13:51
seal-agent added a commit that referenced this pull request Aug 7, 2026
…(SEA-1731)

Corrects the frozen `compass-server-ownership-layer-amendment` record so its §A1 add-list matches the shipped A1 proto (PR #149): the forge notification/carrier types (`ForgeNotification`/`ForgeNotificationKind`, `ForgeArtifactKind`, `CommentRef`) live in a new internal-only leaf `proto/compass/v1/forge.proto` that imports only `compass.proto`, **not** in `agent_gateway.proto` as #995 T1 and this record's original text directed — that placement is a circular import (`agent_gateway.proto` already imports `agent.proto`, so `agent.proto` referencing an `agent_gateway.proto` type is a cycle `buf` rejects). The `ForgeCall*` carrier + op requests stay in `agent_gateway.proto`; the leaf is imported acyclically by `agent.proto`/`agent_gateway.proto`/`runner.proto`. Wire contract, field numbers, and generated names are unchanged — placement only.

Rewrites the "one structural consequence" section to "two structural consequences" (the cross-file import **plus** the new leaf), updates the T1 add-list and the row-13 disposition, and adds the ledger row for the placement decision.

This correction was originally authored as a sealed PR (#1095) against the design corpus while it lived in `sealedsecurity/sealed`. #179 (SEA-1794) migrated the corpus + decision ledger + ledger gate into this repo, so the correction is re-homed here and #1095 is closed. The decision takes **DL-148** — allocated above the current ledger max after the migration (DL-130 in this repo is an unrelated role-prompts decision).

Refs SEA-1731

Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants