4.9 KiB
ADR-0302:Local Owner Console Application Runtime 实现归属
- 状态:Accepted
- 日期:2026-08-09
- 关联:D-05、D-06、D-17、D-85、D-87、D-121、D-213、D-257、ADR-0143、ADR-0209、ADR-0267、ADR-0276、ADR-0296、ADR-0301
上下文
schema v4 根行数棘轮显示 @qinglong/local-owner-console 只有 7 个 source,却由根 index.ts 承担 604 个审计行。该文件不是薄
export,而是完整的短生命周期 Application Runtime:验证 POSIX UID、目录/文件 ownership、mode、device/inode,读取并清除 pepper
material,构造 local_console principal,打开 Local SQLite bootstrap authority,恢复/发布 credential delivery,并持有 close fence。
这些能力与 bootstrap、credential-recovery、delivery、authentication 目录共享同一 Owner Console authority、版本与进程生命周期;
根 package specifier 是公开契约,但物理 src/index.ts/dist/index.js 不是。为它再建 package 会制造一个只为目录形状存在的微型边界。
移动前 GitNexus 显示根文件与 openLocalOwnerConsole 均为 LOW、0 direct/0 process;最宽的
LocalOwnerConsoleConfigurationError 为 MEDIUM(10 direct/10 total/0 process),identity 为 LOW 2/4/0,其他 helper 与返回对象
方法均为 LOW、0 process,只有 close 为 LOW 1/1/0。没有 HIGH 或 CRITICAL,因此本批不改变 POSIX proof、pepper custody、
credential recovery、replay、authority TTL 或 close 语义。
决策
- 将根实现原样归入
src/application-runtime/localOwnerConsole.ts,只调整到既有bootstrap、credential-recovery与delivery目录的相对 import。 - 不保留根 wrapper。manifest 的
main、types与根 export 直接映射嵌套编译产物;公开@qinglong/local-owner-consolespecifier、symbol、类型和 error identity 保持不变。 - package 内根契约测试改用公开 self-reference;依赖防火墙把新的 Application Runtime 路径登记为受审 ceremony consumer,身份认证 authority allowlist 不扩大。
- package ledger 将根文件/根行 hard cap 从 1/604 降为 0/0;一个 package 可以没有物理根 source,公开入口由 manifest 精确映射领域
module,不以装饰性
index.ts换取目录外观。 - 不新增 workspace package、生产依赖、数据库对象、connection、timer、listener、进程、binary 或部署单元。
被拒绝的方案
- 保留根 facade:物理旧路径没有兼容价值,只会留下无职责 root cap 和包内反向依赖。
- 拆成 POSIX Proof、Owner Recovery 新 package:两者没有独立部署、版本或故障边界,会扩大低配部署的 importer、lockfile 与 SBOM。
- 同时拆分 604 行 Runtime:路径归位可证明零行为变化;同步重写 custody/recovery/close 顺序会扩大安全审查面。
- 保留空
index.ts:空入口仍是无语义文件;manifest 已能稳定提供根 package specifier。
接受条件
- Local Owner Console 保持 7 source,root 1→0、604→0 审计行,nested 6→7;workspace 保持 19 package/768 source, root 38→37、nested 730→731。
- 根 package specifier 与所有既有 subpath 保持;Console、完整 19-package clean build/test 和 backend 通过。
- 旧根源码与 clean build
dist根产物均不存在;实现只在application-runtime产生。 - dependency/boundary/Edge/Local image 与十档本机制品门 compatible,低配 Profile 预算不回退。
- 强制 GitNexus 不增加产品流程,关键 symbol 调用半径不扩大,
detect_changes保持 low/0 affected process。
接受证据
- package boundary schema v4 报告 Console 为 7 source、0 root/0 root lines/7 nested;workspace 仍为 19 package/768 source、
37 root、731 nested,
singleSourcePackages=[]。 - Console 45/45、完整 19-package clean build/test 与 backend 1,112(1,110 pass/2 skip/0 fail)通过;clean build 的
dist根为空, 只在dist/application-runtime生成localOwnerConsole.*。 - dependency 47/47、package boundary 7/7、Edge import 与 Local image 审计全部 compatible;受审 ceremony consumer 路径迁移后 未放宽 identity authority。
- 十档本机制品门全部 compatible:基础 Edge 为 3,635,197 bytes/332 files/48 modules;最大 Standalone Application AI 为 6,123,790 bytes/491 files/104 modules,各档 artifact/file/module/RSS 均未越界。
- 强制 GitNexus 刷新为 43,338 nodes/98,546 edges/1,701 clusters/269 flows。移动后
openLocalOwnerConsole仍为 LOW、 0 direct/0 total/0 process,配置错误保持 MEDIUM 10/10/0,identity保持 LOW 2/4/0,close保持 LOW 1/1/0;auditSourceImports仍为 LOW 0/0/0。detect_changesall 为 12 files/31 symbols,comparedevelop为 14/34,均 low/0 affected process。 - 本批不修改 SQL、migration、生产依赖或 Cluster 状态,不需要重复 PostgreSQL HA 物理门。