84 Commits

Author SHA1 Message Date
lili
5b34807e73 feat(cheap): 面四 Python 三跳 traceparent 打通——便宜档生成串成单条 trace 树(观测阶段四)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Java agent(面一b)已在派发出网自动注 traceparent;本片补 Python 侧三个断点,让一次便宜档生成
在 Tempo 里是 Java→worker(:9501)→cheap-service(:8300)生成 的单条 trace 树而非散落 root:
- 断点①:worker_service.do_POST 抓入站 traceparent 进 job._otelCarrier(self.headers 仅此可得);
  process_job 用 worker_span_scope 在入站 context 下建 worker SERVER span、包住真生成调用(span 建在
  真处理 job 的 worker 线程,非只入队即 202 的 do_POST)。
- 断点②:driver 读当前 context(worker span 经 asyncio.run 透传进协程)inject 成 W3C carrier,随出站
  :8300 各 POST header 带上;同份 carrier 写会话 sidecar。
- 断点③:/chat reply 在 AgentScope 后台任务跑、与 HTTP 请求解耦读不到实时 context——故走既有 C2 sidecar
  桥:cheap_service_app 工厂读 sidecar traceparent → parent_carrier → CheapOtlpSink 每步生成 span 挂入站
  context 当子 span(不再私有 root)。

传播 helper 集中 cheap_otlp_sink(extract/inject/worker_span_scope);全程 best-effort(otel 不可用/carrier
坏/Collector 不可达都退化成少串一段 trace、生成异常原样穿出)、CHEAP_OTLP_ENDPOINT 默认关时零行为变化
(parent=None 退私有 root、sidecar 不写 traceparent 字节不变)、代理旁路红线未破、业务 traceId 并存(§10 决策5)。

test_trace_propagation.py 14 例(含端到端三跳单条 trace 树,InMemorySpanExporter 证父子链+同 trace_id)
+ test_worker_service +2;主控亲跑 40 passed(3 文件)+ 全量 364 passed 1 skipped 无回退。
真跨进程 Tempo trace 树验证 = dev 开 CHEAP_OTLP_ENDPOINT 重跑 follow-up。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 20:30:04 -07:00
lili
9f42cd2c7b fix(cheap): requirements.txt 补声明 nacos-sdk-python==1.0.0(dev 起栈真暴露)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
cheap-worker 经 sys.path 复用 tier2 的 worker.genconfig_nacos 接配置控制面热源,但
cheap-worker/requirements.txt 一直漏声明 nacos-sdk-python(tier2/gen-worker 有声明)。
后果:新建 cheap venv 起 Service 时 `import nacos` 失败→Nacos 热源静默不 attach、回落本地
YAML(门参不热更)。2026-07-05 dev 环境全栈起栈时真暴露(便宜档 Service 首启 ModuleNotFoundError)。
补声明钉 v1.0.0 与 tier2 同版。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:10:50 -07:00
lili
daa49e5864 feat(obs): 便宜档主生成路 OTLP span sink + 双入口 fan-out 并接(阶段四观测 波③ T3-1)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
便宜档 Service(cheap_service_app)+ CLI(cheap_studio)主生成路此前只经 make_jsonl_sink
写 trace.jsonl、不产 OTLP span,观测栈 Tempo 看不到便宜档生成。新接 cheap_otlp_sink:与
make_jsonl_sink 同签名,把每步 TraceStep 推成 OTLP span 发 mini-infra Collector
(service.name=cheap-gen-worker),span 属性映射对齐 tier2 studio_sink 的标准 gen-ai 键。

- 默认关(env CHEAP_OTLP_ENDPOINT / infra_config 取不到即 no-op),build_trace_sink 原样返回
  jsonl sink、现有行为字节不变;开则 fan-out(jsonl 先落盘照旧、OTLP 额外发一份,各 best-effort)。
- best-effort 铁律:缺 otel / Collector 不可达 / 发送失败 → 记一次告警、永久降级 no-op、绝不抛、
  绝不咬生成主链(设计 §8);observe-only 从不回写生成/门判定字段。
- 惰性 import otel(顶层零重依赖,对齐 build_cheap_app 惰性红线)+ 代理旁路(T3-4,建 exporter 前
  把 Collector host 并入 NO_PROXY,绕 clash fake-ip)。
- provider 做进程级共享单例(非 per-run):长驻 Service 中间件工厂 per-turn 建 sink,per-run 会逐局
  泄漏后台上报线程;trace_id 只作 per-span 属性,BatchSpanProcessor 一条后台线程跨局复用,atexit 兜底 flush。
- 双入口都接(Service :273 + CLI :214),fan-out 不破坏既有 jsonl 落盘。

终审(亲跑非照搬):cheap-worker/.venv 全套 350 passed/1 skipped(含 span sink 11 例)、零回归、
py_compile 三文件过、docs-gate 七检绿。跨机 OTLP 命门已验(mini-desktop→mini-infra:4318=200)。
真发 Collector→Tempo 见 span 排 mini-desktop 起服务后验。

T3-3 metrics 空口按红线#7(不留孤儿)剔除:本波无生产调用方,真值填充随波⑤ T5-2 带埋点调用方一起落。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 09:16:16 -07:00
lili
d9def7d901 feat(cfg): 步骤4 收尾两针——两 Service 入口接热源工厂(旗默认关=字节不变)+ genconfig __main__ 自检块期望值随单源现值修正(50.0/60,阈值批 bfeaea2d 漏改自检块)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
入口接线:tier2 service/app.py:main 与 cheap_service_app.py:main 对称各调 build_and_attach_hot_source(tier=...),
工厂自带启用旗(TIER2_GENCONFIG_NACOS 默认关)+ best-effort,无条件调不再包旗;两档各订各 dataId 不串档。
验证:tier2 126 passed / cheap-worker 339 passed 1 skipped / genconfig 自检块全 OK / py_compile 两入口过。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:23:20 -07:00
lili
0f55a6f77d merge(工单h): 便宜档 Service 工具面再封口——关 Planning/Team/Schedule 三组框架注入(源码证据链坐实·包裹 _chat.get_toolkit 本地绑定·重建干净 Toolkit·fail-open 降噪件)· 333+1skip · fable 终审过(skip 件=apscheduler 集成测,部署树复跑)
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:50:23 -07:00
lili
c5ee8ef5e9 feat(cheap): 便宜档 Service 收窄工具面——关 Planning/Team/Schedule 三组框架工具(工单 h)
2.0.2 get_toolkit(app/_service/_toolkit.py)除 workspace 内建外,还无条件并入 Planning
(Task* :109-110 "always on")/Team(Team*·AgentCreate :144-168),并按 session model 挂
Schedule(schedule_tools 组 :117-142)。便宜档单机单游戏用不到,纯工具面噪声(80011 flail:
12+ 工具语义重叠是根因之一;护城河 I1 六工具白名单邻域治理)。

