17 Commits

Author SHA1 Message Date
zizi
f63c56bec8 docs(cleanup): 全文档清毒收编——长尾18改+1新建(知识3/技能6/DocB注记/契约deprecated/DifyCallback诚实注记×4/双.agent/执行spec横幅)+主会话补刀tech-decisions两处漏网(回填横幅与生成主线行的'模板驱动'死口径);活文档面残毒终扫清零
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 17:40:16 +00:00
zizi
7bf2cd1d3b refactor(w-clean): 旧玩法模板清除(创始人令2026-06-12)——模板哲学落地第一刀
- game-studio runtime/index.ts 843→113行:clicker/merge/idle/tycoon 四模板游戏逻辑全删,统一「模板体系重构中」错误态(画布明示+game_error事件,不抛裸异常);运行时壳/生命周期/SDK/destroy 契约保留
- 后端:AigcTemplateConstants.SUPPORTED_TEMPLATE_IDS=List.of()+getTemplateList 返回空(提交入口/执行器双层拒绝,直插任务不烧LLM);两测试诚实适配(机制覆盖保留+清空后拒生成断言),aigc 模块 56 测全绿
- staging DB:15 表 1022 行已先归档(mini-desktop:/root/backups/w-clean-20260612/,304,606字节,可整表回滚)后物理删除;遥测/zone/player/trade/community/biz 全保留
- 验证:前端 build 绿/health 200/feed 空列表优雅(既有空态分支)/smoke 9/12(3 FAIL=feed空的预期差异,留档不掩绿)
- 未动:contracts/templates schema 与 prompt registry(死内容,随 W-T1b spec v2 的 9a 能力插件清单一并清退)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:24:27 +00:00
zizi
13b8a51e47 docs(t1-close): W-T1a 七步收口——引擎终裁LittleJS+模板双层架构拍板全量回填
七步对账(wave-close-checklist):
1.总账:表头2026-06-12+对账c514d60;§5 runtime口径改Runner v2;§6 新增W-T1a执行记录行
2.作战清单:W-T1a完成移归档⑪;登记W-T1b(双spec编制中);§0完成线建议候选更新(拔高样板过创始人判)提请重锁
3.回填(裁定类):终裁包落锤横幅/重设计spec v1.2/tech-decisions §1.1+技术栈行(LittleJS终裁+双层架构)/glossary词条/记忆双档
4..agent:game-studio横幅更新(引擎已终裁,W-T1b建设中)——结构性状态变化
5.蒸馏:staging-ops新增mini-desktop长驻serve配方(systemd-run首选/setsid双脱离+探活门/heredoc竞态红线);Phaser侧专有配方(切形态/净增量取差)不蒸馏——败选侧低复用,证据留lane REPORT可溯
6.索引:无结构性变更(纯内容追加),README/AGENTS导航不动
7.编排资产:spike全部脚本已随lane/phase2入库;终裁包v1.2兼本波收口报告

创始人拍板记录:引擎=LittleJS;模板双层架构(核心代码模板=平台核心层类高级引擎固定核心留LLM灵活面/玩法模板=品类层带质量底线生成须高于底线);美术=程序化系统+像素资产包混合;亲玩判词「玩法简单缺艺术气息」(engine-neutral)→好玩基线v2五要素;拔高样板=W-T1b首件

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 00:26:16 +00:00
zizi
75d01f0e92 docs(tier1): 约束框架定稿——15KB红线废除→三层框架,四路引擎尽调收口(HJ-T1-REDESIGN-001·创始人专门会话)
- 新增 brainstorm requirements(单一事实源):SLO地板@千元机+4G P75/预算入场券B1 gz≤350KB·raw≤1.5MB/工程增强层E1-E6;裁决语义=预算入场券·S2实测主考
- 重设计评审版 v1.1:四路尽调回填(LittleJS 8.0/Phaser 8.0/KAPLAY 6.5淘汰/自研+微库淘汰),D2引擎URL化交付铁律(HTTP+编译双缓存)
- 裁定回填:tech-decisions §1.1(自研壳退役→成品轻引擎+Runner v2,终裁待spike)+glossary/product-and-architecture词条+技术决策版横幅第4条
- 1.x手册挂横幅(add-game-template/runtime-and-multichannel/game-studio/.agent),双轨冻结期仍有效;历史spec不动
- 护城河话术三处措辞修:自研边界改'宿主控制层自研+渲染引擎用开源可替换',强化B0定调

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 17:51:16 +00:00
zizi
60e736ac1a docs(harness): 收口协议单清单化+四处漂移纠偏+配方出仓蒸馏——2026-06-11 harness 体检落地
体检根因:收口规则散落 4 处(总账铁律/作战清单回填铁律/README 维护规则/协议 §6)靠记忆执行
→ 漂移已实发(总账表头停 06-09 两日、作战清单轮次未滚动、.agent 残留 Day-0 横幅、AGENTS §3 仍写"三仓未入本仓")。

