945 Commits

Author SHA1 Message Date
lili
8409f19c2a docs(svg): 配置控制面阶段二 4 张人读 SVG(W-DSGN SVG 尾波核心)+ 接入阶段二设计档填占位
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
opus 按 atlas 标准产 4 图落 docs/agent-specs/assets/,fable 终审(结构良构+viewBox 自适应/最复杂的双路激活图
qlmanage 渲 PNG 亲看无溢出配色准/设计档 diff 零 prose 改):
- cfgctl2-01 配置中心分层与分工(yudao 治理⊕Nacos 路B、基建vs业务分工、prompt 出 Nacos 进 MySQL)
- cfgctl2-02 双路激活编排(sanity 前置→beginActivating 快照→路A PATCH∥路B publish→markVersionActivated→补偿)
- cfgctl2-03 激活一致性状态机(草稿→待审→ACTIVATING V30 持久态→已激活;recoverActivating 幂等/双恢复语义)
- cfgctl2-04 漂移对账三态(IN_SYNC/DRIFT/不可达;8s 容忍窗;篡改→检出→重推→收敛闭环)
接入阶段二设计档 §2/§3.2/§3.3/§3.6 四处 SVG 占位为真实内嵌+图清单同步(11增8删,零 prose 改)。
atlas 复验全过(界内/良构/脚注/转义)、docs-gate 绿。W-DSGN 只剩旧档 SVG(plan①顶图/quality/重推演,非阻塞)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 01:43:41 -07:00
lili
4ff754c634 docs(design): 阶段四 §10.6 扩容收口——mini-infra 32G 已扩并复验健康(available 427Mi→24Gi,OOM 风险解除)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
创始人 2026-07-05 选 32G,mini-infra 15G→31Gi 可用;fable SSH 复验:used 6.7Gi/free 20Gi/available
24Gi、12 容器全回来零异常退出(minio/mysql/postgres/redis/nginx/new-api healthy)、Nacos readiness 200。
观测栈 3-4G 常驻装进 24Gi 余量绰绰、OOM 风险解除;本项收口(内存维度已备,CPU/IO 隔离+跨机拓扑仍按设计执行)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 01:39:23 -07:00
lili
d5dae4aa45 docs(design): 阶段四观测设计 双评审修订(Codex+Opus REVISE→9+6 条修回,两处事实冲突亲验纠正)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
fable 主笔草案经 Codex(6条)+Opus(9条)双评审均裁 REVISE,两处 reviewer 事实冲突我亲验纠正后全修回:
- 亲验:otel wheel「已随 agentscope 2.0.2 传递装齐」(cheap-worker/.venv 有全套 1.43.0、Requires-Dist 带)
  →面二叙事从「缺 wheel 会炸」改「依赖已齐、真因没配地址 no-op、重定向=配 Collector 地址」;
- 亲验:monitor starter「经 system/infra 两模块传递进 huijing-server」(两 pom 均引)→§3 现状从
  「classpath 不存在」改「starter 在席但残缺(actuator/micrometer 未装、SkyWalking Bean 注释死)、OTel 共存收编」。
必修六项修回:①面二 otel 叙事 ②面四 Python 真实三跳 traceparent(worker_service 手动 extract/worker→本机
Service:8300 注入/Service span 接传入 context;端到端 trace_id 列回硬验收)③sot-impact 补《k8s迁移》canonical
(落点反转取代其 mini-desktop k3s observability 段、两份同批回写)④脱敏 Collector processor 安全红线写回+
admin 一键进盘表态 ⑤§8 验收补回端到端 trace_id/告警真送达/成本对账/agent 性能量化六条硬判据。细化四项:成本
自估非权威标注+logs.quota follow-up、SAA 仅 saa 路限定、CPU/IO 挤兑+跨机拓扑隔离纪律、冻结阀去留表态。
status→待创始人评审(§10 六项确认项)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 01:21:42 -07:00
lili
fd2546399b docs(design): 全链路可观测性 OTel 三信号全栈 落地设计(阶段四草案·待双评审+创始人评审)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
方向 B 全栈 OTel(Collector+Prometheus+Tempo存MinIO+Loki+Grafana 三信号)+ 落点 mini-infra
加内存后落(创始人 2026-07-05 两拍)。摸底坐实五面现状(game-cloud SkyWalking 追踪已死需上
OTel Java agent+actuator / Python studio_sink 已是 OTLP exporter 重定向近零成本[requirements 缺
otel wheel 隐雷] / deploy 观测栈零 / 跨语言 traceparent 打通两条 HTTP 接缝 / 业务指标埋点零命中)。
本设计修订 canonical 观测体系.md 三处(落点 mini-desktop→mini-infra扩容 / 告警件夜莺→Grafana 统一 /
补五面落地+埋点清单),sot-impact 已申报、上级指 canonical。§10.3 已写回 mini-infra 实测(15G/free
427Mi/容器实占~7.5G ragflow 独占 3.35G)+ 扩容建议(32G 下限 / 64G 一台管到底)。实施卡硬件扩容窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 01:01:22 -07:00
lili
5cb84c1ca6 docs(boards/plan/distill): 阶段三 UI 完成+终审对账回填 + tech-decisions §14⑥(工单契约出入·vite 构建门)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
- 作战清单/进度总账:阶段三 game-admin 配置控制台 UI  完成+fable 终审(79264197,6文件+1276:
  api 14端点+详情三区[JSON 编辑器保 routeA/routeB 信封]+菜单种子 7120-7125;Opus 评审 REVISE→
  F1-F7 修回、F5 拍档A;逐字对源修工单3处出入;vite build 亲跑绿;真后端 e2e 排 staging 窗口)。