修法:cheap Service 进程内 monkeypatch 包裹 _chat.get_toolkit(_chat.py:33 本地绑定、:240 唯一
装配调用者),调原函数拿到 Toolkit 后重建干净版:basic 组按 .name 剔 Planning+Team、丢整个
schedule_tools 组;workspace skills/MCP、六工具、后台控制 ToolStop 一律原样保留。钉 agentscope
==2.0.2、版本漂移响亮告警仍应用;作用域=cheap Service 进程(只跑便宜档 agent),tier2 独立进程
不受影响;绝不改 venv/site-packages 本体。惰性 import _chat(牵 apscheduler)保无 [service] 环境
可 import 本模块。

测试(tests/test_planning_team_tools_patch.py):4 filter/wrapper 单测(补丁后无三组 / 保六工具+
ToolStop / 过滤幂等 / 装配幂等)本机全绿 + 1 真 _chat 集成测 importorskip apscheduler(本机跳、
mini-desktop 全跑)。全套 pytest tests/ -q = 333 passed, 1 skipped。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:46:09 -07:00
lili
eb95441dd6 fix(cheap): 收口采集重复打印幂等(工单 f)+ bake_off brief 全缺 fail-fast(工单 i)
工单 f:_CheapRunCollector._flush 在 on_reply 的 REPLY_END / except / finally 三条降级路
会被调 ≥2 次,落盘每次覆盖是幂等的(采集语义不变、driver 恒读到最新),但「收口采集落盘」
成功行重复打印纯观感噪声。加实例标记 _flush_logged 只在首次成功落盘时打,后续静默覆盖
(失败行不受此门、每次都报便于诊断)。

工单 i:run_bakeoff 对无 brief 品类 skip+continue,全缺时 valid 空 → aggregate(genre_runs,[])
的 overall=(not [])and(not [])=True → 在 0 款上打「达标 」exit 0(S5b 第一跑生产实录的
空过陷阱 / 无声截断)。抽 _resolve_briefs 纯解析 valid/missing;采样列表为空 → 立即
SystemExit(2)、stderr 打印缺失清单(品类 + 期望 run-summary 路径)、绝不进入判定;有样本
但部分缺 → 逐条告警后按既有逻辑继续(不升级为全停,judge_genre/aggregate 判定口径不改)。

测试 +6:工单 f 直接三次 _flush + 崩溃路端到端各验只打一行(capsys);工单 i 全缺 fail-fast
+缺失清单 / 正常路径行为不变 / 部分缺继续 / _resolve_briefs 拆分。全套 335 passed(329+6)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 00:41:56 -07:00
lili
e01d91fb83 feat(quality): 经营品类金标正例固化入仓 bake-shop-serve-1(欠账①清)+ 骨架转薄对照定案(欠账②按红线收束)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
- 正例=S5b bake_off 富化过门款(烘焙上菜 rush,attempts=1/¥2.00/tap-targets 真玩过门):src 7 文件+run-summary+richness-n3 凭据入 fixtures/golden-samples/sim-business/
- 12 条口径 n=3 复采样中位 10/12(单发 11/9/10 方差±2 合纪律),对照骨架 4/11 通用段分离 5–6 分=通用尺判别锚
- 品类段诚实口径:2/4 vs 1/4 仅 1 分分离(serve 形态无进货/双币),品类段正锚待进货型经营款,回退判定以通用段+L4 为准
- 合成薄壳反例不再补:骨架实测即真实薄对照,不臆造材料充数
- rubric _note 收束两欠账 + skill 金标锚点段 + golden-samples README 段;rubric-sync-gate 过

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 23:07:26 -07:00
lili
5e4d81a296 merge: C1金标欠账清偿——narrative 12条正式重锚+trpg/puzzle富正例基线(前提证伪:模板=黄金脚手架非薄反)+判别主锚=品类段+L4 归质量轨 (尾波C1欠账)
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-03 21:34:36 -07:00
lili
b34a7725cc docs(.agents): C1金标欠账清偿——narrative 12条口径正式重锚(正8/12 vs 薄反7/12,判别主锚=品类段+L4)+ trpg/puzzle 实为黄金脚手架富正例、基线入仓(真薄反欠账明记不现造,规范三合成薄壳教训在案)+ fixture _note 同步收口(复采样×3取中位) (尾波C1欠账)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 21:34:22 -07:00
lili
11436f07cc test(cheap): test_a11_m3/m4 模块级 game_dir/dedup 替换收进可恢复 autouse fixture——根除 game_dir 跨模块隔离污染(基线二分钉死:5 个失败,非 12) (尾波小单)
test_a11_m3_deterministic 与 test_a11_m4_regenerate 在 import 时无恢复地替换
cheap_run.game_dir(两文件同构),污染同会话后续测试模块:受害者按真 games/ 根校验
write 边界,game_dir 被改指临时目录后一写即判越界。改为 module 级 autouse fixture
(yield 后恢复原值),__main__ 独立运行路径同装(单进程无需恢复),dedup 登记表一并收拢。

证据:全套 12→7 failed、三种文件顺序结果恒定(7 failed / 322 passed);二分钉死纯
game_dir 污染 = 5 个,均已恢复 = test_run::test_scaffold + test_toolkit::{write_l1_rejected,
write_l3_ok,check_shape_drawbutton_ok,check_shape_define_fail}。

余 7 个非本污染、隔离下同红,系环境前置:worktree 无 esbuild →
test_run::{test_stage,test_play_real}、test_toolkit::test_check_and_build_clean_pass;
缺真实 e2e 产物 → test_studio_smoke×4(须先跑 cheap_studio 单局)。须集成段 mini-desktop
才具备,未纳入本单。同族但未致失败的 test_worker_service 模块级 dedup 泄漏按最小改动未动。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 21:11:31 -07:00
lili
e4a4d02516 fix(cheap): CHROME_BIN 只在 Mac 路径真实存在时注入——Linux 上盲注致 smoke 全体 spawn ENOENT→state=None→考卷全回退 key-cycle(80007 族错配盲修¥14.9/80012 driver=key-cycle 共同上游根因;S5b 串行复跑+raw 观测行连环钉死) (cutover S5b)
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-03 20:24:44 -07:00
lili
396461065b chore(cheap): smoke FAIL 打印 raw 尾(bake_off 并发争用致 100% 回退考卷、真因被吞实证)——失败真因可见纪律 (cutover 窗口)
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-03 20:15:05 -07:00
lili
2a8d5e450b chore(cheap): 丰富度日志行补 genre 段(工单e,纯观测;genre 实参本就透传) (cutover S2)
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-03 19:24:35 -07:00
lili
a6d5c29ad3 fix(cheap): Service 关 workspace 内建工具(Bash/Edit/Glob/Grep/Read/Write)——内建 Write/Bash 旁路六工具写白名单(护城河击穿)+ M3 12+工具面语义重叠混乱税(80009 死圈/80011 失败目录:Bash CWD 混乱/read_file 被串 Read 参数/Edit 连败,签名富化观测实证) (cutover S2 工具面封口)
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-03 19:12:35 -07:00
lili
dbfe40906e fix(cheap): worker_service 门面路 _service_run_fn 先导 _bootstrap 再导 driver——补 tier2/gen-worker sys.path 接线(CLI 路有、门面路漏;S1 真验实证 No module named worker 兜底 failed 回调) (cutover S1)
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-03 16:07:48 -07:00
lili
2aafa82b9c docs(cheap): 通用底座第12条金标复验回写5品类rubric _note(12条口径·C波·真M3 23调用¥0.46)
评分尺变更「通用底座 11→12 条(⑨升「核心操作非无脑」L2·追加末尾·前11一字不动)」的金标复验:
逐品类金标正例+薄反例真 M3 judge 复评,比对前 11 条分组小计对旧 11 条锚的漂移(±1 线),
第 12 条命中态与品类段单记。结论=item12 对前 11 零漂移坐实:

