sovereign-mamba / src /policyGate.ts
SNAPKITTYWEST's picture
Add sovereign-mamba source: Modelfile, kernel Prolog gates, sovereign_crypto Rust, Lean4, corpus policy
0427fad verified
Raw
History Blame Contribute Delete
1.33 kB
import { TrustDeed } from "./trustDeed.js";
import { Syscall } from "./syscall.js";
export type GateDecision = {
syscall: Syscall;
status: "ALLOW" | "REJECT" | "APPROVAL_REQUIRED";
reason: string;
requiresReceipt: boolean;
};
export function checkSyscall(
deed: TrustDeed,
syscall: Syscall
): GateDecision {
const policy = deed.allowed_syscalls[syscall];
if (!policy) {
return {
syscall,
status: "REJECT",
reason: "Syscall is not defined in trust deed.",
requiresReceipt: true
};
}
if (!policy.enabled) {
return {
syscall,
status: policy.requires_approval ? "APPROVAL_REQUIRED" : "REJECT",
reason: "Syscall is disabled by trust deed.",
requiresReceipt: policy.requires_receipt
};
}
if (policy.requires_approval) {
return {
syscall,
status: "APPROVAL_REQUIRED",
reason: "Syscall requires explicit approval.",
requiresReceipt: policy.requires_receipt
};
}
return {
syscall,
status: "ALLOW",
reason: "Syscall allowed by trust deed.",
requiresReceipt: policy.requires_receipt
};
}
export function checkAllSyscalls(
deed: TrustDeed,
syscalls: Syscall[]
): GateDecision[] {
return syscalls.map((s) => checkSyscall(deed, s));
}