From 45879ef0a76d36ce98eddada74636d27652196ca Mon Sep 17 00:00:00 2001 From: whyour Date: Tue, 1 Sep 2026 11:04:38 +0800 Subject: [PATCH] docs(ql3): record exact Console cutover artifact --- docs/QINGLONG_3_0_ARCHITECTURE_RFC.md | 2 +- .../ADR-0524-exact-headless-upgrade-cutover-rehearsal.md | 2 +- docs/adr/ADR-0525-console-adopted-target-entry-evidence.md | 6 ++++-- docs/adr/README.md | 2 +- docs/operations/ql3-alpha-candidate.md | 4 +++- docs/operations/ql3-local-web-console.md | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/QINGLONG_3_0_ARCHITECTURE_RFC.md b/docs/QINGLONG_3_0_ARCHITECTURE_RFC.md index 82137d3e..369c2f90 100644 --- a/docs/QINGLONG_3_0_ARCHITECTURE_RFC.md +++ b/docs/QINGLONG_3_0_ARCHITECTURE_RFC.md @@ -1,6 +1,6 @@ # QingLong 3.0 Architecture RFC -- D-426b2c/ADR-0525(源码与 CI 门禁已实现,exact Console 双架构阶段实物待生成):Console adopted target 不再借用 fresh HTTP journey,也不以普通 Local API 启动破坏 clean rollback。`ql3-local-api` 新增显式 `--cutover-probe --config `:严格验证外层 loopback/deployment/Owner 配置后委托既有 Application 只读 probe,不绑定 listener、不读取 credential/pepper、不激活 recovery、scheduler、execution、plugin recovery 或产品管理面。Owner target command 可选绑定 Local API 宿主/容器配置路径,target evidence 同时摘要并校验外层 API、内层 Application、严格不同的 target path、exact read-only mounts 与 `['--cutover-probe','--config',expectedApiPath]`;省略该字段时 headless command/journal digest 不变。Trial Kit cutover summary 升为 v2,绑定 variant 与 `local-application|local-api` entrypoint;原生 workflow 对 headless/Console 均要求 `legacyUpgradeCutover=passed`,同时保留真实 Console listener/API/credential/Task journey 作为独立门。没有新增 workspace package、依赖、daemon、sidecar、timer、watcher、连接池或稳态资源;默认低配路由设备仍选择 headless,Cluster 不复用 Local POSIX/SQLite/Docker proof。Local API 80/80、Owner CLI 314 total/307 pass/7 conditional skip/0 fail、Trial Kit 12/12、Application 56 total/51 pass/5 conditional skip/0 fail,package/Cluster/Edge/image 审计 compatible。本机 exact Console image build 被配置的 `register.liberx.info` 固定 Node base image EOF 阻断,未进入源码构建,因此当前不能写成“阶段实物已交付”;只有同源原生 amd64/arm64 artifact、milestone 与离线 auditor 在成功终态 CI 闭合后才成立。 +- D-426b2c/ADR-0525(exact Console 双架构阶段实物已交付):Console adopted target 不再借用 fresh HTTP journey,也不以普通 Local API 启动破坏 clean rollback。`ql3-local-api` 新增显式 `--cutover-probe --config `:严格验证外层 loopback/deployment/Owner 配置后委托既有 Application 只读 probe,不绑定 listener、不读取 credential/pepper、不激活 recovery、scheduler、execution、plugin recovery 或产品管理面。Owner target command 可选绑定 Local API 宿主/容器配置路径,target evidence 同时摘要并校验外层 API、内层 Application、严格不同的 target path、exact read-only mounts 与 `['--cutover-probe','--config',expectedApiPath]`;省略该字段时 headless command/journal digest 不变。Trial Kit cutover summary 升为 v2,绑定 variant 与 `local-application|local-api` entrypoint;原生 workflow 对 headless/Console 均要求 `legacyUpgradeCutover=passed`,同时保留真实 Console listener/API/credential/Task journey 作为独立门。没有新增 workspace package、依赖、daemon、sidecar、timer、watcher、连接池或稳态资源;默认低配路由设备仍选择 headless,Cluster 不复用 Local POSIX/SQLite/Docker proof。Local API 80/80、Owner CLI 314 total/307 pass/7 conditional skip/0 fail、Trial Kit 12/12、Application 56 total/51 pass/5 conditional skip/0 fail,package/Cluster/Edge/image 审计 compatible。提交 `229c3cb4e826866a0c7c4d81cb5e52cdc3975eec` 的普通主 CI run `33462165722` 与 Kubernetes live run `33462165834` 成功;显式 Local Console artifact run `33463415938` 交付 amd64/arm64/milestone(artifact `9784212784`/`9784111987`/`9784288018`),三个重新下载的离线 auditor 均为 `compatible=true`,保留至 2026-10-01。正常 `ql3-local-api --config` 提供现有 3.0 Console,`--cutover-probe` 仅用于无写入的升级证据;这不声明 2.x 老面板 API 零改动兼容。 - D-426b2b/ADR-0524(已交付同源双架构 headless Alpha 阶段实物):exact 上传 Trial Kit 已把 D-426b1 的离线 image authority 与 D-426b2a 的 post-apply baseline 接入完整用户切换链。真实 artifact 预演暴露出普通 Application 启动会在 scheduler/recovery 激活期间改变 adopted SQLite,因而不能同时充当“未接收写入”的 clean rollback 证明;3.0 没有放宽 classifier 或重置基线,而是新增显式 `--cutover-probe` 进程,只加载 exact v4 config、验证 legacy/data-application/cutover commitment、以只读 SQLite readiness 打开 target、在数据库外发布 process-bound start/stop receipt,并保持 recovery、plugin recovery、execution、scheduler 和 product admission 全部冻结。Owner target evidence 固定要求 `['--cutover-probe','--config',expectedPath]`,普通 Application 命令不能冒充 probe;依赖审计只允许该 production-process 文件导入只读 readiness subpath,仍拒绝 writable runtime。提交 `79045a0d439074994812d9cd682f933b9e415706` 的显式 Local headless [run 33326143744](https://github.com/whyour/qinglong/actions/runs/33326143744) 为 `42 success / 2 expected scope skip / 0 fail`,两个原生架构均在 exact bundle 上完成 readiness、reviewed stage、Owner credential presentation、transform/apply、真实 legacy stop、probe start/stop 和 clean `rollback_candidate`,finalizer 生成 milestone v5。amd64/arm64/milestone artifact ID 为 `9736356778`/`9736354298`/`9736502478`,GitHub 压缩大小为 `226206170`/`221605850`/`6492` bytes,保留至 2026-09-29;下载后三个仓库离线 auditor 均返回 `compatible=true`。内部 Docker archive digest 为 amd64 `sha256:1e1c5c83fd2c39b3bbe7b194113998a96cbe810e69d34858c3f40d2638837c60`、arm64 `sha256:dcec37f65382d7d8c06f448780878ec2474e45d6e64b2febb764b1836898d2d6`,verification v6 的漏洞、SBOM、128 MiB entrypoint、fresh lifecycle、API cancellation 与 legacy readiness/stage/cutover 全为 `passed`。同 run 的 128 MiB/0.5 CPU/64 PID router stress 记录 x64/arm64 peak `77967360`/`72581120` bytes,但仍明确不是物理设备最低配置承诺。本阶段实物只证明隔离合成数据上的 exact 切换链和“target 未产生业务写入”的 clean rollback candidate;不停止用户真实 2.x、不授权 Legacy restart、写后 reconciliation、生产 cutover、Public Release 或 LTS。 diff --git a/docs/adr/ADR-0524-exact-headless-upgrade-cutover-rehearsal.md b/docs/adr/ADR-0524-exact-headless-upgrade-cutover-rehearsal.md index f8cbec38..ba5e274e 100644 --- a/docs/adr/ADR-0524-exact-headless-upgrade-cutover-rehearsal.md +++ b/docs/adr/ADR-0524-exact-headless-upgrade-cutover-rehearsal.md @@ -48,4 +48,4 @@ ADR-0523 已修正 Apply 后 Adopted Target 的回退基线,但仓库内单元 ## 后续 -D-426b2c 已由 ADR-0525 实现为 Console Local API 外层入口与 Application 内层配置的双重证据,且保持 headless 既有 command/journal shape;exact Console 双架构 artifact 闭合仍待成功终态 CI。D-426c 继续处理 target 写入后的 capture、review、reconciliation 与恢复,不得削弱 headless 已闭合的离线镜像和回退基线。 +D-426b2c 已由 ADR-0525 实现为 Console Local API 外层入口与 Application 内层配置的双重证据,且保持 headless 既有 command/journal shape;同源 exact Console 双架构 artifact 与 milestone 已由成功终态 CI 交付并完成下载后离线审计。D-426c 继续处理 target 写入后的 capture、review、reconciliation 与恢复,不得削弱 headless 已闭合的离线镜像和回退基线。 diff --git a/docs/adr/ADR-0525-console-adopted-target-entry-evidence.md b/docs/adr/ADR-0525-console-adopted-target-entry-evidence.md index 9646c30b..db051360 100644 --- a/docs/adr/ADR-0525-console-adopted-target-entry-evidence.md +++ b/docs/adr/ADR-0525-console-adopted-target-entry-evidence.md @@ -1,6 +1,6 @@ # ADR-0525:Console Adopted Target 入口证据 -- 状态:Accepted(源码与 CI 门禁已实现;exact Console 双架构阶段实物待生成) +- 状态:Accepted(exact Console 双架构阶段实物已交付并完成离线审计) - 日期:2026-09-01 - 决策:D-426b2c - 关联:ADR-0512、ADR-0513、ADR-0522、ADR-0523、ADR-0524 @@ -44,7 +44,9 @@ ADR-0524 已用 headless Trial Kit 的只读 Application cutover probe 闭合 cl - Local Application:56 total / 51 pass / 5 conditional skip / 0 fail; - package boundary、Cluster dependency、Edge import 与 Local image/operator image audit 均为 compatible;workspace package 仍为 18 个,未新增依赖、package 或常驻进程。 -本机 exact Console image build 尚未形成阶段实物:Docker 配置的镜像镜像源 `register.liberx.info` 在解析固定 Node base image 时连续 EOF,构建未进入源码层。因此本 ADR 当前只声明“源码与 CI 门禁已实现”;只有同源原生 amd64/arm64 Console artifact、milestone 与离线 auditor 在成功终态 workflow 中闭合后,才能升级为“阶段实物已交付”。 +提交 `229c3cb4e826866a0c7c4d81cb5e52cdc3975eec` 的普通主 CI [run 33462165722](https://github.com/whyour/qinglong/actions/runs/33462165722) 已完整成功;同源 Kubernetes live run [33462165834](https://github.com/whyour/qinglong/actions/runs/33462165834) 也成功。随后显式 Local Console artifact [run 33463415938](https://github.com/whyour/qinglong/actions/runs/33463415938) 完成全部门禁及 Local Alpha finalizer,产出 amd64、arm64 与 milestone 三份新实物,artifact ID 分别为 `9784212784`、`9784111987`、`9784288018`,压缩大小分别为 `226669830`、`222069510`、`6489` bytes,GitHub ZIP digest 分别为 `sha256:d967f89d901837fbfc7b3d0d7be0ceb0ae4c36d44fc3ec707da539c34edfe76b`、`sha256:20cc976303a2c1219c91a1d620a8900ae9dfc3e28aa130f5609cb1a2bd9a1a0e`、`sha256:62c955fb376aba978a56f02abb8df611f888f44a4ee58196cd61e07e9f7912ff`,保留至 2026-10-01。 + +三份产物从 GitHub 重新下载后通过独立离线 auditor,均返回 `compatible=true`。两个 Trial Kit 都绑定 `3.0.0-alpha.2`、`variant=console`、run `33463415938`/attempt `1` 与 exact source revision;内部 Docker archive digest 分别为 amd64 `sha256:2b60885d19ec6b3f62671cc9370ee5cef4f1be41150797c36610dbdeb0a6514b`、arm64 `sha256:19c2e24d16ece348672ec4cd2a1ac4374cf6338da7e6113e2c056f7c085c4c53`。milestone v5 同时闭合两个架构。由此 D-426b2c 已从“源码与门禁”升级为可下载、可复核的 Console 阶段实物;此前本机镜像源 EOF 仅是本地构建环境问题,不再构成交付缺口。 ## 后续 diff --git a/docs/adr/README.md b/docs/adr/README.md index ea3e6f48..46de2105 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -528,7 +528,7 @@ | [ADR-0522](./ADR-0522-content-bound-offline-docker-adopted-target.md) | 内容绑定的离线 Docker Adopted Target | Accepted(D-426b 权威已由 D-426b2b 双架构实物闭合) | | [ADR-0523](./ADR-0523-post-apply-adopted-target-baseline.md) | Apply 后的 Adopted Target 启动前基线 | Accepted(D-426b2a 基线已由 D-426b2b 双架构实物闭合) | | [ADR-0524](./ADR-0524-exact-headless-upgrade-cutover-rehearsal.md) | Exact Headless 升级切换链演练 | Accepted(D-426b2b 双架构阶段实物已交付) | -| [ADR-0525](./ADR-0525-console-adopted-target-entry-evidence.md) | Console Adopted Target 入口证据 | Accepted(源码与 CI 门禁已实现;exact Console 双架构阶段实物待生成) | +| [ADR-0525](./ADR-0525-console-adopted-target-entry-evidence.md) | Console Adopted Target 入口证据 | Accepted(exact Console 双架构阶段实物已交付并完成离线审计) | ## 规则 diff --git a/docs/operations/ql3-alpha-candidate.md b/docs/operations/ql3-alpha-candidate.md index c6e963e3..d85512de 100644 --- a/docs/operations/ql3-alpha-candidate.md +++ b/docs/operations/ql3-alpha-candidate.md @@ -33,7 +33,7 @@ | D-425 2.x 升级就绪盘点 | 同源 v6 Trial Kit 已交付 amd64/arm64 headless 阶段实物;canonical `upgrade-readiness.sh` 把 2.x root 只读挂载,在 128 MiB/无网络边界内由 exact Operator 生成 SQLite 与完整目录两个计划;artifact job 实跑、bundle auditor 与 milestone v3 均闭合 | 只完成 inspect,不授权 stage、activation、cutover 或 rollback;不是 Public Release | | D-426a Side-by-side 暂存 | 同源 v7 Trial Kit 已交付 amd64/arm64 headless 阶段实物;reviewed-plan `upgrade-rehearsal.sh` 在新的私有 root 中执行 SQLite stage/verify/activation 与完整目录 stage/verify,legacy root 始终只读,summary 固定 `cutover=not_authorized`;exact artifact job 实跑且 milestone v4 离线审计闭合 | 不执行 transform/apply、目标启动、cutover 或回退;仍不是 Public Release | | D-426b2b Exact headless 切换链 | 同源 v8 Trial Kit 已交付 amd64/arm64 headless 阶段实物;exact 上传包完成 readiness、reviewed stage、Owner 强认证 transform/apply、真实 legacy stop、只读 target probe start/stop 与 clean `rollback_candidate`,milestone v5 和三个离线 auditor 均闭合 | 仅授权 fresh/隔离数据演练;不停止用户真实 2.x、不执行 Legacy restart、写后 reconciliation 或生产 cutover;仍不是 Public Release | -| D-426b2c Console adopted entry | Local API 增加无 listener/credential/mutation 的显式 cutover probe;controller 同时绑定外层 API 与内层 Application 配置、exact command/mount;Console 原生 CI 改为执行完整 cutover rehearsal 并要求 gate passed | 源码与门禁已实现,但 exact Console 双架构 archive/milestone 尚未由成功终态 artifact workflow 闭合;本机镜像源 EOF 不能替代该证据 | +| D-426b2c Console adopted entry | 同源 exact amd64/arm64 Console Trial Kit 与 milestone 已交付;Local API cutover probe 不启动 listener/credential/mutation,controller 绑定双层配置、exact command/mount,原生 CI 完整演练且三个下载产物离线审计通过 | 仅授权 fresh/隔离数据演练;正常 Console 启动与只读 cutover probe 是不同模式;不承诺 2.x 老面板 API 零改动兼容、真实生产停机或写后回退 | D-421 已关闭 D-420 记录的“Web Task mutation 必须独立设计”缺口,而且没有改名复用 run `33173769047` 的旧 archive。修复提交 `dc1686bd6fb3505174dd9a14098ae5c2c92a1a7f` 的普通主 CI [run 33229592307](https://github.com/whyour/qinglong/actions/runs/33229592307) 为 41 success/3 expected artifact-finalizer skip/0 fail,同源 Kubernetes deployment [run 33229592293](https://github.com/whyour/qinglong/actions/runs/33229592293) 成功;随后显式 Local Console milestone [run 33230227006](https://github.com/whyour/qinglong/actions/runs/33230227006) 为 42 success/2 scope skip/0 fail。由此 Web 创建能力已进入新的阶段实物,而不再只是候选源码。 @@ -49,6 +49,8 @@ D-426a 已从“源码候选”升级为阶段实物:本地完整 backend 为 D-426b2b 已从“源码候选”升级为新的可交付 headless 阶段实物。提交 `79045a0d439074994812d9cd682f933b9e415706` 的显式 Local milestone [run 33326143744](https://github.com/whyour/qinglong/actions/runs/33326143744) 为 `42 success / 2 expected scope skip / 0 fail`;Profile supply-chain、双架构 Local image、Local Profiles、资源、PostgreSQL HA/CloudNativePG、Secret/provider、Plugin Package recovery 和完整 finalizer 全部成功。amd64/arm64/milestone artifact ID 分别为 `9736356778`、`9736354298`、`9736502478`,GitHub 压缩大小为 `226206170`、`221605850`、`6492` bytes,ZIP digest 分别为 `sha256:fa2def17bcb33240eabacbf8cbc0fa1eadab4f0ba9eb5b44c12e3bffa6db3204`、`sha256:5c2e98a4143c64df1396c407e7cfae0933fb8dcb81720c00f38e63ef7923d240`、`sha256:c95b7edfbd11f2cb4d61593d36845ad8c7cb70c3cd26314c771ba85d06195426`,保留至 2026-09-29。下载后三个离线 auditor 均为 `compatible=true`;内部 Docker archive 为 amd64 `226122240` bytes / `sha256:1e1c5c83fd2c39b3bbe7b194113998a96cbe810e69d34858c3f40d2638837c60`,arm64 `221521920` bytes / `sha256:dcec37f65382d7d8c06f448780878ec2474e45d6e64b2febb764b1836898d2d6`。verification v6 在两个架构都确认漏洞策略、SBOM、128 MiB router/operator entrypoint、fresh Owner、Edge/Standalone lifecycle、API cancellation、legacy readiness/stage/cutover 为 `passed`;这证明 exact bundle 的隔离切换链与未写 target 的 clean rollback candidate,不授权真实生产停机、Legacy restart 或写后回退。 +D-426b2c 已从“源码候选”升级为新的可交付 Console 阶段实物。提交 `229c3cb4e826866a0c7c4d81cb5e52cdc3975eec` 的普通主 CI [run 33462165722](https://github.com/whyour/qinglong/actions/runs/33462165722) 与 Kubernetes live run [33462165834](https://github.com/whyour/qinglong/actions/runs/33462165834) 均成功;显式 Local Console [run 33463415938](https://github.com/whyour/qinglong/actions/runs/33463415938) 完成全部门禁及 finalizer。amd64/arm64/milestone artifact ID 分别为 `9784212784`、`9784111987`、`9784288018`,GitHub 压缩大小为 `226669830`、`222069510`、`6489` bytes,ZIP digest 分别为 `sha256:d967f89d901837fbfc7b3d0d7be0ceb0ae4c36d44fc3ec707da539c34edfe76b`、`sha256:20cc976303a2c1219c91a1d620a8900ae9dfc3e28aa130f5609cb1a2bd9a1a0e`、`sha256:62c955fb376aba978a56f02abb8df611f888f44a4ee58196cd61e07e9f7912ff`,保留至 2026-10-01。重新下载后的两个 Trial Kit auditor 与 milestone v5 auditor 均为 `compatible=true`,并绑定 `3.0.0-alpha.2`、`variant=console`、同一 source/run/attempt;内部 Docker archive digest 为 amd64 `sha256:2b60885d19ec6b3f62671cc9370ee5cef4f1be41150797c36610dbdeb0a6514b`、arm64 `sha256:19c2e24d16ece348672ec4cd2a1ac4374cf6338da7e6113e2c056f7c085c4c53`。这证明同一 Console image 可在升级阶段以无 listener 的只读入口参与 exact cutover 证据,并在接收流量后用正常入口提供现有 3.0 面板;它不声明 2.x 老面板 API 零改动兼容。 + 默认低配 headless v5 也已从“可生成”升级为独立阶段实物。绑定提交 `d459c3b45c36e856f4a1cb3ce5147905977d939d` 的显式 Local headless milestone [run 33258604609](https://github.com/whyour/qinglong/actions/runs/33258604609) 为 42 success/2 scope skip/0 fail,完整矩阵继续覆盖双架构资源、Local/Cluster image、PostgreSQL HA、CloudNativePG、Secret/provider rotation 与 Local Profiles。该 run 没有复用 Console archive;下载后的两个 `headless` Trial Kit 与 milestone 均通过 `SHA256SUMS` 和仓库 auditor,返回 `compatible=true`。 首份跨部署全范围阶段实物绑定提交 `97333da34cce48cdfcfa1bbd5e8d48340802d2ef` 与 [run 33265538836](https://github.com/whyour/qinglong/actions/runs/33265538836),为 `44 success / 0 skip / 0 fail`。它生成 headless Local 双架构、Cluster control/control-ai/admin/worker 双架构、两个 milestone 与 `ql3-alpha-97333da34cce48cdfcfa1bbd5e8d48340802d2ef-stage-index`;三个小索引的 GitHub ZIP digest 分别为 Local `2e3bb8baeeadb40f34c130db68db8b1a7d6cf7a7c92a73a805e84990bf9875dc`、Cluster `292380a72f8b45233f6591624f6073154c2b7d2d00f62908af687193078524e2`、stage `2fbc67d478593df8bbb2ba362beb9f676be1882ac2e5386106057789906adece`,保留至 2026-09-28。下载后三个 `SHA256SUMS` 与仓库 auditor 全部 `compatible=true`;stage auditor 确认 `3.0.0-alpha.2`、同一 source/run/attempt、三种 Profile 和 10 个可选择 artifact。 diff --git a/docs/operations/ql3-local-web-console.md b/docs/operations/ql3-local-web-console.md index 346c46ce..709edb13 100644 --- a/docs/operations/ql3-local-web-console.md +++ b/docs/operations/ql3-local-web-console.md @@ -13,7 +13,7 @@ Local Web Console 是 `@qinglong/local-api` 的 opt-in 操作界面,用来创 D-418 已闭合独立 Console image/Trial Kit;D-419 的 v5 quickstart 进一步安装可直接使用的 Owner credential presentation,并创建默认不自动运行的 `alpha-first-automation`。D-420 又把该 Run 的 latest Attempt 首个 32 KiB 日志带到 Console。D-421/D-422 依次增加 request-scoped strong-auth Task 创建与双 proof 无损编辑,D-423 继续开放既有 immutable Trigger/cron authority。D-424 再增加 Secret current metadata、强认证 create/rotate 与 Task pinned binding;绑定提交 `f46fb44ac9534315b6965865bb3e990715bb2417` 的最新双架构实物已由 [milestone run 33252179178](https://github.com/whyour/qinglong/actions/runs/33252179178) 生成并完成 milestone checksum/auditor 复核,没有借用或改名 D-423 archive。 -D-426b2c 又补齐了 Console 镜像的 adopted-target 入口证据:切换演练使用 `ql3-local-api --cutover-probe --config `,同时绑定外层 API 配置、内层 Application 配置与 exact mounts,但该模式不会启动本页使用的 listener、credential、scheduler 或 mutation surface。正常启动仍使用下文不带 `--cutover-probe` 的命令;源码和 CI 门禁已实现,exact Console 双架构阶段实物仍待成功 artifact workflow 闭合。 +D-426b2c 又补齐了 Console 镜像的 adopted-target 入口证据:切换演练使用 `ql3-local-api --cutover-probe --config `,同时绑定外层 API 配置、内层 Application 配置与 exact mounts,但该模式不会启动本页使用的 listener、credential、scheduler 或 mutation surface。正常启动仍使用下文不带 `--cutover-probe` 的命令;提交 `229c3cb4e826866a0c7c4d81cb5e52cdc3975eec` 的 [artifact run 33463415938](https://github.com/whyour/qinglong/actions/runs/33463415938) 已交付 exact amd64/arm64 Console Trial Kit 与 milestone,三份下载产物的离线 auditor 均为 `compatible=true`。 ## 前置条件