Skip to content

PersistedApprovalGrantsOptions

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/core/approvals/grants.ts:894

Optional seams for PersistedApprovalGrants.

optional holds?: "approvals" | "refusals"

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/core/approvals/grants.ts:929

[[EXT-143]] — what this file holds, in the noun a user reads in a load-failure notice (unreadableFileNotice, skippedEntriesNotice). The allow store passes 'approvals' and the deny store 'refusals'.

It is a word, not a behaviour, and that is what keeps the class list-agnostic: nothing here reads it, compares against it or decides by it. A store still never learns which list it is — the file path decides that and the runner decides which list it hands to the matcher — but a message that could not name what was lost would be a message the reader cannot act on, since the two files fail in opposite directions.

Omitting it is safe: savedNoun then says something true of either file rather than guessing. What is NOT safe is defaulting it to one side, so it does not.


optional legacyPrefixMigration?: boolean

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/core/approvals/grants.ts:914

Whether a file holding the v1 prefixes array is migrated to exact entries. True by default, and set false by the deny store ([[EXT-107]]), for two independent reasons:

  • prefixes was never a format on the deny side. A deny file carrying one was hand-written by analogy, and turning a guess into standing refusals — with a notice worded for saved approvals, which is the only notice there is — would report a migration that did not describe what happened.
  • A migration WRITES. The deny store is read at every rung, bypass included, because a refusal is resolved before the bypass return; the allow store is not read there precisely so that a session with the gate switched off never rewrites the project’s grant file. Leaving this on would give the deny store the one load path that writes.

optional onNotice?: (notice) => void

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/core/approvals/grants.ts:900

Where the v1→v2 migration notice goes — the established ShellApprovalGateNotice shape the runner forwards to statusUpdate. Absent means the migration happens silently, which is why the runner always passes one.

ShellApprovalGateNotice

void