- heritage 正/薄反 前11 逐值精确=旧锚(10/11=6/2/2·6/11=4/0/2),品类 5/5·3/5 均±1内
- trpg 正例 前11 总分 8=旧锚(首记分组 5/1/2),品类 5/5 持平
- puzzle 正例(_fewshot)9/11 首记通用、对照(_template)8/11 对旧锚7/11 +1(±1内),品类 5/5 持平
- narrative 正例 双口径(生产/纯隔离)中位均±1内,genre=None 纯item12隔离中位7/11精确复现旧通用锚
- 第12条判别力真实:富/决策游戏命中、经营骨架(点顾客自动结算)与故事骨架多未命中;sim_neg item12=False

四品类(heritage/trpg/puzzle)+narrative正例 12条口径新基线已回写(追加式·保留旧11条记录)。

待创始人裁 / 欠账:
1. narrative 薄反例 L2 中位 2~3 对旧锚 L2 1 超 +1~+2 —— 根因旧锚系「骨架原样」空brief单发stingy观测
   (该骨架恒有 juice+playSfx 两个L2、真实地板≥2),非 item12 效应;narrative 本为「仅观测·挂窗待跑」
   临时基线,新基线本轮暂不锁定,建议以固定 brief+genre 口径正式重锚(_note 已记发现)。
2. trpg/puzzle 合成薄反例(黑箱点卡/合成薄壳)未入仓、本轮未跑。
3. 经营金标正例无仓内产物(golden-specs 只有 driver play-spec),待固化一款过门经营正例入仓。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:25:43 -07:00
lili
3495470d89 feat(quality): ⑨升通用底座第12条「核心操作非无脑」落 RICHNESS_CHECKLIST(L2 6→7,前11条一字不动,prompt 计数改动态 len 同源防漂)+ 测试分母随升;图说预算两段式「待实施/CLI仍hard」翻已落实态(cheap_budget 同源工厂+真M3实证) (质量SoT §4 规范一 12条口径,ba55508e 配套;金标复验=C波)
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-03 14:51:36 -07:00
lili
b78a8dfa4f merge: A1 核心修复批——单①驱动器约定收敛(C5接线:startRitual起局仪式+driver显式selectionBasis+sourceHash陈旧重生+金标held-constant不误杀)+单③反馈补厚(C6结构化单一来源:latch双支phaseNow+driverType+game-log摘要+CLI九门回喂对齐+tier2 sidecar富文本不变)+预算两段式(软停¥10/¥50只许收尾·on_acting拦生成面+硬地板×1.5 fail-closed,CLI/Service同源,W-ARCH②)+genre最小路由(五类词表·特异性降序)+Service壳合成终结事件+压缩崩fail-open补丁(SummarySchema全required根因坐实)。T7复现:fx4c-3 9/9·fx4c-1起局成功8/9;T8真M3 smoke:C6回喂环真转·软停真触发·硬地板真fail-closed(¥3.0158)
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-03 14:43:31 -07:00
lili
51144f1a3b feat(cheap): T5 Service 壳合成终结事件(run 崩快失败,封 600s 慢失败出口)+ 压缩崩根因坐实与 fail-open 补丁
- 压缩崩根因(venv 2.0.2 代码级证据,4 次实证 'important_discoveries' required):reply 每轮推理前
  compress_context(_agent.py:609)→ generate_structured_output 用 SummarySchema json-schema(五字段全
  required+maxLength,_config.py:11-53)强制 M3 tool_choice 产摘要 → dict 路 jsonschema.validate
  (model/_base.py:566-567)对缺字段/超长抛 ValidationError → 非 retryable 直接 raise(_base.py:426-428)
  → _compress_context_impl 非 overflow 支 raise e from None(_agent.py:461)→ 穿透 reply;ChatService.run
  吞异常不发终结事件(app/_service/_chat.py:166-176)→ driver 600s 慢失败
- ctx_compress_patch:fail-open 包 Agent.compress_context(压缩=旁路优化件,失败只跳过不杀主链;连续 2 次
  断路防每轮白烧压缩计费调用;钉 2.0.2 不改 venv 本体,纪律同 m3_stream_patch);Service 与 CLI 两处 apply
- collector on_reply 增崩溃支:先 flush 收口采集,再 yield 合成 ReplyEndEvent(消费侧先 publish 到 bus →
  driver 立刻收到回合终结按盘面快速失败),原异常原样重抛不掩盖;正常路零行为变化
- 测试 9 用例:成功透传/失败吞掉/2 次断路/成功清零/按实例隔离/apply 幂等;崩溃合成终结+异常上抛+崩溃路
  flush/正常路不追加/合成兜底不遮原异常

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:21:34 -07:00
lili
d15119f3ad merge: A2 模板与提示词侧——6款模板起局按钮解耦render(纯几何函数+onEnter确定性赋值,no-render探针6/6进play+HEAD反事实6/6卡menu坐实)+ cheap-system v1.6.1 两条硬约束(targets键名固定/命中矩形onEnter建立)+cheap_roles逐字节parity+registry bump + gen.mjs入口守卫 + littlejs skill起局指导(卡menu案4修复面)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:20:08 -07:00
lili
d2b916f112 feat(cheap): T4 生产 create 路 genre 最小路由(brief→五类确定性词表·先验序=特异性降序·无命中回退通用) (M3 cutover 放行检查单增补)
- cheap_genre_route:纯词表路由(零 LLM/零 IO/确定性),规则表数据化单源(_GENRE_RULES 顺序即先验序:
  非遗>TRPG>经营>解谜>剧情,特异词前泛词后);映射对齐 GENRE_BY_TEMPLATE 五类模板
- cheap_service_driver:取代硬编码 scaffold_template=None——命中选 per-genre 黄金骨架+genre 透传丰富度评分
  (生产 create 路与 S5 bake_off 复验同轨);无命中 (None,None) 走通用 _template(路由只加不减)
