Skip to content
3 min read · 531 words

Interface: DerivedRules

Defined in: src/batteries/sandbox/types.ts:74

Backend-derived rules used for admission and drift checks, not a model-facing policy.

Properties

PropertyModifierTypeDescriptionDefined in
filesystemDisabledreadonlybooleanWhether the live sandbox has filesystem policy switched off entirely. Remarks A kill switch, and the drift check treats it asymmetrically: true → false is a NARROWING and therefore permitted, while false → true is DRIFT — it bypasses every filesystem rule while every set comparison still passes, which is precisely why it is compared on its own rather than inferred from the path lists.src/batteries/sandbox/types.ts:110
mandatoryDenyreadonly{ allowGitConfig: boolean; dotGitWasDirectory?: boolean; entries: readonly string[]; form: "glob" | "expanded-paths"; searchDepth: number; }Reproduced mandatory denies, with provenance because SRT does not expose this derivation.src/batteries/sandbox/types.ts:94
mandatoryDeny.allowGitConfigreadonlyboolean-src/batteries/sandbox/types.ts:97
mandatoryDeny.dotGitWasDirectory?readonlyboolean-src/batteries/sandbox/types.ts:99
mandatoryDeny.entriesreadonlyreadonly string[]-src/batteries/sandbox/types.ts:96
mandatoryDeny.formreadonly"glob" | "expanded-paths"-src/batteries/sandbox/types.ts:95
mandatoryDeny.searchDepthreadonlynumber-src/batteries/sandbox/types.ts:98
matcherreadonly{ caseInsensitive: boolean; platform: "darwin" | "linux"; readGlobs: "native" | "expanded"; writeGlobs: "native" | "dropped"; }Platform matcher; there is intentionally no win32 arm.src/batteries/sandbox/types.ts:76
matcher.caseInsensitivereadonlybooleanLinux mandatory-deny files are folded; ordinary policy lists are not.src/batteries/sandbox/types.ts:79
matcher.platformreadonly"darwin" | "linux"-src/batteries/sandbox/types.ts:77
matcher.readGlobsreadonly"native" | "expanded"-src/batteries/sandbox/types.ts:80
matcher.writeGlobsreadonly"native" | "dropped"-src/batteries/sandbox/types.ts:81
networkreadonly{ allowedDomains: readonly string[]; deniedDomains: readonly string[]; disabled: boolean; strictAllowlist: boolean; }disabled is an ADK provenance discriminator, not an SRT field.src/batteries/sandbox/types.ts:112
network.allowedDomainsreadonlyreadonly string[]-src/batteries/sandbox/types.ts:114
network.deniedDomainsreadonlyreadonly string[]-src/batteries/sandbox/types.ts:115
network.disabledreadonlyboolean-src/batteries/sandbox/types.ts:113
network.strictAllowlistreadonlyboolean-src/batteries/sandbox/types.ts:116
readreadonly{ allowWithinDeny: readonly string[]; denyOnly: readonly string[]; }Reads are deny-then-allow; allowWithinDeny wins.src/batteries/sandbox/types.ts:84
read.allowWithinDenyreadonlyreadonly string[]-src/batteries/sandbox/types.ts:86
read.denyOnlyreadonlyreadonly string[]-src/batteries/sandbox/types.ts:85
undecidableGlobsreadonlyreadonly string[]Glob forms this derivation could not compile, distinct from pairwise undecidability.src/batteries/sandbox/types.ts:121
unknownKeysreadonlyreadonly string[]Unknown upstream keys are drift signals and fail closed.src/batteries/sandbox/types.ts:119
writereadonly{ allowOnly: readonly string[]; denyWithinAllow: readonly string[]; }Writes are allow-only; denyWithinAllow wins.src/batteries/sandbox/types.ts:89
write.allowOnlyreadonlyreadonly string[]-src/batteries/sandbox/types.ts:90
write.denyWithinAllowreadonlyreadonly string[]-src/batteries/sandbox/types.ts:91