Why: the 8788 project-member runtime delivery finished (code merged via #526/#530) but its card and operation records lived only on an unpushed task branch, leaving the worktree impossible to recycle and the record invisible on main. Evidence: card status "已完成(运行目标)" on feature/project-member-runtime 835d807; branch diff against merge-base touches only .task (card + 29 operation records); credential scan finds only variable-based Authorization headers and sha256 digests. Impact: adds .task/archive/feature-project-member-runtime.md and .task/artifacts/project-member-runtime/**; no code, gitlink or policy change. Refs: worktree cleanup 2026-10-18 Co-authored-by: Cursor <cursoragent@cursor.com>
6.0 KiB
8788 项目成员修复运行交付
状态:已部署、已修复、运行验收通过。记录时间:2026-10-14T00:45:11.760482+08:00(Asia/Shanghai)。
用户授权本次保数据部署、旧绑定预览及无冲突后的修复、weichen/test 复测;用户另选临时 API 凭据,不改现有密码。密码登录链路为 NOT_RUN。
实际对象
| 对象 | 结果 |
|---|---|
| 实例 | svc-dev-328312de05f9,127.0.0.1:8788 |
| RDM 固定提交 | 3f647f6c547d3f0d5ab65310cc5f3eabf66e654f |
| 组件 tag | Backend/Core/Frontend/UI v0.4.0 |
| Backend | 5d5fc9891c0eb8994545ccb8b740535d9b99fb0e |
| Core | 5773e74086791731059730bd3726dc8c9cd1381f |
| Frontend | eb2d6d32f9323094d568bc9d80b4e5ed4f0af25b |
| UI | 2c4322ef56df64ad72f65907d25b048a74bb5ffc |
| 实际 release | releases/rdm-3f647f6-20261013T155418Z-3842908 |
| 实际二进制 SHA256 | d5db3d0ac292d99582ec91938317af356c050ad61e61f42c097e7faf7a731765 |
| 最终验收 PID | 3896104,/proc executable 与 release 一致 |
| 数据 | 原 runtime/dev/data/agent-system.db 与 rdm.db;未换库、未清库 |
实际二进制与已验证默认组合产物字节一致。部署从固定提交物化四个 pins 并构建完整前端嵌入产物;devweb 伴生工作台也已由现有 svc 流程更新。源码和 tag 的审阅/CI 沿用已固定对象,RDM CI2977 已在本任务重新核验;运行结果为 SELF,独立只读重放身份单独记录。
备份与修复
配对冷备份:/home/weichen/projects/Agent-System-Dev/runtime-backups/dev/project-member-20261013T154718Z。保留 dev/devweb 配置、两库、14 个原件以及全部 6 份旧 release。在隔离恢复副本实际打开两库,integrity_check 与原始业务行对账通过,原件摘要一致;备份包含完整清单摘要。
旧宿主 prj_8d20020e5b79(genui-e2e,owner=weichen)保持 ID、名称、所有者不变。预览显示两个孤立成员、无绑定;再次查询物理所有者、宿主/领域名称及名称预留、绑定和成员后确认无冲突,才调用 apply。
形成唯一领域根 p-aea70b2559c6,映射 ready。原两条孤立成员迁到该领域根:weichen 为 owner,test 为 member。重复 apply 返回相同身份,没有重复项目。其他旧项目、绑定和成员保留。
运行验证
| 场景 | 结果 |
|---|---|
| 修复前同一新制品 | test 无目标项目,新建会话 404;预览未改业务行 |
| 两账户可见性 | 均看到同一宿主/领域 ID |
| 新建对话 | HTTP 和实际浏览器按钮均成功,owner 为当前账户 |
| 私人会话与文件 | 本人可读;对方直接读取 404,列表不暴露 |
| 跨项目隔离 | test 对 U7 会话列表、新建会话、工件均 404;领域摘要命令被拒 |
| 全局同名 | 有创建权限的 weichen 创建另一账号已有的 U7 宿主项目名称,409 |
| 权限分离 | test 可在已加入项目建会话,但没有系统级创建项目权限,403 |
| 浏览器 | weichen→退出→test→退出、刷新、私人文件列表通过;pageerror=0 |
| 原始数据 | 原12账户、3宿主项目、7会话、35消息、14工件与全部原件字节保留;原其他项目成员未变 |
| 最终凭据 | 两枚临时 key 已撤销,分别实测401,明文文件已删除;原账户与密码字段不变 |
全表对账覆盖原基座53张表及RDM25张表。除两条目标孤立成员的预期迁移外,旧业务行保留。共享实例使用期间观察到一条登录会话替换以及额外角色/权限行增加,保持现状,不归因本次操作,不以旧备份覆盖这些新增状态。
本次保留5条有“成员协作”标记的验收空会话及2个合成私有文件,未发送模型消息。历史会话和原件未删除。临时凭据生命周期结束,密码登录按用户选择未测试。
证据和限制
完整命令收据由任务卡中的 evidence 工具生成,来源保持 SELF。独立审阅者 /root/runtime_acceptance_review 先独立重放再对照作者记录,结论 PASS;其原始收据、attestation 和报告在本目录。浏览器由本次操作者执行,独立审阅核对报告范围,未再次创建数据或重跑 UI。
截图保存在受保护目录:/tmp/project-member-runtime-8788-20261013/screenshots/test-private-project.png 与 weichen-private-project.png,未放入 Git。
早期探针失败均保留:身份接口误写为 /api/auth/me,旧版本 HTTP 对照未完成;后改用真实 /api/me 在新制品上验证绑定修复前后。上传应答被误按数组解析,回读已成功上传的工件后复用,没有重复上传。全局名称测试最初使用无创建权限的 test,改用有权限的 weichen 验证。浏览器文件入口定位命中两个同名按钮,改为明确侧栏入口后完整重跑通过。均为探针问题,未据此修改产品代码或伪记 PASS。
服务 history 记录部署启动后现有 recover 流程再次拉起进程;所有最终 HTTP、浏览器及独立验收均针对最终 PID 和上述同一制品完成。未推断 recover 的原因,未扩大修改服务管理实现。
操作完成后服务保持运行,工作区和分支保留。没有新增产品源码改动、tag 或产品 PR;本任务的运行记录保存在独立工作区,尚未合入 main。后续可用原有账户进行常规密码登录验收;本次已选的账户身份功能复测无剩余阻塞。
这些脚本是本次已执行操作的历史证据,含明确的 live 写入步骤;不能未经新的操作授权直接重跑。私有业务副本与认证材料未纳入本目录,原始文件 byte/hash 对照见 manifest.json。
最后同步纳入上游治理/文档更新;这不改变已部署的固定 RDM3f647f6 制品。同步后已再次只读核验实际 executable/hash、实例、唯一 ready 绑定、两成员身份、HTTP200/匿名401以及临时凭据全部撤销,结果通过。未因记录工作区的变更重复部署或创建认证材料。