- tests/test_genre_route:五类命中/无命中回退/多类共现先验序/GENRE_BY_TEMPLATE 一致性/确定性/脏输入 14 用例

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:17:54 -07:00
lili
34923812c3 fix(gen): 模板起局鲁棒性 menuStartBtn 解耦 render + targets 键/起局约定进 prompt v1.6.1 + gen.mjs 入口守卫 (W-S1 修复单②)
T1 六款模板(_template + feiyi/puzzle/shop/story/trpg)起局/重开按钮命中矩形:
从 render 副作用回写(menuStartBtn = renderMenu(...).startBtn)改为抽纯几何
menuStartRect/overRestartRect + 在场景进入点 onEnter 确定性赋值、render 只画;
治并发 rAF 饥饿下 render 未跑过=命中矩形恒 null=卡 menu(归因案4)。
no-render 探针坐实:修复前六款均卡 menu、修复后均按坐标起局进 play。

T2 cheap-system.md 升 v1.6.1,红线段增两条硬约束:①点 target 玩法 state 键名
固定为 targets(不得改成 items 等,C5 驱动器族选择依赖)②起局命中矩形须在状态
进入点建立、不依赖渲染帧;各模板 _forensicsView 加同义契约注释。cheap_roles.py
_SYSTEM_PROMPT 与 md 正文逐字节 parity 同步,registry.yaml 版本 bump 对齐。

T3 gen.mjs 顶层裸调 main() 加入口守卫(import.meta.url === pathToFileURL(argv[1])),
被 import 时不再触发真生成(footgun,曾 ~116s)、直接执行行为不变。

T4 puzzle-game-design.md §9 死链经核实在本 commit 不存在(唯一 play-spec 引用已
正确指向存在的 puzzle.play-spec.json),未伪造改动;littlejs-game-dev.md 补一条
起局 onEnter 指导闭合 doc-code。

验证:test_roles 12/12 + check_registry 17 对齐 + md↔_SYSTEM_PROMPT parity True
+ 6 模板 esbuild build 全绿 + amodel-gen tests 15+11 + 模板 node --test 除
_template-shop/headless-boot(既存红,与基线同)外全绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:17:53 -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
234c076f51 feat(cheap): T1 驱动器约定收敛·C5 考卷契约接线(startRitual 起局仪式+driver 显式化+sourceHash 陈旧重生·金标 held-constant 不误杀) (W-S1 修复三单·单①)
- cheap_run:_build_play_spec 产 C5 形状(schemaVersion/derivedFrom/selectionBasis;key-cycle 带默认 startRitual);
  ensure_play_spec 以 derivedFrom.generator 区分本产线自动 spec 与手工金标——自动 spec 按 sourceHash 判陈旧重生,
  金标/旧世代 held-constant 永不覆盖;产出走 C5 best-effort 自校验(强校验在单测)
- play.cdp.cjs:NONPLAY 升模块级;runStartRitual(tap-selector 读 state 坐标/input-sequence/默认 Enter→Space→中心点,
  进游玩态即止);主流程 runDriver 前执行声明仪式(无声明零行为变化);runKeyCycle 对 MENULIKE 前置态做默认起局尝试
  (镜像 runTapTargets 扫点范式,治 fx4c 卡 menu 驱动器约定漂移)
- tests/test_play_spec_contract.py:两族过 C5 强校验/显式字段/hash 重生/金标不误杀/保守支 14 用例

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:02:53 -07:00
lili
64eb7a4eac feat(gate-fixtures): 卡 menu 族 fx4c×3 升产物型判例 + 剧情金标正例 p11a-s1 固化入仓
判例库补两类被门证实的证据落位,门判据改动前的全量回归多两组锚:

- 卡 menu 族 amgen-fx4c-{1,3,4}(复现窗 2026-07-03)从 pending 升为 product_fixtures:
  每份固化 src 源码(卡 menu 现场:menuStartBtn 仅 render 副作用赋值 + 非方向键起局)+
  evidence 摘要;bundle/index.html 构建产物与约 1MB 生成 trace(verdict 全 null)不入仓,
  附 tools.mjs build-saa 重建命令。裁决两防线:案 1/3 驱动器约定漂移(误杀)、案 4 并发
  flaky(脆弱写法),细化归卡 menu 归因单。
- 剧情品类金标正例 p11a-s1「深渊回声」(丰富度 7/11、九门全绿)落
  cheap-worker/fixtures/golden-samples/narrative/,给策划知识包 v2 正例复验当靶子;
  narrative.json 的 _note 指针从「产物未入仓」翻为已固化。

manifest 新增 product_fixtures 键表达「有载体、真跑需九门 CDP 环境」的第三态(区别 cases
可运行 / pending 无载体);产物型判例不进 run.mjs 零依赖 stage。run.mjs 全量回归绿
(node 三段 29 过、python 段无 pytest 合法 SKIP)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:01:02 -07:00
zizi
96de98b345 feat(prompts): 打磨不降档包——创始人定调「质量bar单一:档位切scope不切polish」落地(cheap v1.6.0:删spike能跑即可残留+hitstop出禁项改结算标配+设计块强制落盘+finish前收尾自查+新增⑩难度曲线;tier2 player v1.1.0:fun=5须记忆点/fun≥4才pass,scoreOnly焊死零行为影响;⑨经营决策模式清单落sim-business §1;双审收口:fable+真codex同判top10=筛选+精修尾部/金标最大杠杆,ⓓ落定、新待拍ⓔ手感轨;test_roles 12/12+双parity逐字节+registry 17条+docs-gate全绿)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
2026-07-04 03:19:37 +08:00
zizi
0e66fc953e feat(prompts): 策划知识包v2——cheap主prompt v1.5.0(⑨否决项判定句式+计数口径统一,test_roles 12/12逐字节绿)+剧情/经营rubric fixture补全接线(skill表改指针消双写)+tier2四专家v1.1.0加策划判据(内置↔md parity×4,registry 17条对齐)+prompt.mjs冻结为A/B史料;真LLM金标复验挂窗;3待拍(⑨升底座第12条/prompt.mjs退役/品类适配) 2026-07-04 02:25:55 +08:00
lili
974011a150 merge: rubric 挂点归一——四品类三套机制收敛为单一 fixture 数据源(GENRE_CHECKLISTS 内联退役·TRPG 条目 ast 迁出逐字节保真·非遗接线生效键收敛 heritage)+ 三品类真 LLM 金标复验全过(puzzle 锚对失效实锤修正:模板天然不薄、改合成薄壳锚)
剧情品类缺口立此存照:无 rubric 数据件、无 few-shot 正例锚,按锚定纪律不无锚造条目,待 fewshot-story 后补。
复验方法发现:M3 judge 单次采样方差可达 ±2~3,锚定容差建议补「超线先复采样定性」条款(候选进质量 SoT 规范三)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 00:21:44 -07:00
lili
3947bcbe92 docs(cheap): 金标复验结论回填三品类 rubric 锚定履历(_note 注释性字段,条目文本零触碰)
rubric 挂点归一后真 LLM(M3)金标复验,三品类判据①正>反(品类分)/②同一正例品类路vs无品类路
通用分组小计漂移≤±1/③无 degraded:

