RT-05-004 Studio Runtime 上线收口证据
付费原产物恢复、CI 修复、预发布部署与灾备验收,以及首批受控灰度的发布门禁
记录更新至:2026-10-16 11:57:35(北京时间)。Platform 与供应侧原单退款契约修复均已实际部署;依用户明确批准的卖方补偿政策,供应侧于 11:39:03 沿原单正式事务全额退回 90000 source_quota,唯一退款凭证已取得,保留原扣款日志。11:40:19 已核对 Platform 原图像 18 points 释放一次、冻结归零,Studio 原 Run 失败结案且恢复完成;Planner 0.0164 points 结算保留。同一原请求重放没有新增调用或费用。上游执行及最终收费仍未知,尾部成本由 OceanWay 承担,不能据退款声称供应商未执行。随后获准的独立新意图已于 11:44:09 完成真实生成,原图、Artifact、未采纳候选与产品回执一致,实际浏览器预览/下载/刷新通过;新增 18.0266 points、累计已结算 54.1192 points,在原 US$10 上限内。完成后 333.153857 秒实际稳定观察已通过,11:51:21 已解除临时外部写保护、恢复同一单账号生产灰度;原 Nginx 配置精确恢复,App/唯一 Worker、数据库和准入范围未变。解除后至 11:57:13 的 351.591182 秒独立公开观察也已通过,原/新快照与账本保持、canonical 健康,单账号灰度继续。原失败生成没有重发。
本轮只收口 Studio 对话的现有文本与文生图切片。通用 SDK/Panel、Canvas 第二入口、独立 Runtime API 服务及 Drama/Commerce 实际消费仍按实现计划交付;完整 G2 与整个 UP-T 工作包不因此结项。工作包状态唯一入口仍为开发清单。
原产物与对话投递分态
付费生成成功、原产物保存成功、候选进入对话和用户采纳是四个不同事实。原 Artifact 已保存,但目标对话内容版本变化时,产品 Run 进入 delivery_pending,并单独公开 deliveryState。此时不再占用对话的生成槽位,也不继续自动 Planner 或生成;已有 stopped/failed 保留原终态,原产物仍可恢复。
当原件已全部保存但候选待投递时,原生 Platform Run 当前以 failed 加 delivery_pending 原因结案,这是产品交付未完成的表示;其中已成功的 Operation 仍为 succeeded/settled/saved,不能因对话投递冲突改成模型失败、撤销原结算或重新生成。
对话改名只更新标题及手动命名标记,不推进内容版本。新消息或真实上下文修改仍使原冻结目标失效。系统等待/停止摘要和恢复候选的公开文案不能自行推进内容版本,从而使同时进行的新一轮失效。
显式恢复通过产品接口完成:
| 接口 | 职责与限制 |
|---|---|
GET /api/platform/creator/agent-runs/{id}/saved-results | 校验当前本人、产品、creator 与 Run;只投影已保存原件、当前可用目标版本和可续的恢复命令,不公开原供应链接或私有 envelope |
POST /api/platform/creator/agent-runs/{id}/recover-results | 提交稳定 commandId、目标对话与精确版本;同命令同正文返回原回执,改正文返回冲突;不得借换命令或目标重新生成 |
恢复命令冻结目标、版本和整批 Artifact 身份。产品侧候选、inbox 与回执在同一事务提交;网络丢回执可沿原命令续读,页面刷新后仍能找回该命令。原 Runtime Delivery、Attempt、Job、Operation 与请求 envelope 保留原记录,产品恢复不篡改原投递历史,也不直接写 Runtime schema。
恢复只使用已经保存在 local/S3 的原件,不再次依赖供应原图 URL,不请求 Planner 或模型,也不创建新的模型调用授权或计费。当前用户权限仍须重新验证;跨主体、跨产品、失效目标及变化版本均须拒绝。恢复到本人其他对话须核对该目标的当前权限与版本。候选仍未采纳,不自动修改 Canvas 或领域对象。
Studio 提供保存到当前对话、保存到本人新对话及下载原图。网络异常重试沿同一恢复命令;不能每次点击生成新命令掩盖未知提交。生成已完成而投递待处理时,界面应表达“保存到对话”,不能诱导用户再次付费生成。
受控产品与浏览器回执
正式 Go Platform、隔离 PostgreSQL、真实 Studio/Runtime 与本地合成供应实际参与。浏览器受控验收当时的源码为 4060489,完成以下验证;后续 3dd3f720 增加后端恢复读取修复与 PG 断言,当前候选另含下方 Canvas 与测试夹具修复,不能将本次浏览器记录写成最终镜像已验。合成供应不是实际模型消费,以下流程未新增真实收费。
| 路径 | 实测结果 |
|---|---|
| 原对话版本已变化 | 返回 409,已保存原件保持;原 Runtime Delivery 继续保留 pending 历史,不自动投到新版本 |
| 恢复事务提交后网络丢回包 | 浏览器收到网络失败后,沿同一个 commandId 再试,刷新可读;只有 1 个候选和 1 条 inbox,无重复调用 |
| 恢复到本人新对话 | 独立公开 assistant message 与素材的 messageId 同事务提交,图片在目标对话可见,刷新后仍可读;不借原对话 message 外键 |
| 原件预览与下载 | 已查看预览;下载 PNG 的 SHA-256 与保存原件一致:bde5db9483e9c7c3fd12272c568b056288c2e8d72b400d7ec960f05914aa56bc |
| 桌面与手机 | 1440×1000 桌面和 390×844 手机路径通过;手机无页面横向溢出、恢复控件与浮动控件无重叠;公开标题为“生成图片” |
| 同一受控 Run | 1 次 Planner+1 次媒体;恢复只投递保存原件,无新增 Planner/生成、实际消费为零 |
测试曾发现新对话的候选/inbox 已提交,但没有公开消息,导致 UI 空白。该失败明确阻断了当时的发布;后续补齐同事务幂等公开消息和素材关联,再通过上述浏览器刷新验证。不能只凭数据库候选存在就登记产品送达成功。
CI 与可复现制品
上一批源码 60b0762ee1cfc8006c328e48e1cffc6737de9af7 的远端 Quality 因 braces@3.0.3 开发依赖高危审计阻断,属于历史回执。本轮保留审计门禁,修复依赖源码和发布流程,不以忽略告警或删除检测宣布通过。
| 项目 | 本轮处理与证据边界 |
|---|---|
braces 深递归 | 上游尚无可安装的修复版本;本地 MIT 源码补丁以显式栈替代受影响递归,保留 3.0.3 上游版本、独立 OceanWay 修订、完整许可、来源 tarball/hash 与补丁清单;专用回归覆盖原上游兼容行为和深嵌套输入 |
| 依赖审计 | pnpm audit 的 registry 告警为一层检查。file: vendor 源码不在 registry 审计覆盖内,必须同时核对来源、实际补丁及专用回归;零告警不表示该补丁已经第三方审计 |
| 秘密扫描 | 使用官方 gitleaks CLI,固定下载版本与校验和,避免依赖需要商业许可的 Action;完整扫描仍为发布门禁 |
| 实库回归 | Quality 与 Docker 发布均使用独立 PostgreSQL 16、显式 C locale、非 superuser 应用角色,运行 test:platform 与 test:runtime;不让发布流程绕过产品实库回归 |
| 备份工具 | 镜像使用与 PostgreSQL 16 服务端同 major 的 PGDG client 16,固定官方签名 key 的下载 hash 与 GPG 指纹;工具层 dump/restore 另列证据,不冒充最终镜像环境灾备 |
| 镜像来源 | 最终制品须固定完整 Studio SHA、Linux 多架构镜像、合并 digest、签名与流水线。预发布、灾备和灰度使用同一已验证 digest |
本次固定发布源码为 e4a4981e5feec4971c1b70956a5991896ef1c87a,Studio PR #44为 Draft。f7c6b2c 已完成业务修复及 SBOM artifact 使用 github.sha 的修正;随后 3dd3f720 修复跨目标命令提交前中断后默认刷新漏读,以及后来未完成命令遮住先前已提交回执与目标入口的问题。命令按自身目标独立核对权限,并优先保留已提交回执,相关 PG 场景补入断言。
3dd3f720 在全新隔离库完成 48/48 Runtime PG,0 跳过,其 Quality 38749151656 与 Docker 38749217909 曾通过依赖、安全、单元、Platform 178 项 PG、Runtime 48 项 PG、格式与构建步骤。随后因下方完整 Browser 失败而取消两条流水线,没有可部署镜像;此前页面的“Browser 运行中”是当时状态,不是该源码的最终通过回执。
最终源码 e4a4981e5feec4971c1b70956a5991896ef1c87a 的 Quality 38756191422 与 Docker 38756276328 均已完成并成功。独立复审绑定该完整 head,无未解决 P0~P2。各组按原报告登记,套件存在包含或重叠,不能相加为新的总测试数。
| 最终同 SHA 检查 | 实际结果 |
|---|---|
| Quality 单元 | 3703 通过、243 条件跳过;条件跳过不替代下方显式 PG 回归 |
| Quality 独立 PG | Platform 178/178、Runtime 48/48,均 0 跳过;另 PG integration 10/10、4 个文件,分组不相加 |
| Quality 浏览器与文件 | Browser 138 通过、19 项既有 scope 跳过、0 失败、0 未运行、0 flaky,39.2 分钟;FileProvider 12 通过 |
| Docker 自身 Browser | 137 项首轮通过、1 项沿既有 retry 通过、19 项既有 scope 跳过、最终 0 失败,45.1 分钟 |
| Docker retry 事实 | Canvas 2000 节点/5000 连线导航首轮 1904ms,超过原有 1500ms 门槛,既有重试通过;独立 Quality 同例首轮通过。没有放宽门槛、增加 retry 或跳过用例 |
| 多架构运行 | 原生 linux/amd64 与 linux/arm64 均实际执行 Sharp 0.35.5 / vips 8.18.7 PNG 编解码;最终镜像均含 pg_dump/pg_restore 16.15 |
| 镜像可信来源 | 独立验证精确工作流、分支、完整 SHA、GitHub OIDC、透明日志和 SCT;已签名 SPDX-2.3 绑定合并 index,419 packages。该回执不声明每个架构的完整软件包覆盖 |
| 固定制品 | 不可变身份 |
|---|---|
| 合并 index,预发与灾备共用 | ghcr.io/oceanway-ai/oceanway-studio@sha256:5b93acb02745d135857bb556491acec9d714d85a73d8811b32a0fdb565954cca |
| linux/amd64 manifest | sha256:34aa25c58b544e845f3e31cba190ba969b5b3a3215ed5888a890400db632f109 |
| linux/amd64 config | sha256:466b4100eab652c252e5616acb473bdb184b91039590b7d72934a164669dc16d |
| linux/arm64 manifest | sha256:ffd1613399bd9ff628ee53d0d39123485cff87999856a3e3c368d15b86c39cf1 |
| linux/arm64 config | sha256:dd1fc2f54298e2d0c02cddccfe7e95e8ca59878d03f28154a78c717b502fb6b9 |
实际服务器 Docker 29.1.3 使用 containerd image store,本地镜像 ID 与容器 .Image 为上述 index,而非 amd64 config。已分别重算原始 index → 唯一 linux/amd64 manifest → config 的 SHA,核对源 revision、非特权 node 用户及实际容器平台描述符;Compose 精确固定该实际 image ID,没有将三种 digest 混用或接受任意匹配。身份差异与 Docker 官方实现对应。
完整 Browser 阻断与定向修复
4060489 的补充完整 Browser E2E 实际运行 44.3 分钟:126 通过、19 跳过、9 未运行、3 失败。3 项失败分别涉及 Canvas 首次文本编辑没有 PATCH,以及视频桌面静音、时长控件隐藏。运行时长本身不是失败原因;这些实际失败阻断发布,不能被其他已通过子集覆盖或从历史中删除。3dd3f720 未修改这两条路径,因此取消其发布,先做定向复现和最小修复。
| 路径 | 实际原因与修复 | 定向验证及边界 |
|---|---|---|
| Canvas 首次编辑 | 将水合后的布局快照误作原服务器图的 rebase 基线,第一次文本编辑被误判为本地冲突,网络 PATCH 为零;修正已确认基线的保留方式 | 既有 Canvas E2E 全文件 13/13 通过,相关 26 项单元测试、类型与构建通过;两组测试分别登记,不相加为同一业务验收 |
| 视频桌面控件 | 1672×941 视口中的 9:16 视频受既有 height/3 约束,实际约 176.4px 宽,低于静音 220px、时长 280px 的显示门槛,原 CSS 正确。旧夹具改为先核窄态,再以 533×3 的视口高度核约 300px 宽时的控件与旧交互,补 390/430 边界和全屏 | 不改播放器 CSS、控件门槛或产品资源策略 |
| 视频手机夹具 | 第一轮全文件另发现点击发生在 SSR 水合就绪前的竞态;使用已有 data-ready 信号后继续原交互 | 第二次全新 PG16 的视频全文件 25 通过、17 项既有 scope 跳过、0 失败,共 42 项,用时约 1.7 分钟;不能写成“42 项通过” |
该增量仅修改 Canvas Hook、两份 E2E 与 changelog 共 4 个文件,没有新增 timeout、skip 或资源策略。定向修复不替代当前完整 head 的全量 Browser 和发布流程;所有上述测试新增真实收费为零。
先前 f7c6b2c 的 Quality 38746573243 与 Docker 38746714880 已取消,未产出可部署镜像,不能登记为通过。
早期 b2f3139 的流水线已通过 audit/security、单元及旧 178/新增 47 项 PG,但它早于新对话公开消息修复,不能代替最终提交的门禁。最终数量以同一提交的完整报告为准。单元测试子集、SSE 子集和包含这些用例的完整套件不能重复相加;旧 Platform PG 与新增 Runtime PG 是分开的套件。
独立文档站同时将自身 SBOM artifact 名称改为 oceanway-docs-sbom-${{ github.sha }},修复同类手动分支发布问题;现行 main 发布路径原本不受分支斜杠影响。该一行发布修复不改变业务验收结论。
预发布、真实生成与灾备
预发布已实际运行上述最终镜像,使用独立 Compose 项目、受限非 superuser PostgreSQL 角色、新数据库、独立 local 媒体目录与唯一正式 Worker。应用仅由服务器 loopback :18092 提供;私有 TLS relay :18443 使用已登记的 https://studio.oceanway.tech canonical Origin 与受信 CA,真实 Chromium 核对实际连接,应用与数据库健康检查通过。该预发演练期间,生产入口 :18091、旧 :3000、生产库、媒体和 Platform 均未参与切换;后续生产执行另见下节。
上述预发验收使用 Platform aa67267a3ea8970d837e6eda83e5aac6d0ffa3d7,复用其正式用户授权、Run、Operation、准入、原结果与账务接口;后续 Platform 原单恢复修复部署另见下节。Planner 配置与当前生产一致:gpt-6-luna、maxSteps=4;早期 maxSteps=2 只属于历史实验。媒体实际 provider 为 local,备份前同时检查数据库实际 object storage 设置与备份 manifest 均未启用 S3;本轮不将 local 恢复回执外推为 S3 环境灾备。
已有十份旧 schema/运维源文件与现行生产对应源码相同;新增 Runtime migration 仍实际安装了既有媒体表的 GC 引用保护 trigger,不能称为完全没有 DDL 增量。首次正式请求在 Platform grant 前创建 Runtime schema v5、请求认领和新旧 Writer 准入围栏,没有伪造业务行或迁移标记。
同一原请求的真实闭环
本轮由唯一验收执行者提交收费请求;全程使用冻结的原请求身份,其他操作不创建新需求。先停唯一 Worker 提交原请求,再将新准入关闭为 flag=0 并重建应用:原 Run、scope、requestWriter claim 与 grant 的完整字段前后一致,期间 Planner、媒体调用及 Job 均为零。随后原正式 Worker 接续同一请求;已实际观察媒体进入 sending 且绑定原 Operation,再对唯一 Worker 正常发送 SIGTERM 15,退出 0、无 SIGKILL、无 OOM,重启同一 Worker 后原请求完成。该回执是正常停止与续跑,不声称测试了硬杀、数据库崩溃或供应故障。
| 最终镜像实测 | 结果 |
|---|---|
| 原 Run 与调用 | Run 完成;2 次真实 Planner、1 次 gpt-image-2,3 个原 Operation 全部 succeeded/settled/saved |
| 执行与交付关联 | Job、Attempt、Artifact、产品候选、inbox、requestWriter 各恰好 1 条,Writer 为 Runtime,候选未采纳 |
| 真实原件 | PNG 1024×1024,1,239,493 bytes;供应原始字节与持久保存原件 SHA-256 完全相同:69ae249525d6769f11cd0dfae79e49b83084601bc43ce39f5ad3efd9d55980c4 |
| 预发主环境原请求重放 | 同请求返回 created=false、同一 Run、相同原 Operation;新增模型调用 0、额外结算 0、冻结 0 |
| 实际浏览器 | Chromium 桌面 1440×1000、手机视口 390×844:原图可见,预览开关、实际下载与刷新后同图可读;下载 hash 与 Artifact 相同,无横向页面溢出 |
| 浏览器日志与边界 | 0 console error、3 条既有 Next CSS preload 未及时使用告警,未过滤日志;手机截图局部滚动提示与浮动工具栏存在视觉重叠,完整消息仍可滚动/复制,图像、下载与输入区可用,独立复审无 P0~P2。这是手机视口测试,未声明真实触摸设备验证 |
应用停止修复
离线备份前,实际发现镜像默认 sh -c 启动没有向 Node 转发 Docker SIGTERM,备份因无法确认离线而未开始;该失败未登记为灾备通过。冻结 Studio 源码与镜像保持上述 SHA/digest,Infrastructure 仅增加对应应用的三项启动配置:working_dir: /app/web、command: [node, /app/web/server.js]、PORT: "3000",使 Node 成为 PID1,与原程序目录、入口及端口一致。Worker 与其他运行凭据不因该 override 改动。
严格 preflight 及负向保护 15/15 通过,独立静态复核无 P0~P2。最终镜像按此配置启动后,纯 GET 核对原 Run 仍完成、原 PNG hash 不变,再实测正常 Docker SIGTERM 15,0.448 秒退出 143(128+SIGTERM)、无 SIGKILL、无 OOM。退出 143 如实记录,不改写为退出 0;测试时没有在途业务,不声明活跃 HTTP drain 通过。
最终镜像正式备份与恢复
| 路径 | 实际结果与边界 |
|---|---|
| 离线备份 | 确认本轮所属 App/Worker 均停止、原 Run 完成后,以最终 Linux 镜像既有 disaster-backup.mjs 和 PG16.15 对整库所有用户 schema 及原媒体正式备份;dump 545,009 bytes、1 个原 PNG 1,239,493 bytes,约 1.011 秒;manifest 与数据库均确认 S3 未启用 |
| 同镜像服务器恢复 | 以同一最终镜像既有 disaster-restore.mjs 和 PG16.15 恢复到第二个新数据库、受限角色、新媒体目录,约 15.122 秒;未覆盖原库/目录,未启 Worker 或新准入 |
| 全库核对 | 120 表、6 序列、98 行;schema SHA-256、每表行 hash、全部序列状态、受限 owner 映射及原 PNG hash 全等。时间/浮点/编码按会话规范化后比较,不忽略实际 schema 差异;覆盖原 Run、Job、Attempt、Artifact、请求认领、回执与恢复命令表,空表不伪造恢复命令 |
| 加密离机恢复 | CMS AuthEnvelopedData、AES-256-GCM/RSA-3072 加密归档经认证 SSH 保存到另一台主机,私钥保留在离机端;独立 PostgreSQL 16.14 实际恢复新数据库/角色与媒体,约 2.507 秒,同样 120 表/6 序列/98 行与上述全量指纹、原件 hash 全等;既有 PG18 未改动。这是离机 PG 数据恢复,不声称另一台主机运行了 Linux 镜像 |
| 恢复应用与原请求 | 第二恢复应用实际绑定已独立核对:同一最终镜像、Node PID1、新数据库/受限角色/媒体、canonical TLS、flag=0、无 Worker。恢复后原 Run、原 3 个 Operation、原 PNG hash 及单一认领/候选/inbox 全部读回;再次提交同一冻结原请求返回 created=false、同一 Run 与原 Operation,新增模型调用 0、额外结算 0、冻结 0。无 Worker 时 readiness 503 属于该有意停止配置,不能伪称 Worker 就绪 |
| 关闭与回退 | 已实测关闭新准入不丢失原认领,正常 Worker 停止/恢复和原请求重放均沿原身份;生产回退计划是同一新镜像关闭新准入并保留原单恢复,不能回滚旧库后重新收费执行 |
预发演练结束时,原预发布 App/Worker 在离线备份后有意保持停止,原库与原件保留;第二恢复 App 仅由私有入口提供核查,保持 flag=0、无 Worker。上文健康通过对应各演练阶段,不表示此刻主预发仍在运行。
恢复核验中两次只读 Platform TLS 连接在建立前出现 ECONNRESET,保留原日志;后续原请求核对和重放均已成功,没有更换原请求、创建新生成或改变后台逻辑。上述实际备份与恢复没有新增模型调用、重放资金或修改现行生产服务。此前工具层 120 表/819 行/67 触发器回执仍是独立夹具历史,不替代本次真实预发布的 120 表/98 行数据。
运维交付固定 Infrastructure 完整源码 b4dc5c95f2a7235a1a8d1555e87a8d035d902118,见 PR #23及该提交的生产 review packet。15/15 保护测试与 diff 检查通过;独立 AI 技术复核绑定上述 Studio 与 Infrastructure 完整 head,本轮审查范围无未解决 P0~P2。Governance 38774176231 已成功;此前 metadata 检查因 PR 说明缺少仓库要求的模板标题失败,补齐说明后在同一源码 head 的新事件通过,没有放宽源码或工作流,失败历史保留。这些回执只说明预发演练与技术复核;实际生产执行见下节。
单账号生产灰度执行与当前写保护
用户于北京时间 02:09 明确确认 Studio e4a4981e5feec4971c1b70956a5991896ef1c87a 与 Infrastructure b4dc5c95f2a7235a1a8d1555e87a8d035d902118,要求按既定操作包仅向现有验收账号灰度,并完成上线后验证。本次按该授权执行,名单保持一个账号;用户确认与独立 AI 技术复核分别记录,AI 复核只代表其技术范围。两份发布源码与上述签名镜像保持冻结。
以下均为 canonical https://studio.oceanway.tech 的实际生产回执,时间为北京时间 2026-10-16;预发与本次生产备份分别记录。
| 阶段 | 实测结果 |
|---|---|
| 切换前分区盘点 | 本轮 canonical 生产分区:7 个 completed Agent、14 个 saved step、7 个 saved media、7 个 saved attempt,generation task 0,各类非终态 0;唯一实际队列持有人。旧 :3000 另库/网络/token,40 completed / 4 needs_review 记录原样保留,不能据本轮盘点声称全系统 UNKNOWN/待复核清零 |
| 02:34:57 维护准入 | canonical method gate 实际启用,Nginx 语法通过;16 个旧 Nginx worker 自然退场,用时 0.254 秒。无业务作用的随机路径 GET/OPTIONS 转后端返回 404,POST/PUT/PATCH/DELETE 返回 503,health GET 200;不声称 GET 必然无数据库投影写入 |
| 旧服务停止与二次盘点 | 唯一旧业务 Worker 正常 SIGTERM,3.066 秒退出 0;严格核对旧 App 的 Node 身份后正常 SIGTERM,0.631 秒退出 143。没有 SIGKILL、自动强杀兜底或 OOM;App/Worker 均停止后再次盘点,原各类终态保持、非终态 0。停机期间读取暂时不可用,不声明零停机或活跃 HTTP drain 已验 |
| 02:35:40 生产离线备份 | 在候选业务 schema 初始化前,以最终镜像既有 disaster-backup.mjs / PG16.15 备份全部用户 schema;source audit 前后完全相同。93 表、4 序列、7461 行,dump 1,120,314 bytes,原件 7 个 / 8,242,563 bytes,实际 S3 未启用 |
| 生产备份离机保全 | CMS AuthEnvelopedData AES-256-GCM/RSA3072 加密归档 9,892,434 bytes 经认证 SSH 保存到离机端;hash、GCM 认证解密及完整 dump/原件 hash 已核对,私钥未上传部署服务器。归档 SHA-256:a6c7d4f6507a656b51711c392e1f9cc1a67f0bf102d8eb2bfc0b5554fb394003。本次生产备份点未另外执行数据库恢复;不与上方预发 120 表/6 序列/98 行的实际恢复混为一谈 |
| 02:39:58 stage 0 | 同一最终镜像、Node PID1、原生产数据库/受限角色/媒体、Planner 4、显式单主体 allowlist,flag=0;App、数据库、唯一正式 Worker healthy,实际授权队列持有人唯一。外部变更仍被维护 gate 阻断,没有伪造业务行 |
| 02:40:02 stage 1 | 只将同一获准主体的新 Runtime 准入开启;其他主体的旧 lane 保持,不以跨主体收费提交探测。沿用同一个正式 Worker,来源、Planner、权限与队列唯一性再次核对 |
| 02:40:05 对外灰度 | 维护 gate 解除,原 Nginx 原始与 effective 配置 hash 精确恢复,旧 Nginx generation 自然退场 0.253 秒;canonical readiness 200、ready=true,health POST 回到后端原有 405。原 :3000 保持不动;部署操作本身新增模型调用 0 |
| 独立正式绑定 | 02:40:34 再次独立核对实际容器、同一最终 image、原生产库/角色/媒体、Node PID1、单账号准入、唯一 Worker 及原 Nginx;canonical HTTPS 的当前本人/creator 与 readiness 通过。源字段是实际观测,不能以期望配置代替 |
| 首个生产原请求 | 唯一新需求只形成原 2 条调用:1 次 Planner 已 succeeded/settled/saved,图像原 Operation 为 unknown/reserved/pending;Runtime 仍 waiting。原 claim、Job/Attempt 与供应受理身份保留,没有另建需求或重发图像 |
| 原单供应核查 | 原供应曾以 HTTP 202 受理;对精确原 task 的受信 TLS GET 返回 HTTP 200,但同时是 IMAGE_SUBMISSION_UNCERTAIN、结果 0,并明确不得自动重复生成。它不代表生成成功,也不能当作普通排队;原恢复任务另有 original_authorization_unavailable,恢复器产品凭据配置须沿原身份核对 |
| 02:53:59 写保护 | 仅恢复 canonical 外部 method gate:非 GET/HEAD/OPTIONS 暂时 503,获准读取仍交后端;16 个旧 Nginx worker 自然退场 0.253 秒。保留同一 App、唯一 Worker、数据库、原请求/Operation 与恢复权;flag=1 和单主体名单未变,未执行关闭 flag、App/Worker 停机、旧镜像或旧库回退 |
| 原单当时验收判定 | 当时未取得原图、Artifact/候选/inbox 成功回执,等待 UNKNOWN 的时间不计为稳定窗口。后续原单正式失败退款、独立新意图验收及外部写保护解除分别见下节,不能把失败单改写为成功 |
切换后独立核对了旧分区原 7 个 Agent、14 个 step、7 个 media、7 个 attempt 的全部原身份及状态,7 个原件 hash 相同;旧 :3000 原 44 条任务记录及 App/Worker 保持。新增 Runtime schema 1~5、唯一原请求认领及原媒体 GC 保护 trigger 已实际存在。这些保全回执本身不能消除新媒体原单的 UNKNOWN;后续正式补偿与消费状态分别见下节。
stage 0 的操作校验曾误读 readiness envelope 的字段层级;实际后端健康,随后经独立核对,只读确认同一容器的 data.ready,没有为消除校验错误重建容器、重放 schema 或提交模型需求。
原单退款契约修复与部署状态
Platform 修复固定为 ff8eff69287c5e6488d46c3d02f14e0690598bba,独立 AI 技术复核在本轮范围内无未解决 P0~P2。隔离 PostgreSQL 16.14 的 31 项顶层测试全部通过、0 跳过,10 份源码及契约文件 hash 与该提交一致;范围包含图片原单、原结果恢复、scanner、媒体及视频拒绝回归。共享供应回执示例在两仓逐字节相同,并经实际 loopback HTTP 消费测试。以上测试使用本地夹具,不是真实供应退款。
该 Platform 版本于 10:30:18 完成应用部署,固定镜像为 sha256:02dc3e0f33f566eaa6ab51535c8e351c3ef9acbfe0c9a297e919bb7346ab92cc。只替换原 Platform App 并配置已有 Studio 产品 key ID 的恢复映射;PostgreSQL、Redis 及 Studio 原 App/唯一 Worker 保持。10:31:39 Console 临时生成门禁解除,原站点与有效 Nginx 配置逐字节恢复;Studio 外部写保护保留,flag1 与单账号范围未扩展。10:38 独立只读复核实际镜像、源码标签、健康状态、映射与配置 hash 通过,没有生产资金动作或模型提交。
部署前完成 Platform 在线只读 PostgreSQL 快照、独立 Redis RDB 和 28 份日志前缀保全;加密离机后在全新本机 PostgreSQL 18.4/Redis 8.6.3 实际恢复,120 表、155722 行、每表/schema/序列摘要与归档对照通过。Redis RDB 字节与加载通过,期间自然过期项单独记录;这不是 PostgreSQL/Redis 原子一致快照,也没有覆盖源库或启动恢复应用。
远端 CI 38838043357 的后端通过,前端 typecheck 通过,但单个测试 Job 在 10 分钟上限取消,不能登记该次全量前端成功。后续提交 54d8eee517c2d5846e51876155d2fcc4e0ef39e7 只调整 CI:四个 Vitest 文件分片、fail-fast: false,保留原聚合检查名且必须全部分片成功;测试断言、既有超时和运行源码未改。实际 sequencer 发现的 306 文件划为 77/77/76/76,无交集、无遗漏;发现清单不是测试执行。新 CI 38841253923 在 Job 步骤启动前因账号付款/支出限制阻断,未修改组织账单、额度或测试门禁。
本地 macOS、Bun 1.3.14/Node 24.6.0、Vitest 4.1.10 的首次四分片为 3618 通过、2 失败、0 跳过:viewer 首个元素查询触及既有 1 秒等待,key-expiration-picker 一项触及既有 20 秒测试上限。两文件隔离复验 46/46 通过后,完整失败分片 3/4 以单 Worker 顺序复验,76 文件/856 测试与 76 文件/1116 测试分别全部通过;连同原成功的 1/2 分片 77 文件/859 测试与 77 文件/789 测试,最终覆盖 306 个唯一文件、3620 个实际断言通过,0 失败、0 跳过。独立复算每份报告 hash、全部断言/文件状态与发现清单,无交无漏;没有只重跑两项后代称全量通过,也没有修改断言或既有超时。首次失败历史保留,不能称首次无失败或外推为远端 Linux CI 成功。实际运行候选继续固定为上述 ff8eff6,其业务源码与仅 CI 子提交相同。
新的消费契约沿原 request_id、task、精确模型及冻结连接/凭据读取供应方的原单审计回执。回执须证明 source_quota 中 charged_quota == refunded_quota > 0,并持久保留审计摘要、时间、固定政策与责任字段;Platform 才能沿原 Operation、原价格快照和唯一记账服务释放同一笔预留。供应采购单位与客户售价分别核对。部分退款、错单位/政策/责任、跨原单复用、503 或零用量错误日志均不能释放占用;释放中断、并发查询及同原请求重放必须仍只有一次释放、零次新增模型提交。
其中卖方补偿政策明确保留 provider_dispatch=unknown:供应方真实全额退回原买方扣款,并承担上游可能继续发生的成本。它可以证明原买方已获退款,不能据此声称供应商未执行或未收费;迟到结果也不能重新扣客户款或覆盖原补偿回执。供应方本轮只发行这一补偿分支;provider-failure 分支仍须有独立核验的原供应终态证据,本轮保持关闭。
后台恢复器的已有 Studio 产品 key ID 映射已按上述部署补齐,配置入口为 OCEANWAY_PLATFORM_RELAY_RECOVERY_PRODUCT_KEYS_JSON,值为已存在且有效的产品凭据 ID,不含 secret,不增授调用权。隔离 PG 已验证缺映射时继续保留占用,补上同一合法产品 key ID 后由 scanner 续办同一笔释放。供应退款前的生产正常周期扫描已沿原任务完成查询,原因由授权不可用推进为 original_media_result_pending,当时仍为 UNKNOWN/reserved、原 Attempt 恰好 1、释放次数 0;补齐映射和恢复查询本身不构成供应退款或恢复完成。11:00 canonical Studio 受信 TLS 健康与原 Run 回读通过,当时原 Run 为 paused、图像仍 running;外部无副作用 health POST 返回 503,原 App/Worker 身份不变。
供应侧实际发布源码为 bd1953d729bf667cefc6f921e96909e5ebf8ef60,资金恢复与正常停止基线为 f81db3e5fec032a8ff705806f9c0ad90e1945d8e,两次独立技术复核在已审范围内均无未解决 P0~P2。先前实际预检发现无限 Key 剩余额度可为负、存量余额使用 bigint,旧草案错误使用 int32 余额边界;现按原扣款的逆操作处理 remain+q / used-q,保留原无限额度标记和合法大余额,使用受检加法防溢出,不重置余额或虚增补偿。真实隔离 PostgreSQL 16.14 与 SQLite/HTTP 验证为 19 项顶层、33 个含子测试通过事件,0 失败、0 跳过,不能称作 33 项独立 PG 顶层测试。官方发布脚本另补固定 App 的锁内 TERM、无限等待且无自动 SIGKILL 回退、退出/无 OOM 核对及私有文件权限;五项停止协议夹具通过。
首次 f81db3e 官方生产发布中,候选本机健康检查已通过,但维护机到公开状态接口的 TLS 握手失败、尚未取得 HTTP 回应,官方流程据此正常回滚旧 175ebec 镜像并恢复原 Caddy 配置。旧 App 与候选两次停止均实测 TERM、退出 0、无 SIGKILL/无 OOM,没有恢复源数据库或执行退款。后续 bd1953d 仅为这个无副作用的公开状态 GET 增加两次有界重试,保留 CA/SNI 验证,完整回应必须为 HTTP 200 且 JSON success=true;四项隔离回归通过,不重试生成 POST。
bd1953d 沿官方入口实际部署成功,固定镜像为 sha256:08c547f50975774efd4195f12baea104b4762c07f52f55c4aa2163c4288f39c5,维护机公开状态 GET 的严格 TLS/HTTP/JSON 校验通过。旧 App 正常 TERM、0.641 秒退出 0,无 SIGKILL/无 OOM;原 Caddy 全配置于 11:22:44 精确恢复,原自动渠道测试单项设置于 11:24:34 恢复为 true,原 60 分钟周期与 passive recovery 模式保留,其他设置未变。恢复时原调度时间已到,随后按既有自动调度执行的任务与本轮手动生成分别登记,不能声称全供应站零请求。11:26 默认 execute=false 的原单预检通过、资金及任务行无变更;它是演练,不等于正式退款。
供应源码远端仓库当前已归档,标准推送返回 403;本轮保留原 remote 与归档状态,没有强推、解归档或扩仓。上述提交为本地固定源码,技术发布使用该提交的 Git archive,26,173,440 bytes、SHA-256 3da45cbedb8f3f6bdc9603a60f94c0008e3306439d524ccb4f44749ccbd7353a,构建提取的 2458 文件与归档精确相等。官方部署退出 0 后,34 份既有用户文件的字节、权限、owner、Git 状态与 HEAD 均恢复,保留本次恢复快照,没有丢弃他人暂存。不能据此登记远端 PR、CI 或合并通过,远端维护归属仍为待处理项。
用户已明确确认该原单的卖方补偿政策:原图像 18 points 释放、Planner 0.0164 points 保留、未知上游尾部成本由 OceanWay 承担。并授权在原 US$10 累计上限及同一账号内,以独立新意图验收一次真实生成;原单不得重发。
11:39:03 供应侧原单正式退款已执行。 一次退款 POST、零次重试,在同一事务内形成唯一 journal,原扣款与退款均为 90000 source_quota,买方钱包及原 token remain 各增加 90000、token used 减少 90000。原 task 结案为 FAILURE,原 consume 整行保留;原 token 授权的公开回执已实际读取。provider_dispatch=unknown 与卖方承担未知上游成本责任均保留,没有生成 POST,也没有绕过正式退款服务手改余额或抹除原扣款。
11:40:19 Platform 与 Studio 原单结案已核对。 原 image Operation 为 failed/released,原 reserve 与 release 各恰好一次、settle 为零、冻结及本单客户已结算均为零;原价格预留的 18 points 已释放,Planner 原 0.0164 points 成功结算保存。原 Run 为 failed、recoveryComplete=true,requestWriter/Job/Attempt 各恰好一个且原身份保留,Artifact/候选/inbox 均为零,没有伪造原图或成功产物。供应 source_quota 与客户 points 分层对账,不能因两层使用同一数值字段就混为一个账本。
沿同一冻结原请求的实际重放已通过:返回同一 Run、created=false,原 Native calls 完全相同,新增模型调用 0、额外结算 0。原单失败退款与下节独立新图像分别验收,原失败请求没有改成新意图或重新派发。
独立新意图真实生成验收
在用户明确授权、实际原单退款/结案/重放和剩余累计预算核对后,同一个既有验收账号于 11:43:03 仅提交一次不同的新意图;唯一正常 Worker 自然执行,没有由验收脚本推进队列。新 Run 于 11:44:09 completed,11:44:30 首次只读终态回执确认成功;Studio、Platform 与供应技术版本保持上述完整源码和不可变镜像。
| 项目 | 实测结果 |
|---|---|
| 原生生成与结算 | 2 次 Planner 与 1 次图像,全部 succeeded/settled/saved;每个原 Operation 的 reserve/settle/attempt 各恰好 1、release 为 0、冻结为 0,没有新尝试或双重结算 |
| Runtime 与产品回执 | requestWriter、Job、Attempt、Artifact、Delivery、candidate、inbox 各恰好 1;同一 Artifact、asset 与 candidate 身份关联,候选仍未采纳,没有自动写入 Canvas |
| 原件保存与下载 | 1024×1024、1,313,644 bytes;Platform 原输出、保存原件、Artifact/inbox 和实际浏览器下载的 SHA-256 相同:7783602c80fc8d98d233f53ec5ca4bf04587283427aa474223bd010a57b145f7 |
| 原请求幂等重放 | 返回同一新 Run、created=false,原 Native calls 全等;新增模型调用 0、额外结算 0,与失败原单的独立重放分别核对 |
| 实际浏览器 | 1440×1000 桌面视口的原图预览、下载及刷新持久化通过;390×844 手机视口加载与截图核对通过,不声明实际触摸设备测试。console error 为 0;3 项唯一既有 CSS preload warning 跨导航重复出现。既有“服务状态待确认”侧栏文案保持,不能据该可选字段缺失判断实际后端故障 |
| 实际费用 | Planner 0.0158+0.0108=0.0266 points,图像 18 points,共 18.0266 points;累计已结算 54.1192 points / ¥0.541192,原失败图像 18 points 已释放,原 Planner 0.0164 points 仍单独保留 |
| 完成后稳定观察 | 从首次实际 completed 快照 11:44:30.042544 到 11:50:03.196401,间隔 333.153857 秒;完整新 Run/calls/envelopes/Job/Attempt/Artifact/未采纳候选/inbox/claim 字节相同,三个原 Operation 的账本/价格/动作/attempt 保持,原失败单快照与唯一释放也未变 |
| 健康及范围 | 11:50:19 canonical 受信 TLS readiness 200、正式 Worker 心跳健康;Studio App/Worker 与 Platform App 的容器不变、RestartCount 均为 0,Planner4、单主体范围保持;本次观察没有生成、财务或重放 POST |
| 11:51:21 恢复单账号灰度 | 仅解除外部 method gate,原 Nginx raw/effective 配置 hash 精确恢复;16 个旧 Nginx worker 自然退场 0.253 秒,无强杀。App、唯一 Worker、数据库、Run、flag1 与单主体准入未变,readiness/db/Worker healthy;本次操作生成 POST 为 0 |
| 恢复后公开观察 | 11:57:13 距实际解除 351.591182 秒,受信 TLS canonical readiness 200、正式 Worker 健康;11:57:35 完成原失败单与新成功单全快照/账本终检,分别与各自基线相同。三容器与 RestartCount0、单主体、Planner4、原 Nginx 配置保持,未增加模型/财务/业务 POST;此窗口与解除前 333.153857 秒观察分别登记 |
上述真实生成、原件验收、完成后超过 5 分钟的实际稳定观察,以及恢复公开入口后超过 5 分钟的独立观察均已通过,同一单账号灰度已恢复。解除后还以该账号的现有会话重新核对实际浏览器,原完成图仍可见、无错误覆盖层、console error 0,未提交新业务或模型请求。原失败单的供应执行与尾部费用未知事实继续保留。
灰度准入与停止条件
新请求同时受 Runtime 开关与显式 subject allowlist约束,默认关闭。用户已明确首批范围仅为既有受控验收账号;扩大名单须另有明确登记。已绑定 Runtime 的原请求、读取、停止及恢复不受新准入名单撤销影响,避免关闭开关后付费结果无法取回。
本次执行前已固定 CI、预发布、存储、Worker、灾备及独立技术复核回执;用户已确认上述两份完整源码并授权单账号灰度。本次确认及操作包的依据见该 Infrastructure 版本的 AGENTS 生产切流规则与 CONTRIBUTING 验收规则。灰度仍限定无附件、无 Skill 的 chat 文本与文生图;未覆盖入口继续使用原 Writer。观测重点为原 Operation 对应、在途/UNKNOWN/待保存/待投递、原产物可读、重复调用及冻结余额,而非仅观察 HTTP 健康。
生产切换已按 review packet 临时阻止生成与变更请求进入,再排空旧 Worker、核对在途和恢复状态并执行离线备份;Runtime 的 flag=0 仅关闭新 Runtime 准入,不能替代所有旧入口的维护措施。先前预发仅在所属私有恢复 relay 实演 HTTP method gate:GET/HEAD 200,POST/PUT/PATCH/DELETE 503,OPTIONS 交后端返回 404;解除后 health POST 回到后端原有 405,原 Run 与 PNG hash 前后不变。私有 relay 的启停配置均核对 Nginx 语法及 reload;该准备阶段的生产 canonical :443 完整配置仅通过 syntax-only nginx -t,尚未应用。该私有演练没有调用收费路径或修改当时生产,不证明活跃 HTTP drain;随后实际 canonical 维护启停与本次重新写保护以上节为准。
发现重复生成/结算、原件不可恢复、越权、旧 Writer 绕过围栏或备份不可恢复,立即关闭新准入并保留原单恢复器。不能通过新建 Run、替换 envelope 或恢复旧数据库后重放请求来消除告警。
费用、来源与未覆盖项
验收预算仍为用户授权的 Planner 与生成合计 US$10,使用现有余额;它是本轮验收约束,不是产品 Run 的预算表单。费用按当前原生账务回执登记:
| 批次或状态 | points | 人民币显示 | 判定 |
|---|---|---|---|
| 此前正式接线 | 18.0454 | ¥0.180454 | 已结算 |
| 追加预发 | 18.0308 | ¥0.180308 | 已结算,2 次 Planner+1 图像;该预发原请求重放无额外调用/结算 |
| 本次生产 Planner | 0.0164 | ¥0.000164 | 已结算保存 |
| 首个生产图像原单 | 18 | ¥0.18 | 先前 reserved;依正式卖方补偿回执已释放一次,当前冻结 0、本单客户结算 0;不代表未知上游费用为零 |
| 北京时间 02:56 回执已核结算累计 | 36.0926 | ¥0.360926 | 不含上列图像占用,不是本次生产原单的最终结算总额 |
| 独立新意图 Planner | 0.0266 | ¥0.000266 | 2 次分别为 0.0158 与 0.0108,均已结算保存 |
| 独立新意图图像 | 18 | ¥0.18 | 已结算保存;本次独立需求合计 18.0266 points / ¥0.180266 |
| 新意图完成后累计 | 54.1192 | ¥0.541192 | 累计已结算,本轮原单与新意图冻结均为 0;同原请求重放无额外调用/费用 |
原单结案前曾独立核对可用余额减少 18.0164 points,恰好为 Planner 已结算 0.0164 加图像占用 18;11:40 的正式释放回执将原 18 points 全额退回可用余额,Planner 结算保留,当时累计已结算仍为 36.0926 points / ¥0.360926。独立新意图新增 18.0266 points 后累计为 54.1192 points / ¥0.541192。原生产需求没有重试生成。显示换算仍采用 Platform 的 100 points/CNY 与参考 6.75 CNY/USD,不声明为市场汇率。预发备份、恢复、启动修复、原请求重放及生产部署/写保护操作均没有新增收费需求。此次退款依明确政策经原单正式事务执行,保留 provider 执行与尾部成本未知事实;没有绕过正式服务手改余额或任务表、补零、替换 envelope 或重发来消除不确定状态。
本轮 Studio 从 60b0762ee1cfc8006c328e48e1cffc6737de9af7 的独立干净工作树推进,最终源码与制品固定为上表。文档从 b067b44a69b8a0bb17f69ed6071adae3f4e423f2 的独立干净工作树更新,先前 8e9bb9a、cd30de5 的状态是对应时点的历史快照,本次继续补记实际生产切换、原单未知与写保护状态。原 Studio 57 个、Docs 35 个既有 dirty 文件的内容 hash 与 HEAD 已核对未变,未纳入本轮提交;不以文档构建替代应用验收。
原失败单已正式退款并结案,独立新意图的真实生成、保存、候选回执及完成后稳定观察通过,11:51:21 已恢复同一单账号灰度;恢复公开入口后的独立复核与超过 5 分钟观察也已通过。已通过部分只覆盖上述 Studio 首批切片,它不证明通用 Panel、Canvas 双入口、独立 Runtime 服务、第二领域消费或多副本容量已经完成,也不恢复废弃旧 Admin/Console 仓库。