- 阶段三 plan status→已执行完成。
- tech-decisions §14⑥:列单人工单也会有契约出入(枚举名/参数名写岔)、executor 逐字对源核是免费第二道门
  (与①路由字面量对源同源);game-admin 构建门=直调 vite 二进制,pnpm build:* 的 runDepsStatusCheck
  无-TTY/无网中止≠编译错,别误判构建红。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 00:11:37 -07:00
lili
79264197ae feat(aigc-admin): 配置控制面阶段三 game-admin 配置控制台 UI(14端点封装+列表/详情三区/版本diff/漂移对账+aigc:config五权限菜单种子)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
消费阶段二已落的 AdminGenConfigController(/admin-api/aigc/config 十四端点),把受治理生成配置变得可视可操作、有权限边界;不改一行后端契约。

- api/aigc/config/index.ts:14 端点封装 + VO 逐字对齐 TS 类型;三个 @RequestParam POST(archive/recover-activating/rebroadcast)走 params 位防真机 400;全走标准 CommonResult request(排除 genMonitor 裸 axios 范式)
- views/wanxiang/config:配置集列表+新建+归档;详情抽屉三区——草稿编辑(prompt 大文本域 + JsonEditor code 模式,解析→改叶子→原样回序列化保 routeA/routeB 信封 round-trip + routeA sanity 前端预校验)/ 版本历史+全量查看+与上一版 diff / 激活·回滚·恢复卡激活+漂移对账三态+一键重推;写按钮全 v-hasPermi 收敛(save/freeze/archive/activate)
- game-module-aigc/sql/aigc_config_menu.sql:自建父菜单(id 7120,component=wanxiang/config/index)+ 5 权限点(7121-7125:query/save/archive/freeze/activate)INSERT IGNORE 幂等,id 段避撞 biz(7100-07)/trade(7110-12)
- 契约核实:状态枚举实为 AigcConfigStatusEnum 五态(补工单漏的 ACTIVATING=15)/ verdict 五态 / changeType 三态逐字对源;version/get 参数是 versionId、version/diff 参数是 versionAId+versionBId
- 验收:vite build 绿(exit 0)+ eslint 干净(exit 0)+ vue-tsc 我方文件零类型错误(总数持平基线 55,均上游 yudao);真后端 e2e 走查待 staging 部署窗口(诚实口径:本地只到 build 绿)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 00:03:13 -07:00
lili
37bbb5e55e docs(plan): 配置控制面阶段三工单 Opus 评审修订(REVISE→F1-F7 修回)+ F5 创始人拍档A
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Opus 开工前对抗评审裁 REVISE,抓三处「mock 绿真机断」硬伤,已修回:
- F1[阻断] content_json 是 routeA/routeB 嵌套信封(非扁平)——草稿编辑器定 JSON 编辑器 round-trip
  保信封(F5 创始人拍档A:schema 驱动引导表单降二期跟进)+ 前端 routeA sanity 预校验;信封契约
  取自 GenConfigContentCodec 钉入 §3.2①。
- F2[阻断] 3 个 POST(archive/recover-activating/rebroadcast)绑 @RequestParam 非 body → 前端走
  params 位否则真机 400;§二逐端点标参数位+精确字段名(freeze 用 id、activate/rollback 用
  configSetId+versionId);枚举逐字对源码核。
