/** * [ref] A10:composition root 分段 —— per-principal 运行期准入([ref] §K caps 客户端)。 * * 纯搬运:函数体逐字来自 `main.ts`(原 1520-1577 行),缩进不变;新增的只有 import 与包壳。 * * ⚠️ **位置即契约**:必须早于 `RunnerDeps` 装配(core 的 `runtimeCapsResolver` seam 从这里取)与 * `resolveSpec`(scenario/lane 两道 ruling 同一 caps 车)。boot 期那条 scoped-token 误配 warn 也必须 * 留在这里 —— 它是"一次性 boot 诊断",挪到别处会变成每任务噪声或干脆不打。 */ import type { ServiceConfig } from "../config.js"; import type { Logger } from "../observability/logger.js"; import { type EntitlementsResolverFn, type MemoryOptOutVerdictSource } from "../runtime-caps-resolver.js"; export interface RuntimeCapsCtx { config: ServiceConfig; logger: Logger; /** [ref] S-2:`RuntimeCaps.allowMemoryOptOut` 的本地 verdict 源(`backend.memoryOptOutGrant()`; * SQL 后端在场才有,local 车道 undefined)。缺席 ⇒ 本键不合成(零行为差)。 */ memoryOptOutGrant?: MemoryOptOutVerdictSource | undefined; } /** * [ref] §3.1([ref] S-1b)—— `MEMORY_CAPTURE_POLICY=governed` 的**半配置拒启**(`boot/memory-consolidation.ts` * D1 / `boot/retention-lane.ts` 同姿态:安全/合规控件不得半开)。 * * governed 的语义是「per-principal verdict **必答**」:core 对 verdict 缺席一律**拒跑**(fail-closed,部署显式 * 选的方向)。verdict 源**两条**(析取,[ref] 起):①SQL 后端上的 `memory_optout_grant` 表(三层折叠后 * 恒答显式 boolean),②非 dry-run 的 config center 发 `EntitlementRuntimeCaps.allowMemoryOptOut`。 * governed 而两源皆无 ⇒ 每一个 `capture:"off"` 声明都被 core 以 * `memory.capture_optout_denied` 拒掉,而运维看到的只是一台「启动成功、opt-out 全拒」的机器 —— 正是 * 「阀门开着而配不出来 ⇒ 悄悄读成别的」那一形。所以在**启动期**点名:接 SQL 后端(表随中央 * ensureSchema 建)、接非 dry-run center,或改姿态。`open`/`capture-required`/缺席 不依赖源(前者故障放行、 * 后者全拒,都不问 verdict)。 * * ⚠️ center 键 `EntitlementRuntimeCaps.allowMemoryOptOut` 是 settings-schema 的独立小件([ref] §四 开放问题①), * 已到货(1.4.0,[ref])——析取臂已加,dry-run 不算源(不 APPLY 即不 ENFORCE 同律)。 * * 🔴 **[ref] —— 第三臂的辖域**:它证的是「center 这个**源**在场」,**不是**「center 会为每个 principal * **发** `allowMemoryOptOut`」。该键在 settings-schema 里是**可选**的(`z.ZodOptional`), * `toCoreRuntimeCaps` 对缺席不铸键 ⇒ 一台 center 从不发该键的 governed worker 照样起动、然后每一个 * `memory.capture:"off"` 恒拒(core: verdict absent)。这条**不能**在启动期证死(部署级布尔对 per-principal * 的授权说不了话,且 boot 期去问 center 会把拒启挂在一次网络上),所以取「拒启臂放行 + 两处响亮」: * 启动期一行 `memory_capture_governed_center_only_source`(这一形有风险)+ 运行期首次真缺席一行 * (见 `applyGovernedVerdictAbsenceWarning`,一次性、不改判)。 */ export declare function assertMemoryCapturePolicyWirable(input: { policy: ServiceConfig["memoryCapturePolicy"]; grantSourceWired: boolean; centerEntitlementSourceWired?: boolean; }): void; export declare function createRuntimeCaps(ctx: RuntimeCapsCtx): { principalCaps: import("../runtime-caps-resolver.js").PrincipalEntitlementsClient | undefined; centerRuntimeCapsResolver: ((principal: string | undefined) => Promise) | undefined; runtimeCapsResolver: EntitlementsResolverFn | undefined; runtimeCapsPeekResolver: EntitlementsResolverFn | undefined; }; //# sourceMappingURL=runtime-caps.d.ts.map