28 Commits

Author SHA1 Message Date
lili
1981a6be01 feat(storage): 闭合 Agent 到 Runtime 的 OSS 游戏链路
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
增加不可变源码检出、两阶段 finalize/activate、Runtime 同源对象读取与 iframe 安全边界,并用 fail-closed CI 门固定契约。Git 仅提交平台实现、契约、迁移和 SoT,不包含具体游戏源码、素材、bundle 或验收证据。
2026-07-30 05:21:44 -07:00
lili
a513ae38fd fix(storage): harden source authorization and committed CAS
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Provision the isolated game-source writer path, bind source uploads to
GameSourceArchive manifests, and require every immutable storage field for
pending-to-committed CAS. Reuse the gate-validated runtime manifest snapshot,
normalize remote storage errors, and record the staging object/CAS evidence.
2026-07-29 19:10:09 -07:00
lili
17727d08c3 feat(storage): 接入游戏内容对象存储与运行时提交门
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
冻结 GameArtifactManifest/GameSourceArchive 契约和 V34 pending/committed 状态记录,增加专用 writer 的全量回读物化校验,并让 Runtime API 在消费和发布前对账 committed、GamePackage checksum 与实际 engineBundle hash。隔离 staging 已验证真实消费拒绝未提交版本;源码桶权限仍保持 fail-closed,正式金标不切换。
2026-07-29 12:02:22 -07:00
lili
8d851ea716 feat(cheap-gen): W-AXIS-V2 波2——取证契约退役+提示全加载链清洗,四门∧测试员为唯一验收链
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
opus 执行位交付、主会话四步验收过(三套测试亲跑/红线 diff 亲读/冒烟截图亲眼):

- 验收消费:check 新增源码级插件调用存在断言(_pluginCallPresenceErrors 词法层,
  接替 F_wiring 真接线护栏);_forensicsView「必须实现」拦截摘除,降级为可选调试
  接口(handleTap 输入契约与 ctx.log 日志纪律保留);gate_judge 放行措辞对齐四门
- play-spec/驱动器退役(逐件裁定 10 件):gen.mjs done 门自动产 play-spec 摘除、
  cheap_gates/cheap_studio/cheap_modify/service_driver 调用摘除、_read_driver_type
  改读 evidence/playtest/playtest.json;golden-spec 三工具(auto_vs_golden/bake_off/
  compare_node)显式封存;ensure_play_spec 两实现保留一个版本窗口(只摘调用不删码)
- prompt 全加载链清洗:cheap-system.md v1.6.3→1.7.0(删 _forensicsView 自动验收
  契约红线与全部 targets/occupied 语义,五法句/品类指路同步),cheap_roles 内置
  回退逐字节同步(test_roles 12/12 证 parity),modify 切片经运行时切块自动同步;
  5 品类 skills+littlejs 手册+recipes×2+模板 8 件+README 6 件教学清洗,真设计
  价值(单击 casual/可解性质/双层反馈/latch)保留
- 批账:hard_genre_batch/xtheme 行加 playtest 段,_row_total_cost 修 shadow 下
  测试员成本漏算(v2 取 max 防双计)

验收(主会话亲验):pytest cheap-worker 512 绿 + tier2 141 绿 + node 49/49;
25 局基线新旧口径重放对照——真坏 5 局全拦(floor 拦 2/测试员拦 3)、无一例旧拦
新放,翻案 2 局均为破案坐实的仪器误杀;n=3 冒烟(mode=v2)全链绿:w2v2-sim
harness verdict.pass=True 而测试员 reject(机械放行测试员逮住,盘上双证)、
w2v2-sim-fix 现象反馈两轮回喂→fix2 收敛(配方显示修成,局内截图亲眼);
rg 零残留(模板残留均为「验收不读它」的降级调试接口合规形态);真跑 ¥8.4。

