Skip to content

docs(product): design server-side forge-write scope enforcement (RIG-2679 B) - #601

Open
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-server/rig-2679-forge-scope-enforcement
Open

docs(product): design server-side forge-write scope enforcement (RIG-2679 B)#601
rigel-mintaka wants to merge 2 commits into
mainfrom
compass-server/rig-2679-forge-scope-enforcement

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

The deferred A8 forge-write scope control: a server-side per-account allowlist
(account_forge_scopes table) checked by requireForgeScope in every write arm of
ExecuteForgeCallAsAccount — after coordinate resolution, on create arms after
the F3 idempotency-memo check, before any provider call — rejecting out-of-scope
targets as the in-band ForgeCallError{code:"not_found"}, byte-identical to the
403/404 flatten (no probe oracle). Gated by ForgeConfig.EnforceScopes: off for
Dogfood, mandatory for Beta.

design-critic pass folded (6 findings). OQ-1 (fail-open vs fail-closed default)
deferred to Matt at freeze. Ledger row proposed (Ledger-impact declared; applied
at freeze), next free id DL-242.

Status: Draft.

Ledger-impact: deferred to freeze (adds one Comms & tools row; amends DL-200's
inherited no-scope-rejection A8 clause without superseding it).

…2679 B)

The deferred A8 forge-write scope control: a server-side per-account allowlist
(account_forge_scopes table) checked by requireForgeScope in every write arm of
ExecuteForgeCallAsAccount — after coordinate resolution, on create arms after
the F3 idempotency-memo check, before any provider call — rejecting out-of-scope
targets as the in-band ForgeCallError{code:"not_found"}, byte-identical to the
403/404 flatten (no probe oracle). Gated by ForgeConfig.EnforceScopes: off for
Dogfood, mandatory for Beta.

design-critic pass folded (6 findings). OQ-1 (fail-open vs fail-closed default)
deferred to Matt at freeze. Ledger row proposed (Ledger-impact declared; applied
at freeze), next free id DL-242.

Status: Draft.

Ledger-impact: deferred to freeze (adds one Comms & tools row; amends DL-200's
inherited no-scope-rejection A8 clause without superseding it).
@linear-code

linear-code Bot commented Aug 25, 2026

Copy link
Copy Markdown

RIG-2679

@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-server-rig-2679-forg.compass-eng-docs.pages.dev

Deployed from compass-server/rig-2679-forge-scope-enforcement at 20634fb.

Changed pages:

…9 B)

Review PR #601 (2 low, advisory on a design record):
- L1: reword the Ledger-impact amend attribution — the A8 no-scope posture
  lives in DL-200's implementing comment (forge.go:16-18) tracing to the
  board 'Resolved decision 2' ruling, not in the DL-200 row text.
- L2: name the exhaustiveness test's residual (a mis-classified write arm)
  and add the T2 signature cross-check (read/unimplemented sets hold only
  no-caller handlers) that closes it structurally, in §A3 and T2.

Ledger-impact: deferred to freeze
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.

1 participant