- 新增 .agents/skills/wave-close-checklist.md:收口七步唯一可执行清单(总账+表头/作战清单+归档/回填/.agent 仅结构变化/蒸馏/索引/编排资产入库+30秒自检);总账铁律、协议 §6、编排文档全部改为指向它
- 四处漂移一次纠偏:总账表头 06-11+对账 f403d11;game-cloud/.agent(Day-0→11/13 模块实态、技术栈对齐 C2 裁定、Wave4 销账);game-studio/.agent(mock 态→接 staging 实态);AGENTS.md §3 monorepo 实态+目录树补 contracts/game-*/deploy/mvp+memorys 标记停增
- 作战清单瘦身:3843 字符巨型 bullet 等完成史整体迁 MVP作战清单-完成史归档.md(原文快照保真),清单 68→33 行只留队列;新一轮完成线标注待创始人拍板重锁
- 配方出仓蒸馏(原仅存会话私有记忆):skills/staging-ops.md(机器分工/git 同步/重部署字节码实证/前端构建门/冒烟)+ skills/ui-walkthrough-cdp.md(CDP 七坑/studio/admin 走查/信道探针);README+AGENTS §5 索引同步(§5 顺带补回漏登的 add-game-template/prompt-governance)
- 编排器 .agent 户口:QA 工具箱定位/组件清单/纪律(新工具不再长进 runs/)/Doc B T-id 编目与 tools/ 迁移留待办
- 协议修正:§5 前端验证门 pnpm test→npm run build(vue-tsc 假门禁红线入文);§1 历史检索改指 agent-specs 收口报告;mvp-execution-orchestration 加波次制现状注记(Day0-15/站会为目标态)
- .gitignore 加 __pycache__/.pytest_cache(注释说明与 build/ 老雷的区别)

遗留:nightly cron 哨兵(动 mini-desktop,待拍板)/ Doc B 未编目组件销账 / tools/ 迁移评估。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 13:26:04 +00:00
zizi
b8d1a0da73 fix(runtime-host): host→game 回包全断根因修复——v-for 模板 ref 数组解包
根因(探针四锚点+判别实验实证):ref=iframeRef 位于 v-for 内,Vue 3 填充为数组;
attachBridge 按元素直取 (数组).contentWindow=undefined → HostBridge.targetWindow=
undefined → post() 静默丢弃全部 host→game(storage/ad/pay 回包+init 同断)。
game→host 监听全局 window 不受影响,故游戏可玩/遥测可达,两波未现形。
修法:currentIframe() 解包 + contentWindow 不可用时显式 console.warn(可观测)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 02:45:31 +00:00
zizi
f82d480dfd feat(host-storage): M-c批② idle离线存档三端——contract storage payload+GamePlayer受信边界四道闸+inject注入侧应答端;主agent逮修loadState三端协议错配
- contract.ts:+3 storage payload interface;GamePlayer handleStorage(键白名单idle:/4KB上限/JSON校验/wxgame:隔离);inject mountStorageBridge(requestId→resolve映射,5s超时resolve null绝不reject,幂等防重挂)+包装runtimeView传startRuntime;不触sdk/(Core红线),demo锚不动
- 【主agent核验逮修·承重接口】loadState三端协议错配:runtime自裁object签名(避§5.5零解析红线)但GamePlayer/inject照spec原草案回string→runtime读字段全undefined→离线补发恒0静默失效。统一到object(宿主受信边界解析):contract value string→Record(批②新增契约无存量消费者,同波定稿不破semver)+GamePlayer读分支接住parse结果回包对象+inject:130 resolve对象。runtime内部saveState/loadState字段(v/resource/autoYield/upgraded/leftAtMs)闭环自洽