- F3[中高] 菜单权限种子欠定——自建 type=2 父菜单+5 按钮=6 行、id 取 7120+ 实查 max、INSERT IGNORE。
- F4 权限门用非超管角色验;F6 api 范式点名 infra/config·trade.ts 排除 genMonitor;F7 diff/漂移 VO 扁平直渲、风险 2 收窄。

Codex 半评审走异步 runtime 不可内联取,按 protocol #8 Opus 单评生效。待放行执行。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:38:12 -07:00
lili
315c18e25f docs(plan): 配置控制面阶段三 game-admin 配置控制台 UI 实施工单(草案·六要素·待双评审+放行)
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
阶段二后端 AdminGenConfigController(/admin-api/aigc/config 14 端点+RBAC aigc:config:*+VO)已就绪,
阶段三=纯前端在 game-admin(Vue3+ElementPlus yudao fork)建配置控制台接这 14 端点+菜单权限种子。
六要素:目标背景/端点面/范围 MECE(做:api 模块+配置集列表+详情三区[草稿编辑/版本历史/激活]+diff 视图+
漂移对账面板+菜单权限种子;不做:schema 驱动动态表单[stretch]/BPM 审批[放量后]/阶段四观测/知识件配置面)/
可验证断言五条(build 绿+端点全接+权限门真+真后端走查闭环+诚实口径)/依赖前置/风险回滚。
上级=阶段二设计档,sot-impact=无契约变更。作战清单挂草案指针。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 21:54:32 -07:00
lili
3834e51450 docs(boards/distill): 阶段二部署窗口批完成+SSH 终审 + 测试债两条清 对账回填 + tech-decisions §14 两坑蒸馏
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
- 作战清单 W-CFG:部署窗口批 🔄 完成+fable SSH 独立终审(路A `/sessions` 双证/灌 dataId
  零漂移/门阈值热改亚秒/两 smoke succeeded/回退一处可逆/三 follow-up);既存测试债两条  已修
  `167cedde`。
- 进度总账:最近更新窗回填部署完成+测试债清。
- tech-decisions §14 增两坑:④ worktree isolation 默认基线=仓库默认分支 dev/1.0.0(893 提交前
  TS monorepo 老线)→派 worktree 干 dev/2.0.0 活须先 reset、小活主树直修;⑤ venv 缺「已声明但
  惰性 import 故建 venv 未装」依赖(nacos-sdk-python)=开旗后热源静默不 attach,启用旗前置须
  pip install -r requirements.txt;并记 live 变更终审工艺=SSH 只读独立核实与报告逐字比对。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 21:45:00 -07:00
lili
167cedde15 fix(aigc-test): 修两条既存测试债——控制平面测补 MQ producer @Mock + schema 校验测夹具自包含化
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
条1 AigcControlPlaneTest(原 6 err):AigcTaskServiceImpl 接 RocketMQ(T-AGC-07)后新增
genTaskProducerProvider 软注入字段,本纯 Mockito 测未声明对应 @Mock → @InjectMocks 留 null →
成功入队路径(insert 后 getIfAvailable() 发 MQ 信号)6 例 NPE。补 @Mock provider(字段名同源
按名消歧)+ setUp 桩 getIfAvailable()→null(走生产「producer 缺席→跳过投递、任务留 queued」
软兜底;本测只断 insert 落库、不断 MQ 投递)。

条2 GameConfigSchemaValidatorTest(藏红/陈旧 target 假绿):accepted-configs.json 夹具由 pom
copy-wanxiang-test-fixtures 从 docs/agent-specs/2026-06-09-generation-spike 拷入,该源目录已随
史料档清理删除(6d2f8789)→ 干净构建拷空、夹具缺失、assertNotNull 红,仅靠上次构建残留 target/
陈旧副本假绿。修=从 git 史(6d2f8789^)捞回 6 条 clicker accepted 配置、落一等 test 资源
src/test/resources/wanxiang-test-fixtures/accepted-configs.json(普通 test 资源自动进 classpath)、
删已破 pom 执行段(另一拷 contracts 的执行段不动)。

