lili
|
8200aa08d0
|
feat(tier2): W-ASSET-SRC 源工程存储 manifest-first 落库 + 治理对账门 + 取回重建 harness + 孤儿清扫 job (SRC T1-T4)
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 |
|
zizi
|
ce491314c8
|
feat(tier2): P4 服务化核心——Agent Service(create_app)+ 第二装载真落库(MySQL+MinIO)
【U1 Agent Service】service/{app,infra_config,bootstrap}.py + config/infra.yaml:
经 agentscope 2.0.2 官方 create_app 把 tier2 引擎接成 Agent Service 壳——复用 studio 的 agent 装配零件
(roles/九工具/四熔断+trace/BYPASS/历史压缩)接到 create_app 扩展点(extra_agent_tools/extra_agent_middlewares),
不重写生成逻辑。Redis(mini-infra)做 storage(db0)+MessageBus(db1)。session 三路(新建/续接/加载工程迭代)经 REST(bootstrap.py)。
诚实差距:有界resume/工作室多agent/L2-L3/落库=循环外编排,服务态由控制面承接(已标 followup)。
【U2 真落库】store.py BackendStore 真实现(替 P3 NotImplementedError)+ schema SQL:
manifest→MySQL(幂等键 game_id+source_hash)+源文件全文→MinIO(bucket tier2-src);fetch 回填重建。
pymysql+minio 惰性 import;TIER2_STORE=backend 切换。
全 tier2/ 内、零碰 Tier0/1、py_compile+惰性import实证+forbidden-import 通过。真部署(连基建+uvicorn+smoke)待 mini-desktop。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-24 06:37:37 +00:00 |
|