build(repo): 落成工具链、依赖契约与十个模块的空骨架
第 ③ 阶段剩下的那半:架构文档之外,import-linter 契约也落地了。 pyproject.toml 把九条依赖规则里的七条写成五条 import-linter 契约。 分层用一条 layers 契约表达规则 1、2、3、8,`|` 表示同层互不 import; 另外四条 forbidden 分别管下游反向 import、polygateway 的唯一入口、 以及三个纯逻辑模块不碰 asyncio 与 pathlib。 契约不是平凡的绿:故意注入两处违规验证过,都被点名到行号。 先建十个模块的空包,是为了避开 PolyGateway bootstrap 期那段 Makefile 门控—— 它当时没有包,lint-imports 报 module not found 而红,只好加一段跳过逻辑。 空包让契约从第一天就真的在跑。 剩下两条规则落不进契约,写成了 tests/unit 下的测试: 规则 6「types 与 ports 不许 import 任何第三方」判据要反过来写(只许标准库和自己), 规则 9「import polyloop 之后 sys.modules 里没有 polygateway」是运行时事实。 另加硬约束 §1.1 零业务假设的黑名单扫描——它第一次跑就抓到 _assembly 的 docstring 里写了 dissect 的业务词,已改。三个扫描类测试都带 fail-closed 守卫, 防止目录搬走之后扫到空列表安静地绿。 工程约定取自实验室已有项目:setuptools + src layout、ruff 十一项 select、 line-length 100 来自 PolyGateway;dev 工具链版本钉死、--strict-markers 与 --import-mode=importlib 来自 CHSAnalyzer 与 dissect 踩过的坑,各自的理由写在配置注释里。 e2e 默认不跑,它打真实网关要花钱。 CLAUDE.md §0 那句「契约还没写,要等 src/ 落地」已过期,改掉; README 勾掉第 ②③ 阶段,补上本地检查命令与 GovDoc-Editor 那一行。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,9 +9,10 @@
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 项目尚未开工(2026-08-07 起)
|
||||
## ⚠️ 项目还没有可用的功能(2026-08-07 起)
|
||||
|
||||
当前仓库只有协作规范和文档骨架,`src/` 一行代码都没有。下面的阶段清单是唯一的进度权威。
|
||||
`src/polyloop/` 下是十个模块的空骨架——目录和依赖契约先于代码存在,模块里一个类一个函数都
|
||||
还没有。下面的阶段清单是唯一的进度权威。
|
||||
|
||||
## 消费者与验收标准
|
||||
|
||||
@@ -32,11 +33,11 @@
|
||||
不会在别处留下过期条文。
|
||||
|
||||
- [x] ① 协作规范 —— 见 [CLAUDE.md](CLAUDE.md) 与 [research-wiki/README.md](research-wiki/README.md)(文档体系)
|
||||
- [ ] ② 需求对齐 —— 从 dissect 的 `harness/agent/` 与 GovDoc-SaaS 的 `packages/docagent-core/`
|
||||
- [x] ② 需求对齐 —— 从 dissect 的 `harness/agent/` 与 GovDoc-SaaS 的 `packages/docagent-core/`
|
||||
提取真实需求,产出 `research-wiki/migrations/` 下两份迁移文档(删除清单 + 组件映射 + 验收口径),
|
||||
并检查 CHSAnalyzer 的 agent 方案落在边界内还是边界外。**这一阶段的产物决定库的边界**,
|
||||
所以它排在架构前面:边界画错,后面每一份架构文档都要重写
|
||||
- [ ] ③ 架构 —— `research-wiki/explanation/architecture.md` 与 `pyproject.toml` 的 import-linter 契约。
|
||||
- [x] ③ 架构 —— `research-wiki/explanation/architecture.md` 与 `pyproject.toml` 的 import-linter 契约。
|
||||
架构文档先于代码存在,此期间它是一份规格而不是描述,文档开头须写明这一点
|
||||
- [ ] ④ 测试框架 —— unit / integration / e2e / contract 四层骨架(划分判据是「依赖什么」,
|
||||
见 [CLAUDE.md](CLAUDE.md) §1.9),以及 `tests/contract/` 那套公共行为一致性用例的形状
|
||||
@@ -45,13 +46,20 @@
|
||||
|
||||
## 本地检查
|
||||
|
||||
CI 会跑的几项,本地随时可以自己跑(**命令与工具链尚未落地,等第 ③ 阶段**)。
|
||||
```
|
||||
make check # ruff format --check + ruff check + lint-imports
|
||||
make test # pytest(e2e 默认不跑,它打真实网关要花钱)
|
||||
make ci # 上面两条
|
||||
```
|
||||
|
||||
文档质量不走 CI,走 [CLAUDE.md](CLAUDE.md) §3 的「硕士生阅读」评审。
|
||||
仓库还没有 remote,所以没有 CI workflow。`make ci` 就是当前的全部机器闸,和 PolyGateway
|
||||
一样。等仓库推上去之后按 `research-wiki/guides/` 补 workflow(那份也还没写)。
|
||||
|
||||
文档质量不走机器检查,走 [CLAUDE.md](CLAUDE.md) §3 的「硕士生阅读」评审。
|
||||
|
||||
## 参考资料
|
||||
|
||||
`reference/` 下的五个仓库与 `agent-core.md` **都只是参考,不是本项目的设计,也不是任何事实的权威**
|
||||
`reference/` 下的六个仓库与 `agent-core.md` **都只是参考,不是本项目的设计,也不是任何事实的权威**
|
||||
(理由见 [CLAUDE.md](CLAUDE.md) §0)。它们只读、不改、不入库。
|
||||
|
||||
| 位置 | 是什么 |
|
||||
@@ -59,6 +67,7 @@ CI 会跑的几项,本地随时可以自己跑(**命令与工具链尚未落
|
||||
| `reference/agent-core.md` | 别人为本项目写的一份架构提案。其中任何一条在被我们自己的 design doc 采纳前都不作数 |
|
||||
| `reference/dissect/` | 消费者,已有 ReAct 循环实现 |
|
||||
| `reference/GovDoc-SaaS/`(`background` 分支) | 消费者,已有第一次抽库尝试 `packages/docagent-core/` |
|
||||
| `reference/GovDoc-Editor/` | GovDoc-SaaS 重构之前的那一版,今天跑在生产上。需求来源,不是迁移对象 |
|
||||
| `reference/CHSAnalyzer/` | 远期消费者;同时是本仓库协作规范的蓝本 |
|
||||
| `reference/PolyGateway/` | 本库的依赖,也是「实验室共用库该怎么做」的蓝本 |
|
||||
| `reference/pi/` | 外部参考实现 |
|
||||
|
||||
Reference in New Issue
Block a user