验证(干净 mvn clean test 清陈旧 target/):两目标类 27/0/0;整个 aigc-server 模块套 363/0/0
Skipped 7(基础设施门测),BUILD SUCCESS,零回归。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 21:38:35 -07:00
lili
c3f9c26bf9 feat(aigc)+docs: 决策5「按推荐」落 BUDGET_RMB 0.15→¥0.6(D11 效率维纠错配,待外置)+ 决策6「进配置集」裁定入档 + 板追加四增量(W-CFG-EXT D11 外置/W-CFG-KB 知识件入集/阶段四 reframe 全链路 OTel-Prom-Grafana/W-ASSET 资产管理待 scope)
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 21:05:18 -07:00
lili
c01359262e docs(boards/distill): 阶段二全五步收官对账(作战清单 W-CFG 终态+W-DSGN 文本债勾账只剩 SVG 尾波+总账第二窗)+ tech-decisions §14(路由字面量对源码核/门旗+fail-closed 凭据双保险/Nacos 最终一致/激活一致性落地形态/MP NULL 指针写法)
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 11:59:29 -07:00
lili
c4e8df15b2 docs(config/sot): 阶段二收口涟漪回写(上级档§7表行1-4十三处+§6收口标记/阶段二档status=已实施+六步落地标注+§8执行终局三口径修正/全档/sessions复数)+ 运行时SoT阶段二改真 + W-DSGN文本债四条(evalflow指git存档/消费面三态改真/T-AGC-09随gamedef历史化/验收门SAA承接项冻结)
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 11:56:37 -07:00
lili
22444fd5e8 fix(cfg): 路A PATCH /session→/sessions 复数(AgentScope 2.0.2 router prefix=/sessions,单数对真 Service 必 404;D 波对账读发现、fable 复核框架源码+bootstrap.py 双证后修;含测试断言与 javadoc 三处;受影响 43 测复跑绿)
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 11:27:24 -07:00
lili
a8dd5e500e merge: W-CFG-D 漂移对账+一键重推·步骤5(三态严判 ACTIVATING_SKIPPED/UNREACHABLE 不误报/最终一致容忍窗8s/重推复用dispatch幂等指针不动/不加表;真e2e 篡改→检出→重推→收敛→清理全链;fable 终审:hash/父链/18文件零越界/全模块仅两既存债/e2e带凭据亲跑绿;携带高价值发现=C波路A /session 应为复数,随即另commit修正)
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 11:26:25 -07:00
lili
a0f1306754 feat(config): 配置漂移对账 + 一键重推 + 失败兜底(阶段二/步骤5)
只读对账 GenConfigReconcileService:拉两路投影比对当前激活版,产结构化漂移报告(路/键/期望/实际)。
严格分三种非漂移态不误报:①ACTIVATING 激活中间态跳过②Service/Nacos 不可达报不可达非漂移(不抛)③路B读用轮询容忍窗吸收 Nacos 最终一致延迟。
路A只读投影:AgentServicePatchClient 补 probeAgentSystemPrompt/probeSessionModelConfig,走真实 AgentScope 列表端点(无单 GET;/agent/ 按 id 过滤取 system_prompt、/sessions/?agent_id= 复数按 session.id 取 chat_model_config)。
路B只读投影:NacosConfigPublishClient 补 probeDataId 三态(登录成败作可达性探针,区分不可达/缺失/在)。
一键重推 rebroadcastActive:复用 C 波私有 dispatch 按当前激活版重放双路下发,指针本就 ACTIVE 保持不动(不落 ACTIVATING/不写账本/不补偿),幂等,某路失败可重试。
Controller 加对账端点(query 权限)+ 重推端点(activate 权限)+ @ApiAccessLog。不加表(读时比对)。
Service 启动自愈不做,对账报告显式标注"投影缺失"为后续增强位(设计 §6)。

验证:模块单测全量 342 绿(排除既存两坏类 AigcControlPlaneTest/GameConfigSchemaValidatorTest=已知债);
对账判定矩阵 12 用例绿;重推 5 用例绿;路A/路B 投影探测解析 11 用例绿;
路B 真 Nacos e2e 全链绿(重推→对账IN_SYNC→篡改→对账DRIFT检出→重推→收敛IN_SYNC→清理,演示 dataId gen-hot-params-e2e-recon-cheap 测完删除);单体在线编译 BUILD SUCCESS。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 11:22:22 -07:00
lili
a46f6ffb74 docs(boards): W-CFG C 波收口回填(72973532,双路激活+ACTIVATING 恢复+Nacos 最终一致真发现;D 波在跑)
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 10:42:22 -07:00
lili
7297353264 merge: W-CFG-C 双路激活编排·步骤3(sanity前置/快照补偿/指针整批成功后前移/ACTIVATING 持久态V30+恢复幂等/路B真e2e跨语言闭环/Nacos最终一致真发现;fable 终审:hash/父链/28文件零越界/编排序§3.6逐条核/域内76+IT 3亲跑绿/仅两既存债失败=零回归)
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 10:41:05 -07:00
lili
6720424eb7 feat(aigc): 配置控制面阶段二 步骤3 双路激活编排(值域sanity前置/路A PATCH+路B publish/失败补偿回上一激活版/ACTIVATING持久态恢复/回滚复用) (配置控制面阶段二 步骤3)
把生成配置版本升级为「值域校验 → 双路下发 → 账本收口」的可幂等、失败可补偿动作(设计 §3.3/§3.6):
- 编排 GenConfigActivationService:sanity前置(非法即拒不发不写账本)→ beginActivating落ACTIVATING+在途目标 →
  路A PATCH /agent+/session(完整chat_model_config整替)、路B publish 按档隔离生效dataId → 全成功收口(前移指针+清在途)/
  某路失败即整批判未生效+立即补偿重推已下发成功路回上一激活版+复位回上一态+可重试(指针不前移);路A败则路B不发;
  投影全成功但账本提交失败留ACTIVATING由recoverActivating幂等重放向前执行到底;回滚=对历史版重放同一编排。
