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,81 @@
# ADR-0278Profile 分层的 Linux Workflow 取消资源发布门
- 状态:Accepted
- 日期:2026-08-07
- 关联:D-05、D-07、D-87、D-213、D-251、D-257、ADR-0088、ADR-0228、ADR-0270、ADR-0277
## 上下文
ADR-0277 已让本机用户能够通过受认证的 `workflow.cancel` 产品命令提交取消意图,既有 Local
Application Linux 条件测试也能启动真实进程并观察 `/proc/<pid>`。但是测试仍用 SQL 直接注入
`cancel_requested_at_ms`,因此没有证明产品命令、Policy、durable audit、application control、进程停止与
Workflow parent terminalization 是同一条可工作的链路。
把这条链路加入 128 MiB 路由压力门时还暴露出另一个问题:该门同时运行可选 AI Prompt、AI Model
Invocation crash matrix 与核心调度/执行 workload,虽然没有 OOMcgroup `memory.events.max` 已出现非零
命中。把可选 AI 的瞬时峰值解释成所有路由用户的核心最低配置,或通过忽略 `max` 事件来让门变绿,都会
破坏 D-07 的 Profile 隔离。
## 决策
1. Linux Application 条件测试必须通过真实 `ql3-workflow` schema v1 `workflow.cancel` command file
请求取消,不再用 SQL 注入 cancel intent。测试凭据、pepper、User、API credential 与 Owner
RoleBinding 只作为私有测试 fixture 创建;生产 package closure 不增加 Owner CLI/Console。
2. Workflow、Run、StepRun、Attempt、mutation、event 与 audit fixture 使用产品可接受的 UUID v4。命令
首次返回 `accepted`,同一命令重放返回 `existing`;持久层必须只有一个
`run.cancel_requested` 与一个 allowed `workflow.cancel` audit。
3. 测试必须先观察 `/proc/<pid>` 存在,再验证进程退出、Attempt cancelled、两个 StepRun cancelled、
parent Workflow cancelled。该证据只证明受控 Linux 容器里的进程停止链,不宣称固定路由器断电、闪存
持久性或不受控 side effect 已被证明。
4. 资源发布门按产品 Profile 分层:128 MiB `router-stress-ci``supportedMinimum=false` 的核心压力档,
只运行 Edge executor、Node SQLite、Workflow success、SQLite lock、admission crash 与 control crash
256 MiB `edge-release-ci` 运行完整核心链、受认证 Workflow cancel,以及可选 AI Prompt/Model
Invocation crash matrix。
5. Workflow success 与 cancellation 在同一个 Node test process 中执行,避免重复装载完整 Application
graph。报告解析所有 `QL3_RESOURCE_EVIDENCE`,逐条检查 RSS,并对 success/cancel 两组 durable fact
fail closed;缺一条、计数漂移、进程未退出或超过预算都拒绝发布。
6. `@qinglong/local-owner-cli``@qinglong/local-owner-console` 只能是
`@qinglong/local-application``devDependencies`。cluster dependency audit 同时精确约束 manifest
`workspace:*` 与 lockfile `link:`local image 与十档 artifact 必须继续证明二者不进入生产制品。
## 被拒绝的方案
- **继续用 SQL 触发取消**:只能证明底层 convergence,不能证明认证、Policy、命令幂等与审计产品链。
- **给 128 MiB 档加内存或忽略 `memory.events.max`**:隐藏了可选 AI 与核心路由运行时的资源边界。
- **让 128 MiB 路由档承担全部 AI crash matrix**:把 optional feature 变成基础 Profile 的隐性依赖。
- **为成功与取消各启动一个 Application test process**:重复模块装载会放大监督进程峰值,不代表真实单
Application cadence。
- **把容器 `/proc` 证据称为物理设备发布证据**:容器不能代替固定型号路由器的断电、闪存与热环境门。
- **为测试适配再拆 workspace package**:没有独立部署或生产依赖价值,并会违反既有 package 硬上限。
## 接受证据
- Linux arm64、non-root、read-only root/workspace、`no-new-privileges` 的真实 Application cancellation
测试返回 `accepted`/exact `existing`,观察到 PID 存在后退出;parent/Attempt 均 cancelled,两个
StepRun cancelledcancel event/audit 各一条,cancel workload peak RSS 94,715,904 bytes。
- 128 MiB/0.5 CPU/64 PIDs 路由核心档 6 个 workload 全通过:`memory.peak=119,615,488`
`memory.events max/oom/oom_kill=0/0/0`;该档明确不是受支持最低配置声明。
- 256 MiB Edge 完整档 10 个 workload 全通过:`memory.peak=137,867,264`memory event 全零;Workflow
success/cancel peak RSS 为 88,555,520/94,715,904AI Prompt edge/standalone 为
120,373,248/117,379,072 bytes。
- Local Application 39 pass/3 Linux 条件 skip;完整 19-package 门退出 0;后端 1,101 tests、1,099
pass/2 skip/0 fail。Edge import、cluster dependency、package boundary、cluster deployment、worker
deployment 与 local image 六项审计全部 compatible。
- 十档 artifact 全 compatibleEdge/Standalone 3,547,572/3,547,620 bytesAdopted
4,146,274/4,146,358Application 4,633,747/4,633,891AI 4,882,494/4,882,554Application AI
5,968,741/5,968,897;最大档距 6 MiB 仍有 322,559 bytes。Application production closure 不含
Owner CLI/Console。
- PostgreSQL 18.4 arm64 physical-streaming HA `passed=true``remote_apply`、timeline 1→2、旧主
fencing、`pg_rewind` 只读同步重入、两个 fresh control activation 与 remote Workflow cancellation
promotion gate 全绿;`ql3-ha-*` container/network/volume 零残留。
- 刷新后 GitNexus 为 42,509 nodes/96,471 edges/1,672 clusters/261 flows;五个修改符号全部 LOW,最多
1 direct/0 affected process。`detect-changes` all/compare `develop` 分别为 12 files/31 symbols 与
14/34,均 low/0 affected process。
## 剩余边界
- 仍需在明确型号、内存、存储与文件系统的物理路由设备上执行断电、闪存持久性、热重启和长时间 soak;
- 仍需 x64 CI/发布 runner 的同构资源门证据;
- Cluster Workflow-specific 产品入口、远程 Worker stop acknowledgement 与物理基础设施 fencing 继续由
各自的独立发布门负责,不能由本 ADR 的本机 `/proc` 证据替代;
- 联网 production dependency vulnerability audit 因依赖元数据外发权限未获批准,本轮不重跑。