已知余项:repairFeedback 有产地、Service 续修环消费者未接(测试员 reject 不入
RepairMiddleware,续修判据仍四门)——是否接入随波3 校准数据一并裁;v1 配置级
回退窗口关闭为创始人知悉项,genconfig 默认 mode 仍 shadow、切 v2 归创始人。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 09:21:04 -07:00
lili
e4e4e23564 Revert "fix(cheap-gen): 死圈修复 fix①-B 便宜档畸形参数纠偏——n=5 收敛环坐实 heritage 死圈复现"
This reverts commit 26f94f1f0b9137b342c0d37c1f7583d0f03e4369.
2026-07-10 04:27:17 -07:00
lili
3c0c105aeb fix(cheap-gen): 死圈修复 fix①-B 便宜档畸形参数纠偏——n=5 收敛环坐实 heritage 死圈复现
n=5 收敛 loop iteration 2(难品类)复现死圈:heritage 局 stuck 终杀,签名=连续 4 次
write_file:'path' is a required property——MiniMax 长参数下漏 write_file 必填 path,agent
收默认校验错不理会、反复漏同参 → 撞满 stuck 阈值(4)→ 九门从未跑 ok=False。fix①-A 给了
edit 替代但没阻止 agent 选 write_file 漏 path,故 fix①-B(此前押"证据门")现证据到、实现。

修:CircuitBreakerMiddleware.on_acting 非软停态给「漏必填参」的 write 类工具结果追加一条比默认
校验错更贴脸的补参提示(催补 path / 改 edit_file 短载荷),让 agent 撞满 stuck 前出圈。
经既有 _augment_toolresponse(<system-reminder> 追加,agent 下轮读得到)+ on_acting 洋葱钩子,
符合设计不自造机制。cheap-only(enable_malformed_correction,cheap_budget 工厂置 True;tier2
默认 False、逐字节零行为变化);不重置 stuck 计数(仍漏照常熔断,上界由现有阈值封死、不新增无界重试)。

测:test_malformed_correction 4(cheap追加/tier2零变化/非漏参不追加/非write工具不进)+ tier2
回归 test_circuit_stuck_signature 5 + test_repair_middleware 5 = 14 passed。整环验证随 n=5 re-run。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 04:27:17 -07:00
lili
8200aa08d0 feat(tier2): W-ASSET-SRC 源工程存储 manifest-first 落库 + 治理对账门 + 取回重建 harness + 孤儿清扫 job (SRC T1-T4)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
背景/目标:tier2 富游戏 BackendStore 真实现已写好却未通电,且 save 走 MinIO-first、半落库会留无 manifest
指向的隐形对象,manifest 表游离在治理外(in-code DDL + 留档 .sql 双源无机器门)。本切片按已拍板的
manifest-first 方案把 SRC 一面推到「接生产、schema 受治理、取回可重建、半落库孤儿有修法」。只碰富游戏这
一面,不动便宜档 Java 面、不做素材、不接 fetch 生产消费方。

改动(六件核心 + T1/T3/T4):
- T2① status 列(pending/committed):新建走 CREATE DDL、存量走受治理 ALTER;BackendStore._ensure_schema
  按 information_schema 探测缺列才补(每实例一次,跨 MySQL/MariaDB 稳)。
- T2② save 改写入序:MySQL 落 pending 行 → MinIO put → 翻 committed;命中 committed 幂等返回、命中
  pending 复用 versionId 续跑自愈(同前缀真覆盖)。半落库崩溃只留可见 pending 行、无隐形对象。
- T2③ fetch 两条分支(取最新 / 取指定版本)都补 AND status='committed',pending 半成品对取回不可见。
- T2④ 治理归属:.sql 留 tier2/config/schema/(owner=tier2、不走 huijing Flyway、无执行副本),
  contracts/README.md 加治理指针认领、明说不参与 Flyway 对账;不塞 db-schemas/ 根。
- T2⑤ 可跑对账机器门 test_store_ddl_reconcile.py:规范化比对 in-code(_DDL+_ALTER)与 .sql,改一处
  漏改另一处即红。
- T2⑥ 修 store.py 模块头 docstring 整块(占位/seam/绝不实连/forbidden-import 守着 的陈旧误述改为与真
  实现一致,并纠正守卫范围:check-forbidden-import.sh 只禁 wg1.*/SAA/L2,不禁 pymysql/minio)。
