Record the regulations corpus provenance and rights inventory
ci / svc-realcombo (pull_request) Successful in 2m22s
ci / test (pull_request) Successful in 7m27s
ci / test-pg (pull_request) Successful in 8m43s

Why: U1 of the regulations KB plan requires a verified import inventory before any schema or ingestion work.
Evidence: dump sha256 matches manifest; 2878/2907 originals hash-verified in a disposable pgvector container (SELF).
Impact: Spec only; no corpus data or product code changed.
Refs: docs/superpowers/plans/2026-10-18-regulations-knowledge-base-plan.md U1
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-18 09:21:36 +00:00
co-authored by Cursor
parent f61737bc3e
commit 4252c91952
@@ -0,0 +1,106 @@
# 法规语料来源、内容与发布权利盘点(U1)
- 计划:[法规知识库建设方案与实施计划](../plans/2026-10-18-regulations-knowledge-base-plan.md) U1
- 盘点日期:2026-10-18;执行者:host(只读调查);来源等级:SELF(本地实测,可按“复核方法”重放)
- 结论摘要:dump 完整且与 manifest 一致;2,878/2,907 份原件存在且哈希一致;**当前没有任何文档满足发布条件**——
全部法律状态为自动判定、生效日期全部缺失、权利未经确认。按身份/原件/状态规则自动筛出的 233 份仅是“待人工审核候选”,
其余 2,674 份进入隔离。U2 起的开发与评测只在本地一次性库中使用候选子集,不发布语料。
## 1. 输入对象
| 对象 | 值 |
|---|---|
| 目录 | `../Agent-System-Regulations`(非 Git 仓,只读) |
| `manifest.json` | 2026-09-11 生成;声明 2,907 文档 / 312,919 chunk / 279,184 node;dump sha256 `27ac5cf5…a1141a64` |
| `regulations_db.dump` | PostgreSQL 16.15 custom 格式(gzip),1,194,119,185 字节;实测 sha256 `27ac5cf538efe47232226a606ca0c1e70c33d5c3b488764c5d6be712a1141a64`,与 manifest 一致 |
| `.regulations/` | 23G;`library/` 2,878 文件、`intake/` 仅 `.DS_Store`、`quarantine/` 179 文件、`work/` 2,912 个以 sha256 命名的 MinerU 输出目录(`full.md`、`content_list.json`、`parts/`) |
## 2. 方法
1. `pg_restore --list` 检查目录(245 条 TOC、23 张表、扩展 `vector` 与 `pg_trgm`)。
2. 在一次性容器 `pgvector/pgvector:pg16`(仅绑定 `127.0.0.1`,dump 只读挂载)中 `pg_restore --no-owner -j 4`,无错误。
3. 对库内 2,907 条 `reg_documents` 逐一读取原件计算 sha256 并比对;遍历 `library/intake/quarantine` 找出库外文件。
4. 以 SQL 规则分类(第 5 节),每文档分类清单导出到仓外受控路径(见第 7 节)。
5. 盘点结束后删除容器与临时数据(见第 8 节);原始目录未写入。
## 3. 结构映射与计数核对
| 源表 | 行数 | 含义 | 映射到新模型(U2) |
|---|---:|---|---|
| `reg_documents` | 2,907 | 一文件一行:`doc_id`、`sha256`(唯一)、`file_path`、`kind`、`doc_no`、`title`、`status`、`effective_date`… | `source_asset`(文件、哈希)+候选 `regulation_identity`/`regulation_edition`(须人工确认) |
| `reg_nodes` | 279,184 | 树:`parent_id`、`level`、`node_kind`、`section_no`、`title`、`heading_path`、`content`、`page_start/end`、`sort_order` | `legal_node` 候选;文本须由解析输出重建并记哈希 |
| `reg_chunks` | 312,919 | `grain`=clause 179,202 / section 133,717;`embedding vector(1024)`、`tsv`、`cite_key` | 仅作参考;新库重新生成 chunk 与向量(无模型来源记录) |
| `reg_doc_relations` | 1,731 | `replaces` 1,730(解析到目标文档 91)、`replaced_by` 1 | 版本关系候选,须人工核对 |
| `reg_ingest_jobs` / `_events` | 2,953 / 35,248 | `done` 2,911、`unprocessable` 42 | 解析历史线索,不迁移 |
| 其余 16 张(`asset_*`、`*_legacy`、`reg_catalog_entries`、`reg_clause_links`、`reg_doc_aliases`、`reg_normative_refs`、`staff_*` 等) | 0 | 空表 | 不迁移 |
计数与 manifest 三项完全一致;manifest 的 14,655 文件数与目录实测不符(实测 library+quarantine 共 3,057 个文件,`work/` 下为解析产物),以实测为准。
## 4. 原件可用性与内容质量
| 检查 | 结果 |
|---|---|
| 原件存在且 sha256 一致 | 2,878(全部位于 `library/`) |
| 原件缺失 | 29(库记录在 `intake/`,磁盘无文件;`work/` 中仍有其解析输出) |
| 哈希不一致 | 0 |
| 二进制重复 | 库内 0(`sha256` 唯一约束);`quarantine/` 179 个文件中 135 个与库内文件重复、44 个独有(含 31 个 mp4、rar/zip/cdr 等不可解析格式) |
| 文件类型 | pdf 2,656、docx 165、doc 74、xlsx 9、md 2、xls 1 |
| `jurisdiction`、`source_url`、`effective_date` | 全部为空 |
| `kind_source`、`status_source` | 全部为 `auto`(无人工审核) |
| `doc_no` | 656 份为空;169 个编号被 607 份文档共用,如 `GB/T1.1-2009` 被 70 份不同文档使用(实为前言引用的起草规则),且文件名由该错误编号生成 |
| 标题 | 2,000+ 份为封面泛化标题(如“中华人民共和国医药行业标准”)、图片占位或 LaTeX 片段;168 份带 Markdown 标记 |
| 节点 | 70,254 无页码;102,696 无条款号;56,435 内容为空(标题节点为主);`table` 仅 3 个(表格结构基本丢失) |
| 向量 | 1024 维,未记录模型、版本或分块策略 |
结论:现有库可作为**解析线索与开发样本**,不能直接作为权威语料导入。U2/U3 以原件 + 新解析重建节点,现有节点/向量仅用于对照。
## 5. 准入分类规则
隔离标记(任一命中即隔离,不计入候选):
| 标记 | 规则 | 命中 |
|---|---|---:|
| `Q-SRC-MISSING` | 原件缺失 | 29 |
| `Q-KIND-UNKNOWN` | `kind = unknown` | 452 |
| `Q-DOCNO-COLLISION` | 同一 `doc_no` 对应多个文件 | 607 |
| `Q-GENERIC-TITLE` | 去除 `**` 后标题为封面泛称、图片/公式占位或少于 6 字 | 2,222 |
| `Q-STATUS-UNKNOWN` | `status = unknown` | 446 |
权利类别(候选判断,**均待语料维护者确认**,确认前一律不发布):
| 类别 | 判定 | 依据与拟定展示策略 | 总数 | 候选 |
|---|---|---|---:|---:|
| `R-OFFICIAL` | `kind` ∈ law/rule/notice/catalog/guidance | 国家机关法律法规、规章、规范性文件;《著作权法》第五条不适用保护的候选依据。拟:全文可内部检索与引用展示,需注明发布机关 | 336 | 193 |
| `R-STD-MANDATORY` | 编号 `GB`/`YY`(非 /T) | 强制性标准官方平台可公开阅读,但再分发受限。拟:内部检索,引用展示短摘录,导出受限 | 31 | 3 |
| `R-STD-LICENSED` | 编号 `GB/T`/`YY/T` | 推荐性标准,版权归标准出版方。拟:仅元数据 + 定位 + 短摘录,取得许可前不展示全文 | 2,079 | 31 |
| `R-STD-FOREIGN` | 标题含 ISO/IEC/ASTM/EN/ANSI/AAMI 等 | 境外标准组织版权。拟:仅元数据,许可确认前不入检索正文 | 230 | 6 |
| `R-UNKNOWN` | 以上皆非 | 身份不明,隔离 | 231 | 0 |
合计:候选 233,隔离 2,674。所有候选仍需人工完成法律身份、版本、生效状态与权利确认后才可进入 U4 发布。
## 6. U1 测试场景对应
| 计划场景 | 结果 |
|---|---|
| 有效样本映射到唯一源哈希与明确的来源/权利记录 | 样本 `doc-fb5793f2a564-fb5793f2`《医疗器械使用质量监督管理办法》→ `library/law/doc-fb5793f2a564__…__fb5793f2.docx`,sha256 `fb5793f2…f67f6d9f` 实测一致;类别 `R-OFFICIAL`、无隔离标记;树为 chapter → article,正文与原文一致,页码缺失(docx 来源) |
| 重复二进制去重但不合并不同法律身份/版本 | 库内无重复二进制;隔离区 135 个重复文件按哈希识别为副本,不新建身份。反向问题:同一 `doc_no` 被多份不同文件共用,已以 `Q-DOCNO-COLLISION` 隔离,不按编号合并 |
| 原件缺失、无效行、版本不明、权利未知时隔离且不计入可发布数 | 第 5 节规则;可发布数为 0,候选 233 仅表示可进入人工审核 |
## 7. 仓外产物
| 产物 | 位置 | sha256 |
|---|---|---|
| 每文档分类清单(元数据:`doc_id`、`sha256`、路径、kind、status、doc_no、权利类别、隔离标记;无正文) | `~/.cache/agent-system-dev/regkb/u1-classification-20261018.tsv`(0600) | `3c801f74006b7919e45247f91ede704d35d9110a1eb5f3f50abdc701574360ee` |
清单不入 Git;U2 的导入工具从原件与该清单重新生成新仓的语料发布清单(manifest),并重新计算哈希。
## 8. 复核方法与限制
复核:在任意一次性 `pgvector/pgvector:pg16` 容器中只读挂载 dump 恢复,执行第 3–5 节的计数与分类 SQL,并对 `reg_documents.file_path` 重新计算 sha256。
未验证/待决:
- 法律状态、生效日期、版本替代关系与权利类别全部未经人工确认;第 5 节规则只用于筛选审核候选。
- 推荐性标准与境外标准的许可、可展示摘录长度与导出限制,需语料维护者(计划 A3)或用户裁定,属于发布阻塞项。
- 29 份缺失原件是否可从其他来源补齐未调查。
- 生产导入路径、备份拓扑、语料 owner 与更新审批角色未定(计划“Dependencies and Open Questions”)。