HJ-MC-TPL-EXEC-002 §6.1/§6.2

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 16:46:06 +00:00
zizi
88388f7b46 feat(runtime): M-c批② initIdle(离线闭环)+initTycoon(经营循环)——纯追加双case,initMerge零行删改
- RuntimeSDKView 扩 saveState?/loadState? 两可选方法(loadState 返 object|null,宿主受信边界已解析,runtime侧零JSON.parse守§5.5);缺失安全跳过(旧宿主/demo退化无离线态不崩)
- initIdle:loadState→离线补发公式(钳offlineMaxMin+折扣双闸防爆)→在线点击产料+每秒自动产出→节流saveState(≥2s)→资源达targetResource通关;score=floor(resource)
- initTycoon:进货带客(onDown waitingCustomers+1)→售出配对→金币达targetCoin通关;按钮布局契约(buy中心W*0.28/H*0.70,sell W*0.72/H*0.70)承重接口;score=coin
- clampInt/localXY各init函数体内复制(沿initMerge范式禁提升);零DOM/零可抛新增;hunk全>426(initMerge:255-426零删改)

HJ-MC-TPL-EXEC-002 §5

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 16:46:06 +00:00
zizi
cdf4d82aa6 feat(runtime): M-c批① 模板分发+merge玩法——单工厂switch(templateId)+initMerge拖拽合成+game_error防御
- 分发骨架:case ''/'clicker' 合并(空串兼容存量30款旧包)/case 'merge'/default=reportError+game_error不起循环不绑监听
- initClicker:现行逻辑逐字符迁入,计分/提示文案与坐标逐像素保真,仅绑 pointerdown;life/finish/loop/markStarted/drawBase 共享单份(红线代码不复制)
- initMerge:clampInt/cleanLabels 自包含纯函数兜底(targetLevel 钳≤chainLength 防死局);§5.3.1 布局契约逐字符照钉(cols=ceil(sqrt)/topPad=round(H*0.18)/margin=W*0.06/gap=W*0.03,格中心预计算缓存);半格方形容差命中;pointerdown 产料/起拖+pointermove 预览+pointerup 任意两格同级合成;score=合成次数(拍板#6)
- finish(score) 参数化单一 emit 点,duration_ms 计数维持基线3;零 DOM/零可抛/toString() 注入约束全守

HJ-MC-TPL-EXEC-001 §5(构建+体积门待 mini-desktop)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 12:31:26 +00:00
zizi
b0850a2ad9 feat(passport): 鉴权建设波——V11契约+system passport子包+14端点@PermitAll+白名单挂点+剔除桩+前端登录守卫
- 契约先行: V11.0.0 双落点(game_player/game_invite_code/runtime_session匿名兼容ALTER) + passport.yaml(4 app+4 admin) + events登记user_login
- B1 system侧: passport独立子包(fork隔离), 验证码+邀请码旁路登录注册一体, OAuth2 MEMBER token(client=default已核), 错误码1_002_090/091远段, PlayerApi @Primary本地化(mock豁免裁决=无行+mockEnable放行), R6限频(IP 10次/h+Redis日/时双闸), 25单测
- B2 存量: @PermitAll恰好14端点(主agent grep复核, 不放行名单零触碰), 匿名session(player_user_id可空+anon_id), 白名单5挂点(studio/aigc/project), ad计费限频, telemetry剔除桩(照落库不进聚合+Redis降级放行), EnvelopeReqVO文案回写
- F1 前端: 登录页两Tab+占位协议, isRealLogin守卫(isLogin恒真不可用), 401统一拦截, 互动转正onInteract单入口gating, user_login遥测双带; test1批跑路径原样保留(主agent复核)
- 三面对抗核验全pass零blocker; 构建门待mini-desktop(本机禁构建铁律)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:40:10 +00:00
zizi
17bd6b1582 feat(studio): M-b② 渲染面扩展——theme/scoreLabel 入画布(解除 §6.3 不渲染边界)
- theme: djb2 哈希派生双色渐变底色 + 顶部标题入画(≤16字清洗截断, cleanText 控制字节剔除)
- scoreLabel: 替换计分文案「{scoreLabel}:n/target」(≤8字, 缺省回落'点击得分')
- demo 包同步带 theme/scoreLabel 保持 parity(target:5 不动, player 信号 c 依赖)
- 遥测/生命周期契约零触碰(game_end{score,completed,duration_ms} 蛇形逐字不动)
- 体积: startRuntime(min) 1673→2260B raw(gzip 1193B), 占 15KB 红线 14.7%
- 纯 Canvas fillText, 零 DOM 注入; theme 为空时旧包渲染逐像素零变化
- spec: 2026-06-10-Mb渲染面-execution.md(85行, 体积/契约双门禁)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 03:01:02 +00:00
zizi
d279898192 fix(studio): B2′ 真人试玩闭环 3 处修复 — 布局高度链/demo兜底非致命/game_end补completed
浏览器实玩(staging+真无头Chrome)首次暴露、curl/单测均未现形的 3 个真 bug:

1) 布局:#app/.app-root 改 height:100% 建确定高度链——原 min-height 链断,子页 .feed/.play 的 height:100% 塌成 0,封面/画布 0 高不可点(真机也塌)。