- T1 接线单点:TIER2_STORE=backend 激活配方 + 前置 checklist(CREATE DATABASE / status 列状态确认)落
  staging-ops §7(tier2 gen-worker 部署 env 单点);不改 default_store 工厂形态。
- T3 取回重建 harness store_roundtrip_harness.py:五条(确定性重建优先 bundle sha256 字节相等、非字节稳
  才退九门 verdict 逐项一致+无 missingContent、不拿近乎恒真 buildInputHash 承重;版本寻址;幂等;缺源
  显式失败;半落库两失败点),本地 LocalFsStore 自检覆盖 1-4、真库+bundle 字节相等标 follow-up 窗口。
- T4 孤儿清扫 store_cleanup_job.py + BackendStore.cleanup_orphans:乐观删(status=pending CAS 先删行
  再删对象)防与续 put 的 TOCTOU 竞态,幂等,owner=tier2,可追溯日志。

契约(contract-first):.sql DDL additive 加 status 列 + 首份受治理 ALTER;contracts/README.md 治理指针;
落库寻址 doc↔code 断言点(表名/双唯一键/「pending 对 fetch 不可见」)。不改 tier2-source-project.schema.json
addressing、不改 buildInputHash 字段、不改 GamePackage / 便宜档 source-project.schema。

验证:本地 14 个新单测真跑全绿(DDL 对账 3 + manifest-first 行为 8 + harness 本地 3);harness 脚本
LocalFsStore 自检 5/5;docs-gate 七检全绿;forbidden-import 守卫通过。真 MySQL+MinIO 往返 + bundle 字节
相等 = mini-infra 窗口 follow-up(worktree 无真库/无 esbuild,诚实未跑)。缺重依赖的既有测试(agentscope/
nacos)本极简 venv 未跑,均不 import store、与本改动无关。

计划锚点:docs/plans/2026-07-05-001-feat-asset-src-源工程存储-plan.md §4 T1-T4 / §5。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 18:03:28 -07:00
lili
3b6573941d feat(cfg): NacosHotConfig 接进 genconfig — HotConfig 单例工厂 + 取值链前端热源(配置控制面阶段二·步骤4)
件2 genconfig 接热源:get() 取值链最前端插进程级热源单例(attach/detach),优先级 Nacos 热源>env>YAML>内置默认>调用方 default;复合键 area.key 无歧义扁平化 (area,key) 二维;缺键/未 attach/异常一律回落原链,绝不引入第二默认值(坑④·tech-decisions §13);热源命中即返回不读 YAML,mtime 缓存无从盖住热值;middleware 等所有 genconfig.get 调用面一行不改。

件1 worker/genconfig_nacos.py 工厂:启用旗 TIER2_GENCONFIG_NACOS 默认关(=行为字节不变,兼作 §3.6/§6 回退开关);按档隔离 dataId(tier2=gen-hot-params-tier2 / cheap=gen-hot-params-cheap,env 可覆盖);建 client 前 NO_PROXY 内网旁路;真实 namespaceId 默认空串(勿写 public,沿前置任务口径);注入 NacosHotConfig 的 defaults 刻意空;全程 best-effort 失败不 attach 不抛,genconfig 回落纯本地。

cheap-worker 共享 worker.genconfig(from worker import genconfig),两档隔离靠各进程 attach 各自 dataId 的热源;缝在 cheap_service_app.py:main 对称调 build_and_attach_hot_source(tier=cheap),本单不动只说明。

验证:单测 19 条锁死四条回落路径(未 attach/Nacos 不可达/namespace 配错/YAML 回落)+ 两档各读各 dataId + Nacos>env 优先级 + 门阈值热读 + 工厂 best-effort/按档/NO_PROXY/namespace 空串;worktree 全量 126 passed 无回归;真 Nacos(mini-infra 100.64.0.8)演示脚本改演示 dataId → genconfig 0.5s 热读到新值不重启、清理不碰生产 dataId。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:15:33 -07:00
lili
056433d5bb fix(nacos): namespace 口径统一 public→空串(默认公共空间 namespaceId=空串,非字面量 public)(配置控制面阶段二前置)
Nacos 默认公共空间的真实 namespaceId 是空串,"public" 只是显示名(namespaceShowName)。
现状代码写 namespace: public 会带 tenant=public 静默落进一个 id 为 public 的空间,
路 B 写读两侧不一致时配置永远推不到(阶段〇同款坑)。真取证:
GET /nacos/v1/console/namespaces 返 namespace:"" / namespaceShowName:"public";
nacos-sdk-python v1 client.py 逻辑 `if self.namespace: params["tenant"]=...`——空串不带 tenant=走默认空间。