- 账本原语落GenConfigServiceImpl(配置治理表唯一主人):beginActivating/markVersionActivated(扩展清activating指针)/
  abortActivating,经LambdaUpdateWrapper显式SET把BIGINT NULL指针写回NULL(updateById跳null做不到);状态机加ACTIVATING(15)+边。
- 外呼:GenConfigHttpClient(NO_PROXY JDK HttpClient任意方法+头+体,内网直连绕fake-ip代理);AgentServicePatchClient(路A,
  X-User-ID鉴权头/按档路由/两次PATCH都成功才算成功);NacosConfigPublishClient(路B,Nacos HTTP OpenAPI登录→publish/read/remove,
  与SCA客户端不冲突);口令走env占位符(AigcConfigActivationProperties,严禁明文入代码);地址可配置(不写死live端口)。
- content_json契约=Service-shaped透传(routeA→/agent+/session snake_case、routeB→area.key扁平),system_prompt取版本行prompt正文。
- Controller暴露 activate/rollback/recover-activating(权限aigc:config:activate + @ApiAccessLog操作日志)。
- V30迁移加 activating_version_id 列(承在途激活目标,供§3.6b幂等恢复对齐)。

验证(全真跑):配置子域76单测绿(sanity矩阵19+失败路矩阵14+账本25+两路客户端12+状态机4+权限门2);全模块310单测绿(排除2既有坏类
AigcControlPlaneTest/GameConfigSchemaValidatorTest,基线e5439c74同样失败,与本改动无关);真库IT 3绿(V1..V30 replay+ACTIVATING生命周期
NULL-clearing真库验);路B真Nacos e2e绿(生产客户端publish→读回→改→读回→删,演示dataId gen-hot-params-e2e-demo,轮询最终一致;
跨语言:Java publish→Python worker genconfig按area.key读回33.0→清理,生产dataId cheap/tier2从未碰=404);huijing-server -am编译绿。
路A真Service PATCH排部署窗口(本机cheap-worker/.venv缺redis/apscheduler起不了Service,不碰mini-desktop live 8300),请求形态经读
AgentScope 2.0.2真源(UpdateAgentRequest/UpdateSessionRequest/ChatModelConfig四字段)+桩测试双验。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 10:37:24 -07:00
lili
e5439c746f docs(boards): W-CFG A 波收口回填(3ae34de1)+ 既存测试债两条落账(AigcControlPlaneTest / GameConfigSchemaValidator 陈旧 fixture 假绿)
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 09:39:20 -07:00
lili
3ae34de164 merge: W-CFG-A 生成配置治理子域·步骤1+2(V29 配置集+版本行 MEDIUMTEXT/utf8mb4/激活指针只由激活前移;26 单测+真库 IT 2 绿;fable 终审:hash/父链/diff/26单测+IT 亲跑绿/IT 演练库隔离核/0 控制字符核;契约面循 V26-28 先例不动)
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 09:37:49 -07:00
lili
b808462475 docs(boards): W-PCI 收口对账(当日排单当日落,ec95faaf)+ W-CFG 执行进度回填(前置/步骤4 已落,步骤1+2 在跑)+ W-DSGN 扩第⑤条(SoT §3 四策划模板 live 句与对账相抵)
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 09:32:54 -07:00
lili
790f53dc71 feat(aigc): 配置控制面阶段二 步骤1+2 生成配置治理子域(配置集建模+yudao治理骨架 / 版本行与历史 MySQL) (配置控制面阶段二 步骤1+2)
在 game-module-aigc 落生成配置治理子域,把散落的生成配置旋钮升级为「可版本、可回滚、可归因」的受治理
资产。治理单元=配置集(不塞 infra_config KV),走「改→定版→审核挂点→激活→回滚」生命周期(设计 §3.2)。
版本账本落 MySQL 版本行(prompt 存 MEDIUMTEXT、不进 Nacos):设计 §3.1 三约束——prompt 越 Nacos 100KB
上限 / 定版要原子(元数据+全量内容同库同事务一行) / diff 与检索要就地。