2) GamePlayer:取包/manifest 校验失败回退 demo 是「可恢复」场景,不再 emit('error')(父级 Play 把 error 当致命态 v-else-if 隐藏宿主显示「加载失败」,与 demo 兜底冲突),仅 console.warn。

3) runtime:clicker finish() 补发 completed:true+duration_ms——后端 quality_score 完玩率口径依赖 props.completed,缺它真玩也推不动 quality(数据回路失效)。

实证:浏览器玩 A-小卖部通关→quality 0→60→feed 从 B 领头(30)翻转为 A 登顶(60)。vue-tsc -b 绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 17:01:04 +00:00
zizi
a7076871e4 feat(B1): 黄金闭环前端联调(step③) — 真连 staging + 有效遥测信封
step③ game-studio 联调(编译验证待 mini-desktop):
- request.ts 注入 tenant-id:1;user.ts token 取 VITE_STUDIO_TOKEN(=test1)
- vite.config.ts: VITE_API_BASE 非空则关 mock + 启动打印 baseURL/mock 状态
- runtimeApi.ts: 取包改委托 src/api/runtime.ts(带 base+token+tenant,修 Codex C3 裸 axios 同源)
- inject.ts: manifestUrl resolve 到 VITE_API_BASE + 带鉴权头(修 Codex C4)
- telemetry: 信封补 eventId(randomUUID)+ traceId 兜底非空;sendBeacon→fetch keepalive 带头(sendBeacon 不能带 Authorization/tenant)
- Play.vue onTelemetry 白名单原样转发 like/share/play_end(修 Codex H8 吞事件)
- 新增 game-studio/.env.staging + vite-env.d.ts;.gitignore 豁免 .env.staging(防 gitignore-swallows-frontend-source 同类坑)
- 注:Feed.vue 互动经 buildEnvelope traceId 兜底覆盖,免改

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 14:40:53 +00:00
zizi
eb5dbcb1af docs(mvp): 建立 MVP 进度总账(单一事实源)+ 刷新 game-cloud/game-studio 过期 .agent
- 新增 docs/mvp/MVP进度总账.md:把「计划↔完成↔待办↔执行记录」对账在一处
  (M0-M5 里程碑账 / 13 模块建设矩阵 / 5 条闭环链路 / 8 类契约 / backlog / 波次史)