改动(五处触点,均只动默认公共空间语义处):
- game-cloud huijing-server application.yaml:discovery/config 两处 namespace public→""(+中文注释)
- tier2 gen-worker service/nacos_registry.py:NACOS_NAMESPACE 默认值 public→""(+中文注释)
- tier2 gen-worker tests/test_nacos_registry.py:断言随改 == "public" → == ""
- docs/内网凭据与端点.md:Nacos 段补 namespaceId 口径行(空串非 public,写读两侧对齐)

不动:各模块 -dev/-local profile 的 namespace: dev(独立命名空间 dev,非默认公共空间语义);
docs/plans 历史留痕档的 public 字面量(留痕层不改)。

验证:nacos_registry 单测 6 passed;application.yaml YAML 语法有效(两处 namespace 落空串);
py_compile 通过;docs-gate 6/7 检绿(唯一 G3 死链为 pre-existing、与本改动无关)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 08:46:53 -07:00
lili
9a64b3a39c merge(工单c): 软停后 finish 逼近递进升压(N=3 提醒/2N 强制,finish 尝试复位;on_acting 注入贴脸催收,治 80011 软停仍烧到硬地板)· fable 终审过(middleware 亲审:阈值/finish 语义/stuck 签名零动,counter=0 逐字节等价)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:53:03 -07:00
lili
eb135a9041 feat(tier2): 软停后 finish 逼近递进升压(工单 c)——连续 N 轮不 finish 经 on_acting 注入升压收尾指令逼软着陆
软停(budget_soft_tripped)已有 on_system_prompt 强提醒 + on_acting 拦生成类工具,但那是被动系统提示,
M3 可能烧推理不理会(80011 实录:软停触发后仍烧到 step_cap/硬地板才停)。本次在共享 CircuitBreakerMiddleware
加「finish 逼近升压」:on_reply 用现有事件计数面数软停后连续无-finish 的 acting 轮(ToolCallStartEvent +1;
一推理轮无 tool call=finish 尝试则轮边界复位),达 N=3 轮升第一档(提醒收尾)、达 2N=6 轮升第二档(强制立即
finish、禁新增大额生成);升压指令经 on_acting 注入工具结果(拦截语并入 / 收尾类结果尾部附加),跨档只注一次。

只改观察/注入路径与状态跟踪:不动任何熔断阈值 / finish 语义 / 九门;无新增配置键(_softstop_rounds 派生);
_softstop_rounds=0 时 on_acting 与升压前逐字节等价(兼容既有 cheap 共享面)。cheap_budget 同源共享,不改 cheap 文件。

新增 tests/test_softstop_escalation.py(5 用例):升压逐档升级 / 透传附加 / finish 尝试复位 / 不足 N 轮零升压 / 硬地板仍兜底。
验证:tier2/gen-worker 102 passed;cheap-worker 共享软停面 29 passed(test_budget_two_stage 等)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:49:35 -07:00
lili
688f83fdc5 feat(tier2): 收敛环台账 infra 归因穿线(observe-only 第一迭代)——治 F-2 R1 设计团队超时降级被误判"分散"的生产盲区
把「设计团队超时降级 / writer 撞轮数墙 / step_cap 熔断 / ¥ 软预算软停 / 墙钟超时」这类
编排层事件从 studio 运行态穿到批跑台账,让退路树能一眼归因。此前两败局其实 100% 集中在
「设计团队超时降级路」,但台账 fail_system 空 → decide_n5 按 fail_system 看"分散"出
R3_conditional,主持人只能人工翻日志归因。

