# 慧博 10 分钟快速采集工具实现交付 V001 ## 1. 事项与审核边界 - task:`DEV-ANA-HIBOR-FAST-COLLECTION-20260729-001` - source handoff:`HANDOFF-YANBAO-DEV-ANA-HIBOR-FAST-COLLECTION-TOOL-20260729-001` - owner / independent reviewer:`dev.developer.ana.cai` / `dev.reviewer.ana.cai` - governing design:`CODE-DESIGN-ANA-HIBOR-FAST-COLLECTION-V011`,snapshot=`6870/44bf989e22088e2b79f8557e9f6ae3c5de530cdb6c922ab86250cba297949a4e` - design audit:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-DESIGN-V011=PASS/0/0`,snapshot=`420253/c7b3886a126f6e22ab2b6a2832b97d50a560151d456e48338f4d407b9310d5de` - 本轮只实现候选代码、静态/单元/契约/假设备端到端测试。未连接慧博 APP,未发送 ADB 命令,未触发下载,未创建正式额度账本,新增真实 trigger=`0`。 ## 2. 实现结果 实现位置:`dev/ana-dev/hibor_fast_collection/`。 1. `models/budget/process`:固定 TaskSpec、错误/终态枚举、单调时限、无 shell 子进程、分流 stdout/stderr、超时进程树终止。 2. `adb/ui/selection/cache`:固定包名/缓存根、唯一在线设备预检、FAST 3–5 屏与 20/100 上限、详情页硬过滤、精确标题重新定位、访问控制停止、缓存基线与唯一稳定新增文件识别。 3. `quota`:34 列 append-only 额度账本;30/25/27/3;2026-07-29 缺失账本保守 floor=3;reservation、confirmed/uncertain/release、artifact terminal、重放冲突与 safe=0 STOP。 4. `archive/manifests/items/terminal`:ADB pull 后远端/本地 bytes/SHA-256、PDF magic、`pdfinfo` openability/page/encryption、hard-link no-replace 发布、48 列 manifest、26 键 item、51 键 V009 终态和 43 键兼容投影。 5. `workflow/cli`:显式 `--execute` 门;单份/同查询批量编排;开始/结果/详情/结束截图;manifest、metadata-only delivery、timing、terminal;10 分钟工作时限与 close reserve;失败保留有效子集。 6. 禁止边界:不修改/删除/重命名模拟器原件,不保存认证秘密,不绕过登录/验证码/付费/权限,不解析正文,不生成研究结论。 ## 3. 无外部副作用验证 执行目录:`dev/ana-dev`。 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -m unittest discover -s test\hibor_fast_collection -p test_*.py -v Ran 22 tests in 1.460s OK ``` 覆盖:TaskSpec 键序/批量预算、deadline、quota baseline/reserve/replay/conflict/safe0、CreateNew/PDF magic/no-replace/duplicate、48 列 manifest、FAST early-stop、cache stable/ambiguous、51/43 键 terminal、terminal exact replay/drift、child stdout/stderr/timeout、显式执行门、合成单份全链成功、额度耗尽、cache timeout→uncertain/27、硬过滤拒绝。 合成端到端使用假 ADB、假 UI 和合成 PDF;未执行候选 CLI 的真实 `--execute` 分支。 ## 4. 文件清单(普通源码语义验收;hash 用于本次复核定位) | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/__init__.py` | 273 | `089706b3ab8116480f046feb3a11a9852e28a9c629e3b927757596ea41de5580` | | `dev/ana-dev/hibor_fast_collection/__main__.py` | 48 | `935a1c1166b0c1ea35a82256345000bf2c73ded718d77773bc27a71ecce28f7d` | | `dev/ana-dev/hibor_fast_collection/adb.py` | 8706 | `bbb8ea3800cf9c83acdbea0079b3c9ca2ae8059bf86f29b65f2e8f2d4a122ead` | | `dev/ana-dev/hibor_fast_collection/archive.py` | 4528 | `771ccda5a68dfc8d6e38ee0e92054d4b4b59584d01563ce2b843e45f159a9f42` | | `dev/ana-dev/hibor_fast_collection/budget.py` | 1730 | `f4012326c057ac6f7736154231e8d74476f935b4bb1b2cc88bdd8a71776d6365` | | `dev/ana-dev/hibor_fast_collection/cache.py` | 1961 | `4d4b408a8274d16e247ee822ae8185daca1077fc014a854d16afd78c25174781` | | `dev/ana-dev/hibor_fast_collection/cli.py` | 2602 | `7e1375917fd285053b64865772215609e245736d3fae11aa7be06ac906b4b168` | | `dev/ana-dev/hibor_fast_collection/items.py` | 3182 | `17631aef3406fcf107f34a978bea09fa1f682a5a873551d2ca06a963c0cb152b` | | `dev/ana-dev/hibor_fast_collection/manifests.py` | 3566 | `c354460257fd93fccedbfeb3eb093f451d8a74018ad6451451b4e6ffbfb916e7` | | `dev/ana-dev/hibor_fast_collection/models.py` | 11981 | `6287e6db4e2955398032ba2024d79422b8a8401a2945c298e9680f100882c485` | | `dev/ana-dev/hibor_fast_collection/process.py` | 4197 | `d004831f0d0e3e6df19b613da087afd3486afe70dd6ab53788adfb55b7e48613` | | `dev/ana-dev/hibor_fast_collection/quota.py` | 15321 | `34c01b64f8b14eff9f2cdb4998d3fedcf9f850315f83c08ea58955fe4c0c1325` | | `dev/ana-dev/hibor_fast_collection/README.md` | 1959 | `2c0e89eda8ae0443ec281cc6083bf44c12ee31ab8b82ea13c5cf978ba9ccfe0f` | | `dev/ana-dev/hibor_fast_collection/selection.py` | 3235 | `605e957fa40cdfd9d67dd3cd6fc3866ce334c0a96587b385de0f87e491b5bbec` | | `dev/ana-dev/hibor_fast_collection/terminal.py` | 8666 | `cc0fc9c0ddb35b41fe515e9dee1510b6454c5dd74dda27f0c2b82e03c8dd2a4c` | | `dev/ana-dev/hibor_fast_collection/ui.py` | 7964 | `d192a4a7e36b358e0791539a91fd8e114fb8e541180d9119f8cfa2619fccb5a2` | | `dev/ana-dev/hibor_fast_collection/workflow.py` | 39009 | `28bda70f75b74430e9b0c3201c0f32e27ed70b7cc69b32d5ddb332dda4b315f9` | | `dev/ana-dev/test/hibor_fast_collection/__init__.py` | 0 | `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` | | `dev/ana-dev/test/hibor_fast_collection/helpers.py` | 1914 | `3f9a5d3c3345039da9a0f5f28e3aabb38a4c1691df08fba0d79d557137fff793` | | `dev/ana-dev/test/hibor_fast_collection/test_archive_manifest.py` | 3304 | `87e8fa051cf04975c8b28fa6e49a762fc73396741628bd104775238f6631b38b` | | `dev/ana-dev/test/hibor_fast_collection/test_cache_selection_terminal.py` | 2730 | `48298976c46b0082d0064f715fddb433f29bf43cdfd3fd848c177f5aa8fbe989` | | `dev/ana-dev/test/hibor_fast_collection/test_cli_dry_run.py` | 1219 | `64c694a4f4f5d91526ec7665349bce3d7b950b3e5cde3dee3138a9db4da9e1fa` | | `dev/ana-dev/test/hibor_fast_collection/test_models_budget.py` | 2695 | `f02df15c0fc81f031b4328cff4ea9408a7fd4f86b872d5dbe6e5238758b31ab0` | | `dev/ana-dev/test/hibor_fast_collection/test_process_terminal_writer.py` | 2675 | `96e4515c0019bdad2d70fb20ddf53aa6d54f8495ab4fa2f5ce31fefb432c0b3b` | | `dev/ana-dev/test/hibor_fast_collection/test_quota.py` | 3241 | `e12a9a70cde4ca94b9afda50a9e029a59419f6283657739ebda938143a61a1ef` | | `dev/ana-dev/test/hibor_fast_collection/test_workflow_fake_e2e.py` | 6864 | `a9df46d95987a1cbe583a8978d13b4e516e9db67b3e2d69db6d2d8fb0fd1226d` | 说明:普通源码按已批准的项目级 L0/L1 语义验收;上述 hash 不是将普通源码重新升级为不可修改的正式原件。后续审查修复可以正常修改并重新测试。 ## 5. 待独立审核与后续门 - 当前状态:`PENDING_INDEPENDENT_IMPLEMENTATION_REVIEW`。 - 请求 reviewer 核心检查:SLA 时限是否可执行、FAST 选取/硬过滤、额度 30/25/27/3、缓存唯一性、remote/local bytes/hash、PDF magic/openability/page、no-overwrite、失败重跑、manifest/terminal 真实性、访问控制边界。 - 只有实现审核 PASS 后,才另行提交真实 APP dry-run/10 样本性能验证方案与额度边界。当前不主张真实性能已达标。 ## 6. 后续真实性能测试对象补充 - 来源:`HANDOFF-YANBAO-DEV-ANA-HIBOR-REAL-TEST-SUBJECTS-20260729-001`;人类已明确允许使用三环集团、国瓷材料、MLCC 相关研报作为后续真实性能样本。 - 建议总体仍为 6 个 collect-one + 1 个同查询 4-item batch;三类目标中按正式硬过滤、评分和 APP 可见事实选取,不保证每类固定数量。 - 总 distinct new download trigger 不超过 10;2026-07-29 首次真实账本仍保守纳入中国中免既有至少 3 次触发;safe_available 不足即保留有效子集并顺延。 - 重复、主体不唯一、字段不完整、非 PDF、损坏文件、访问控制或触发不确定不得伪装成成功;触发后的失败/不确定按正式额度规则登记。 - 本补充只冻结测试 subject scope,不放开真实 ADB/APP 执行;仍需本实现独立审核 PASS 和后续真实执行门。 ## 7. 2026-07-29 实现返修 V002 - 前序实现审核:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-IMPLEMENTATION-V001=HOLD/3/3`,审计定位为 `ana-doc/案例审计报告.md:2972`,快照为 `430711/c4c687345fd45276367ad00e27bc7fff5e5ad8d9679fa20339a6bd8d2c5db3b4`。 - 本次属于 V011 设计内的可修复 L1 实现返修,没有改变上游需求、架构和真实执行边界,因此不新增设计版本。 - 当前候选只执行静态、单元、synthetic/fake 与 local-child 测试;真实 ADB/APP、下载 trigger、正式额度登记和真实性能样本仍为 `0`。 ### 7.1 三项阻断关闭实现 1. `BLOCK-HIBOR-IMPL-01`:`Budget` 将首份绝对截止时间绑定到 `observed_at_utc+600s`,后续每份绑定到上一份终态后的 `+240s`,同时受全局 close reserve 约束;ADB、UI/cache、pull、hash、pdfinfo、发布、quota、manifest、delivery、timing、terminal 均通过同一 Remaining 提供器或 checkpoint 传播预算。新增 fake-clock、批量增量、close-reserve 和超时终态测试。 2. `BLOCK-HIBOR-IMPL-02`:新增持久化 `APP_RECONCILE` 观察事件与 reserve 绑定;活动或已终态 reservation 重放都不会再次触发;在 reservation 之前新增经 PDF/hash/页数/硬过滤核验的 `PROJECT_REUSE` 和显式 `CACHE_REUSE`,支持 `safe_available=0` 且额度账本 byte-identical。新增重放、并发最后一槽、纯复用、混合批次和零额度向量。 3. `BLOCK-HIBOR-IMPL-03`:P00-P10 只按实际持久化闭合推进;冲突 manifest 不再被公开为已验证路径;PDF 在最终目录内用排他临时文件、fsync/读回校验和 hard-link no-replace 发布,固定 TaskSpec 派生固定 run id;manifest/delivery/timing/terminal 均为 CreateNew 或精确重放,冲突只返回已验证前缀。新增跨卷 staging、P06-P10 冲突、崩溃式已有终态、终态重放和 receipt 真实性测试。 ### 7.2 本地回归结果 执行目录:`dev/ana-dev`。 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -W error::ResourceWarning -m unittest discover -s test\hibor_fast_collection -p test_*.py -v Ran 34 tests in 6.089s OK ``` 覆盖结果:原 22 项全部无回归,新增 12 项覆盖绝对/增量期限、APP_RECONCILE、reservation 重放与并发、PROJECT/CACHE 纯复用、safe0 账本不变、混合批次、跨卷发布、manifest/delivery/timing/terminal 冲突、无效终态和超时停机。`ResourceWarning` 被配置为测试失败。 ### 7.3 当前源与测试快照 普通源文件继续按项目 L1 语义验收;以下 bytes/hash 仅用于本次独立复核定位,不把源代码升级为不可修复原件。 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/__init__.py` | 273 | `089706b3ab8116480f046feb3a11a9852e28a9c629e3b927757596ea41de5580` | | `dev/ana-dev/hibor_fast_collection/__main__.py` | 48 | `935a1c1166b0c1ea35a82256345000bf2c73ded718d77773bc27a71ecce28f7d` | | `dev/ana-dev/hibor_fast_collection/adb.py` | 9256 | `bc266e0b8c0b41e073a688ff85bbc94e4005f6961f1072d5dbb42e5f2027bbd3` | | `dev/ana-dev/hibor_fast_collection/archive.py` | 7848 | `bd373a7b4f03c3334caf39ac7ee79c1403b2566b5ba77ff95c92a85c8367b97c` | | `dev/ana-dev/hibor_fast_collection/budget.py` | 4112 | `7565298bf45e150cc04cd0b4a034cd3b7830bbec269bda7f22dc33992270c1a2` | | `dev/ana-dev/hibor_fast_collection/cache.py` | 1961 | `4d4b408a8274d16e247ee822ae8185daca1077fc014a854d16afd78c25174781` | | `dev/ana-dev/hibor_fast_collection/cli.py` | 2602 | `7e1375917fd285053b64865772215609e245736d3fae11aa7be06ac906b4b168` | | `dev/ana-dev/hibor_fast_collection/items.py` | 3182 | `17631aef3406fcf107f34a978bea09fa1f682a5a873551d2ca06a963c0cb152b` | | `dev/ana-dev/hibor_fast_collection/manifests.py` | 5091 | `694eae122b937b66960e171753a1fac03661a394d6a1b1890255ccddf7eac977` | | `dev/ana-dev/hibor_fast_collection/models.py` | 12582 | `3c87f6819107ba47fe8fcc9e7703fa5cee1a381ef25c3465e8ac224a547aeff1` | | `dev/ana-dev/hibor_fast_collection/process.py` | 4947 | `087ca12da9c663812b9bfd7db154982ae28951c93944db8a3315e87cd5016e23` | | `dev/ana-dev/hibor_fast_collection/quota.py` | 21707 | `f72ed21facdb2a9781f05bd0ce714944028d9b06fb7eef09663a21721a80cefb` | | `dev/ana-dev/hibor_fast_collection/README.md` | 1959 | `2c0e89eda8ae0443ec281cc6083bf44c12ee31ab8b82ea13c5cf978ba9ccfe0f` | | `dev/ana-dev/hibor_fast_collection/selection.py` | 3235 | `605e957fa40cdfd9d67dd3cd6fc3866ce334c0a96587b385de0f87e491b5bbec` | | `dev/ana-dev/hibor_fast_collection/terminal.py` | 10129 | `89d2de9b32ec400246752c8d000d7c7029904dcbc2e4f536a29f202a8c3f502f` | | `dev/ana-dev/hibor_fast_collection/ui.py` | 9610 | `0ab290a96f2acebb92f9bbf23cc3f476b52bf98470ac425eecea5fcb5dd93bf7` | | `dev/ana-dev/hibor_fast_collection/workflow.py` | 63994 | `d2f33c999452ba3a2cc67f2da9bbfc05904309e057992fdee94aae48388b4494` | | `dev/ana-dev/test/hibor_fast_collection/__init__.py` | 0 | `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` | | `dev/ana-dev/test/hibor_fast_collection/helpers.py` | 1993 | `2c6999a9823cc815b71abf0f246f9367b173df39e5a4d2558a852c7cdcf90a17` | | `dev/ana-dev/test/hibor_fast_collection/test_archive_manifest.py` | 4455 | `fef12e1d13ec643818459f2d89114a10700ff3913c17ddb1b4c938cc595551a0` | | `dev/ana-dev/test/hibor_fast_collection/test_cache_selection_terminal.py` | 2730 | `48298976c46b0082d0064f715fddb433f29bf43cdfd3fd848c177f5aa8fbe989` | | `dev/ana-dev/test/hibor_fast_collection/test_cli_dry_run.py` | 1219 | `64c694a4f4f5d91526ec7665349bce3d7b950b3e5cde3dee3138a9db4da9e1fa` | | `dev/ana-dev/test/hibor_fast_collection/test_models_budget.py` | 3464 | `f420f773c1ad4258019eceb9cb0be90caaaf009ef5d0cc531ea8c3b95050f66a` | | `dev/ana-dev/test/hibor_fast_collection/test_process_terminal_writer.py` | 2675 | `96e4515c0019bdad2d70fb20ddf53aa6d54f8495ab4fa2f5ce31fefb432c0b3b` | | `dev/ana-dev/test/hibor_fast_collection/test_quota.py` | 6088 | `543c8b37374ca783316258f218f6509475892e651726be8f2870195a0cb77505` | | `dev/ana-dev/test/hibor_fast_collection/test_workflow_fake_e2e.py` | 18666 | `ea392a41738ff92f794f1919720f18fe9e8b086f952f3f5345189c921b89adf9` | ### 7.4 返修终态 - 实现状态:`PENDING_SUCCESSOR_INDEPENDENT_IMPLEMENTATION_REVIEW`。 - 请求 reviewer 复核三项 blocker、34 项测试及上述当前快照;在 reviewer PASS 前不启动真实 APP/ADB。 - 后续真实样本仍限定为三环集团、国瓷材料、MLCC,最多 10 个 distinct new trigger,并保守计入 2026-07-29 已知中国中免至少 3 次消耗;该范围登记不等于当前真实执行授权。 ## 8. 2026-07-29 实现返修 V003 - 前序 successor 审核:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-IMPLEMENTATION-V001-REREVIEW-001=HOLD/2/2`,审计定位为 `ana-doc/案例审计报告.md:3008`,快照为 `436108/1d620cbd99e1164789bf579394881b0854574ebe9ac3eebf398e654bde4f4651`。 - `BLOCK-HIBOR-IMPL-02` 已由前序复审确认关闭;本轮只修复仍部分开放的 `BLOCK-HIBOR-IMPL-01/03`,V011 继续充分且无架构变化。 ### 8.1 本轮关闭内容 1. 时间模型现在分别维护 `batch_close`、`batch_work`、`item_close` 和 `item_work`。首份严格为 `observed_at+600s`,首份工作截止扣除 close reserve;后续 `item_close` 只接受已记录的上一份 item terminal monotonic 再加 240 秒,未记录上一份终态时禁止开启下一份。item quota 收口使用 item close,最后 manifest/delivery/timing/public terminal 使用 batch close。 2. `TerminalWriter.persist` 将 pre-attempt deadline 纳入 receipt 边界;batch close 已耗尽时返回 N/no-attempt 的内存终态,由 workflow 公开为 `TIME_BUDGET_STOP/10/DEADLINE_EXPIRED`,不再向调用者泄漏 `BudgetExpired`。 3. delivery 改用与 manifest/timing 一致的 CreateNew-or-exact-replay 写入器:同字节恢复成功,异字节漂移返回 `PERSIST_LATE` 且不公开为 verified delivery。 4. PDF final-directory recovery staging 只有赢得本次 `O_EXCL` 的尝试才拥有 unlink 权;读取到的既有同名 recovery 对象即使验证成功,也不会被非所有者删除。 ### 8.2 返修回归 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -W error::ResourceWarning -m unittest discover -s test\hibor_fast_collection -p test_*.py -q Ran 38 tests in 7.245s OK ``` 新增 4 项直接覆盖:`570s/600s/840s` first work/item-close/batch-close 向量、上一 item terminal 绑定的 `+240s` 与 reserve、expired batch terminal 的 T00B 内存返回、delivery exact/drift replay,以及 recovery staging 非所有者不清理。原 34 项全部无回归。 ### 8.3 当前 26 文件复核矩阵 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/__init__.py` | 273 | `089706b3ab8116480f046feb3a11a9852e28a9c629e3b927757596ea41de5580` | | `dev/ana-dev/hibor_fast_collection/__main__.py` | 48 | `935a1c1166b0c1ea35a82256345000bf2c73ded718d77773bc27a71ecce28f7d` | | `dev/ana-dev/hibor_fast_collection/adb.py` | 9256 | `bc266e0b8c0b41e073a688ff85bbc94e4005f6961f1072d5dbb42e5f2027bbd3` | | `dev/ana-dev/hibor_fast_collection/archive.py` | 8049 | `cb75fc6df0e3b07688df29ce087799c2b1e4189799a5938ca2023845bd16596b` | | `dev/ana-dev/hibor_fast_collection/budget.py` | 6307 | `6d04dc758a4e75efb28ea7b822657d86c4c8327de44fa5a6b7e222ae065d390f` | | `dev/ana-dev/hibor_fast_collection/cache.py` | 1961 | `4d4b408a8274d16e247ee822ae8185daca1077fc014a854d16afd78c25174781` | | `dev/ana-dev/hibor_fast_collection/cli.py` | 2602 | `7e1375917fd285053b64865772215609e245736d3fae11aa7be06ac906b4b168` | | `dev/ana-dev/hibor_fast_collection/items.py` | 3182 | `17631aef3406fcf107f34a978bea09fa1f682a5a873551d2ca06a963c0cb152b` | | `dev/ana-dev/hibor_fast_collection/manifests.py` | 5698 | `e20aa6719131d2222d894e4ae455354a1790a7a2e77bb6825077278dfb277d9f` | | `dev/ana-dev/hibor_fast_collection/models.py` | 12582 | `3c87f6819107ba47fe8fcc9e7703fa5cee1a381ef25c3465e8ac224a547aeff1` | | `dev/ana-dev/hibor_fast_collection/process.py` | 4947 | `087ca12da9c663812b9bfd7db154982ae28951c93944db8a3315e87cd5016e23` | | `dev/ana-dev/hibor_fast_collection/quota.py` | 21707 | `f72ed21facdb2a9781f05bd0ce714944028d9b06fb7eef09663a21721a80cefb` | | `dev/ana-dev/hibor_fast_collection/README.md` | 1959 | `2c0e89eda8ae0443ec281cc6083bf44c12ee31ab8b82ea13c5cf978ba9ccfe0f` | | `dev/ana-dev/hibor_fast_collection/selection.py` | 3235 | `605e957fa40cdfd9d67dd3cd6fc3866ce334c0a96587b385de0f87e491b5bbec` | | `dev/ana-dev/hibor_fast_collection/terminal.py` | 10595 | `4bc02f445ac1153e124aad6892d99b51669682476d0f5c2524ecbb53eb778715` | | `dev/ana-dev/hibor_fast_collection/ui.py` | 9610 | `0ab290a96f2acebb92f9bbf23cc3f476b52bf98470ac425eecea5fcb5dd93bf7` | | `dev/ana-dev/hibor_fast_collection/workflow.py` | 66848 | `85e9e99931aba2632c5a3da6babb2cddb1668cadc876b1daf960be9bd06e7e74` | | `dev/ana-dev/test/hibor_fast_collection/__init__.py` | 0 | `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` | | `dev/ana-dev/test/hibor_fast_collection/helpers.py` | 1993 | `2c6999a9823cc815b71abf0f246f9367b173df39e5a4d2558a852c7cdcf90a17` | | `dev/ana-dev/test/hibor_fast_collection/test_archive_manifest.py` | 5813 | `76cc47d30cb9d1c8a356da6809bad479440e5c74e6d4844677ec31ead9d8838d` | | `dev/ana-dev/test/hibor_fast_collection/test_cache_selection_terminal.py` | 2730 | `48298976c46b0082d0064f715fddb433f29bf43cdfd3fd848c177f5aa8fbe989` | | `dev/ana-dev/test/hibor_fast_collection/test_cli_dry_run.py` | 1219 | `64c694a4f4f5d91526ec7665349bce3d7b950b3e5cde3dee3138a9db4da9e1fa` | | `dev/ana-dev/test/hibor_fast_collection/test_models_budget.py` | 4215 | `f943ed633f43a54b6693a8f4e6459bb5f748fca1d3bd7eb6273e41736051deea` | | `dev/ana-dev/test/hibor_fast_collection/test_process_terminal_writer.py` | 3631 | `66878773f01ed418da5a32d30c72b7874cc7b137b2c92ad2626994177933ea8a` | | `dev/ana-dev/test/hibor_fast_collection/test_quota.py` | 6088 | `543c8b37374ca783316258f218f6509475892e651726be8f2870195a0cb77505` | | `dev/ana-dev/test/hibor_fast_collection/test_workflow_fake_e2e.py` | 19788 | `a4d484f144958eab76841cc4cfa4cee616c9d84ea4f0574632ce87ab1178bc84` | ### 8.4 当前终态 - 状态:`PENDING_SECOND_SUCCESSOR_INDEPENDENT_IMPLEMENTATION_REREVIEW`。 - 真实 ADB/APP、下载、正式 quota、真实性能样本仍为 `0`;本返修不请求或暗含真实执行权限。 ## 9. 2026-07-30 实现返修 V004 - 前序第二次复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-IMPLEMENTATION-V001-REREVIEW-002=HOLD/1/1`,审计快照 `441024/344cf0de92ec50a67baf04aba164a6cba6d01136782907fd362c4fba07828a9a`。 - `BLOCK-HIBOR-IMPL-01` 已关闭,`BLOCK-HIBOR-IMPL-02` 已关闭且无账本回退;本轮仅修复 `BLOCK-HIBOR-IMPL-03` 剩余的 durable quota/artifact/PDF 事实投影问题。 ### 9.1 唯一 blocker 的关闭实现 1. 失败收口不再把任何已持久化的 `CONSUME_CONFIRMED` 误投影为 `RELEASED`。公开 `quota_state` 现在由实际 terminal event 严格映射:`CONSUME_CONFIRMED→CONFIRMED`、`CONSUME_UNCERTAIN→UNCERTAIN`、`RELEASE→RELEASED`,未知类型 fail closed。 2. 若 `ARTIFACT_SUCCESS` 已持久化,失败收口复用该 event,不再写第二个 artifact;若 PDF 已成功发布而 artifact 尚未落账,close-reserve 路径按实际发布结果补写 success/duplicate 事实,而不是无条件写 failure。 3. item-close 临界超时仍保留已验证的 PDF bytes、SHA-256、final path、cache path/name、remote hash 及 artifact event id。manifest 的下载状态反映 durable artifact(`SUCCESS`/`DUPLICATE`),而 item 终态和 `stop_code` 继续准确表达本次 SLA 停止。 4. dry-run 的 2026-07-29 保守基线测试改用固定 Asia/Shanghai 日期,消除午夜跨日导致的测试漂移;生产额度逻辑未变。 ### 9.2 回归验证 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -W error::ResourceWarning -m unittest discover -s test\hibor_fast_collection -p test_*.py -q Ran 40 tests in 8.059s OK git diff --check -- dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 mbx validate --project project-info --governance OK / warnings=0 ``` 新增两项 reviewer 指定的 fake 回归: - `CONSUME_CONFIRMED` 后发生 remote/local hash 校验失败:item=`CONFIRMED`,账本保留 confirmed 与 artifact-failed,manifest event id 与 item 一致,不出现 RELEASE。 - `ARTIFACT_SUCCESS` 后 fake clock 跨过 item-close:公开终态为 `TIME_BUDGET_STOP/DEADLINE_EXPIRED`,item/manifest 仍保留 PDF bytes/hash/path 与同一个 artifact success,账本无第二个 artifact。 ### 9.3 本轮变更文件快照 普通 L1 源码继续按语义验收;以下 bytes/hash 仅用于本次独立复核定位。其余 23 个源码/测试文件与 8.3 矩阵一致。 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/workflow.py` | 70207 | `1a071c3aa21449eb9339dc99f26e8b9c0f6804b6f37deca1e3764c2802c2d019` | | `dev/ana-dev/test/hibor_fast_collection/test_cli_dry_run.py` | 1496 | `e463aa724d5f54a36ffd7b23ca637189580ace66936e7a61974079702887e974` | | `dev/ana-dev/test/hibor_fast_collection/test_workflow_fake_e2e.py` | 23936 | `ae278a5c6da19b6ca4c0813305809b0c8805212cf9ca50a95351ff701cfe08ab` | ### 9.4 当前终态 - 状态:`PENDING_FINAL_SUCCESSOR_INDEPENDENT_IMPLEMENTATION_REREVIEW`。 - 真实 ADB/APP、下载 trigger、quota 增量、真实性能样本仍为 `0/0/0/0`。 - 下一步仅提交同一 `dev.reviewer.ana.cai` 复核该唯一 blocker;PASS 前不进入真实 APP 性能执行。 ## 10. 2026-07-30 实现审核终态 - 独立审核:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-IMPLEMENTATION-V001-REREVIEW-003=PASS/0/0`。 - 审计快照:`445118/7396c2b94345b40efe76a7e75c2c947966d6a7e6727acf1a251b648e5fb22d9a`;前序 `441024/344cf0de92ec50a67baf04aba164a6cba6d01136782907fd362c4fba07828a9a` 历史前缀保持不变。 - blocker:`BLOCK-HIBOR-IMPL-01=CLOSED_NO_REGRESSION`、`BLOCK-HIBOR-IMPL-02=CLOSED_NO_REGRESSION`、`BLOCK-HIBOR-IMPL-03=CLOSED`;`required_fixes=NONE`。 - 独立复核结果:26 个源码/测试快照匹配,`compileall=PASS`、`unittest=40/40 PASS`、两项定向 fake 向量 PASS、`git diff --check=PASS`、MB-X validation=`OK/warnings=0`。 - 实现阶段状态:`IMPLEMENTATION_REVIEW_PASS`。这不等于真实 SLA 已通过;下一阶段只允许提交独立的 dry-run/10 样本真实性能方案与授权申请。 ## 11. 2026-07-30 性能计划可执行链返修 V005 - 性能计划 V001 复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-REAL-PERFORMANCE-PLAN-V001=HOLD/1/1`,审计快照 `450638/260843d69b1665a7cb880f72a3f62d0e0436a5575ac3eac1ee9482723cd23c91`。 - 合并 blocker:`BLOCK-HIBOR-PERF-PLAN-01=PRE_RESERVE_IDENTITY_AND_TIMING_EVIDENCE_CHAIN_NOT_EXECUTABLE`。本轮只补齐该计划要求的执行入口和证据字段,不改变慧博访问控制、额度上限、PDF 原件、manifest 或 SLA 目标。 ### 11.1 实现修复 1. 新增 `discover` 只读 APP 入口:允许搜索、扫描和打开详情核验,但不会调用下载 trigger、创建/修改 quota ledger、拉取缓存或发布文件;输出 `HIBOR_FAST_DISCOVERY_V001`,包含逐候选精确 `report_identity/title/institution/report_date/page_count`。 2. TaskSpec 升级为 `HIBOR_FAST_TASK_SPEC_V004`,新增按 item 有序的 `expected_reports`。`collect-one/batch` 在 quota reserve 和点击下载前,对详情页的五个冻结字段与身份 SHA-256 做精确相等校验;不一致立即 `BLOCKED_INPUT`,不 reserve、不点击。 3. timing 升级为 `HIBOR_FAST_TIMING_V002`,持久化每个 item 的 start/work-deadline/close-deadline/terminal monotonic ns、item elapsed、相邻 terminal 增量和 deadline_met,使 batch I02–I04 的 240 秒目标可独立复算。 4. 新增 `hibor_fast_collection.performance` 性能包生成器:计划与汇总均使用 CreateNew 或 exact-byte replay;drift 拒绝。计划强制绑定执行日 ledger、历史 `2026-07-29` ledger 文件名/日期、最多 10 trigger、只读 discovery hash 和 10 个唯一 report identity;汇总从逐样本时长/证据与 quota 事实重新计算 median、nearest-rank P90、batch first/increment 及 PASS/FAILED/INSUFFICIENT。 5. 旧 `HIBOR_FAST_TASK_SPEC_V003` 仅保留 dry-run/resume 兼容读取;任何真实 collect 都必须使用 V004 精确身份合同。 ### 11.2 定向验证 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -W error::ResourceWarning -m unittest discover -s test\hibor_fast_collection -p test_*.py -q Ran 44 tests in 6.612s OK git diff --check -- dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 ``` 新增四个合并验收向量: - discovery 返回精确候选且 `quota_ledger_touched=false/trigger_attempted=false`; - 冻结 identity/详情字段漂移在 reserve 与 tap 前停止,ledger 不出现 `RESERVATION`; - fake clock 证明 item terminal 增量、item-close deadline 与 V002 timing 可复算; - performance plan/summary 首次 CreateNew、相同 replay 接受、drift 拒绝,并从 10 样本计算 PASS。 ### 11.3 变更定位快照 普通 L1 源码按语义验收;bytes/hash 仅用于本次独立复核定位。 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/models.py` | 15136 | `3d5fd0cbd65b02f804a968f29c32eecd29d867544f0f8c05f469c553571e02d4` | | `dev/ana-dev/hibor_fast_collection/cli.py` | 3555 | `5fb48febb2a0e86c9f0562e177dd137ed3b4ad7af22a06ca5bb61dd66f4d2e9d` | | `dev/ana-dev/hibor_fast_collection/workflow.py` | 77723 | `2043f4c8ee180509f70f0019353ebeccc8d41912a82a33bd20bb50b78d49ca57` | | `dev/ana-dev/hibor_fast_collection/performance.py` | 14224 | `f61449cb11e83cc43c86f8a986db944bcdf2c33a4423c91eb7853f3ceff37bec` | | `dev/ana-dev/test/hibor_fast_collection/helpers.py` | 2907 | `fe40358f17cebe7630a5c36547768d6cfaaad31f4af25c7707ffc7a97181388e` | | `dev/ana-dev/test/hibor_fast_collection/test_discovery_performance.py` | 8824 | `136b4260bc4287ba9adca602bcab67011636a087ea401d5e50a876336ab46c15` | ### 11.4 当前终态 - 状态:`PENDING_SUCCESSOR_IMPLEMENTATION_REREVIEW_FOR_PERFORMANCE_EXECUTABILITY`。 - 源码/测试文件数为 27;本轮真实 ADB/APP、download trigger、quota 增量、真实性能样本仍为 `0/0/0/0`。 - 下一步只提交 `dev.reviewer.ana.cai` 复核本节。实现 successor PASS 后再发布性能计划 V002;在此之前不申请、不执行真实 APP 性能任务。 ## 12. 2026-07-30 证据根驱动返修 V006 - 前序 successor 实现复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-PERFORMANCE-EXECUTABILITY-IMPLEMENTATION-REREVIEW-001=HOLD/1/1`,审计快照 `456675/54af4ce13cb9aee7f00e2739b8b082b30bac82b3b7a9c82c0d2187ce5830f83c`。 - 已关闭的 discovery、V004 reserve/tap 前身份校验与 V002 monotonic timing 保持不回退;唯一剩余项是 `BLOCK-HIBOR-PERF-PLAN-01=OPEN_PARTIALLY_FIXED_BY_UNVERIFIED_PERFORMANCE_ASSERTIONS`。 ### 12.1 不再信任调用方断言 1. 删除旧的 `samples + quota + 全 true 布尔值` 汇总接口。正式汇总入口现在只接受 `plan + evidence_root + ordered evidence paths`,不存在调用方提交 `pdf_magic_pass/hash_match_pass/elapsed_ms` 的参数。 2. 对每个计入样本独立读取并核验:V004 TaskSpec、只读 discovery、V009 terminal、V002 timing、V004 report manifest、current quota ledger、历史 2026-07-29 quota ledger 与 PDF 原件;所有路径必须是 evidence root 内普通文件。 3. task 的 plan/slot/batch/expected_reports、discovery 原始 bytes SHA-256、terminal 的 task/handoff/run、item identity/trigger/reuse/quota 状态、timing 的 monotonic 交叉字段、manifest 的 item/quota/PDF 字段、quota 的 RESERVE→terminal→artifact 引用链全部由生成器复算。 4. PDF magic、bytes、SHA-256、openability、page count 直接来自原件复核;正式 CLI 使用 TaskSpec 绑定的 pdfinfo,`synthetic=True` 只存在于本地测试调用,不暴露给正式 CLI。 5. 性能计划结构固定为 10 个唯一 primary:前六个 collect-one(两次三环集团、两次国瓷材料、两次 MLCC)加同一 batch 的四个有序 MLCC item。缺项可生成 `INSUFFICIENT_PERFORMANCE_SAMPLES`,但绝不能成为 PASS;错序、重复、pure reuse、缺失文件或历史 baseline 漂移直接拒绝。 6. performance manifest 由实际读取文件的 path/bytes/SHA-256 生成;manifest 与 summary 均 CreateNew 或 exact replay,summary 记录 manifest receipt,不形成自哈希环。 7. 已 reserve 的失败样本可如实进入 `PERFORMANCE_FAILED`:其 terminal/timing/manifest/quota 链仍须真实可核验,缺失 PDF 的各项检查由文件事实计算为 false,而非由调用方选择排除。 ### 12.2 定向反例与回归 ```text python -m compileall -q hibor_fast_collection test\hibor_fast_collection python -W error::ResourceWarning -m unittest discover -s test\hibor_fast_collection -p test_*.py -q Ran 44 tests in 13.894s OK git diff --check -- dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 ``` 同一 evidence-root fake 运行生成六个 collect-one 与一个四项 batch,并用真实工具 writer 产生 terminal/timing/manifest/quota/PDF 关系后得到 `PERFORMANCE_PASS`。随后逐项验证: - 旧调用方布尔断言 API 不存在; - 缺失 terminal 文件被拒绝; - 仅含 batch I01、缺少 I02–I04 只能得到 `INSUFFICIENT_PERFORMANCE_SAMPLES`; - evidence reference 错序被拒绝; - pure reuse terminal 被拒绝; - 历史 `2026-07-29` baseline=0 被拒绝; - package 同字节 replay 接受,ended_at drift 拒绝。 ### 12.3 当前定位快照与终态 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 31415 | `28a1c05493156836fef35bf42196c3350b11c4990bce169a8ec1dccd0582dea7` | | `dev/ana-dev/test/hibor_fast_collection/test_discovery_performance.py` | 19530 | `ad134a69ce7c961f2272ec6d9a4701b40198e9037f79b9c52dfe84f5e0a361f8` | - 状态:`PENDING_FINAL_SUCCESSOR_IMPLEMENTATION_REREVIEW_FOR_EVIDENCE_ROOT`。 - 真实 ADB/APP、download trigger、quota 增量、真实性能样本保持 `0/0/0/0`。 - 下一步仍只允许本地独立实现复审;PASS 后才发布性能计划 V002,当前不请求真实执行授权。 ## 13. 2026-07-30 物理计划与外部运行时绑定返修 V007 - 前序证据根实现复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-EVIDENCE-ROOT-IMPLEMENTATION-REREVIEW-001=HOLD/1/1`,审计快照 `463027/9bc11746e715110abeb76d2fd781d26149b0a7b9013e4955b719305d09dd94fa`。 - 唯一剩余项:`BLOCK-HIBOR-PERF-PLAN-01=OPEN_PARTIALLY_FIXED_BY_FORMAL_PLAN_AND_RUNTIME_TOOL_BINDING_GAP`。已关闭的调用方布尔伪造、10-primary 结构、证据文件复算、quota 事件链、历史 baseline 与 CreateNew/exact-replay 均保持不回退。 ### 13.1 合并修复 1. 正式 summary 接口不再接收内存 `plan`。它必须读取 evidence root 内物理 `performance_plan.json`,验证严格 canonical JSON、完整 V002 schema,并同时匹配授权请求携带的 `plan_bytes` 与 `plan_sha256`;计划文件作为 `GLOBAL/performance_plan` 行进入 performance manifest。 2. 正式 CLI 的 `SUMMARY` 请求固定为 `kind,plan_path,plan_bytes,plan_sha256,evidence_root,evidence_references,started_at_utc,ended_at_utc`。旧 mapping/布尔接口继续不可调用,物理计划任一字节或授权哈希漂移均 fail closed。 3. `pdfinfo.exe` 被明确建模为 evidence root 外的受审运行时工具,而不是 case-data 文件。固定绝对路径、`65536` bytes 与 SHA-256 `bc2c0f980c9a2a29cd1e06aacd8d1c7b67a5304e9d1d6f75190bdeb9c81a4365`;普通文件、非链接、路径/bytes/hash 全部匹配后才可调用,并作为 `GLOBAL/runtime_pdfinfo` 行进入 performance manifest。 4. 所有 TaskSpec 必须绑定同一受审 `pdfinfo` 快照;证据、quota、计划、PDF 路径仍必须位于 evidence root。这样保留数据根隔离,同时允许 Windows 正式拓扑中的 `C:` 运行时工具读取 `E:` 项目证据。 5. 正向回归不再使用 `synthetic=True`:fake ADB/UI 生成结构有效的一页 PDF,完整 10-primary 流程真实调用固定 `pdfinfo`,随后经正式 CLI 生成 PASS summary/manifest。测试同时验证两个全局 evidence row、授权计划哈希漂移拒绝及旧 API 不存在。 ### 13.2 回归验证 ```text python -m unittest discover -s dev\ana-dev\test\hibor_fast_collection -p test_*.py -v Ran 44 tests in 17.553s OK python -m compileall -q dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 git diff --check -- dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection dev-doc/ana-doc/开发方案/IMPLEMENTATION-ANA-HIBOR-FAST-COLLECTION-V001.md exit=0 mbx validate --project project-info --governance OK / warnings=0 ``` ### 13.3 当前定位快照与终态 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 34419 | `bfb3fc943be8f3b45a6c4017ff4cf7a1fec78c69cb0cd4d77df7374f242f900a` | | `dev/ana-dev/test/hibor_fast_collection/test_discovery_performance.py` | 23154 | `34d755c220fff1553c67bc1c69feb038b2592c1a05fffdf93f9fea00cb6830a5` | - 状态:`PENDING_FINAL_SUCCESSOR_IMPLEMENTATION_REREVIEW_FOR_FORMAL_PLAN_AND_RUNTIME_BINDING`。 - 源码/测试文件数为 28;本轮真实 ADB/APP、download trigger、quota 增量、真实性能样本、数据库动作保持 `0/0/0/0/0`。 - 下一步只提交同一 `dev.reviewer.ana.cai` 独立实现复审;PASS 前不发布性能计划 V002,不申请真实性能授权,不执行 APP/ADB。 ## 14. 2026-07-30 PREPLAN 失败闭包实现 V008 - V003 性能方案审核:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-REAL-PERFORMANCE-PLAN-V003=PASS/0/0`,audit snapshot=`477717/2a27f99ecad3069dd947b5ed8be7ee8211aa1383118b69230767b0c998a0bd1e`。 - 本轮只实现 V003 第 5 节 PREPLAN CLI、terminal/manifest 与协调时间/固定路径合同;不修改 collector 的 ADB/UI/quota/publish 主路径。 ### 14.1 实现内容 1. `performance.py` 新增 `HIBOR_FAST_PREPLAN_TERMINAL_V001` 20 键严格 schema,固定七个 stop_code、普通停止 exit 10、未知状态 exit 27、plan presence N/A/I/U 与 bytes/hash 交叉规则。 2. PREPLAN terminal 强制 `reserve_count=0`、`trigger_count=0`;discovery 完成数 0..7、候选数与 quota write 数为非负整数;blockers 首项必须等于 stop_code。 3. 新增 8 键 `HIBOR_FAST_PERFORMANCE_EXECUTION_CONTEXT_V001` 校验,固定 task/design/evidence root/UTC start/Asia-Shanghai/trigger_cap=10/三类主题,并要求 manifest 首行是固定 `control/execution_context.json`。 4. 新增 `write_preplan_package`:所有 evidence path 必须是 evidence root 内普通非链接文件;terminal 固定写入 `preplan/preplan_terminal.json`,manifest 固定写入 `preplan/preplan_manifest.csv`;两者均 CreateNew 或 exact replay,drift 拒绝。 5. `performance.main` 新增 exact `PREPLAN` request:`kind,terminal_value,evidence_root,evidence_paths`;同时为 PLAN、PREPLAN、SUMMARY 绑定 V003 固定 request/output/manifest 路径。正式 SUMMARY 仍要求物理 plan 位于 `control/performance_plan.json`。 6. 固定 production evidence root 为 `E:\mb-ms-doc\project-info\ana-data\tmp\HIBOR-FAST-PERFORMANCE-20260730-003`;测试使用 mock 替换该常量,只创建临时目录,不运行真实 APP/ADB。 ### 14.2 验证 ```text python -m unittest discover -s dev\ana-dev\test\hibor_fast_collection -p test_*.py -v Ran 45 tests in 17.971s OK python -m compileall -q dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 git diff --check -- dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection dev-doc/ana-doc/开发方案/IMPLEMENTATION-ANA-HIBOR-FAST-COLLECTION-V001.md exit=0 mbx validate --project project-info --governance OK / warnings=0 ``` 新增合并测试覆盖:七种 PREPLAN stop、零 reserve/trigger、execution context、固定路径、terminal/manifest exact replay、drift 拒绝、正式 PREPLAN CLI,以及既有正式非 synthetic SUMMARY 不回退。 ### 14.3 定位快照与边界 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 47073 | `33be2087c2fca0dca9242c24dc657dc9214d6060f47dd20253377fc94bef6b8f` | | `dev/ana-dev/test/hibor_fast_collection/test_discovery_performance.py` | 29360 | `05eba768a4dc205a0bf0cd26ad967f6d35e4c2443e81ffd964988116e0560132` | - 状态:`PENDING_INDEPENDENT_PREPLAN_IMPLEMENTATION_REREVIEW`。 - 真实 ADB/APP/discovery/download/trigger/quota increment/performance sample/database=`0/0/0/0/0/0/0/0`。 - 下一步仅提交 `dev.reviewer.ana.cai` 独立实现复审;PASS 后才可向 management 请求真实执行授权。 ## 15. 2026-07-30 PREPLAN 物理事实独立闭包返修 V009 - 前序 PREPLAN 实现复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-PREPLAN-IMPLEMENTATION-REREVIEW-001=HOLD/1/1`,audit snapshot=`484012/4354e362406a95436d6be4a6e4c2b140368b98277b1134e87718c7b42faf0259`。 - 唯一 blocker:`BLOCK-HIBOR-PREPLAN-IMPL-01_CALLER_ASSERTED_PREPLAN_FACTS_NOT_INDEPENDENTLY_CLOSED`。原实现验证了 terminal 字段形状,却没有从物理 plan/discovery/quota 证据反推 plan 状态和三个计数。 ### 15.1 独立闭包修复 1. PREPLAN evidence type 固定为:首行 `execution_context`、连续 discovery 前缀 `PERF-S01..S06,PERF-B01`,随后按固定顺序可选 `quota_ledger,performance_plan_request,performance_plan`;未知类型、重复类型、错序及非 `VALID|INVALID|UNCERTAIN` 状态一律拒绝。 2. execution context、七个 discovery、quota ledger、plan request 与 plan 均绑定固定路径。context/discovery/quota 必须为 `VALID`;known-invalid plan 必须为 `INVALID`;plan request 的 VALID/INVALID 由其 canonical JSON 与 V002 plan 校验结果独立推导。 3. 每个 discovery 必须是 canonical `HIBOR_FAST_DISCOVERY_V001`、精确 15 键、固定 slot/query、统一 performance plan id、无 quota/trigger 副作用、有效 UTC/monotonic 顺序以及候选计数一致。`qualified_candidate_total` 从五字段完整且 identity 可复算的不同物理候选重算;`discovery_completed` 从固定 discovery 文件前缀重算。 4. quota ledger 通过现有 ledger parser/fold 校验;PREPLAN 禁止任何 RESERVATION/QUOTA_TERMINAL/ARTIFACT_TERMINAL,`quota_write_count` 只从实际持久化的 `APP_RECONCILE` 行重算。 5. `plan_presence=I` 必须有固定物理 plan、匹配 bytes/hash,且严格 canonical/V002/10-row 校验实际失败;有效 plan 立即拒绝 PREPLAN。`U` 只允许 `STATE_UNCERTAIN/27`,且不能通过省略证据把普通可读有效 plan 伪装为未知。 6. 全部校验在 PREPLAN terminal/manifest CreateNew 之前完成;失败不生成 formal package,既有 POSTPLAN/SUMMARY 路径保持不变。 ### 15.2 反例与回归 新增本地 fake 回归明确覆盖: - 有效 canonical 10-row plan 标为 `I` 或 `U` 均拒绝; - 无 discovery/quota 文件却声明 `7/999/999` 计数拒绝; - `PERF-S02` 冒充首个 discovery 前缀拒绝; - 任意 evidence type 与任意 status 拒绝; - 一个实际 discovery 文件得到 `discovery_completed=1/qualified_candidate_total=1`; - 一个实际 APP_RECONCILE ledger 得到 `quota_write_count=1`; - `U` 配普通已知 stop_code 拒绝; - 七个 PREPLAN stop、CreateNew/exact replay/drift、正式 PREPLAN CLI 与非 synthetic SUMMARY 无回退。 ```text python -m compileall -q dev/ana-dev/hibor_fast_collection dev/ana-dev/test/hibor_fast_collection exit=0 python -m unittest discover -s dev/ana-dev/test/hibor_fast_collection -p test_*.py Ran 46 tests OK mbx validate --project project-info --governance OK / warnings=0 ``` ### 15.3 当前定位快照与边界 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 56808 | `52cdc2e983213179a7be0c7a1f4ef6773d1716f64ccd39d09f63021846a400b9` | | `dev/ana-dev/test/hibor_fast_collection/test_discovery_performance.py` | 42501 | `08f191dcf26ad276e6f63a940433d67a0d0c7b2e74d10f1cc84a4cf1367acc68` | - 状态:`PENDING_SUCCESSOR_PREPLAN_IMPLEMENTATION_REREVIEW`。 - 真实 ADB/APP/discovery/download/trigger/quota increment/performance sample/database=`0/0/0/0/0/0/0/0`。 - 下一步只提交同一 `dev.reviewer.ana.cai` 独立实现复审;PASS 前不申请或执行真实性能授权。 ## 16. 2026-07-30 性能协调器 UTF-8 与写前 gate 修复 V010 - 修复方案:`CODE-DESIGN-ANA-HIBOR-FAST-COLLECTION-COORDINATOR-UTF8-REPAIR-V001`,`6982/f9744987773a15bbf94542df513172e9c226ec60e65c9c680aefd7a4c5f40ec2`。 - 方案审核:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-COORDINATOR-UTF8-REPAIR-PLAN-V001=PASS/0/0`,audit snapshot=`499896/c578aa8cc18a97a7c3de9dbb2fe9bc64bce7f36eccabaf06fae97fa1f7d2b097`。 - 目标 blocker:`BLOCK-HIBOR-PERF-SUCCESSOR-FAILURE-01=PLAN_LEVEL_CLOSED_PENDING_IMPLEMENTATION`。 ### 16.1 实现 1. 新增物理 UTF-8 模块 `performance_coordinator.py`。CLI 只接收 evidence root 和 ASCII UTC 参数;不接收源码、subjects 或其他固定值,不使用 PowerShell native pipe、`python -c` 或 stdin 源码。 2. `performance.py` 新增 execution-context 纯内存 builder/value/bytes validator:固定 8 键、task/design/timezone/trigger cap、三项 subjects 及三组 codepoint;canonical UTF-8 bytes 必须 strict decode、strict JSON parse 和 reserialize byte-identical。 3. 所有固定值和 bytes 校验在首次 `mkdir/open` 前完成。之后才以新建 root → 新建 control → O_EXCL context → fsync/close → ordinary-file/reopen/bytes/hash/semantic readback 的顺序物化。 4. root 或 parent 类型异常、preexists/reparse、问号替换、坏 UTF-8、root drift、写入/flush/reopen 漂移均 fail closed;已出现的实际子集不清理、不覆盖、不重写。 5. production root 从已失败且不可变的 `...-003` 移到新候选 `...-004`。本实现/测试未创建 `...-004`;最终 root 仍须新 management authorization 绑定。 6. PREPLAN、SUMMARY、FAST、quota、archive、manifest、terminal 与 SLA 逻辑未放宽;既有 discovery/performance 测试文件未改。 ### 16.2 测试 新增 7 项: - 内存 preimage 精确保留 `三环集团|国瓷材料|MLCC` 的 UTF-8/codepoint; - `????|????|MLCC` 在 root 创建前拒绝; - malformed UTF-8 与 evidence-root drift 在 root 创建前拒绝; - CreateNew/readback 成功且 replay 拒绝、原文件不变; - parent 非 ordinary directory 零写入拒绝; - 模拟 fsync 失败保留实际 root/control/context 子集; - exact bundled Python 以 `-m hibor_fast_collection.performance_coordinator` 启动,中文原样写入,无 `????`。 ```text C:\Users\Cai\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe --version Python 3.12.13 python -m compileall -q hibor_fast_collection test\hibor_fast_collection exit=0 python -m unittest discover -s test\hibor_fast_collection -p test_*.py Ran 53 tests OK targeted coordinator regression: 7/7 PASS new production root exists: false old context: 419/6a9dbc75605b8d2d0e98ea662cb989c22d0097f021ab9d81541f494ffccf9ac7 ``` ### 16.3 快照与边界 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 59966 | `b825cc691080c3ef63004f268e4b1192f1d7ef0475f707eec87a259cdb9d6ef2` | | `dev/ana-dev/hibor_fast_collection/performance_coordinator.py` | 4398 | `f38823f4edcc6f6b7528f24a5f4a9cebc5b04807a2c660b7299d9e9cd0df8d64` | | `dev/ana-dev/test/hibor_fast_collection/test_performance_coordinator.py` | 5875 | `525245f7edc72cd878eeef878eb456cf34c1f5d92a248c2a464bd55d0f329794` | | unchanged `test_discovery_performance.py` | 42501 | `08f191dcf26ad276e6f63a940433d67a0d0c7b2e74d10f1cc84a4cf1367acc68` | - 状态:`PENDING_INDEPENDENT_COORDINATOR_UTF8_REPAIR_IMPLEMENTATION_REVIEW`。 - 真实 APP/ADB/quota/download/performance sample/pdfinfo/database/network=`0/0/0/0/0/0/0/0`。 - 下一步仅提交 `dev.reviewer.ana.cai` 独立实现复审;PASS 前不请求或执行新真实性能链。 ## 17. 2026-07-30 junction ancestor 门禁返修 V011 - 前序实现复审:`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-COORDINATOR-UTF8-REPAIR-IMPLEMENTATION-V001=HOLD/1/1`,audit snapshot=`505674/f962a1c0603db875b5203ec01cf9c5dd0e689b2ea8ed602f209c423b521902f5`。 - 唯一 blocker:`BLOCK-HIBOR-UTF8-IMPL-01_REPARSE_PARENT_CANONICALIZATION_BYPASS`。原实现先 `Path.resolve(strict=False)`,会在 no-reparse 检查前抹去 junction ancestor 身份。 ### 17.1 修复 1. evidence root 首先用 `abspath` 得到不跟随链接的 lexical absolute path;`build_execution_context` 同样不再预先 resolve。 2. 从 filesystem anchor 到 immediate parent,对每个既存 lexical ancestor 逐项执行 `lstat`、reparse/junction 拒绝和 ordinary-directory 校验。 3. lexical ancestor 检查后才允许 `resolve(strict=False)`,且 resolved 与 lexical path 必须在 Windows normcase 下相等;任何漂移拒绝。 4. 在首次 `os.mkdir(root)` 紧前重复整套 lexical ancestor、identity 和 root-absent gate,降低检查到使用间的晚变更窗口。 5. 新增真实 Windows junction-parent 测试:`cmd.exe /c mklink /J` 创建临时 junction,调用协调器必须抛出 `ContractError`,junction target 下 `run` 必须 absent;测试结束只移除临时 junction。 ```text bundled Python 3.12.13 compileall=PASS targeted coordinator tests=8/8 PASS complete unittest=54/54 PASS junction-parent redirected write=false new production root exists=false old context=419/6a9dbc75605b8d2d0e98ea662cb989c22d0097f021ab9d81541f494ffccf9ac7 ``` ### 17.2 successor 快照与边界 | path | bytes | sha256 | |---|---:|---| | `dev/ana-dev/hibor_fast_collection/performance.py` | 60200 | `484078a001f48d928a22fd44a3d3d96f6445229c6b42ccf57714cb6c20f452cb` | | `dev/ana-dev/hibor_fast_collection/performance_coordinator.py` | 6281 | `bf8583a7487c7ad7f423615c9061be86a5195fece2ae811cceaed82792d523f4` | | `dev/ana-dev/test/hibor_fast_collection/test_performance_coordinator.py` | 6921 | `0606408f12ee62e894f5c2fa39391b641ad4826c88aa9c6fd06a055f6f878f4c` | - 当前状态:`PENDING_SUCCESSOR_COORDINATOR_UTF8_REPAIR_IMPLEMENTATION_REREVIEW`。 - 真实 APP/ADB/quota/download/performance sample/pdfinfo/database/network=`0/0/0/0/0/0/0/0`。 - 只提交一次合并 successor 实现复审;PASS 前不申请新真实性能授权。