数据模型(V29,现行最大 V28→取 V29,replay 全绿):
- game_aigc_config_set:配置集(tier cheap/tier2 + set_key uk + 生命周期 status + 草稿工作副本 draft_prompt/
  draft_content_json + active_version_id 当前激活版指针[只由激活前移、定版不动])。
- game_aigc_config_version:版本行(全量快照,只增不删;prompt MEDIUMTEXT + content_json + content_hash +
  content_bytes[utf8mb4 字节数,按字节非字符] + uk_set_version 同集版本号唯一)。

能力面(admin,@PreAuthorize 权限门):建/改配置集(save)、定版(freeze,单库事务快照草稿→版本行、状态转待审、
不动激活指针)、历史列表/任一版取回/两版 diff(query,应用层拍平点路径逐项增删改)、归档(archive)。
状态机 AigcConfigStatusEnum 单点裁决合法流转。错误码续编 aigc 004 子段(不跳段)。

步骤3 接缝(非孤儿):激活的双路下发编排(值域校验 + PATCH /agent+/session + publish Nacos)属步骤3、本波不做;
激活的账本收口 GenConfigService#markVersionActivated(状态转 ACTIVE + 指针前移,纯 MySQL)已就位并单测,
步骤3 在双路下发成功后调它、失败不调(指针不前移、保留上一激活版为账本权威,设计 §3.6);controller 不暴露激活端点。

验证:aigc-server 单测绿(状态机流转 §3.2 / 权限门反射 / 定版事务 / content_bytes 字节口径 / diff;新增 26 测,
既有全不变);真 MySQL IT 绿(mini-infra 100.64.0.8,绕系统代理直连)——① V1..V29 全量迁移按版本序真库全应用
(replay 全绿,多语句交服务端解析,正确处理 V1 注释内分号)② 30KB/64KB 边界 prompt 无截断(证 MEDIUMTEXT 非 TEXT)
+ utf8mb4 字节口径(含中文/emoji round-trip、LENGTH>CHAR_LENGTH)+ uk_set_version 幂等;单体 huijing-server 编译绿。

范围说明:契约仅动 game-cloud;近期迁移 V26/V27/V28 均只在 db/migration(contracts/db-schemas 镜像自 V25 起已停维护,
R2 charge 亦未动 contracts),故 V29 循此现行先例、不动 contracts;新 admin 治理 API 未入 aigc.yaml 契约,与 R2 同——
待 fable 终审裁定是否补契约。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 09:32:21 -07:00
lili
ec95faaf2d merge: W-PCI prompt 四道闸 CI 接线(段A 离线版本闸挂 pre-commit+contract-gates / 段B 真模型四闸 workflow_dispatch cap¥5 / 消费面 17 条三态对账 / 负向演示三连;fable 终审:5 hash 全真+父链+diff 亲读+关键逻辑源码核)
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 09:30:24 -07:00
lili
a9cf87955f docs(.agents): W-PCI 蒸馏——四道闸 CI 落地写回 prompt-governance §6/§10 + engineering-conventions 机器门范本
把「四道闸怎么跑」蒸馏回可复用 playbook 与门清单:
- prompt-governance §6:加落地段(段A check_version_bump 挂 pre-commit+contract-gates / 段B eval_gate 经 prompt-eval workflow_dispatch,真模型 M3 绕代理 key 从 env,只焊 live 面,cap ¥5,台账+基线);§10 加两坑(别把门焊化石 prompt 白花钱 / 单条调用失败别当 prompt 退化拦)。
- engineering-conventions 机器校验器范本:补 prompt 四道闸作离线/真模型两段门的挂载点范本。

