Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-surface-black-screen-recovery.md; R0=4d362537d0e8755a03b1757b5bad92779a064b33.
Impact: task metadata only; the feature workspace starts at 4d362537d0.
Refs: .task/feature-surface-black-screen-recovery.md
Why: Dev #452 selected a frontend pointer lacking the previously merged
SurfaceMeta hydration fix and blanked saved-page conversations.
Evidence: Independent review and regression red/green receipts are in
.task/feature-surface-black-screen-recovery.md; make test/build follow.
Impact: Pin the frontend that retains fast-slow and saved-page recovery;
no backend, UI token, storage or permission configuration change.
Refs: Frontend #68; Dev #454; Dev #452; surface-black-screen-recovery
Why: Bind the fixed frontend pin to the current integration baseline.
Evidence: Startup, task-sync, regression red/green, independent reviewer
replay and browser receipts in the canonical task card.
Impact: Evidence and phase authorization only.
Refs: Frontend #71; surface-black-screen-recovery
Why: Second-resolution release IDs let staging delete a previous release
when a same-source deployment ran within the same clock tick.
Evidence: Fixed-clock rollback regression fails before and passes after;
250 governance checks pass. Independent review replays collision and
copy-failure protection; receipts are in the primary task card.
Impact: Add invocation identity and exclusive directory creation; keep
old artifacts intact. Also retain the latest compatible frontend pointer.
Refs: User-approved I2; Dev #483; Frontend #71/#72
Why: Completion must verify the served frontend and original conversation.
Evidence: Real authenticated local/public refresh and two-page preview;
HTTP2 event stream verified, credentials revoked, data identity unchanged.
Governance review and red/green outputs are in the canonical task card.
Impact: Evidence only; no application or storage change.
Refs: Dev #483; RDM #288/#289; Frontend #71/#72
weichen
changed title from Restore saved surface reload without losing the fast-slow frontend to Restore surface reload and protect deployment rollback artifacts2026-10-12 14:57:06 +00:00
Why: Final admission must include newly merged lifecycle validation.
Evidence: Full test/build and real local/public browser acceptance are
recorded; test and PostgreSQL CI passed on a8035bf.
Impact: Task record only; subsequent synchronization receives latest main.
Refs: Dev #483/#484; Frontend #71/#72
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=99048dda1f48bccb3d5d798050d7beeea2907177.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: Admit the recovery fix with the latest lifecycle guardrails.
Evidence: Independent replay on the synchronized combination and live
public recovery receipts; exact current-head CI is awaited next.
Impact: Evidence only; no further source changes.
Refs: Dev #483/#484; Frontend #71/#72
Why: Current RDM identity ensure/verify intentionally refuse missing
databases and schema; the old fixture invoked them on empty stores.
Evidence: Actual RDM red failure, real SQLite and isolated PostgreSQL
green replays, and independent review receipts in the task card.
Impact: Test setup only; normal serve initializes temporary stores and
is reaped before the unchanged identity/lifecycle assertions.
Refs: Dev #483/#484; current RDM D1 existing-store contract
Why: Main D1 now shares the same explicit fixture initialization contract.
Evidence: Both real SQLite and temporary PostgreSQL initialization paths
were independently replayed; capabilities JSON assertions are preserved.
Impact: Resolve duplicate PG setup through the tested helper; preserve
all main lifecycle changes and the rollback directory protection.
Refs: Dev #483/#485; D1 existing-store identity contract
Why: Required lifecycle gates must follow the current identity contract.
Evidence: Real binary and temporary PostgreSQL replay, independent
review, and D1 synchronization records in the canonical task card.
Impact: Evidence only; application changes remain the approved recovery
and release collision protection with current main work preserved.
Refs: Dev #483/#485; Frontend #71/#72
Why: The synchronization gate requires saved task evidence.
Evidence: Current product build and actual binary replay receipts are in
the canonical task record; subsequent sync uses an external receipt.
Impact: Evidence only.
Refs: Dev #483/#485
Why: Fixed identity contract and current main must share one candidate.
Evidence: Saved final sync, real SQLite/PG replays and live public
recovery receipts; exact current-head CI will decide admission.
Impact: Task metadata only.
Refs: Dev #483/#485; Frontend #71/#72
weichen
merged commit 2c01693104 into main2026-10-12 16:12:56 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
feature/surface-black-screen-recovery 任务卡
任务主记录:Dev PR 待创建;组件 PR https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/71;状态:进行中;owner:weichen
基线与授权
权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
4d362537d0工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-surface-black-screen-recovery(worktree);分支:feature/surface-black-screen-recovery
授权与交付终点:用户于 2026-10-12 在诊断与四步修复计划后答复“继续”;连续覆盖源码组合修复、回归测试、Review、PR/CI/合入、8788 部署和公网浏览器验收。数据库迁移、账户重置、其他任务清理不在范围内。
交付模式:authorized-continuous(本次四步计划范围)
合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
自动推进授权:有;覆盖阶段 1–9 与部署验收;来源:用户“继续”;终点:8788 已保存页面刷新可用;停止条件:扩大权限/数据设计、改变运行存储身份、无法保留在途任务或平台门禁拒绝。
当前阶段:实施与自检;当前增量:I1 页面恢复与组合修复
流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
目标与非目标
恢复 cnv_b61fa45c72e2 等已有页面会话的刷新、切换和预览;将 Frontend 权威 main(同时包含 #67 快慢展示与 #68 页面修复)组合进 Dev。旧版本把 SurfaceMeta 写入 SurfaceSnapshot[],PreviewPane 读取 identity.surfaceId 后根节点清空。Dev #452 在 #454 后将前端指针退回 1edd872,导致回归。
关联方向与规划
需求分析
方案与计划
阶段评审
探索试验与迭代
同步记录
4d362537d04d362537d0证据(Evidence)
结果与验证(完成后填写)
规划进展与下一步
合入与清理
| 同步前验收 |
4d362537d0|9964fe3608| 2026-10-12T14:21:49Z |组件合入
Frontend #71 已核验 merged=true,merge_sha=e3332badcae688540fb664d7b8e66321291e8d77;被审查 head=3a5fbe6e426403cc438131825f39cf454ec4c2a8。Dev 与 RDM 固定该 head(合入 main 可达,内容相同)。应用附件工具不支持本 Gitea URL,已调用但被拒;PR 真实链接保留在主记录。
扩展增量 I2:部署版本目录冲突
2026-10-12 用户通过本聊天选项明确批准“授权增加这项治理修复,继续完成全部交付”。新增范围限 scripts/svc.sh 版本目录唯一性/拒绝覆盖,以及 tests/test_svc_u2.py 固定时钟回归;不改分支保护、发布流程、存储/权限设计。根因:svc_release_id 秒级命名,同源同秒目录相同;svc_release_stage rm -rf 删除前一制品,回退 prev/new 为同一目录,旧版本已丢失。固定时钟最小重放已稳定复现,完整输出由 evidence 保存。方案:目录名加入调用进程身份;创建目标目录采用排他 mkdir,重复 ID 拒绝,不覆盖原目录。回归覆盖同一时刻成功版→失败版→恢复成功版与原字节。I2 按用户授权继续测试/Review/当前 HEAD CI/合入。
I2 Review 与修订组合
独立 /root/surface_review 审阅 scripts/svc.sh 与 tests/test_svc_u2.py,固定文件 SHA256 cdefaa0e197439e6891d2ef3f56e9c62e7132de4cf4a026c179ba77e7a5aa9b9 / 20a586ad3b4988982d6dca1b33b39d6ef7345cbc55b6ad2b4414b255794d2cf4,结论 PASS。审阅前独立重放完整同秒回退、目录/文件/符号链接碰撞拒绝、复制失败保持原制品;完整收据由 evidence 写入,归属为审阅者 REPLAY。作者固定时钟红→绿与完整 250 项治理检查输出另有 SELF 记录。Frontend 已改消费最新权威后代 4965de2,继承 #71,新增上游差异仅 #72 浏览器测试;保持与 RDM 实际部署一致,避免退回测试入口版本。
| 同步前验收 |
4d362537d0|9f7b11675e| 2026-10-12T14:50:36Z |真实运行验收
8788 实际 rdm@2aea44a 的 frontend 4965de2 与已审阅固定 UI 制品逐字节一致。真实 owner=weichen 的认证 GET 与浏览器重放:cnv_b61fa45c72e2 两张 Meta 目录均取得完整 Snapshot,刷新恢复、列表两页、第二页正文预览成功,根节点保持、pageerror=0。首次公网长连接观察到 ERR_NETWORK_CHANGED 并自动重连,失败收据如实保留;第二次公网 35 秒观察无失败请求,HTTP/2 SSE 200,独立 curl 流保持至客户端超时且不是协议错误。验收临时 API Key 仅内存使用并立即撤销;活跃 key 数恢复 2,数据 inode 14155844、instance_id svc-dev-328312de05f9、dbref sqlite、schema 27、11 用户和 6 会话保持不变。完整 SELF 原始输出由 live-acceptance/public 收据写入,未将真实用户正文或凭证入仓。
最终自检与主干变动
完整 make test + make build 已执行成功(完整脱敏输出由 evidence 写入)。CI 2629 的 test 与 test-pg 在
a8035bf当前候选上均 success;随后主干合入 #484/#487,增加真实 Dev/RDM 生命周期门禁并更新 backend,必须同步后以新 head 重新核验;旧绿不放行新对象。| 同步前验收 |
99048dda1f|d4a83318b1| 2026-10-12T15:08:27Z |合入前组合 Review
独立 /root/surface_review 在 ecf83a6(含 99048dda)重放加强的回退与碰撞保护,确认主干 DSN 环境交付、manifest 领养和等待端口释放均保留。svc.sh SHA256 9b23e9cd7c4639631b92ed13991e542af7392676018f6818230a9480163cb33e;测试 20a586ad3b4988982d6dca1b33b39d6ef7345cbc55b6ad2b4414b255794d2cf4;CI 文件与主干一致,结论 PASS。新候选需 test/test-pg/svc-realcombo 三作业全部 GATE 通过;当前 source 无进一步改动。
新主干真实组合夹具适配
同步 U3 门禁后,RDM 最新 identity CLI 采用已合入 D1 的 OpenExisting 契约:ensure/verify 不负责建库或迁移。CI 2655 的 PG/realcombo 因旧夹具直接对空库执行 ensure 失败,原始失败已回读。属于当前正式测试阶段的夹具缺陷,采用正常真实 serve 初始化本测试自有临时库后停止,再执行原先身份断言;不改产品 identity 契约或任何运行库。SQLite真实 RDM 的本地最小测试修复前失败、修复后两种真实二进制生命周期通过,原断言未删除/降低。PG 专项在独立临时 cluster/测试库执行,不使用团队库或真实用户数据。
夹具适配自检
当前真实 RDM 产品(backend 0f192a,OpenExisting)SQLite 生命周期修复前失败;正常 serve 初始化临时库后,两类真实二进制生命周期及独立临时 PostgreSQL ensure/verify/wrong-id 检查均通过,完整命令输出已写入。本测试模块 16 项中 14 通过、PG/全轨两项因本次该命令环境未提供而 SKIP;PG 专项另有实际执行收据。全量最新本地治理一轮在 18841/18842 被其他测试进程占用而失败;相同 head 的 CI test 作业通过,故如实保留本地 INFRA_FAIL,不声称本地新主干全量 PASS。
真实组合夹具独立 Review
独立 /root/surface_review 审阅测试夹具,文件 SHA256 8e626c573fd6355723aff5123c79402c0b791455f044dbe3890462c8143bab9f;真实 SQLite 两项、独立临时 PG 一项重放均 PASS,未删除原断言、未改产品或运行库,结论 PASS。后续主干 #485 已调整 capabilities JSON 和 PG 预迁移,将同步保留其最新契约,并避免重复初始化。
D1 主干同步冲突
主干 #485 已改为 JSON capabilities 与 OpenExisting 身份流;其 PG 测试也增加正常 serve 迁移。合并保留该新契约和既有断言,使用已独立验证的 initialize_store 合并同一初始化意图,避免执行两次;保留随机回环端口、关闭 HTTPError、进程 wait/reap 与 SQLite/PG 环境隔离。其他 D1 生命周期代码按主干原样保留。
D1 同步对象
主干新增 backend 0f192a、documents cb7e254 时,冲突合并后子模块检出仍旧;工作区检查拒绝并完整记录。确认两个子仓 clean、无未跟踪成果后递归物化到固定组合,未改任何 pins 源码;再运行任务同步与新产物构建。所有前序失败收据保留,不复写为 PASS。
| 同步前验收 |
cd61bbb112|af1428711f| 2026-10-12T16:04:47Z |最后同步与当前对象
同步基线 cd61bbb112;当前组合完整保留主干 D1 生命周期改造、JSON identity capabilities 与新的后端固定指针;夹具 PG 初始化冲突采用同一正常启动意图的已验证随机端口 helper。当前对象已保存并准备三项必需 CI:test/test-pg/svc-realcombo,失败或未完成均不合入。
Restore saved surface reload without losing the fast-slow frontendto Restore surface reload and protect deployment rollback artifacts