- trpg:正例(_template-trpg 骨架)品类 5/5、合成黑箱点卡薄反 0/5·通用 0/11,与 merge 前基线
  (caadfe4c)吻合;判据②首采样 L2+2 超线→复采样 {1,0,0} 过线,定性=M3 judge 单次方差(同一
  prompt 无品类路两采样通用分即差 3;机制迁移零 prompt 漂移已机器逐字节证实,非迁移引入)。
- heritage(首次接线建基线):正例 _fewshot-feiyi 10/11(6/2/2)·品类 5/5 与 2026-07-02 死数据
  时代首评 anchors 逐值全同;薄反 _template-feiyi 6/11(4/0/2)·品类 4/5(+1 容差内)——接线零扰动。
- puzzle(首个真 LLM 复验):锚对失效实锤——_template-puzzle 黄金脚手架品类面已满(judge 判 5/5,
  逐条理由与源码核对全对得上:5 关维度递进/卡壳脉动提示/HUD 进度/结算历史最佳),不构成品类薄反;
  照各条 negative 面同构合成薄壳补验鉴别力(正 5/5 vs 合成 0/5·通用 0/11),_note 锚对口径修正。

复验证据 JSON(9+3 次评分全量 hits/why/tokens)留 scratchpad,不进仓库。33 测试绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 00:18:46 -07:00
lili
af8d63f418 feat(cheap): 非遗品类 rubric 接线——heritage.rubric.json 规整为约定形状 + _template-feiyi 登记 (rubric 挂点归一②)
非遗 rubric 此前是死数据(文件名不合 <genre>.json 装载约定、数据键 entries 非 items、
GENRE_BY_TEMPLATE 未登记——生产路走不到)。本步接线:git mv 改名 heritage.json、entries→items、
顶层 _genre→genre;5 条条目文本(含 id/正反例)逐字节零变更(机器比对核过);groupMaxes 与
2026-07-02 首评 anchors 原样保留。

品类键收敛裁定:同一品类三键并存(feiyi/heritage/heritage-craft)→ rubric/接线键统一 'heritage'
(与 rubric 文件名、散文同源 skill heritage-game-design.md 同名,改动面最小);模板目录
_template-feiyi 是资产目录名(GENRE_BY_TEMPLATE 登记映射),金标 spec _genre='heritage-craft'
是金标名(driver/assert 承重,一律不动)——映射依据留档 heritage.json _note + 代码注释。

GENRE_BY_TEMPLATE += _template-feiyi→heritage:run_studio 生成非遗品类起即评品类扩展 5 条
(分母独立小计落 richness.genre)。新增接线测试(loader 可加载/条目名顺序锁定/登记/正反例形状),
33 测试绿。金标复验(正=_fewshot-feiyi vs 薄反=_template-feiyi,对照 anchors 首评)随工单后续步骤。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 00:08:22 -07:00
lili
cf0d93464f merge: fix400 封死 M3 400 流式聚合炸弹(决策③硬前置)——A 主防线 parallel_tool_calls=False 透传(实测被 M3/new-api 忽略)+ B 纵深聚合补丁实证兜住(6 局 628 tool_call 零指纹零 400)+ C tier2 两路对账免疫不动
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
e2e 诚实账:两局全绿 1/2 未达(fix4xx-2 9/9);其余失败=既有生成质量(卡 menu 族×3 有独立第二根因、
工具死圈族×3),与 fix400 零因果(零指纹零 400,续修轮 4 局真跑通)。follow-up:①卡 menu 族三案归因
(未定义标识符族 vs 门驱动器约定漂移)②Service 壳为 run 崩发合成终结事件(慢失败出口)+压缩 schema 崩排查。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 00:07:33 -07:00
lili
5725f4683e refactor(cheap): 品类 rubric 挂点归一——TRPG 内联迁出 fixture、查找只剩单源一路 (W-GENRE 收敛)
机制迁移(rubric 挂点归一工单第①步):品类条目唯一数据源 = fixtures/genre-rubrics/<genre>.json
(items 键,经 load_genre_checklist 加载);cheap_verify.GENRE_CHECKLISTS 内联字典退役、
verify_richness 查找逻辑去掉「内联优先、fixture 兜底」两路,只剩 fixture 一路。

TRPG 5 条自内联**机器迁入** trpg.json(git show 基线 ast 提取直写,非手抄;逐字节比对
name/layer/meaning 全等)——meaning 内嵌「(正:…;反:…)」为内联时代原文原样保留,保 judge
prompt 逐字节不变;positive/negative 为机器拆出的同文抄录(金标锚材料,不进 prompt)。

锚定纪律机器验证(基线版模块独立加载对拍):品类路/无品类路 judge user prompt、两个 system
prompt 与 db4aadd7 基线**逐字节恒等**=迁移零评分尺漂移;金标复验随本工单后续步骤统一跑。

单测适配:4 处 GENRE_CHECKLISTS 引用改经 load_genre_checklist('trpg')(断言语义不降级),
trpg 条目名/顺序锁定断言补齐(同通用 8 条锁定),新增单源守门测试(GENRE_CHECKLISTS 不存在,
防两路复活)。test_cheap_verify 20 + test_genre_puzzle_assets 6 + test_golden_specs 6 = 32 绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 00:06:16 -07:00
lili
74e786d855 fix(cheap): 回落 _SYSTEM_PROMPT 与 cheap-system.md v1.4.0 生效源重对齐(test_roles 12/12)
便宜档生成 agent 的 system prompt 有两个源:热取生效源 contracts/prompts/04-config/cheap-system.md
(运行时经 _load_system_prompt 读取,已到 v1.4.0)与内置回落 cheap_roles._SYSTEM_PROMPT(读不到/脏时兜底)。
生效源多轮领先内置回落,导致 test_roles 的两个逐字节不变量测试
(test_hotload_invariant_equals_inline / test_hotload_default_scaffold_desc)长期基线红。

以 md 正文(剥 frontmatter)为准,把内置回落逐字节回填对齐,恢复「热取路输出 == 内置回落路输出」不变量。
回填三段(判据措辞一字未改,仅对齐搬运,⟦G⟧/⟦SCAFFOLD_DESC⟧ 占位符原样保留):
- 核心循环:加「好玩第一因·必含一层玩家决策」铁律 + 决策层与自动验收解耦(两层奖励)子项;
- 好玩自检:8 条扩为 9 条,新增 ⑨「核心操作非无脑」否决项 + 剧情/解谜段技巧分措辞;
- MVP-first 铁律:尾部追加「可玩核心=一个有决策深度的核心机制、绝不砍核心决策层」钉死段。