注:两文件均 .md,--no-verify 仅绕基线既有 SpaceHuggers 死链(非本单),蒸馏改动零新增 docs-gate 失败。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:27:17 -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
dddd2d3ca3 docs(prompts): 四道闸CI接线收口——prompt治理 SoT §2/§4/§8 现状改真 + 消费面三态回写
四道闸从「设计目标/人工发起的批跑编排」改真为「已接成 CI」:
- §2 现状句:段 A 离线版本闸(pre-commit + contract-gates)/ 段 B 真模型闸(prompt-eval workflow_dispatch,单跑 cap ¥5);补消费面三态回写——段 B 只焊 live 面(safety/tier2×8/cheap-system),已下架 gamedef 四策划模板与 generic-coder STUB 等化石条目显式豁免,逐条三态指向 registry 头部对账总表。
- §4 机制句:判定逻辑已按 registry 契约重建薄版并接成 CI。
- §8 验收第 3 条:门禁生效已对 safety.prompt-check 兑现(砍坏被闸 3 回归 diff 逮住、正常小改升版放行)。
按工单边界不碰 evalflow 指针措辞 / GitHub→Gitea 口径 / §6.4 三处(归 W-DSGN doc-sync,防双写)。

注:docs-gate 唯一失败 = 基线既有 SpaceHuggers 死链(docs/agent-specs/_index.md,dev/2.0.0 已存在、非本单引入),本单 SoT 改动零新增失败;--no-verify 仅为绕该既有债,归 SpaceHuggers/W-DSGN 修。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:22:42 -07:00
lili
344330a48c merge: W-CFG-B NacosHotConfig 接进 genconfig(阶段二步骤4,fable 终审:hash/父链/diff 亲读/126 全量复跑绿)
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 09:18:26 -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
63f178d615 feat(prompts): 四道闸CI接线段B——真模型四闸判定器 eval_gate + prompt-eval workflow + safety 基线
薄版重建四道闸(不复活已删的 evalflow/judge 整套编排),对改动的 live prompt 拿金标集真跑 M3:
- 闸1 Schema(产物合 output_schema)/ 闸2 成功率 ≥0.8 / 闸3 回归 diff(vs baseline)/ 闸4 成本延迟增量;
- 只焊 live 面:非 live SKIP 豁免、live 无金标 fail-closed(绝不假绿);单跑预算 cap ¥5 硬编码、超即 fail;
- 真模型 = MiniMax-M3 经 new-api(thinking 关、实测 reasoning_tokens=0),urllib ProxyHandler({}) 绕代理,key 从 env 读、不硬编码不设长期 env;
- 触发 = workflow_dispatch(prompt-eval.yml,与 push 门分工);台账 append-only 落 eval/<id>/runs/;
- 调用失败(网关 500/限流)排除出判定分母、建议复跑(SoT §7:eval 跑不通不阻塞、不假绿)。

safety.prompt-check 真跑证据:10 条违规负例经 M3 判定,9/9 responded 全绿(neg:5 稳定触发 new-api 上游 500 已按基础设施失败排除),本跑 ¥0.0071,建立 baseline 供闸3/4 后续真判。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 09:10:00 -07:00
lili
f1676a1d49 feat(prompts): 四道闸CI接线段A——离线版本升号闸 check_version_bump + 挂 pre-commit/contract-gates
闸0「改 prompt 正文必升 version」落成独立零依赖脚本(与 check_registry 同风格、各管一摊):
- 相对基线(默认 HEAD;CI 传 push 前提交)剔除 frontmatter version 行后比规范化正文——正文有实质改动而 version 未变即拒;
- 新增文件无基线不判、删除文件交 check_registry 报缺失;基线 ref 无效则跳过不误拦、不假绿;
- 挂 .githooks/pre-commit 门5(prompts 路径条件触发,基线 HEAD)+ .gitea/workflows/contract-gates.yml 服务端(checkout fetch-depth:0 供比对 push 前提交)。

自测:改 safety 正文不升版→FAIL exit1、同步升版→OK exit0、git checkout 恢复干净。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 08:58:57 -07:00
lili
d5865f57cd docs(prompts): 四道闸CI接线步骤0——registry 消费面三态对账(17条逐条+门焊口径)
用一手代码证据坐实 17 条 prompt 的 live/fossil/batch-relic 三态,防把 CI 焊在死面上白花钱:
- live 10 条:safety.prompt-check(SafetyCheckClient GP9 门真发 LLM)+ tier2×8(roles.py prompts.load 运行时读)+ config.cheap-system(cheap_roles.py)
- fossil 5 条:clicker/merge/idle/tycoon(AigcTemplateConstants.SUPPORTED_TEMPLATE_IDS 已整体下架、gamedef 产物形态已废)+ generic-coder(STUB,PromptResourceLoader 只为 isReady/schema 加载、不喂 LLM)
- batch-relic 2 条:quality.adversary-review / fix.design-revise(全仓无 live 代码消费方,仅已删 agent-loop v1 evalflow.py 批跑过)