做法(不塞 fail_system,游戏系统桶语义不污染;decide_n5 的 R1/R2 分流逻辑一字不动):
- RunRecord 新增 infra_flags: list[str](field(default_factory=list);受控值集 INFRA_FLAGS
  五项常量 design_team_degraded/writer_iter_wall/step_cap_tripped/soft_budget_tripped/
  wall_timeout,注释写明可扩)+ 纯映射 infra_flags_from_runtime(信号→值集,去重稳定序);
- studio 运行态采集:设计团队降级点(捕获异常,.kind=='timeout' 归 wall_timeout)、外层
  resume 轮数墙、熔断返回 kind、¥ 软预算软停标记,经 _infra_flags_from_runtime 归一进 result;
  design_team.DesignTeamError 加 kind 区分墙钟超时;
- batch_run.result_to_record 从 result 抽 infra_flags 落台账(防御式复制);
- decide_n5 只把各轮 infra_flags 分布打进 reasons(如「r1 infra 分布={design_team_degraded:2,
  wall_timeout:2}」),不分支、不改任何出口。

向后兼容:旧 jsonl 行无 infra_flags → from_jsonl_line 读空列表不炸;r{N} 轮分组正则不动;
middleware.py 不动;退路树出口枚举与判定不动;decide_n5 签名不破坏。

验收:新增单测 5(纯映射/studio fake 运行态采集/batch 落账/旧行兼容/decide_n5 分布行+出口不变
含 --no-strong-baseline 语义原样);全套 102 passed(97 基线 + 5);run_record 与 fallback_tree
的 __main__ 自检、decide_n5_from_jsonl 新旧混合行端到端均通过。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:37:16 -07:00
lili
8d94128d7e fix(cheap): C6反馈驱动器族错配直指(selectionBasis回退+H零增量→先修targets/spec别改计分) (cutover S2 工单a)
工单a1(真修):build_cheap_feedback_obj 的 H_progress 分支——当判卷驱动器族是「回退」兜出来的
(staged play-spec.json 的 driver.selectionBasis 含「回退」二字)且 H 失败为零增量类(同源读 g.checks
的 before/after 判 after<=before,不 re-parse 字符串)时,把该门 fixDirection 从原「核对得分随真玩上升」
掉转为直指:先让运行态暴露 targets / 修 play-spec,而不是改计分逻辑;原 H 详情保留在 detail。
三条不命中支(driver 正常选中 / score 有真增即终局不可达 / 读不到 selectionBasis)一律保原门提示一字不变。
新增 _cheap_selection_basis(镜像 _cheap_driver_type 容错)、_h_zero_increment 两个 helper。
80007 盲修¥14.9(key-cycle 驱不动购销循环→真玩零得分→原文案指向改计分→M3 盲修烧到硬地板)实证。
单测 test_gate_judge_mismatch.py 7 用例全绿;既有 gate_judge/feedback 32 用例零回归;tier2 路未碰。

工单a2(实证无需改):前提「_template-shop 漏 targets 契约」经端到端真跑证伪。
_template-shop 自建档提交 9ddd173c(2026-06-30)起,_forensicsView().state() 就暴露 targets 键,与参考
模板 _template-feiyi 结构一致;A2 批(34923812)只加「起局按钮解耦 render + targets 键名约定进 prompt」、
未动 targets 暴露本身。全管线 scaffold→build→stage→smoke→ensure_play_spec 真跑,shop 得
driver.type=tap-targets(selectionBasis=可点目标类,非 key-cycle 回退),与 feiyi 正对照行为一致。
模板已满足契约,按最小改动不造多余改动。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 19:21:55 -07:00
lili
5afb9823cd fix(tier2): stuck 熔断签名富化=工具名+状态+归一化错误头,对齐设计意图「同错反复」——异类4连败不再误熔断(交step_cap/¥闸兜底)+工具失败即时打印观测(80009 生产事故:签名恒为裸error且无从归因) (cutover S2 观测修)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 18:53:09 -07:00
lili
9e1e943503 feat(budget): T3 预算两段式统一(软停线 ¥10/¥50 只许收尾+RMB 硬地板 ×1.5 fail-closed 封上界+CLI/Service 同源工厂) (W-ARCH②,创始人 2026-07-03 裁决)
- middleware:soft 档升两段式——越软停线置软停+on_acting 拦新增生成面工具(write_file/write_source/scaffold_init,
  收尾类 finish/check/build/跑门/只读恒放行);越硬地板(软停线×rmb_hard_floor_ratio=1.5)fail-closed 抛熔断,
  spent>floor 后 est≥0 使下次调用必拦 → 整局 ¥ ≤ floor+单笔,上界数学可证明;hard 档单段语义逐字不变