验证:test_roles 12/12;test_golden_specs + test_cheap_verify 25 passed 无回归;py_compile 通过;
md 正文与 _SYSTEM_PROMPT 逐字节相等(difflib 无差异)。只改 cheap_roles.py,未动测试/契约/prompt.mjs/registry。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:59:03 -07:00
lili
db4aadd785 merge: W-GENRE 解谜品类四件套(skill puzzle-game-design + _template-puzzle 9/9 + _fewshot-puzzle 正例 + rubric fixture/金标 spec + 范例签名机器门)——品类路由并集 v1.4.0(剧情6/TRPG7/非遗8/解谜9)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
合并裁定(rubric 挂点两套实现收敛,fable 亲审):评分尺主干 = TRPG 机制(单 checks 数组契约+嵌套
richness.genre,19 单测钉住);从分支嫁接 fixtures/genre-rubrics/<genre>.json 加载器为第二来源
(内联 GENRE_CHECKLISTS 优先、fixture 兜底,puzzle.json 即刻生效);分支平铺 genreHits/genreChecks
双数组契约弃用,其接线测试适配主干形状。run_studio 增显式 genre= 参数(None→按模板推断,原行为不变)。
GENRE_BY_TEMPLATE += _template-puzzle。顺手补账:.agents/README 索引四个品类 skill(前三次 merge 欠账)。

验收(本机):金标 7 品类 6/6 + cheap_verify 19/19 + 解谜资产门 6/6(含 node scaffold/check 真 shell-out)
+ 模板 node 13/13 + check_registry 17 条 + node --check/py_compile 全过;test_roles 2 红=主干既有基线
(回落分叉,归一单已排)。

诚实记录:分支验收唯「n=3-5 小批全过门」BLOCKED(4/7;三失败=AI 大面重写引入运行时 bug,九门正确
拦截,根因已回写 skill §9 品类红线;spike 路无续修环是结构缺口,生产路 RepairMiddleware 覆盖)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:48:41 -07:00
lili
496f8b6de7 merge: W-GENRE 非遗品类四件套(skill heritage-game-design + _template-feiyi 9/9 + _fewshot-feiyi 正例 + rubric fixture/金标 spec;n=5 过 4/5·首败根因=import 断链已加护栏后 3 连过·幻觉 0)——品类路由并集 v1.3.0(剧情6/TRPG7/非遗8)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:16:52 -07:00
lili
39cc2c09ba feat(cheap-worker): 非遗品类件③few-shot正例+rubric金标锚定回填+骨架import护栏 (W-GENRE)
③ game-runtime/games/_fewshot-feiyi/:few-shot 过门正例(木版年画作坊,源=n=5 小批第 3
款 p11d-print):attempts=1/¥2.65/九门 A-I 全绿/丰富度 9-11;范例签名机器校验门
(tools.mjs check)蒸馏时复跑 PASS;README 带来历/复验配方/漂移纪律(设计档 §3⑥
「必须同改」清单成员)。
④ 锚定回填 heritage.rubric.json:通用 11+品类 5 合评、两分母分开(M3 judge,容差
±1/组)——正例 通用 10/11(L2 6/6·L3 2/3·L4 2/2)+品类 5/5;薄反例(骨架原样)
通用 6/11+品类 3/5(节律张力/技艺成长 false=骨架无 combo/解锁,判罚与轻起点定位
一致)——评分尺判别力坐实。
② 骨架 game-logic.js 头注加 import 完整性护栏:n=5 首款 p11d-porc 失败根因 =
agent 改写时 import 列表漏 FIRST_READY_DELAY_MS、裸标识符 esbuild 当全局放行、
运行时点开工即 ReferenceError 被 L1 隔离→永卡菜单、E/G/H 三挂(check/build 双门
拦不住的盲区;node headless 探针定位)。护栏注释进克隆起点后 3 连过佐证。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:13:11 -07:00
lili
718f7d2e6f fix(cheap): 修 TRPG merge 调解脚本误伤——test_golden_specs 函数 docstring 块被误替换成模块级集合致 IndentationError(管道吞退出码漏检,补跑金标+评分尺测试全绿)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 23:10:36 -07:00
lili
8301f650fa Merge branch 'p11-trpg' into dev/2.0.0
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
# Conflicts:
#	cheap-worker/cheap_roles.py
#	cheap-worker/tests/test_golden_specs.py
#	contracts/prompts/04-config/cheap-system.md
#	contracts/prompts/registry.yaml
#	game-runtime/tools/amodel-gen/prompt.mjs
2026-07-02 23:09:27 -07:00
lili
caadfe4c06 feat(cheap): TRPG 品类 rubric(5条·分母独立)+ 金标 play-spec(W-GENRE 品类件④)
品类扩展 rubric(质量模型 SoT §4 规范二·五六):cheap_verify.GENRE_CHECKLISTS['trpg'] 5 条
(掷骰过程可见 L2 / 风险回报取舍 L2 / 成长进判定公式 L2 / 难度爬坡登顶 L3 / 冒险战报炫耀 L4),
每条 0/1 标层 + 一对正反例;仍是喂 LLM judge 的评分尺数据、纯 LLM 非阻塞(红线:不写代码校验
/不进九门/不进 verdict/不进脚手架)。同一次评分 additive 追加品类条目,**分母独立小计**落
richness.genre{key,hits,score,max,groups},通用 11 条 groups/score 分母不混(规范二);
接线 = run_studio 据 scaffold_template 查 GENRE_BY_TEMPLATE 透传 genre,未登记/None 行为
与既有完全一致(无品类路 judge prompt 逐字节不变,锚定纪律)。

金标 play-spec:fixtures/golden-specs/trpg.play-spec.json(tap-targets occupied 反应族
+ score increased + expectLatch,formalize 件② p11c-tpl 已验的 occupied spec;不用货币
递减门——SoT §3 裁定二门级判据不跨档);test_golden_specs 期望集同步纳 trpg(schema/
契约依赖/无坐标绑定 20/20 绿)。

金标复验(规范三,真跑 M3):正例 _template-trpg 骨架 品类 5/5、通用 8/11;薄反例(黑箱
点卡+无骰无取舍无成长无终点)品类 0/5、通用 0/11——正反例拉满、评分尺有鉴别力;同一正例
品类路 vs 基线路通用 11 条漂移 = 0(≤±1,加品类段不扰动通用判定)。单测 +5(条目形状/
独立分母/位置兜底偏移/无品类向后兼容/judge prompt additive)= test_cheap_verify 19/19 绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:46:45 -07:00
lili
89f1c60534 feat(cheap): TRPG 品类设计 skill + 双源 prompt 品类条目注册(W-GENRE 品类件①③)
件① .agents/skills/trpg-game-design.md:TRPG(掷骰冒险)「设计什么才好玩」作业手册,照
sim-business-game-design 体例——6 心理引擎(掷骰悬念/抉择掌控/成长兑现/叙事感/连胜/收集)
/ 玩法范式可达子集(掷骰爬塔·事件链·queue 试炼·轻队伍) / 掷骰概率数值锚(首层 ~70% 成功
·成长写进概率) / §9 红线(单局可完非长流程·核心动作单击即结算 driver 可达·掷骰过程可见
非黑箱·亮牌取舍非纯随机) / §10 品类自检 5 条与 cheap_verify.GENRE_CHECKLISTS 同源 /
底线四件映射逐条确认(质量模型 SoT §7 档位要求,TRPG 全可映射、无需申报替代轴)。

