--- date: 2026-07-15 topic: 内部狗粮上线执行 status: 已批准·独立复评通过·执行中(创始人 2026-07-15 选定“仅内部狗粮 + 10 创作者/30 玩家 + 闸门优先分波”;独立首评 P0/P1 已修,复评 PASS) sot-impact: 不新建 canonical topic。执行收口时只回填上线主计划、MVP 进度总账、MVP 作战清单和 A1 闸门看板;生成质量口径继续以《生成线验收 v3 可信证据闭环》为在飞事实源,本计划不重写其契约。 上级: docs/mvp/可行性方案16周-波次映射.md 依赖: - docs/agent-specs/2026-07-13-生成线验收v3-可信证据闭环-设计.md - docs/agent-specs/2026-07-07-内测-WU1-注册登录用户名密码-设计.md - docs/agent-specs/2026-07-07-内测-WU2-newapi额度接入-设计.md --- # 内部狗粮上线执行计划 ## 1. 意图与完成线 本轮不是对外内测,也不是把既有骨架换个名字宣称上线。它只验证一件事:内部真实用户能否稳定完成“创建→生成→预览→提交审核→人工通过→进入 feed→试玩→数据回流”。 完成线为两波:先由 3 名创作者和 5 名玩家干跑 1 天,无 P0、无验收假阳、无审核积压后,再扩到累计 10 名创作者和 30 名玩家运行 3 天。最早目标是 2026-07-23 开始波 0、2026-07-25 开始波 1;任一硬闸未过时按 24 小时自动顺延,日期不代替闸门。 ## 2. 边界 本轮只对内网和内部名单开放。不发外部邀请,不暴露公网注册,不接真广告、真收款或提现,不用 Dify 旁路代替产品主链,不根据小样本宣称留存或 99.5% 可用性达标。支付、广告、短信和律所四项人办闸门继续并行,但不是本轮内部狗粮的开闸条件。 ```mermaid flowchart LR A["生成 v3 可信闸"] --> D["Go/No-Go 证据包"] B["干净 RC + staging 可复现"] --> D C["账号·额度·审核·feed 真链"] --> D D -->|"全绿"| E["波 0·3+5"] E -->|"无 P0/假阳/积压"| F["波 1·10+30"] D -->|"任一红"| G["冻结发布·保留证据·修复复测"] ``` ## 3. 执行波次 | 波次 | Owner | 产出 | 验收 | |---|---|---|---| | R0 设计与发布冻结 | 主 Agent + 独立评审席 | 本执行计划、RC 边界、证据目录 | 评审发现已修,实施面无未决策分支 | | R1 生成可信度 | W-AXIS + QA | off-brief 生产可达、结构化共识、同请求重复稳定性闸 | Actor/Judge 按本节重复稳定性精确门过线;fresh25/historical11/shadow20 全过 | | R2 干净 staging | 运维 + 后端 + 前端 | 独立干净 worktree 构建的 commit-pinned RC,恢复五个端口,配置快照和回滚包 | 改造后 smoke 验生成终态、审核、feed 与试玩;三类回滚各演练一次 | | R3 产品主链 | Studio/Admin/后端 + 运营 | 同一参考游戏全链、人工审核、下架、角色权限和数据回流 | 项目/版本/产物/审核/feed 身份可对账;未审/驳回/产物漂移负例全拦;审核员不能改配置,只读角色写操作 403 | | R4 内部运行保障 | 运维 + 数据 + 运营 | 值班表、单一反馈账本、真告警、删档和停服手册 | 首屏 P75<3s,P0=0,埋点完整率≥95%,告警真送达 | | R5 波 0/1 | 创始人 + 值班 Owner | 3+5 干跑后扩至 10+30 | 无硬停条件,每日证据和配置身份已冻结 | ## 4. 公开接口与配置决策 产品面不新增公开 API,复用已实现的用户名密码鉴权、new-api 额度池、project 审核和 feed 发布接口。上线账号由 ops 预置,预置完后在后端分开关闭密码注册、保留密码登录;整个 staging 只允许 Tailscale 内网进入。只隐藏 UI 不算完成:短信发码/登录、充值、提现、广告请求必须在后端狗粮开关处 fail-closed,直接调用端点也受拒;RC 启动自检要求短信 mock 为关、所有真广告/真商户配置为空或禁用,否则拒绝启动。 生成验收只做内部契约升级:runner 对 profile proof 与 cross-profile observation 分类,后者不得满足玩法义务;Judge 使用结构化全局结论和证据引用形成共识,不再用自然语言 hash 判一致。该差量归现行 v3 设计收口,不新立第二套证据协议。 重复稳定性门的统计口径锁死:前三轮 Actor schema 必须 15/15,每轮行为至少 4/5,合计至少 12/15,每个 evalKey 至少 2/3 正确且 error=0;Judge A/B 各自前三轮 schema 与行为均为 18/18,共识假阳为 0。第三轮只能申请写 baseline,不签发通过;第四轮使用同一身份独立确认并再满足单轮标准后,才能开 fresh 25。 额度池的开波门为 `FREE >= 当波创作者数 × 1.2`,向上取整;波 0 至少 4 个、波 1 至少 12 个 FREE 条目。重复注册不得重复 claim,池空和 quota_exhausted 必须返回不同的可读拒因,且不得扣他人额度。 ## 5. 验收、停止与回滚 所有页面验收经 `/gstack` 在 mini-desktop 真浏览器执行,每条关键链同时保留截图、网络请求、应用日志和数据库 ID 四类证据。生成线的阈值完全沿用 v3 设计:fresh 25 首过至少 18/25、修后接受至少 20/25、各品类至少 3/5;shadow 20 中 tester error=0、inconclusive≤1、确认假阳=0。 发布负例必须在开波前全过:DRAFT、REVIEWING 和 REJECTED 项目不得发布或进入 feed;直调发布/包体接口不得绕过审核;批准必须绑定 project、version 和 artifactHash,批准后产物漂移必须拒发;下架后 feed、详情和深链包体均不可继续试玩。每个内部新发布游戏在进 feed 前 100% 人工真玩。 首屏性能口径固定为 mini-desktop Chrome 146、390×844@1、Tailscale 访问 staging、禁用缓存后独立导航 30 次,从 navigation commit 到首个可交互游戏帧计时,P75 < 3s;热缓存数据只单列报告,不与冷样本合并。 出现安全事件、跨账号访问、数据丢失、真实扣款、真广告曝光或未审内容进入 feed,立即全局停止。生成成功率低于 80%、出现任一确认假阳、同一阻断根因影响两人、埋点缺失超过 5%、待审超过 4 小时或验收成本突破 v3 上限时,停止扩容。 回滚顺序固定为:后端关闭新账号与提交审核→后端 feed 总闸 fail-closed→v3 退回 v3_shadow→下架受影响游戏→回退 RC→保留全部证据。开波前对本轮涉及的 MySQL 表和对象存储前缀做快照,并用隔离目标至少完成一次恢复验证。删档范围只限本轮 batchId 关联的账号、项目、版本、feed 和遥测业务数据;审核记录、安全日志、发布证据和根因工单保留至少 180 天,不随业务删档删除。每波收口按 wave-close 八步回填活账;本轮 GO 只表示内部主链可稳定运行,不等于外部内测或公开上线。 ## 6. 2026-07-23 执行快照 发布工具、候选产物、账号额度底座和信任根已准备,但 staging 尚未激活,波 0 也未开始。这个快照只记录已核验的执行证据和续跑边界,不改写生成质量、上线主计划或 MVP 进度口径。 ### 6.1 已验证事实 | 范围 | 证据 | 结论 | |---|---|---| | 代码身份 | 本地与 `origin/dev/2.0.0` 均指向 `8a81b3734819752d589e770292ed9a314e5012f6` | 候选版本可按完整 commit 追溯 | | RC 候选 | mini-desktop 的 `/root/game-staging/releases/8a81b3734819752d589e770292ed9a314e5012f6/RC_STATUS` 记录 `ready`;检查时 `/root/game-staging/active` 不存在 | 只完成候选准备,没有切换服务 | | 构建与回归 | 发布工具 10 项测试通过;21 个安全测试类共 195 项通过;Maven 59 模块构建成功;game-studio 与 game-admin staging 构建成功 | 候选产物达到“可进入激活前审批”状态 | | 产物固定 | `evidence/artifacts.sha256` 的 SHA-256 为 `3c85947aa35b686ad28eb200f60ddba9ade5c5ced10b59f552e499dc81e7b0fc`;`evidence/runtime-tree.json` 为 `11a8120a373f9a354895322bee39c57af7a86ae8b113212d3158ce04878cd5f2` | 构建输出与运行时树可对账 | | 额度底座 | `neice_051`–`neice_054` 已在 new-api 建立并导入 staging 额度池;池内 `GLOBAL_FREE=52` | 足够支撑 40 个正式分配和 12 个预留;40 个产品账号仍未创建 | | 签名边界 | Ed25519 私钥只位于 mini-infra,权限 `0600`;公钥仓内副本 SHA-256 为 `e3cc17cd86805b053f61450b5c2c6e4e168bb01dbf1e83840124290d1196a304` | R1 与账号报告必须通过固定信任根验签 | | 报告防伪 | mini-infra 收集器同时对账 staging MySQL 和本地 new-api PostgreSQL,并在读库前后校验 active、`RC_STATUS` 和激活证据;未激活运行已被拒绝 | 不能用命令行自报数据伪造已上线报告 | | 安全负例底座 | 外部 HTTP 直调项目版本创建/绑定和 feed 写入已 fail-closed;preview 所有权、OAuth 凭据清理、new-api 状态对账已补回归 | 实现层安全门已有回归证据,仍需激活后真浏览器复验 | game-studio 生产依赖审计为 0 个已知漏洞。game-admin 没有 critical,但仍有 12 个 high、39 个 moderate 和 6 个 low;它们是本轮的已知剩余风险,不得记成依赖安全已全绿。首个 RC 没有前任版本,因此 `rollback_target=none`;激活前必须将“无可回退旧版”当作显式风险处理。 ### 6.2 未完成与硬阻塞 R1 仍是激活前硬阻塞。权威活账显示:正式 `game_content_gold=0`,fresh 25、historical 11 和 production shadow 20 均未运行,生产 `runtimeEligible=false`。在生成线按现行口径签发独立 R1 PASS 前,不得创建 active 指针、不得开放产品账号、不得开始波 0。 除生成线外,仍需真实执行的项目是:Nacos 配置事务与候选激活、对象存储审计、MySQL 隔离恢复验证、40 个产品账号建立与额度分配、主链与安全负例的 `/gstack` 真浏览器验收、首屏 P75 和埋点完整率采样、外部告警真送达、值班与反馈账本、波 0 一天和波 1 三天的证据收口。当前没有可支撑“已上线”、“告警已送达”或“内测已完成”的证据。 ### 6.3 续跑顺序 1. 先从生成线取得绑定 commit、运行时身份和证据 hash 的独立 R1 PASS,然后重新核验 RC 目录、信任根和所有临时凭据有效期。 2. 在维护窗执行 Nacos 配置事务、MySQL/存储快照与隔离恢复验证,全绿后才激活 commit-pinned RC。 3. 激活后再创建 40 个产品账号、分配 40 个额度条目并保留 12 个 FREE,由 mini-infra 收集器对账后签名。 4. 用 `/gstack` 完成参考游戏主链、角色权限、未审/驳回/产物漂移/下架负例,并对每个进 feed 的新游戏先人工真玩。 5. 收口性能、埋点、告警、值班、反馈和回滚证据;仅在无硬停条件时开波 0,再按闸门扩到波 1。 ### 6.4 2026-07-23 续跑核验与 R1 终审 主代理只读漂移核验,叠加 Claude opus 独立诊断子代理的复核,两方结论一致。 漂移核验无变化:本地与 `origin/dev/2.0.0` 均指向 `8a81b3734819752d589e770292ed9a314e5012f6`;mini-desktop RC 候选 `RC_STATUS=ready`、`active` 指针不存在、五个 `gda-staging-*` 服务全 inactive、无 `gda-rc-*` 孤儿;信任根三处(mini-desktop 固定公钥、RC 仓内副本、mini-infra signer 公钥)SHA-256 同为 `e3cc17cd86805b053f61450b5c2c6e4e168bb01dbf1e83840124290d1196a304`;mini-infra 私钥 0600、root 持有。`evidence/runtime-tree.json` 由主代理从候选目录亲自重算,SHA-256 为 `11a8120a373f9a354895322bee39c57af7a86ae8b113212d3158ce04878cd5f2`,确为 64 位,与 §6.1 对照值相符;上一轮报告那个 62 位的值已否决,不得复用。 R1 终审判 BLOCKED。mini-desktop `/root/game-staging/attestations` 不存在,没有任何 `*.attestation`,即没有合法独立签名的 R1。激活器 `verify_generation_gate_evidence`(`deploy/activate-staging-rc.sh` 第 611–626 行)要求 `generation-r1-gate/2` 的八字段 `actor_prompt_eval`、`judge_prompt_eval`、`game_content_gold`、`live_prompt`、`full_gate`、`fresh_25`、`historical_11`、`production_shadow_20` 全 PASS、`runtime_eligible=true`,再叠加 Ed25519 验签、issuer=`r1-mini-infra`、24 小时有效期窗,当前无一满足。全仓检索确认 `GameContentGold/1`、`ReferenceAssetRegistry/1` 在代码层没有任何机器契约、schema 或注册表,只有 docs SoT 规则提及。 R1 八字段不是并列的,存在依赖树,三条共前置基线各自被不同红线封死: | 基线 | 字段 | 封锁原因 | 解封锁的人 | |---|---|---|---| | 内容金标 | `game_content_gold` | 当前为 0,连目标品类实例都未选定;第一步就是选品类、批设计意图,收口是人工签认,全程不可代理 | 创始人 | | Actor/Judge 稳定门 | `actor_prompt_eval`、`judge_prompt_eval` | 3.0.13 三轮建线加第四轮独立确认未闭合,须 mini-desktop 真 Chrome 真模型复跑;且落在 tracked 在途脏文件 `contracts/prompts/eval_gate.py`、`registry.yaml`、`game-runtime/src·tools` | W-AXIS 在途收口 | | W-GOLD-LIVE | `live_prompt` | `ReferenceAssetRegistry/1` 代码不存在,须从零实现并接入 cheap/tier2 live prompt;落在 tracked 在途脏文件 `cheap-worker/cheap_verify.py`、`hard_genre_batch.py`、`tier2/config/generation.yaml` | W-AXIS 在途收口 | 三基线不闭合,下游 `full_gate → fresh_25 → historical_11 → production_shadow_20 → runtime_eligible` 全部无从开始;即便三基线全绿,终态 attestation 仍须由独立签发方 `r1-mini-infra` 用 mini-infra 私钥签名,执行代理代签属红线。因此五项硬串行全卡在 R1:R1 不解,不得激活、不得建 40 账号、不得 `/gstack` 验收、不得开 Wave0/1。执行代理侧不存在任何“不改在途文件、不需人工金标、不需代签、不需 ssh 远程”的干净可执行缺口。 第 4 项的 webhook 硬门同步核实:staging `/root/huijing-dev.env` 没有任何 `ALERT`、`WEBHOOK`、`NOTIFY` 端点键,仓内仅 `application-dev.yaml`、`application-local.yaml` 与 `deploy/infra/observability/grafana/provisioning/alerting/gen-alerts.yaml` 有告警配置,均非 staging 外部送达。告警真送达仍须人工提供 webhook,这与本计划 §5 的硬门口径一致。 治理附注:权威活账 `docs/mvp/MVP进度总账.md` 本身是 tracked 在途脏文件,工作树版本(2026-07-22)比 HEAD(2026-07-04)新,承载上述 R1 阻塞数值的恰是这份未提交版本;工作区另有 109 个 tracked 加约 13899 个 untracked 的他人生成线在途改动,集中在 `game-runtime`、`cheap-worker`、`tier2` 与 `contracts`。本轮不得覆盖这些改动,活账与作战清单的回填须由 W-AXIS 收口时一并入库。 解除 R1 的最小动作按依赖最靠前排序: 1. 创始人从 Fable 三款或新设计中选定首个目标品类实例并批设计意图,实现后补落地证据并人工签认,产出首个 `game_content_gold`。这是整条链唯一不可代理的起点。 2. W-AXIS 并行收口 Actor/Judge 3.0.13 稳定门(三轮加第四轮,mini-desktop 真跑),落地 `ReferenceAssetRegistry/1` 机器注册表并接线 live prompt。 3. 三线闭合后重跑完整总门,再依次跑 fresh 25、historical 11、production shadow 20。 4. 独立签发方 `r1-mini-infra` 用 mini-infra 私钥产 `generation-r1-gate/2` attestation 并签名。 5. 主代理验 R1 PASS,再派激活事务、40 账号、`/gstack` 验收、Wave0/1。 本轮主代理未激活、未建号、未开波、未代签;实际动作只有只读漂移核验、R1 独立诊断终审、webhook 缺口核实,以及对明确生成产物的 `.gitignore` 收敛(子代理执行,不提交)。 ### 6.5 2026-07-24 金标阶段二 realizationEvidence 采证进展与 juice 冻结 bug 创始人 2026-07-23 追认《山海行纪》为首个 `game_content_gold` 候选(见《游戏内容金标》§7.1),并令先推金标阶段二。阶段二 realizationEvidence 由 opus 执行代理在开发机本地(Chrome 150,非 mini-desktop)分检查点采证,进展如下。 | 维度 | 状态 | 证据 / 缺口 | |---|---|---| | ① 身份 / ② 玩法 | verified | 实现对照充分(M0–M4 真表 + 录证) | | ③ 主题映射 | partial→近 verified | 符箓御兽长出机制可回溯;待④⑤落地补对照 | | ④ 美术 | partial | 四态全屏截图已采(round-1/,sha256 全),待创始人眼验全屏风格统一 | | ⑤ 音频 | partial | SFX 8 事件结构断言 5/5;BGM 6 首代码 + 资产双 missing,需开发制作 | | ⑥ 内容与进度 | partial | 10h 核数 11.21h ≥ 10h 落盘(evidence/content-audit.json);地图 2-5 / 敌 32 / D2-D5 需 M5 灌装 | | ⑦ 数值与成长 | partial | build 判据①③④ PASS、② rand-4 winRate=0.9167>0.85 离群现状落盘(evidence/sim-scan-c2-convergence.json,528 局);现状中位 0.375;收敛锁值需开发调参 + 质量轨人工拍阈值 | | ⑧ 真玩证据 | 部分 + win 受阻 | lose + restart 两路径全通、九门 A/B/D/E/G/I PASS(C 用 timeS 增量补证、F SKIP、H 无终态);**win 终态确定性受阻于 juice 冻结 bug** | | ⑨ 已知限制 | partial | 候选阶段自述有;待①-⑧全 verified 后正式登记 + 创始人签认 | **重要发现:juice 顿帧冻结 bug(⑧真玩采证暴露,headless sim 测不出)。** 现象:冻结与 seed 无关,三个 seed(777/1/42)跑出字节级一致的世界轨迹,全部精确冻结在 timeS=331.4(score=188 / lvl=7 / hp=58 / enemies=219),帧照跑(frames 涨满)而世界 dt=0、无异常、非熔断,九婴(timeS=1200 出场)从未现身,死局。根因(只读定位,未下钻到行):juice 插件 `game-runtime/src/plugins/particles-juice/impl.js` 的 `timeScale` 顿帧卡死,推断 crit / bossKill hitStop 后恢复计时按缩放时间走、timeScale→0 则永不恢复;消费方 `shanhai/src/game-logic.js:264-265` 以 `juice.getTimeScale()` 缩放世界 dt(`sim.update(dt * ts)`)。影响:所有 seed 在 331.4s 必冻结,win(斩九婴)不可达;stub 下 URL `?seed=` 不生效(世界模拟完全确定),换 seed 这条路本身不成立。处置:根因落在他人插件红线区(particles-juice tracked 0 脏),本轮只读定位不可改,需 W-AXIS / 插件 owner 修复 `timeScale` 恢复;修后续跑已验证的幂等续跑驱动 `test/win-cont.mjs` 可达 1200 斩九婴。附带发现:stub 下 seed 不生效,若放量需多 seed 多样性,另交相关方确认。证据见 round-2 / round-3(冻结截图、freeze-probe、逐 seed 帧级探针、summary)。 采证环境口径:本轮⑧在开发机本地 Apple M1 Pro + Chrome 150 headless 跑,非 mini-desktop;放量与真机结论仍须 mini-desktop 复核,本⑧是内容金标本地人工验玩 / 真玩证据。 执行代理采证已到天花板:⑧win 受阻于 juice bug(需 W-AXIS 修);⑤BGM、⑥M5 灌装、⑦调参均需开发(⑥M5 与"压 M5"旧令重叠,属材料级,待创始人拍板);④眼验、⑤听感、⑧好不好玩、⑨签认均需创始人。本轮未 commit、未激活 staging、未签 R1、未碰 mini-infra;全程零误触他人在途文件(tracked 脏维持 109 他人 + 本轮 content-audit.mjs + IDE 自动的 .idea/jarRepositories.xml,共享代码 game-runtime/src 与 plugins 逐字未变)。 ### 6.6 2026-07-24 金标阶段二采证收口与⑧win 已知限制 金标阶段二 realizationEvidence 采证至此冻结。执行代理能采的部分已采尽,⑧win 胜路径记为已知限制,九婴机动冲撞交 W-AXIS 做平衡判断。 最终九维状态:① 身份 / ② 玩法 verified;③ 主题映射 partial→近 verified;④ 美术 partial(四态截图已采,待创始人眼验);⑤ 音频 partial(SFX 结构 5/5,BGM 6 首双 missing 需开发);⑥ 内容进度 partial(10h 核数 11.21h 落盘,地图 2-5/敌 32/D2-D5 需 M5);⑦ 数值 partial(判据①③④ PASS、②rand-4=0.9167 离群,收敛需开发);⑧ 真玩 partial(负/重玩/进度全通、九门 G/A/I/E/B/H 过,**win 胜路径已知限制**);⑨ 限制登记已整理(realization-evidence-status.md)。 本轮两项实质工程产出(均在山海自有代码,未碰他人红线区): 1. **juice 顿帧冻结 bug 修复**:山海 game-logic.js 漏调 bundle.tick(dt) 致首 crit 后 world dt=0 死局;已补 bundle.tick(对齐其他 100 个游戏标准调用),硬证生效(世界解冻、推进过 1200、frameCount 接线),回归 13/13。 2. **forensics 取证面扩展**:sim.js 加 bossesForensics() 只读 getter、game-logic.js _forensicsView().state() 加 bosses 字段,暴露存活 Boss 实时坐标供 CDP driver 贴脸集火;纯加法只读,回归 13/13 不破坏游戏。 **⑧win 已知限制(九婴机动冲撞)**:forensics 生效后 driver 读到九婴坐标并打掉 30% hp(7400→5161),但九婴是大范围机动冲撞 Boss(横扫全场),安全距 sustained dps 仅 ~112 hp/s(杀完需 ~66s)> 玩家存活窗 ~20s,玩家满血扛 20s 后被冲撞贴身秒杀;调 hugR 半径解不了(击杀需时 > 存活窗的不等式)。win 需冲撞规避 driver(逐帧坐标算速度向量、前摇闪避)或属游戏平衡问题。诊断见 evidence/round-7/lose-safedps-attempt4/FINDING-mobile-boss.md。 **交 W-AXIS 平衡判断**:九婴贴身必秒 + 全场冲撞 + 安全距 dps 不足是否为便宜档难度配平问题(普通玩家是否也打不过);若是,需调九婴行为/数值或提供更强 build 使 win 可达。修复后续跑已验证的 win-jiuying.mjs(比例减速逼近控制器)可推进。 ⑧采证 round-1~7 全套证据(截图/探针/九门/仿真/FINDING)留存山海 evidence/。本阶段未 commit、未激活 staging、未签 R1;全程零误触他人在途文件(山海 tracked 脏仅 content-audit.mjs + game-logic.js + sim.js 三件,共享代码 game-runtime/src 与 plugins 逐字未变)。金标正式签认仍须①-⑧逐维 verified + 创始人签认,当前未达,山海行纪仍 candidate。