/** * S-167(clay 裁定 2,[ref] 转达 / [ref] ②)—— **READ 容纳面档位的来源**(单一属主)。 * * ## 它解决的问题 * * `READ_FACE` 此前只有「显式设了就铸、缺席就不铸」两态,而**缺席**这一态里其实塞了两件完全不同的事: * · 单机 turnkey(`REQUIRE_PRINCIPAL` 未设,CC 的信任模型:一台机器一个可信主人)—— 运维没表态是因为 * 他压根不认为工作区外的读需要围栏;引擎默认的 `roots` 于是成了一道**没人要求过**的墙(clay 裁: * 「工作区外读默认放行(单机形)」)。 * · 多租户 —— 缺席就是缺席,引擎默认 `roots` 正是想要的收敛姿态。 * * 于是本模块把「档位」与「档位是谁定的」拆成两个字段:值仍是 `open | roots | 缺席`,来源是本文件的 * **四词闭集**。来源不是装饰: * ① `config-center/read-face.ts` 的 **env 恒赢**判据此前用的是「`config.readFace` 键在不在场」这个 * **代理**;posture 会铸键,代理当场失真(center 的 face 会被一台从没设过 env 的机器挡掉)。 * 换成读来源之后判据说的就是它真正想说的那件事:**这台机器的 env 显式占住了这个键吗**。 * ② 运维面:`GET /v1/diagnostics/wiring` 报 `{face, source, note}`,「为什么这台机器是 open」有答案 * (裁定的补偿项:升级即放开,得让运维看得见并知道怎么钉回)。 * * ## 优先序(三态,与 `config.ts` 的 `postureOn` 同形) * `env 显式` > `center 发布` > `posture 派生` > `引擎默认`。env 恒赢的论证逐字见 `config-center/read-face.ts` * 头注①(READ 容纳面描述的是**这台机器的磁盘上有什么**,组织的下发面不知道)。 * * ## 定界 * 本模块**只**管 `face` 一档。内建读拒表(`readDenyPatterns` / `readDenyBuiltinTiers` / * `readDenyBuiltinExclude`)一个字节不动 —— 放开容纳面不等于放开那几档 deny,两者在 core 里是**并列 * 机制**(有活行的 deny 表在 open 面上照样拦)。 * ⚠️ **但别把这句话读成「凭证/shell 历史/钱包那几档一直在岗」**:core 7.22.0([ref])起内建表的**缺省 * 选择是空** —— 一台没写 `READ_DENY_BUILTIN_TIERS` 的部署上,那张表**一行都不生效**(要老姿态就显式写 * `credentials,browser,wallet,agent-config`;运维面全文见 `docs/DEPLOY-PREREQS.md` 的 core 7.22.0 段)。 * 本模块的定界不变,变的是「并列的那一侧默认开着」这个**前提**。core 的 `config.read_face_deployment_clamped` * (只读挂载钳制)同样不受本件影响。 */ import { type PostureSource } from "./posture-source.js"; /** * 档位来源的闭集词表 —— **S-178 起转 `posture-source.ts` 的共享件**(本模块只是给这一档取个本地名字, * 不再持第二份词表:同一张四词表抄两遍的那天,两份会在加词时分家)。 */ export declare const READ_FACE_SOURCE_WORDS: readonly ["env", "center", "posture", "engine-default"]; /** 档位的来源(闭集四词)。加词 ⇒ {@link postureSourceNote} 的穷举 switch 编译红。 */ export type ReadFaceSource = PostureSource; /** 一台 worker 的 READ 面档位事实(值 + 来源)。`ServiceConfigFlat` 结构上满足本形。 */ export interface ReadFacePostureFacts { readonly readFace?: "open" | "roots" | undefined; readonly readFaceSource: ReadFaceSource; } /** * 缺席 `READ_FACE` 时的 posture 派生(`config.ts` 的铸点调用;显式值不经此口)。 * 单用户 turnkey ⇒ `open`;多租户 ⇒ 不铸(引擎默认 `roots`,server 不复制上游默认)。 */ export declare function readFaceForPosture(singleUserTurnkey: boolean): ReadFacePostureFacts; /** 本档的运维指路句 —— 骨架由共享件 {@link postureSourceNote} 给(四词穷举在那里,加词即编译红); * 本函数提供两条**键专属**臂(`center` / `posture`)的事实句。 * * 🔴 `center` 那句话的事实来源是 S-174(core 7.10.0 [ref]):`RunnerDeps.readFace` 进了 core 的可换席 * 闭集 `SWAPPABLE_DEP_SEATS` ⇒ 组织发布/撤回一个档位,**下一拍 refresh 当场换进全部 Runner**, * `config-center/restart-signal.ts` 的 `read-face` 片也不再为它签重启理由(判据同源 = * `CENTER_READ_FACE_LIVE_KEYS`,由 core 的 `isSwappableDepSeat` 派生)。本句此前逐字写着 * 「(restart-to-apply)」—— G-7 抓获的那条过期断言,方向恰好是「让运维为一个已生效的变更重启 fleet」。 * ⚠️ 只说 `face` 这一席:三个 deny 键仍是 boot-baked,那半场的话不在这条读面上(它们没有来源位)。 */ export declare function readFaceSourceNote(source: ReadFaceSource): string; /** operator 诊断面的投影(`GET /v1/diagnostics/wiring`)。`face:null` = 本部署没钉档,引擎默认接管。 */ export declare function buildReadFaceWiring(facts: ReadFacePostureFacts): { face: "open" | "roots" | null; source: ReadFaceSource; note: string; }; //# sourceMappingURL=read-face-posture.d.ts.map