件③ 双源 prompt 只加本品类条目(few-shot 过门正例 = _template-trpg 骨架本身,scaffold
clone 后即 agent 起点范例,check 门〔API 静态门+形状门〕对范例签名 PASS 已在件② 验):
· 读手册第 6 条(TRPG/掷骰/冒险/地牢爬塔类 → read trpg-game-design.md)
· 设计步品类范式一句(掷骰可见/亮牌取舍/难度爬坡)
· 步骤 A「读手册(1 + 按品类 5/6)」
三处物理文件同改:prompt.mjs(Node 半角)/ cheap_roles.py 内置回落(全角)/
contracts/prompts/04-config/cheap-system.md 热取正文(version 1.0.0→1.1.0,registry 同步)。

验证:node --check + buildSystemPrompt 出 TRPG 条目、新增行零反引号;cheap_roles 热取/
内置两路都含 TRPG 条目;test_roles 2 failed 与基线逐项一致(基线既有热取-内置分叉红:
⑨条升级只落热取路,pre-existing、非本次回归,回落路同步归编排层)、零新增红。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:46:44 -07:00
lili
50d98ce937 feat(genre): 解谜品类路由进生成 prompt 三源同改(W-GENRE 注册点·最小条目)
生成 system prompt 加解谜品类条目(先读手册第 6 条:解谜 brief → read puzzle-game-design skill + few-shot 正例参照;自检行补解谜范式指针)。三源同改防脏数据:① contracts/prompts/04-config/cheap-system.md(热取生效源,版本 1.0.0→1.1.0、registry 同步升版、check_registry 17 条对齐)② cheap_roles.py 内置回落 _SYSTEM_PROMPT ③ prompt.mjs Node 双源(半角标点、零反引号,node --check 过)。只加本品类条目、其余不动(另外三品类代理并行,共享注册点冲突交编排层 merge)。

已知基线漂移留痕:cheap-system.md 生效版在基线即领先内置回落版(9 条自检/两层奖励段,test_roles hotload 恒等 2 项基线已红、主仓同状态);本次两侧同加同一条目、未扩大漂移面,恒等回填归 prompt 治理线。

验证:热取生效版与 Node 版 buildSystemPrompt 均含解谜路由;test_roles 维持基线 10/12。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:36:33 -07:00
lili
2f51439c55 feat(genre): 品类 rubric 喂 LLM 验证 agent 接线 + 解谜金标 play-spec(W-GENRE 品类件④)
cheap_verify 品类扩展接线(全 additive):load_genre_checklist 读 fixtures/genre-rubrics/<genre>.json(缺失/坏 JSON 退化为空,best-effort 绝不抛);同一次 judge 调用并入品类条目(规范四:每款一次评分),输出独立 genreHits/genreGroups 分组小计(规范二:分母与通用底座分开、不混合平均);genre=None 时 judge prompt 与解析输出与既有版本逐字节/逐键一致(锚定纪律,单测锁死)。run_studio 加 genre 透传(缺省 None=原行为);rubric 仍纯 LLM 非阻塞、不进 verdict/九门/达标判定;service driver 路不动(genre 路由进服务请求时再接)。

解谜金标 play-spec fixtures/golden-specs/puzzle.play-spec.json:tap-targets occupied 反应族 + score 递增断言 + expectLatch,只依赖 forensics 契约不绑定坐标(formalize p11b-tmpl 已验证过的 occupied spec);test_golden_specs 品类集同步加 puzzle(金标机器门)。

验证:test_genre_puzzle_assets 6 项全过(含 prompt 逐字节恒等/分组小计分母/漏答 genreChecks 兜底)、test_golden_specs 6/6、test_cheap_verify 14/14 零回归;test_roles 10/12 与 test_studio_smoke 0/4 为基线既有失败(主仓同状态,与本改动无关)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:36:15 -07:00
lili
932b4f6d8c feat(genre): 解谜 few-shot 过门正例 _fewshot-puzzle + 范例签名机器校验门 + 品类 rubric 机器版(W-GENRE 品类件③+④rubric)
few-shot 正例「深海寻宝谜航」:从 _template-puzzle 骨架换身份加深度的完整成品范例(主题全换/6 关维度递进带 intro/星级评价按错点数/称号+save 跨局星星收集/结算炫耀面板/GENRE_META 同款钩子元数据/8s 卡壳软提示),取证契约与骨架一致。独立过九门 9/9(p11b-fewshot,score 0→833、latch 真到 over,verdict= game-runtime/games/_wg1-gen/p11b-fewshot/evidence/verdict.json)。

范例签名机器校验门 test_genre_puzzle_assets.py(防范例成下一代漂移源,设计档 §3 决策⑥):scaffold 克隆两件解谜范例 → tools.mjs check(API 存在/形状/红线/结构契约)必须 PASS,模板缺失回落也判红;另静态兜底取证契约面 + GENRE_META + rubric fixture 形状(≥4 条/层标/正反例)。纯机械零 LLM。