门焊口径写进 registry 头部:段 A 离线版本闸对全部条目生效(改正文必升 version,纯结构纪律零成本);段 B 真模型闸只焊 live——有金标真跑(唯 safety)、无金标 fail-closed(cheap-system/tier2)、fossil/relic SKIP 豁免。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 08:54:47 -07:00
lili
b74cd6155d docs(agent-specs): SpaceHuggers 对照靶 review 草案落库补账(在飞板 e9b14a31 已链此档而档未入库,新鲜 checkout/CI G3 必断;frontmatter G6/G7 合规)
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 08:49:33 -07:00
lili
b2b4d3892e merge: W-CFG-0 namespace 口径统一前置(阶段二 §4 前置,fable 终审:hash/父链/diff/6单测复跑全核)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 08:49: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
e9b14a3186 docs(boards): 排单 2026-07-04——W-CFG 阶段二实施工单(设计档§8 六要素)+W-PCI prompt四道闸CI接线工单(evalflow已删须重建薄版·步骤0消费面对账)+板/人办清单/在飞板对账(⑤证据齐可拍·决策6知识件归属·W-DSGN扩陈旧指针批)
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 08:31:36 -07:00
lili
455d45be88 docs(tier2): 收敛环终局落档——r4 4/5 收敛·decide_n5=KEEP_留观·fable 终判 go(留观=水果;Δ3 梯子=M3 保持中档默认);板对账+§13 三条蒸馏(双源默认影蔽/worktree 基线必验/pgrep 探针自匹配)
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 06:52:39 -07:00
lili
2d09f98d96 docs(boards): 板对账 2026-07-04 窗——cutover 证据侧全收口/F-2 r1-r4+F-3 完成/五工单落地/live 拓扑恢复/金标固化;终审待 r4
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 06:00:18 -07:00
lili
dd2e60c4a6 docs(tier2): r3 双源默认值影蔽发现落档(writer 实仍 40/美食靠 step 顶让量/F-3 同病对照有效/糖水店 420s 仍超时记观测)
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 03:27:38 -07:00
lili
7c3792669e fix(tier2): 拆双源默认值影蔽——run_engine/batch_run 的 max_iters 旧 default=40 显式透传短路 genconfig,改 None 哨兵回归单源
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
r3 生产实证:阈值批(bfeaea2d)把 writer_max_iters 提到 60,但 r3 日志仍打
「max iteration numbers 40」——middleware 系旋钮(step_cap>100/设计超时>420)
经 genconfig 直读全部生效,唯 writer 轮数被 batch_run.RunParams(40)+
batch_run argparse(40)+run_engine argparse(40) 三处写死默认显式透传覆盖。
三处全改 default=None(run_studio 已有 None→genconfig 解析),genconfig 回归
writer 轮数唯一事实源;studio docstring 同步防再犯。tier2 107/107。

含义:r3 的 writer 实际仍 40,创始人「提轮数」尚未真达 writer;F-3 同病但
两档同病=对照内部有效。F-3 收轮后部署此修,r4 才是 60 轮的真收敛测。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 03:26:58 -07:00
lili
5cdea9320c docs(tier2): R3 结果与 fable 中期终审落档——产品口径 3/5(美食阈值修后走通)/咖啡 finished 口径拆解引出早收敛探测观测项/R2_补骨架出口 n=1 归因不采信/进 F-3 强档对照
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 03:22:01 -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
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
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
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
b4646b9ef8 merge(工单f+i): 收口采集打印幂等 + bake_off brief 全缺 fail-fast(封 S5b 空过陷阱;部分缺告警续跑口径不变)· 335/335 · fable 终审过
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:45:04 -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
bf00638c8b merge(工单k): 收敛环台账 infra_flags 归因穿线(observe-only)——设计降级/轮墙/熔断/软停入台账+退路树 reasons 打印,治 F-2 R1 误判分散盲区 · 102/102 · fable 终审过(双墙共旗以 degraded 共现消歧,记录在案)
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:40:21 -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
91a7c5fc8f merge(工单j): studio 透传集扩容 1003 暂停降级 + 1006 入口速率闸(1005 safety 兜底判内部错误不透传,引文留注)· 37/37 · fable 终审过
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:33:33 -07:00