- 诚实口径:结构骨架~70%(9/13模块脊柱+M1单体真启动),真实可验收P0仍早期(M2-M5为桩)
- 刷新两个 .agent:Wave2/3 已建已提交、M1 达成、contractGaps 已补;均指向总账为准
- 修复"跑了波次却无活账"的项目管理缺口

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 06:00:36 +00:00
zizi
b70e90b775 feat(wave3-phaseB): compliance/studio 模块 + contractGaps(后端全绿)
Phase B 并行建(4 路互斥目录),主 agent 合并 reactor 验证:
- compliance(109/V9):ComplianceGateApi.evaluate seam + 风格原子桩(StyleComplianceAtom/IpComplianceSeam)
  + 分级 + 封禁(R3 状态分支,下架联动留 Phase C)+ V9 DDL(gate_result/content_rating/user_ban,不建审核状态机表 D2)
- studio(112/V8):创作任务链(createDraft→project.createProject / generate→aigc)+ attachments 持久化-only
  + 新增 AigcApi seam(additive)+ V8 DDL
- contractGaps 后端:GAP-3 feed ShareMeta versionId(调 getCurrentVersionId 仅已发布)、GAP-2 runtime manifestUrl(纯派生零DDL)
- contractGaps 前端 game-studio:GAP-1 publish admitted/gates、GAP-3 share→play versionId、GAP-2 取包 manifestUrl+sha256
- 合并验证:全 53 模块 reactor 编译 SUCCESS;新/改模块单测全绿(compliance8/studio11/feed12/runtime24)
- 注:前端 game-studio build 待 mini-desktop 验;Phase C 待接入 project.publish→ComplianceGateApi

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 02:15:20 +00:00
zizi
9e95a66ea6 refactor: 技术命名空间 huijing→wanxiang 全栈落地(代码+契约,原「只改文档」决策反转)
- Java 包 cn.huijing.game→cn.wanxiang.game:126 .java + 15 目录 git mv(保留历史)+ Application scanBasePackages/@MapperScan + yaml type-aliases
- SDK HuijingGameSDK→WanxiangGameSDK + postMessage channel huijing-game-sdk→wanxiang-game-sdk(契约 + 前端 host/sdk/inject/bridge)
- 契约 contracts/ 同步(sdk-interface.d.ts / runtime.yaml / game-package.schema / $id URL / V3 SQL 注释)
- 主 agent 独立验证全绿:后端集成编译+55 单测(cn.wanxiang)、前端 build+/browse 冒烟(WanxiangGameSDK+demo 911 像素+遥测 200)、残留 huijing=0、Flyway 5 迁移 diff-identical、yudao cn.iocoder.yudao 2167 文件未误伤
- 保留 yudao 框架 cn.iocoder.yudao + Maven groupId cn.iocoder.cloud

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 10:16:52 +00:00
zizi
67ad750abe feat(frontend): game-studio 前端脊柱(双闭环 + 宿主×SDK×Runtime,mock 验收通过)
- 单 SPA 双区(玩家 feed/play/share + 创作 create/project),Vue3 + Vant + Vite8 + Pinia
- 三相 Workflow 并行建成(A1 地基 + A2 宿主引擎 ∥ → B1/B2/B3 业务页 ∥)→ 主 agent Phase C 验证门
- 双闭环 + 三方链路(GamePlayer iframe × HuijingGameSDK × Canvas Runtime 3.5KB) + ad 桩经 /browse 实证
- npm run build + vue-tsc -b 绿(验证门修复 2 处类型 bug);自写 mock 中间件(dev+preview 双 hook)
- 4 个 contractGaps 已上报、骨架 mock 兜底,待 staging 真实联调前补

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 09:10:38 +00:00