feat(ql3): establish 3.0 incubation baseline

This commit is contained in:
whyour
2026-08-12 00:25:26 +08:00
parent 4bf92dcfeb
commit c699c32461
2817 changed files with 779642 additions and 653 deletions
@@ -0,0 +1,66 @@
# ADR-0298Local SQLite 根 Runtime 与 Adoption 实现归属
- 状态:Accepted
- 日期:2026-08-09
- 关联:D-05、D-06、D-17、D-85、D-87、D-97、D-213、D-257、ADR-0063、ADR-0098、ADR-0276、ADR-0296、ADR-0297
## 上下文
schema v4 根行数棘轮显示 `@qinglong/local-sqlite` 仍有 3 个 root source、1,203 个审计行。`index.ts` 只有 31 个审计行,
是聚合公开导出的真实门面;`runtime.ts``adoption.ts` 分别有 432 与 738 个可见代码行,承载长期 Runtime Database
Composition 和短生命周期 Legacy Adoption Authority。两者有明确的权限、生命周期与领域归属,却继续以“公开入口”为由平铺在
package root,会让目录结构掩盖常驻与短生命周期 authority 的隔离关系。
这两个能力已经通过 `@qinglong/local-sqlite/runtime``@qinglong/local-sqlite/adoption` 两个稳定 subpath 暴露,物理 `dist`
路径并不是调用方契约。它们也不具备独立部署、依赖或版本生命周期,另拆 workspace package 会扩大路由设备的 importer、packlist、
SBOM 和构建拓扑。
移动前 GitNexus 显示 `LocalSqliteRuntimeDatabase` 为 MEDIUM10 direct/24 total/0 process),
`openLocalSqliteRuntimeDatabase` 为 LOW1/3/0);`LocalSqliteLegacyAdoptionPublisher`
`openLocalSqliteAdoptionDatabase` 均为 LOW2/6/0 与 1/1/0)。没有 HIGH 或 CRITICAL 风险。
## 决策
1. 保留根 `src/index.ts` 作为唯一聚合门面;Runtime composition 原样归入
`src/runtime/runtimeDatabase.ts`Legacy Adoption authority 原样归入
`src/adoption/legacyAdoptionDatabase.ts`
2. 不保留根 wrapper。`package.json#exports` 直接把公开 `/runtime``/adoption` subpath 映射到嵌套编译产物;公开
specifier、导出 symbol、错误 class identity、lazy loading 和运行行为保持不变。
3. `src/storage/database.ts` 作为开发工具兼容入口直接导出新的 Runtime domain module。package tests 通过公开 self-reference
验证 Runtime 入口;仓库根物理 Edge 脚本不是 workspace importer,显式绑定新嵌套产物。
4. package ledger 将 Local SQLite 的 `rootSourceFileHardCap` 从 3 降为 1、`rootSourceLineHardCap` 从 1,203 降为 31
回归测试同时冻结 source/root/nested 计数、manifest targets 与旧根文件不存在。
5. 不新增 workspace package、生产依赖、migration、数据库对象、connection、transaction、queue、timer、watcher、listener、进程或
部署单元。
## 被拒绝的方案
- **保留两个根 facade**:会留下无独立语义的转发文件,使根文件数棘轮失去约束力。
- **按 Runtime 与 Adoption 各拆一个 package**:二者仍共享同一 SQLite adapter、operation authority 与发布节奏;拆包只增加低配设备成本。
- **本批同时拆分 738 行 Adoption publisher**:目录归位能证明路径之外零行为变化;同时重排事务、validation 和 row codec 会扩大授权与原子性审查面。
- **继续容忍 1,203 行 hard cap**:公开 subpath 不要求实现位于根目录,提高或冻结旧上限没有架构价值。
## 接受条件
1. Local SQLite 保持 156 个 sourceroot 仅有 `index.ts`/31 审计行,nested 153→155workspace 保持 19 package、768 source
root 45→43、nested 723→725。
2. `/runtime``/adoption` 和根 export symbol 保持,Local SQLite 及完整生产消费者通过 clean build/test。
3. Runtime lazy import、migration exclusion、Adoption 单事务/围栏/重放行为继续由既有测试覆盖,旧根私有产物引用清零。
4. 完整 packages/backend、四项架构审计和十档 artifact/RSS compatible;基础 Edge 不获得 Adoption authority。
5. GitNexus 不出现新增产品流程,`detect_changes` 保持 low/0 affected process。
## 接受证据
- package boundary schema v4 报告 Local SQLite 为 156 source、1 root/31 root lines/155 nestedworkspace 仍为 19 package、
768 source、43 root、725 nested`singleSourcePackages=[]`。边界 fixture 明确验证两个公开 target 与旧根文件不存在。
- Local SQLite 196/196,完整 19-package clean build/test 通过;backend 1,112 项为 1,110 pass/2 skip/0 fail。cluster
dependency、package boundary、Edge import、local image 四项审计 compatible。
- 十档 artifact/RSS 全部 compatible。基础 Edge 为 3,635,197 bytes/332 files/48 loaded modules;最大 Standalone
Application AI 为 6,123,790/491/104,均低于门限。clean build 后旧根 `dist/runtime*``dist/adoption*` 不进入 packlist。
- 强制 GitNexus 为 43,302 nodes/98,525 edges/1,696 clusters/269 flows。嵌套 manifest subpath 不被当前索引器反向解析为
跨包 direct edge,因此移动后的四个关键符号均显示 LOW/0 process,不把降低后的 direct count 作为兼容证据;移动前 blast radius、
完整 consumer 测试与制品门共同承担验证。`detect_changes` all/compare `develop` 分别为 12 files/31 symbols 与 14/34
均 low/0 affected process。
- 本批没有修改 SQL、migration checksum、生产 dependency 或 Cluster 状态;按维护者额外授权,仍重跑 PostgreSQL 18.4 arm64
physical HA Docker 门,`gates.passed=true`。证据覆盖 `remote_apply`、timeline 1→2、旧主 promotion 前 fencing、
`pg_rewind` 后只读 synchronous rejoin 与两个新 control ready;结束后 `ql3-ha-*` container、volume、network 均为空。