mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-20 16:07:11 +08:00
feat(ql3): add secure console task editing
This commit is contained in:
@@ -11,6 +11,8 @@
|
||||
|
||||
最新增量证据(2026-08-29):
|
||||
|
||||
- D-422/ADR-0517(已实现源码候选,阶段实物待 CI/milestone):Local Console 不再用隐藏 spec 的 bounded Task read 拼装 update。新增 `POST /api/v3/projects/:projectId/tasks/:taskId/authoring`:User Bearer 先通过 `task.update`,再由 owner-private 两分钟一次性 proof 提升为 `local_console`,同时重跑 `task.read/task.update` 并要求 exact Policy fence 一致;完整定义读取后再次确认 credential,记录独立 durable `task.authoring.read` audit,并签发只保存摘要的 10 分钟一次性 lease。lease 绑定 Project/Task/revision/content digest/credential ID+version/User subject;Edge/Standalone 上限 8/32、请求时惰性清理,无数据库表、migration、timer、watcher、daemon、Pool 或新 package。Task update 必须先以 lease 验证旧快照,再用第二份 exact-content proof 确认保存,并继续由 D-421 的事务 authority 执行 expectedRevision、Policy、credential、RoleBinding 与 audit fence;create 拒绝夹带 lease。Console 只开放可严格识别的内建 argv command 编辑,Task ID 只读,未展示的 environment、Secret bundle、working directory、未来 config 字段与 labels 原样保留。真实 SQLite/loopback 已通过 authoring challenge→完整定义/lease→save challenge→revision 2→bounded read 隐藏 spec→新 fence 启动;真实 Chromium 完成双 proof 更新并验证隐藏 config/labels 不丢失,390×844 无横向溢出。Local API `64/64`,18-package clean build/test `3,038 total / 3,016 pass / 22 conditional skip / 0 fail`;三资产 69,723 bytes,默认 Edge 保持 2,737,205 bytes/329 files/58 modules,opt-in Edge/Standalone Console 为 4,077,890/4,078,034 bytes、473 files/12 packages/95 modules,RSS delta 16,269,312/16,318,464 bytes;package/source、122-module Edge import 与 Cluster dependency audit 均 compatible。默认 headless 与 Cluster 路径不变。远端主 CI 与新同源双架构 Console milestone 未闭合前,本项不得冒充现有 D-421 下载产物。
|
||||
|
||||
- D-421/ADR-0516(已实现并交付同源双架构 Console Alpha Candidate):Local Web Task mutation 不再受限于短生命周期 CLI 的进程级 active credential。`PUT /api/v3/projects/:projectId/tasks/:taskId` 把 Bearer 限定为 session credential,第一次 exact request 只在 deployment root 内 `0700` 目录发布 `0600`、当前 UID、两分钟、一次性的私有 proof file;HTTP 只返回 authorization ID、canonical request digest、expiry 与 basename,不返回 proof 或宿主绝对路径。proof 绑定 Task 全内容、credential ID/version 与 User subject;Edge/Standalone pending 上限为 8/32,按请求惰性清理,不新增 timer/watcher/daemon。验证后 principal 提升为短期 `local_console`,既有 Task administration service 重跑 Policy;SQLite runtime 为每个请求建立独立 credential-fenced repository,并在 Task append 事务内复验 credential/Identity/pepper、actor、Project/RoleBinding fence,原子提交 allowed audit 与 mutation。并发测试证明两个 User repository 不共享 ambient authority,撤销 A 不影响 B,RoleBinding 漂移仍原子拒绝;真实 loopback HTTP→私有 proof file→SQLite create 与 Chromium 编辑器/proof ticket 已通过。Console 当前完成 command Task 创建;HTTP 与 CLI 支持完整 create/update,Web update 等待强认证 authoring read/lease,避免用不含 spec 的 bounded read 覆盖未知字段。三资产合计 62,632 bytes;Local API 56/56、18-package clean build/test 3,030 total/3,008 pass/22 条件跳过/0 fail,package/source、Local image、122-module Edge import 与 Cluster dependency audit 均 compatible。首个阶段提交 `884912d1` 暴露默认 Edge 静态加载管理 authority 的真实回归:x64 21,229,568-byte RSS 超过 20 MiB 门,failed-only 重跑再次失败;修复没有扩大预算,而是改为 proof 验证后的 request-time dynamic import。默认 Edge 恢复 2,737,205 bytes/329 files/58 modules,opt-in Edge/Standalone Console 为 4,041,294/4,041,438 bytes、472 files/12 packages/94 modules,均保有门禁余量;默认 headless 与 Cluster 路径不变。修复提交 `dc1686bd6fb3505174dd9a14098ae5c2c92a1a7f` 的主 CI run `33229592307` 为 41 success/3 expected skip/0 fail,Kubernetes run `33229592293` 成功;显式 Console milestone run `33230227006` 为 42 success/2 scope skip/0 fail,生成 187,797,970-byte amd64、185,029,586-byte arm64 Trial Kit 与 5,623-byte milestone,保留至 2026-09-28。下载索引通过 checksum 与离线 auditor,返回 `compatible=true`。因此 D-421 已是可下载、可验真、可 fresh 试运行的 `3.0.0-alpha.2` 阶段实物,但仍不是公开 release、生产升级或长期支持版本。
|
||||
|
||||
- D-420/ADR-0515(已实现,首份真实双架构 Console v5 Trial Kit 已交付):阶段可用的首个自动化从“原生 CI 能通过 API 看到 bounded log marker”推进为“部署者能在 Console 直接观察实际输出”。Local Run HTTP 详情只追加严格验证的 latest Attempt 低敏摘要(ID、序号、状态、时间和 `logAvailable`),不返回 executor handle、Artifact ID、路径、Worker、PID 或错误明细;共享 HIGH 风险 `executeBoundedRunReadProjection` 保持不变,避免 Local UI 字段漂移到内建 Run read/compare Tool。Console 使用既有 `artifact.read` Policy/Audit/credential re-confirm 链,每次固定读取首个 32 KiB base64 窗口,分别显示 available/pending/retired/not-found/unavailable、range 与 truncation,不新增轮询、WebSocket、timer、缓存或整文件下载。三资产增至 48,318 bytes;`edge-application-api|standalone-application-api` 为 3,960,535 / 3,960,679 bytes、467 files、12 packages、90 loaded modules,仍低于 6 MiB/640-file 门,默认 headless Edge 保持 2,669,390 bytes/325 files/58 modules,Cluster 零变化。Local API 49/49、完整 backend `1,650 total / 1,648 pass / 2 Linux conditional skip / 0 fail`、18-package clean build/test 退出 0;package/source、Local image、122-module Edge import 和 Cluster dependency audit 均 compatible。提交 `57953ec8` 的远端 QingLong 3.0 CI 为 41 success / 3 expected artifact-finalizer skip / 0 fail,独立 Kubernetes deployment live contract 为 1/1 success。现有 `task.put` 的进程级 active credential fence 不适合常驻并发 HTTP,Web Task 创建/修订必须以后续“每请求 credential fence + 同事务 Policy/Audit/mutation”切片完成,D-420 不用单因子 Bearer 绕过强认证。
|
||||
|
||||
Reference in New Issue
Block a user