- genconfig+generation.yaml:rmb_hard_limit 3.0(spike 占位)→50.0(富档软停线裁决值)、新增 rmb_hard_floor_ratio=1.5
  / cheap_rmb_hard_limit=10.0 登内置默认,带裁决出处中文注释
- cheap_budget.build_cheap_breaker:便宜档 breaker 唯一装配点——CLI(cheap_studio,原 hard 单段 ¥10 改两段)与
  生产 Service(cheap_service_app,原 soft 无地板补地板)同源读 genconfig,档位参数不可被 overrides 改
- 测试:两段式 11 用例(软停区间放行/生成工具拒·收尾放行/硬地板到线即停/spent>floor 次调必拦/工厂同源 env 同变);
  test_budget_soft_stop 旧「soft 无界」口径按裁决更新为两段式并补越地板用例;既有 hard 档测试全量不动全绿

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:15:59 -07:00
lili
93cdffa33e feat(cheap): T2 续修反馈补厚·C6 判卷契约接线(latch 双支 phaseNow+driverType+game-log 摘要+CLI 九门回喂对齐+tier2 结构化 sidecar) (W-S1 修复三单·单③)
- gate_judge:反馈先构造 C6 结构化对象(build_cheap_feedback_obj)再渲染中文(单一来源,拼串丢字段结构上不可能);
  latch advisory 支(phaseNow)与驻留支(after)都读;每条逐门带 driverType(staged play-spec 取数);
  game-log.json 告警/报错摘要进反馈(截断保护);C6 对象落 evidence/verdict-feedback.json 证据留痕
- cheap_studio:CLI 收敛判据升「九门绿」——finish 后 _closeout_gates 跑门,未绿且轮数/预算有余带 C6 反馈
  resume 续修(与生产 RepairMiddleware finish 点拦截行为同型);软停后只收尾不回喂;收口复用最后一轮门结果;
  对照路 run_gates=False 零改动
- tier2 对齐(有界零行为变更):verdict_feedback 富文本逐字不动,新增 verdict_feedback_obj+write_feedback_sidecar
  结构化 sidecar 落 evidence/(judge_tier2_verdict 未过时 best-effort)
