W03 全域文件生命周期工具链技术标准
C:/Users/xub/.workbuddy/spec/3.行政法规/范式/W03_全域文件生命周期工具链技术标准.md历史条款出处:本文上位依据原属已废止的宪法体系(正文条款出处锚点原样保留、未改写);二次引用前须核对
产出\旧新条款映射表.json。
版本:V1.2.0 | 编制日期:2026-08-26 | 状态:正式基准(已发布)· 全域强制 | 最近修订:2026-09-23(V1.2.0 · 新增重放闸口径条款段;完整沿革见 §六 版本记录,本行 V1.0.0→V1.2.0 滞后订正)
性质:本文是《全域文件工作流规则技术标准》V2.0.0(W1)的配套实现规范,对 W1 尚未工具化的规则 R2、R4–R15 给出可编码、可校验、可集成闸门的技术规格(数据模型、字段 schema、落盘格式、校验逻辑、合格阈值)。
权威关系:本文与 MEMORY.md §三/§十二、W1/N1 一致、互为备份;冲突时按《全域任务脑手架构宪法》V1.2.0 效力层级裁决(2026-09-03 P0 用户裁定:宪法 > MEMORY.md > 台账 > 引用国家标准)
上位关系:本文实现 W1 的 L4 治理底座层工具链;与既有 4 工具(naming_audit / check_deliverables / check_dual_end / expert_spec_gate)同属_tools/工具链,按「规则 → 工具链 → 闸门 → 反馈」四阶闭环编码
覆盖范围:R2(产生·元数据检查器)+ R4–R6(流转)+ R7–R9(审批)+ R10–R12(归档)+ R13–R15(销毁)= 13 项工具;R1/R3 已由naming_audit.py/deliverable.py承载,不在本文范围
一、总则
1.1 目的与适用范围
本文把 W1 §3.3 中尚未工具化的 13 条规则(R2、R4–R15)落写为可实现的工具链技术规格,使每一条规则都能被脚本自动校验,补齐「产生—流转—审批—归档—销毁」全生命周期的工程闭环。凡涉及这 13 类治理动作的脚本/系统/集成,一律以本文为唯一实现依据。
1.2 术语定义
- 元数据检查器:R2 定义的落盘前 5 字段元数据校验器(缺字段 0% 落盘)。
- 流转单 / 流转日志:R4 定义的跨部门传递结构化单据与其日志。
- 系统对账:R5 定义的跨系统中转来源/目的地标识与转换记录的日终交叉对账。
- SLA 时效:R6 定义的流转时限(一般 3 工作日 / 紧急 4 小时)与超时自动升级。
- 审批留痕 / 电子签章:R7 定义的 1–3 级审批日志与签章完整度。
- 驳回记录:R8 定义的必含原因字段的驳回单。
- 升级日志:R9 定义的 72 小时未审批自动升级留痕。
- 目录审计:R10 定义的归档目录结构(业务域+年度+项目)审计。
- 保存期 / 期限表:R12 定义的按文件类型分档保存期与到期前 90 天提醒。
- 销毁四件:R13 申请单 / R14 双人见证记录 / R15 抽样复核报告。
1.3 权威关系
| 层级 | 文件 | 定位 |
|---|---|---|
| 最高裁决 | spec/1.宪法/全域任务脑手架构宪法_V1.2.0 |
宪法 > MEMORY.md > 台账 > 引用国家标准 |
| 机器级执行权威 | C:\Users\xub\.workbuddy\MEMORY.md §三 / §十二 |
宪法之下的执行细则权威 |
| 上位规则 | spec/3.行政法规/范式/W02_全域文件工作流规则范式.md §3.3 |
本文所实现规则的母文 |
| 命名基准 | spec/3.行政法规/范式/N03_全域文件命名规则范式.md |
工具落盘命名、时间戳、版本号 |
| 工具链 | ~/.workbuddy/_tools/ |
本文工具落位(与既有 4 工具同目录) |
1.4 工具链总体架构
本文工具链是 W1「规则 → 工具链 → 闸门 → 反馈」四阶闭环在流转之后阶段的落地,与既有「产生阶段」工具链(命名/四件套/双端/专家闸门)衔接:
产生(Create) ──┐ naming_audit.py(R1) + metadata_checker.py(R2)+ deliverable.py(R3)
流转(Circulate)─┤ circulation_log.py(R4)+ transfer_recon.py(R5)+ sla_monitor.py(R6)
审批(Approve) ──┤ approval_log.py(R7)+ rejection_log.py(R8)+ escalation_log.py(R9)
归档(Archive) ──┤ archive_audit.py(R10)+ metadata_audit.py(R11)+ retention_check.py(R12)
销毁(Destroy) ──┘ destruction_request.py(R13)+ destruction_record.py(R14)+ destruction_report.py(R15)
各工具输出统一落 ~/.workbuddy/_data/lifecycle/(新增治理数据目录),格式约定见 §二。
二、统一数据模型与落盘约定
2.1 存储根
- 治理数据统一落
C:\Users\xub\.workbuddy\_data\lifecycle\,按工具分子目录:metadata/、circulation/、approval/、archive/、destruction/。 - 每条记录采用追加式 JSONL(一行一条,便于增量追加与日终对账),关键字段见各工具 schema。
2.2 时间戳与标识约定
- 所有时间字段统一
YYYY-MM-DD_HHMM(与 N1 §3.1 一致)。 - 文件指纹 hash 用 SHA-256,取前 16 位十六进制作为记录键
file_hash。 - 记录唯一键 =
<业务类型>_<file_hash>_<动作时间戳>,保证可追溯、可对账。
2.3 元数据字段模型(R2 / R11 共用)
| 字段 | 键名 | 类型 | R2(5字段) | R11(12字段) |
|---|---|---|---|---|
| 发起人 | author | str | ✅ | ✅ |
| 创建时间 | created_at | ts | ✅ | ✅ |
| 业务类型 | biz_type | enum | ✅ | ✅ |
| 所属项目 | project | str | ✅ | ✅ |
| 保密等级 | classification | enum(公开/内部/秘密/机密) | ✅ | ✅ |
| 审批人 | approver | str | — | ✅ |
| 归档时间 | archived_at | ts | — | ✅ |
| 保存期 | retention | str | — | ✅ |
| 关键字 | keywords | list | — | ✅ |
| 关联文件 | refs | list | — | ✅ |
| 变更历史 | changelog | list | — | ✅ |
| 销毁期限 | destroy_deadline | ts | — | ✅ |
三、各工具技术规格(R2、R4–R15)
3.1 R2 · metadata_checker.py(元数据检查器)
- 触发:文件落盘前。
- 动作:校验文件头或独立元数据文件至少含 5 字段;缺任一字段拒绝落盘(0% 落盘)。
- schema:
{author, created_at, biz_type, project, classification}。 - 落盘格式:元数据优先写文件头(docx 自定义属性 / xlsx 自定义属性 / md frontmatter);无法写入头时写同名
.meta.json侧车文件。 - 校验逻辑:
all(k in meta for k in REQUIRED5),否则exit 1。 - 例外:内部参考文件可省
classification,但 7 日内补齐(记录classification_deferred_until)。 - 闸门:落盘前置闸门,与
deliverable.save_doc/save_wb串联。
3.2 R4 · circulation_log.py(流转日志)
- 触发:文件跨部门流转。
- 动作:写一条流转单日志。
- schema:
{sender, receiver, ts, file_hash, biz_purpose}。 - 校验逻辑:5 字段缺一 = 未流转(
exit 1)。 - 例外:同部门内流转可简化为日志记录(
scope=internal,字段可省biz_purpose)。
3.3 R5 · transfer_recon.py(系统日志对账)
- 触发:文件跨系统(资料库/网盘/邮箱)流转;日终跑批。
- 动作:通过统一中转 API/中间件记录
{src_system, dst_system, convert_record};日终交叉对账。 - 校验逻辑:日终
src出账 =dst入账,不一致项 0 容忍。 - 例外:离线交换(纸质+U盘)走双签通道,48 小时内补登。
3.4 R6 · sla_monitor.py(SLA 时效)
- 触发:文件进入流转后计时;每日发超时报告。
- 动作:记录
{deadline, urgent_flag};一般 3 工作日 / 紧急 4 小时;超时自动升级。 - 校验逻辑:
SLA 达成率 ≥ 95%(周报)。 - 例外:涉密/复杂审批可申请延期,必须记录原因。
3.5 R7 · approval_log.py(审批留痕 + 电子签章)
- 触发:文件到达审批节点。
- 动作:按文件类型/金额/影响范围走 1–3 级审批,每级留痕 + 签章。
- schema:
{level, approver, ts, verdict, signature}。 - 校验逻辑:
审批日志 + 签章 100% 完整,缺签 = 未批准。 - 例外:标准模板文件走免审通道(
exempt=true)。
3.6 R8 · rejection_log.py(驳回记录)
- 触发:审批人判定不通过。
- 动作:写驳回记录,必含
reason+suggestion;退回发起人/上一步。 - 校验逻辑:
reason空 = 无效驳回(exit 1)。 - 版本联动:仅流程退回不修改内容 → 版本号不变;修改内容重提 → 按 R3 升版本号。
3.7 R9 · escalation_log.py(升级日志)
- 触发:审批到达节点 72 小时未审批。
- 动作:自动升级至上一级 + 短信/邮件通知,写升级日志。
- schema:
{from_role, to_role, ts, overdue_hours}。 - 校验逻辑:升级日志每日复核,异常冻结须有书面依据。
3.8 R10 · archive_audit.py(归档目录审计)
- 触发:审批通过且流程结束,文件移入归档目录;月度审计。
- 动作:归档分类按
业务域/年度/项目/,命名沿用合规名。 - 校验逻辑:目录结构 100% 符合标准,目录名 0 错误。
- 例外:跨年度项目按项目结束年度归档。
3.9 R11 · metadata_audit.py(元数据完整度)
- 触发:归档时;日终扫描。
- 动作:校验至少含 12 字段元数据(见 §2.3)。
- 校验逻辑:
元数据完整度 ≥ 98%,缺字段自动告警。 - 例外:历史遗留文件可分阶段补齐,补齐率纳入月度考核。
3.10 R12 · retention_check.py(保存期交叉校验)
- 触发:归档时确定保存期;季度复核。
- 动作:按文件类型分档(合同 10 年 / 财务 15 年 / 技术文档 5 年 / 临时 1 年),到期前 90 天提醒。
- 校验逻辑:期限表与归档目录交叉校验,
到期未处理率 = 0%。 - 例外:法律/合规特殊要求可延长,须有书面依据。
3.11 R13 · destruction_request.py(销毁申请单)
- 触发:文件到期 / 合规要求 / 主动申请。
- 动作:填销毁申请单
{reason, scope, method, ts, supervisor},经档案负责人批准。 - 校验逻辑:申请单 100% 留档,无单不销。
- 例外:涉密文件须经保密办 + 法务双签。
3.12 R14 · destruction_record.py(双人见证销毁记录)
- 触发:销毁申请获批。
- 动作:双人见证执行(电子:不可恢复擦除+日志;纸质:碎纸+焚烧+视频记录)。
- schema:
{method, witness, ts},缺一 = 未销毁。 - 例外:委托第三方销毁需第三方资质 + 销毁证明。
3.13 R15 · destruction_report.py(抽样复核报告)
- 触发:销毁执行完毕。
- 动作:抽样复核确认不可恢复,出销毁报告归档。
- 抽样规则:常规抽 5%;批量(>1000 件)抽 1% 且绝对抽样量 ≥ 5 件。
- 校验逻辑:销毁报告 100% 归档,季度审计复核 0 差错。
四、校验标准与闸门集成
4.1 判定标准(量化锚点,与 W1 §3.5 一致)
| 维度 | 指标 | 合格阈值 | 校验周期 |
|---|---|---|---|
| 元数据完整 | 元数据缺字段率 | ≤ 2% | 日终扫描 |
| 流转时效 | SLA 达成率 | ≥ 95% | 周报 |
| 审批留痕 | 审批日志+签章完整度 | 100% | 实时(节点闸门) |
| 归档目录 | 归档目录结构正确率 | 100% | 月度审计 |
| 保存期限 | 到期未处理率 | 0% | 季度复核 |
| 销毁准确 | 销毁报告完整度 + 抽样复核差错 | 100% / 0% | 季度审计 |
4.2 闸门清单与集成点
| 闸门 | 工具 | 拦截动作 | 集成点 |
|---|---|---|---|
| 落盘前置闸门 | metadata_checker.py | 缺 5 字段拒绝落盘 | deliverable.save_doc/save_wb |
| 流转完整性闸门 | circulation_log.py | 缺字段 = 未流转 | 跨部门流转入口 |
| 审批完整性闸门 | approval_log.py | 缺签 = 未批准 | 审批节点 |
| 驳回有效性闸门 | rejection_log.py | 空原因 = 无效驳回 | 驳回动作 |
| 销毁前置闸门 | destruction_request.py | 无单不销 | 销毁入口 |
4.3 与既有工具链的分工
- 本文工具专注流转之后阶段(元数据/流转/审批/归档/销毁);既有 4 工具专注产生阶段(命名/四件套/双端/专家闸门)。
- 二者共享同一套 N1 命名基准与
deliverable.py落盘真相源;新增工具落盘同样经deliverable校验,禁止手敲文件名。
五、实施优先级与分期
| 期次 | 工具 | 规则 | 依据 |
|---|---|---|---|
| P0(先建,与产生阶段直接衔接) | metadata_checker.py | R2 | 落盘前置,与 R1/R3 同属产生阶段硬闸门 |
| P1(流转+审批) | circulation_log / sla_monitor / approval_log / rejection_log / escalation_log | R4/R6/R7/R8/R9 | 高频动作,先实现留痕与时效 |
| P2(归档+跨系统) | archive_audit / metadata_audit / retention_check / transfer_recon | R10/R11/R12/R5 | 周期性对账,可批跑 |
| P3(销毁) | destruction_request / destruction_record / destruction_report | R13/R14/R15 | 不可逆环节,最后实现、从严校验 |
重放闸口径(V2.0.0 · 2026-09-23 L1 修复)
判据真源:本段是
~/.workbuddy/scripts/skill_upgrade.py重放闸的唯一口径真源;脚本内REPLAY_POLICY_VERSION常量须与本段同步。改口径=改本段;脚本只实现、不自备标准(宪法第16条「闸门不自备标准」)。
一、问题定性
同一条升版命令在沙箱放行后可能被重放执行两次(先受限沙箱跑一次、再放行态跑第二次),第二次在第一次产物上再 bump 一级 ⇒ 版本连跳两级、产出「内容与前版无差异的空版本」。2026-09-23 第四次实测(lihengbian_DIY_供应链评价 V1.9.0 → V1.10.0 → V1.11.0)暴露初版闸门(口径 1.0.0:单相落痕 + 三判据)存在结构性盲区,根因三条:
| 编号 | 缺陷 | 后果 |
|---|---|---|
| D1 | 落痕后置:唯一落痕点在 upgrade() 最末(四件套之后) |
中断即零痕迹,journal 不可作唯一判据 |
| D2 | 判据收窄:要求 to_ver == 当前版本,且只考察最近一条同指纹记录 |
中断产生的中间态无从命中 |
| D3 | 兜底静默:registry.dir 失效时按 bare 名扫最高版目录静默续升 |
「registry 与实盘不一致」这一铁证被用来自愈,而非拦截 |
二、新口径(口径版本 2.0.0)
最高位原则:registry 与实盘不一致必须拦截,不得静默续升。 判据主源=文件系统自身的不一致(即使 journal 被清空,亦能独立拦下重放);journal 退为辅证。
① 双相落痕(根治 D1)
- 相位一 intent:任何写动作之前(shutil.copytree 之前)落 stage='intent',记 (skill, kind, note) 指纹与预期 to_ver,返回 rec_id(由 指纹 + 时间戳 派生)。
- 相位二 done:升版成功收尾时把同 rec_id 那条改为 stage='done'。
- 落痕函数以脚本 record_intent() / record_done() 为准;record_upgrade() 保留为「intent + 立即 done」的兼容包装(供 --resume-fourpiece 使用)。dry-run 不落痕。
② 一致性硬闸 LD-R1(判据主源)
resolve_skill_dir_ex() 在 registry.dir 缺失/不存在时按 bare 名兜底扫描,并回传 via_fallback=True。upgrade() 在解析目录之后、任何写动作之前执行本闸:
若 via_fallback 为真:
reg_ver = registry[skill].version
disk_ver = 实盘最高非 .bak 目录的版本号(disk_max_version)
若 disk_ver != reg_ver → 抛 SystemExit,报「未登记的升版中间态」
若 disk_ver == reg_ver → 仅目录名漂移,放行(保留既有自愈能力)
③ 判重放判据 A/B/C(辅助判据)
遍历全部同指纹记录(不再只查首条),任一成立即判重放,取最新命中一条返回:
| 判据 | 条件 | 语义 |
|---|---|---|
| A | 同指纹且 stage=='intent' |
前次未收尾 → 命中,不论窗口(根治 D1) |
| B | 同指纹且 age <= 900s 且 to_ver == 当前版本 |
保留旧判据③ |
| C | 同指纹且 age <= 900s 且 from_ver == 当前版本 |
版本被回正后重放 |
窗口真源 REPLAY_WINDOW_SEC = 900(秒)。旧记录无 stage 键 → 不命中 A,仍走 B/C(向后兼容)。
④ 两个放行口语义分离(不可互相替代)
| 放行口 | 放行对象 | 适用场景 |
|---|---|---|
--allow-replay |
判据 A/B/C(重放闸) | 确需「同名同参」连升两级时 |
--allow-resume |
LD-R1 一致性闸 | 确认是升版中断续跑时 |
二者语义不同、不可互相替代;误用时的提示互相指路。
⑤ --reconcile 四方自洽核对入口(默认 dry-run,--apply 才写盘)
逐条报告:① registry[skill].dir 在 skills/ 下是否存在;② registry.version 与 SKILL.md frontmatter version 是否一致;③ 同一 bare 名下是否存在多个非 .bak 目录;④ journal 中 stage=='intent' 的未收尾记录;⑤ 孤立非 .bak 目录(存在但不在 registry)。
--apply 的写盘范围严格限定为「把 registry 的 dir/version 回正到实盘」这一种可逆动作(且仅在实盘该 bare 名下唯一目录时);③④⑤ 三类只报不改(涉及目录改名或删除,须人裁定)。
中断续跑的标准处置:先 --reconcile --apply 把 registry 回正到实盘,再按正常命令升版(此时 registry 与实盘已一致,LD-R1 自然放行)。
三、不变量与自证
- 不得以 stdout 自述为准:判据一律回读磁盘实况。
- V1 事故复现用例为唯一验收核心:须在 journal 为空的前提下独立拦下重放。
- 口径变更须递增
REPLAY_POLICY_VERSION并同步本段(现行'2.0.0')。
六、版本记录
| 版本 | 日期 | 变更说明 | 编制人 |
|---|---|---|---|
| V1.0.0 | 2026-08-26 | 首版发布:为 W1 未工具化规则 R2、R4–R15 提供 13 项工具链技术规格(数据模型、字段 schema、落盘格式、校验逻辑、合格阈值与分期)。 | 全域文件治理工作组 |
| V1.1.0 | 2026-08-31 | 增补附录 A「工具链版本登记表」:为 _tools/ 全域工具链脚本建立版本唯一权威登记(SC-15 例外条款「版本随 W2 统一纳管」的落表载体);纳入 C3/E4/F5/F9 主责载体与既有 4 工具,消除附录 D 数据集 P3 版本提示。 |
全域文件治理工作组 |
| V1.1.1 | 2026-08-31 | 附录 A 登记表新增专家包双脚本(dual_verify.py/dual_consensus.py V1.1.1):随专家包 V1.1.1 升版联动登记,与 G7 §1.2.1(第三篇·一、量化共识算法规范下的降级偏差定量校正)R6 实现版本一致;消除专家包脚本版本溯源缺口。 |
全域文件治理工作组 |
| V1.2.0 | 2026-09-23 | 新增「### 重放闸口径(V2.0.0 · 2026-09-23 L1 修复)」条款段(置于 §六 之前):把 scripts/skill_upgrade.py 重放闸由旧口径(单相落痕 + 三判据)升为双相落痕(intent/done)+ 判据 A/B/C + 「registry × 实盘」一致性硬闸 LD-R1 + --allow-resume/--allow-replay 语义分离 + --reconcile 核对入口,并确立「registry 与实盘不一致必须拦截」原则。缘起:2026-09-23 lihengbian_DIY_供应链评价 V1.9.0→V1.10.0→V1.11.0 连跳两级事故(D1 落痕后置 / D2 判据收窄 / D3 兜底静默)。 |
全域文件治理工作组 |
附录 A 工具链版本登记表(唯一权威,版本随 W2 统一纳管)
性质:本附录是 SC-15「版本随 W2 统一纳管」例外条款的落表载体。凡
_tools/下无__version__声明的工具链脚本,其版本号一律以本表为准(禁止在脚本内杜撰版本号);升版时同步更新本表并登记变更。
登记口径:版本号取自脚本头实测(如skill_upgrade.py头注 V1.3.2);无版本语义的钩子/模板类(install_naming_hook.sh、hooks/pre-commit)登记为「随 W2 纳管」。
| 工具(脚本) | 版本 | 登记说明 |
|---|---|---|
deliverable.py |
随 W2 统一纳管 | 核心库(命名/路径/落盘硬约束),全域唯一落盘真相源;无 __version__,版本以本表为准 |
check_deliverables.py |
随 W2 统一纳管 | 交付物合规校验关卡(CI);无 __version__ |
assert_fourpiece.py |
随 W2 统一纳管 | 四件套后置断言闸门;无 __version__ |
naming_audit.py |
随 W2 统一纳管 | 命名全域扫描器(只读);无 __version__ |
check_dual_end.py |
随 W2 统一纳管 | 双端同步校验器(只读);无 __version__ |
region_gate.py |
随 W2 统一纳管 | 区域路由硬闸门(fail-closed);无 __version__ |
linkage_health.py |
随 W2 统一纳管 | 发布盘四件套↔源端回链体检;无 __version__ |
scenario_coverage.py / scenario_code_check.py / scenario_ref_check.py / scenario_six_elements.py |
随 W2 统一纳管 | 场景四扫描器(周报巡检只读);无 __version__ |
install_naming_hook.sh / hooks/pre-commit |
随 W2 纳管 | git 门禁安装器/模板(无版本语义) |
skill_upgrade.py(~/.workbuddy/scripts/) |
V1.3.2 | 脚本头实测(唯一具显式版本号的工具链主载体;脚本内 SCRIPT_VERSION/REPLAY_POLICY_VERSION 为功能口径常量,非整体版本——见上方口径附注) |
expert_upgrade.py(~/.workbuddy/scripts/) |
V1.1.2 | 脚本头实测 |
dual_verify.py(专家包 plugins/.../lihengbian-dual-verify/scripts/) |
V1.2.1 | 脚本头实测(异源双模校核双路调用:模型名回检、空返回重试去重、REVIEW 重校上限) |
dual_consensus.py(专家包 plugins/.../lihengbian-dual-verify/scripts/) |
V1.2.1 | 脚本头实测(共识量化:Kappa/Jaccard/Cosine_adj→S_adj,匈牙利配对;V1.1.1 增 R6 校正、V1.2.0 改 per-pair 粒度 + --rerun/--arbitrate 入口) |
变更记录:版本登记表升版随 W2 版本记录联动;凡涉及表中工具的功能/接口变更,须在 W2 版本记录追加一行并同步更新本表。
宪法 > 基本法 > 行政法规 > 地方法规 > 地方规章