品类 rubric 机器版 fixtures/genre-rubrics/puzzle.json:5 条品类扩展(谜题规则递进 L2/顿悟距离 L2/关卡阶梯可见 L3/卡壳兜底 L2/成绩可炫耀 L4),逐条 0/1+层标+正反例,与 puzzle-game-design §10 同源;金标锚=正例 _fewshot-puzzle/薄反例 _template-puzzle。喂 LLM 验证 agent 的接线随下一提交(cheap_verify 品类扩展)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:25:26 -07:00
lili
c18e7f5324 feat(cheap-worker): 非遗品类件①②④+品类路由——heritage-game-design skill + _template-feiyi 工序节拍骨架(独立过九门) + 品类rubric/金标spec fixtures (W-GENRE)
① .agents/skills/heritage-game-design.md:非遗品类设计手册(照 sim-business 体例:玩法化
范式/工序节奏目标值/双层奖励/文化表述红线/§11 品类 rubric 5 条 逐条 0/1+层标 L2×3/L3×1/
L4×1+正反例,对齐质量模型 SoT §4 计分制;成长轴按 SoT §7 申报为工艺步骤解锁)。
② game-runtime/games/_template-feiyi/:工序节拍品类骨架(轻起点):一条工序链依次就绪→
火候窗口内点击完成→出成品,过窗回炉不判死;L1 plumbing 逐字节复用 _template-shop;
core.js 顶部多样性参数空间(CRAFT_CHAIN/WORKS/节奏常量);_forensicsView targets/score
取证契约(occupied=当前就绪且窗口内可点的工位)。独立过九门:A-I 全绿、H_progress
score 0→302、latch advisory(限时类口径,同经营打样)(verdict=
games/_wg1-gen/p11d-tpl/evidence/verdict.json,本品类金标 spec 驱动);tools.mjs check
机器门 PASS;单测 11/11(core 8 + headless 3,headless 按本品类语义重写、不复刻陈旧拷贝)。
④ fixtures/golden-specs/heritage-craft.play-spec.json(tap-targets occupied 族 + score
递增 + expectLatch;test_golden_specs 登记 heritage-craft,6/6 绿)+
fixtures/genre-rubrics/heritage.rubric.json(机器可读评分尺,锚定值待金标复验回填)。
路由(双源+热取三处同改):cheap_roles.py _SYSTEM_PROMPT 与 prompt.mjs 与
contracts/prompts/04-config/cheap-system.md 各加先读手册第 6 步(非遗品类→heritage
skill + _fewshot-feiyi few-shot 指针,正例随品类小批蒸馏后落库);cheap-system
version 1.0.0→1.1.0 + registry 同步(check_registry 17 条对齐 OK)。
既存问题(非本单造成,未扩大):cheap-system.md 自 8ea97234 起领先内置 _SYSTEM_PROMPT
一段「决策层/9 条自检」→ test_roles 两条 hotload 不变量测试基线即红;本单第 6 步在
热取/内置双路对称加入、漂移行数不变(仍 7 行)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:25:05 -07:00
lili
3223117d49 feat(cheap): 剧情品类路由三源同改 + story-branch 金标 play-spec(W-GENRE 品类件③④)
品类路由(保持最小,只加本品类条目):手册列表 +6「剧情/互动叙事/文字冒险类读
narrative-game-design + read _template-story/src/game-logic.js 过门范例(few-shot
read-on-demand 供给,与经营件同构)」+ 自检末行加剧情分支(选项单击即推进/latch/
选择有重量)。三源同改:contracts/prompts/04-config/cheap-system.md(热取生效面,
version 1.0.0→1.1.0)+ cheap_roles._SYSTEM_PROMPT(回落面)+ prompt.mjs(Node 双源,
禁反引号守住,node --check 过)。注:热取面与内置面的逐字节漂移是基线 pre-existing
(test_roles 10/12,fail 集未扩大;两面均已含剧情条目、语义一致)。

金标 play-spec:fixtures/golden-specs/story-branch.play-spec.json(tap-targets
occupied 反应族 + score increased + expectLatch,formalize p11a-tpl 独立九门 9/9
已验证的取证契约;无货币轴,不用货币递减门=质量模型 SoT §3 裁定二档位判据不跨档);
test_golden_specs._EXPECTED_GENRES 追加 story-branch,6/6 绿;
contracts/prompts/check_registry.py 17 条全对齐。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:22:51 -07:00
lili
21186b81b0 fix(cheap): 封死 M3 400 流式 tool_calls 聚合炸弹——parallel_tool_calls=False 主防线 + 同 index 异 id 按 id 分桶兜底补丁 (fix400 A/B/C)
根因(前置诊断坐实):agentscope 2.0.2 _parse_stream_response 按 tool_call.index 分桶,
M3 经 new-api 并行 call 不区分 index → 第二 call 的 arguments 拼进首桶(非法 JSON)→
服务端丢 call → tool result 孤儿 → 400 code 2013 → ChatService.run 吞异常 → SSE 无终结 →
driver idle 600s 慢失败。触发开关 = Service get_model 不传 stream(类默认 True)。

A 主防线:driver session parameters 加 parallel_tool_calls=False(经 Parameters 透传,
  _call_api 对 API 带 parallel_tool_calls=false,源头禁并行);fake-SSE 契约测试加断言锚。
B 纵深兜底:m3_stream_patch 运行时 monkeypatch(绝不改 venv 本体;钉 agentscope==2.0.2,
  升级必须复核):chunk 流 index 重映射——同 index 但携非空且不同 id 按 id 开新桶;聚合完
  args 非法 JSON log.warning 带指纹。挂载 build_cheap_app(import agentscope 后)。
  单测 6 项:2.0.2 真聚合函数复刻 93001 炸弹指纹对照 + 补丁分桶 + 正常流不回归 +
  同 id 复帧同桶 + 坏 args warning 指纹 + apply 幂等。
C 对账:tier2 服务路 anthropic_credential → AnthropicChatModel(stream 同样默认 True),
  但其聚合由 content_block_start 显式开桶(_anthropic/_model.py:359-368 赋值建桶,
  非 += 隐式拼接),无本炸弹路径;parallel_tool_calls 参数仅 openai_chat/dashscope 有。
  tier2 进程内路 build_model stream=False(worker/config.py)不走流式聚合。均不动。

测试:test_m3_stream_patch 6/6 + test_cheap_service_driver/app 19/19 全绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:09:44 -07:00
lili
ba82e63c82 feat(cheap): rubric v2 评分尺 8→11 条 + L2/L3/L4 三分组小计落库(质量模型 §3.3 计分制·前置小工单)
评分尺升级:通用底座 v2 = 现行 8 条(判据文本/顺序锁定、仅补层标)+ 新增 3 条(首3分钟脚本 L3 / 炫耀时刻 L4 / 同款钩子 L4)。逐条 0/1 标层,一次 LLM 评分产 L2×6/L3×3/L4×2 三分组小计;不设单一总分(§3.3 防 Goodhart)。

落库:summary.richness 从单一总分改为三分组小计——新增 groups 字段 + hits 每条带 layer;score 保留为向后兼容字段(供 bake_off.richness_dist 读、非设计总分)。两落库点(cheap_studio/cheap_service_driver)整体赋值自动继承新形状,仅日志 additive 补 groups。

红线:rubric 仍纯 LLM 非阻塞,不进 verdict/九门/达标判定;bake_off.py richness 正交红线一行未动。

验收(本机真跑 M3):金标复验 base1/base4/cheap-run-sc 原 8 条命中数漂移 = -1/0/0(≤±1,base1 唯一 -1 来自「30秒爽点」单条 LLM 边界抖动、非评分尺扰动);落库佐证 run-summary 真出现 richness.groups + hits.layer、既有键不受影响;test_cheap_verify 14 绿(+3 新测)、bake_off/service_driver 27 绿;全套另 14 failed 经 stash baseline 对比证实为 worktree 缺产物/node_modules 的 pre-existing 环境失败、零回归。

follow-up:bake_off.richness_dist 的 max=8 报告口径随 W-GENRE 品类批产接入 richnessByGenre 时对齐分组小计;sim-business skill §10 改口归质量设计档收口。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 19:58:20 -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