- Service _cheap_check / driver _build_summary 传 game_id+staged_dir 解锁完整反馈口径
- tests/test_feedback_c6.py:phaseNow 两支/负样本被 validate.py 拦/driverType/game-log 截断/sidecar/富文本不变 14 用例

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:08:44 -07:00
lili
4517941b95 feat(tier2): F-1 富三门 verdict 反馈补厚到便宜档水平(护城河反馈契约·质量SoT§3.7裁定3/5)
每个失败子检查透传 harness 实测 detail + 一句为什么(_RICH_CHECK_WHY,对齐便宜档
_CHEAP_GATE_HINTS 范式);经济门失败暴露三个数(实测 coins 终值/游戏内赢线 coinsTarget/
验收外生 winThreshold),游戏内赢线低于验收地板直接指出结构性错配;静态 economyConsistent
差额折进反馈(静态可达而真玩挂→指向耐心/时序/节奏;静态死局→先修数值);H_progress 失败
喂回本局 play-spec 真玩断言清单(path/op/why)。run_gates 返回加性携带 gameId 供反馈组装
读盘;判定逻辑(passed/failed_gates/decision)与 harness 零变化;便宜档不动。
单测 9 新增 + 全套 70 绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:27:15 -07:00
lili
24e558a4ed fix(cost): 成本子系统改用 per-POST 凭据取价(不再依赖 Service 进程 env NEWAPI_KEY)+ Service 注 key 兜底 + requirements 补 app-runtime extras (阶段一② cutover 接缝)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 18:39:32 -07:00
lili
e9e7006cb3 feat(cheap): 便宜档九门判据 judge_cheap_verdict + run_cheap_gates 同步门跑(端口透传) (切片一 阶段一②/T1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 11:51:39 -07:00
lili
f4384dc3f3 fix(tier2): 封陈旧 verdict 假绿(run_gates 起跑前清 verdict)+ 补软停实测置位回归护栏 (切片一 阶段一①/终审fix)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 04:07:30 -07:00
lili
2e698566df feat(tier2): Service 工厂注入续修 middleware + drive_generation single_post 单回合(老 resume 留 fallback) (切片一 阶段一①/T4)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 03:23:12 -07:00
lili
c26617192a feat(tier2): 软预算 ¥ 闸从 fail-closed 改优雅收尾软停(交尽力产物·不断链) (切片一 阶段一①/T3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 03:04:24 -07:00
lili
e9c7a3bb47 feat(tier2): 续修 RepairMiddleware 提升进 middleware.py + GateJudgment 真契约 + budget_exhausted 联动 (切片一 阶段一①/T2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 02:37:16 -07:00
lili
55162341ca feat(tier2): 统一门判据 GateJudgment + tier2 verdict 适配器 (切片一 阶段一①/T1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 02:24:22 -07:00
lili
2fac985bbf feat(gen-worker): middleware 热参经 Nacos v1 同步 watcher 热读(快照兜底)(切片一 阶段〇 D2)
NacosHotConfig 线程安全 store(RLock)+ get_config 三级兜底 + v1 add_config_watcher 同步热更(免 event-loop),
消灭自建薄读接口。回调 dict 键逐字对齐已核验 v1 源(data_id/group/namespace/raw_content/content)。
6 单测绿(初读/热更/不可达回落/默认保留/脏内容保旧值/并发线程安全)。真连烟测随后端窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 17:40:40 -07:00
lili
ab6791cf34 feat(gen-worker): AgentScope Service 注册进 Nacos discovery(替硬编码@8200)(切片一 阶段〇 D1)
nacos_registry 注册实例+心跳+优雅注销,advertise_ip 指 mini-desktop Tailscale;代理旁路;
NACOS_REGISTER=1 才开、best-effort 失败不中断 Service。单测 mock client 锁注册+旁路+best-effort。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 17:40:40 -07:00
lili
f4cea4677a feat(tier2): 统一 trace 落库 sink + SAA schema + 生成控制面只读后端(切片一 C1/C3a)
JsonlFileSink 把五字段 trace 落 workdir/trace.jsonl(非阻塞·写失败不阻断生成);studio.py sink 接线;SAA 扩展段 schema(接口对称五核心+内容不对称 ext);管理面 3 只读端点 roles/traces/cost(惰性 import 保住「仅 import service.app 不牵 fastapi」红线)。测试 test_jsonl_sink 3 / test_admin_routes 6 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
eed34d0a32 feat(tier2): 切片二 U2/U3/U4 本机 TDD 全绿(护栏/退路树 n=5/play-scene 门结构化)
U2 batch_run:BatchConfig 批级 ¥/墙钟/token 上限 + assert_under_round_cap 跨轮闸 +
  main() catch 非0退出(fail-closed,已跑款不丢)。
U3 fallback_tree:decide_n5(覆写 decide() 非包装——decide() 无 deepseek 强便宜档即 Q1 早退吞 M3;
  收敛需末轮≤1 且≥2轮压首轮裸运气;R1/R2 复用 _system_concentrated/_bucket_share;R3_conditional 无强档;
  len>4 拒裁)+ --n5 CLI 入口。
U4 run.py:validate_play_scene 公开签名不变,抽 validate_play_scene_src(src) 在剥注释+字符串的 skel 上判
  bindInput/tick/handleNormalizedInput,挡注释/字符串规避假过。
测试:fallback_tree 自测 +9 / test_batch_guardrails 3 / test_validate_play_scene 4,全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:59:29 -07:00