# 慧博 10 分钟快速采集工具真实性能测试方案 V002 创建人员:`dev.developer.ana.cai` task:`DEV-ANA-HIBOR-FAST-COLLECTION-20260729-001` plan_id:`PERF-TEST-PLAN-ANA-HIBOR-FAST-COLLECTION-V002` owner / reviewer:`dev.developer.ana.cai` / `dev.reviewer.ana.cai` 请求来源:`HANDOFF-YANBAO-DEV-ANA-HIBOR-FAST-COLLECTION-TOOL-20260729-001`、`HANDOFF-YANBAO-DEV-ANA-HIBOR-REAL-TEST-SUBJECTS-20260729-001`。 前序方案:`TEST-PLAN-ANA-HIBOR-FAST-COLLECTION-REAL-PERFORMANCE-V001=HOLD/1/1`;V001 保持不可变。 实现基线:`CODE-DESIGN-ANA-HIBOR-FAST-COLLECTION-V011=PASS/0/0`;`AUDIT-DEV-ANA-HIBOR-FAST-COLLECTION-FORMAL-PLAN-RUNTIME-BINDING-IMPLEMENTATION-REREVIEW-001=PASS/0/0`。 实现复审审计快照:`467815/cd787f0418351adafd13edd3ea1e91b964847b50d8bb6092d978e5ae7ee08bdb`。 ## 1. V002 目的与继承边界 V002 继承 V001 的 SLA、三个测试主题、额度、访问控制、原件、manifest、失败保留和禁止事项,仅以本文件明确内容替换 V001 中已过时的 V003 TaskSpec、内存 plan 和 synthetic 汇总路径。冲突时以 V002 为准。 本阶段仅验证工具在真实慧博 APP 中的采集性能和证据闭包: - 10 个 primary 全部进入统计,不允许由调用方布尔值或人工筛除改变分母; - 正常单份 median `<=480000ms`,nearest-rank P90 `<=600000ms`; - collect-one 从 task `observed_at_utc` 至 terminal 不超过 `600000ms`; - batch I01 不超过 `600000ms`,I02–I04 各自与前一 item terminal 的单调时钟增量不超过 `240000ms`; - 任何超时必须返回 `TIME_BUDGET_STOP/10` 和有效不可变子集,不得静默继续; - 每份成功样本必须同时通过 PDF magic、remote/local bytes、remote/local SHA-256、`pdfinfo` openability、page count、正式 manifest 和 quota 事件链复核。 非目标:不解析研报正文,不生成研究结论、目标价或交易指令;不执行数据库、网络抓取、账号动作、BATCH-001 或外部消息写入。 ## 2. 受审实现与工具快照 | 对象 | 固定绑定 | |---|---| | `performance.py` | `34419/bfb3fc943be8f3b45a6c4017ff4cf7a1fec78c69cb0cd4d77df7374f242f900a` | | 性能回归测试 | `test_discovery_performance.py=23154/34d755c220fff1553c67bc1c69feb038b2592c1a05fffdf93f9fea00cb6830a5` | | Python | `C:\Users\Cai\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe`;`91648/3c6a206b7d93cca823934a83732220dcffd413fd1036d9fb82eebb64599cf7f3` | | ADB | `D:\platform-tools\adb.exe`;`6641760/1e1c2280b90b3f01ad84cd8df4858b1b1995012814f3ca8893bcc3ba3848edec` | | pdfinfo | `C:\Users\Cai\.cache\codex-runtimes\codex-primary-runtime\dependencies\native\poppler\Library\bin\pdfinfo.exe`;`65536/bc2c0f980c9a2a29cd1e06aacd8d1c7b67a5304e9d1d6f75190bdeb9c81a4365` | | Android package | `cn.com.hibor` | | cache | `/sdcard/Android/data/cn.com.hibor/files/myfile/` | | evidence root | `E:\mb-ms-doc\project-info\ana-data\tmp\HIBOR-FAST-PERFORMANCE-20260730-002` | | historical quota | `daily_quota_2026-07-29.csv`,必须包含中国中免至少 3 次已知 distinct trigger 的保守 baseline | 真实执行前重新校验三个可执行文件均为普通非链接文件,路径、bytes、SHA-256 完全一致。`pdfinfo` 是 evidence root 外的受审只读运行时工具;正式汇总必须记录 `GLOBAL/runtime_pdfinfo` evidence row,但不得错误要求它位于 `E:` evidence root 内。 ## 3. 管理授权与两段式执行 本方案 PASS 后才向 `management.admin` 请求一次项目内真实 APP/ADB 性能执行授权。授权以本 V002、实现 PASS 审计、最多 10 次 distinct trigger、三个主题池和本节 DAG 为边界;不是每 URL/每命令一次性授权。 获批后严格顺序执行: 1. 校验工具、cwd、单一设备、package、cache、登录与额度状态;运行一次无写入 dry-run。 2. 通过正式 `discover` 模式依次只读搜索三环集团、国瓷材料、MLCC;只允许搜索、3–5 屏 FAST 扫描、详情字段核对,不允许下载 tap、reserve、pull 或发布。 3. 从 discovery 事实选择 10 个不同 report identity,生成物理 `performance_plan.json`,CreateNew/no-overwrite;立即记录其 bytes/SHA-256,作为本次执行后续所有 TaskSpec、SUMMARY 请求和复审的授权计划快照。计划生成失败或快照不确定则在第一次 reserve 前 STOP。 4. 创建并执行六个 collect-one V004 TaskSpec,再执行一个 quantity=4 batch V004 TaskSpec;不得并发,不得第 11 次 trigger。 5. 每个 terminal 后确认无活动 reservation/liveness uncertainty,才可进入下一 task。`STATE_UNCERTAIN/27`、额度不确定或子进程存活时停止全批次。 6. 最后只读调用正式 `hibor_fast_collection.performance SUMMARY`,从物理证据生成 performance manifest 与 summary;不得调用 `synthetic=True`,不得传入人工 pass/fail 布尔值。 任何预 reserve 外部 blocker 可使本次结果成为 `INSUFFICIENT_PERFORMANCE_SAMPLES`,但不得改写物理计划、替换已冻结 primary 或把失败样本排除成 PASS。 ## 4. 物理 performance plan 合同 文件:`/performance_plan.json`。编码为严格 UTF-8 canonical JSON、无 BOM/尾随空白,schema=`HIBOR_FAST_PERFORMANCE_PLAN_V002`。顶层按顺序仅含 9 键: `schema_version,plan_id,created_at_utc,quota_date,quota_ledger,historical_quota_date,historical_quota_ledger,trigger_cap,entries`。 固定要求: - `trigger_cap=10`;`historical_quota_date=2026-07-29`;两个 ledger 文件名必须与各自 quota date 一致; - `entries` 恰好 10 行,slot 唯一、report identity 唯一; - 每行按顺序仅含 9 键:`slot_id,mode,batch_id,item_order,query,expected_report,discovery_sha256,external_exclusion_allowed,selected_from_readonly_discovery`; - `expected_report` 按顺序仅含 `report_identity,title,institution,report_date,page_count`,其中 identity=`SHA256(title|institution|report_date)`; - `discovery_sha256` 必须匹配只读 discovery 原始文件;两个布尔字段均为 `true`; - 顺序固定为:三环集团 2 个 collect-one、国瓷材料 2 个 collect-one、MLCC 2 个 collect-one、同一 `batch_id` 的 MLCC I01–I04;batch `item_order=1..4`。 计划写入 receipt 的 `bytes`、`sha256` 随后固定为 `authorized_plan_bytes`、`authorized_plan_sha256`。所有真实 TaskSpec 的 `performance_plan_id` 必须等于该计划的 `plan_id`;collect-one `performance_slot_id=slot_id`,batch 四行共用 `performance_slot_id=batch_id`。 ## 5. V004 TaskSpec 与 reserve 前身份门禁 真实任务只允许 `HIBOR_FAST_TASK_SPEC_V004`,不得使用 V003。每项必须在启动前 CreateNew 保存,并包含计划中对应的有序 `expected_reports`:collect-one 一行;batch 四行。 公共参数: - `project_id=project-info`;requester/source role=`case_analysis.report_collector`;review owner 为当前人工请求者; - `output_root=/output`;`destination=/archive`;工具/package/cache 使用第 2 节绑定; - `minimum_pages=1,min_screens=3,normal_max_screens=5,hard_max_screens=20,hard_max_candidates=100`; - collect-one:`quantity=1,total_budget_ms=600000,close_reserve_ms=30000`; - batch:`quantity=4,total_budget_ms=1320000,close_reserve_ms=30000,batch_increment_budget_ms=240000`; - `observed_at_utc` 在当前任务被执行端观察时生成;task_id/handoff_id 唯一;同一 task/run 的安全 replay 不得再次 tap。 每个 item 在 quota reserve 和下载 tap 之前,必须把 APP 详情页 `title,institution,report_date,page_count` 与计划中 expected report 做逐字段相等校验并复算 identity。不一致立即 `BLOCKED_INPUT`,不得 reserve、tap 或以相邻候选替代。 ## 6. 额度与样本固定规则 - timezone=`Asia/Shanghai`;平台 30、automation target 25、hard stop 27、buffer 3;本计划最多新增 10 个 distinct trigger。 - 执行日 ledger 先记录 `APP_RECONCILE`;`safe_available=max(0,27-confirmed-uncertain-active)`。低于 10 时只执行安全子集并返回不足,不得越线。 - `RESERVE -> CONSUME_CONFIRMED/CONSUME_UNCERTAIN/RELEASE -> ARTIFACT_SUCCESS/ARTIFACT_FAILED` 引用链必须真实、单向、可复算。 - damaged、非 PDF、duplicate、trigger 后失败和 uncertainty 均按规则消耗;terminalled reservation replay 不得再次 tap。 - pure reuse 必须在 reserve 前识别,账本字节不变且不进入 10-primary SLA 样本;一旦 primary reserve,则无论成功、超时或验证失败都留在分母。 - 不修改、删除、重命名模拟器原件;项目发布继续 CreateNew/no-overwrite/exact replay,冲突 fail closed。 ## 7. 正式证据引用与 SUMMARY 请求 每个计入 slot 必须提供一行有序 evidence reference,仅含: `slot_id,task_path,discovery_path,terminal_path,timing_path,manifest_path,item_id`。 路径除固定外部 `pdfinfo` 外均必须解析为 evidence root 内普通非链接文件。十行顺序必须是物理 plan 的前缀且最终恰好覆盖 10 行;batch item_id 固定 `ITEM-001..ITEM-004`。 正式 SUMMARY request 按顺序仅含: `kind,plan_path,plan_bytes,plan_sha256,evidence_root,evidence_references,started_at_utc,ended_at_utc`。 其中: - `kind=SUMMARY`;`plan_path` 指向物理计划;`plan_bytes/plan_sha256` 必须等于第 4 节 receipt; - 生成器重新读取并验证计划 canonical bytes/schema/授权快照,不接受内存 plan; - 生成器逐项读取 V004 TaskSpec、discovery、V009 terminal、V002 timing、V004 report manifest、current/historical ledger 和 PDF; - 生成器重新计算 task/run/slot/batch/expected identity、discovery hash、terminal item、单调时钟、manifest、PDF 和 quota 引用链; - performance manifest 必须包含 `GLOBAL/performance_plan`、`GLOBAL/runtime_pdfinfo`、两个 ledger 及每个样本的实际 task/discovery/terminal/timing/manifest/PDF path/bytes/SHA-256; - summary 与 manifest 均 CreateNew 或 exact replay;任何 drift 拒绝,不暴露未验证的冲突文件。 正式命令仅允许绑定 Python 在 `E:\mb-ms-doc\project-info\dev\ana-dev` cwd 运行模块入口;不得暴露 `synthetic` 开关。summary 只有从上述物理证据复算才可产生。 ## 8. 结果算法与失败闭包 summary schema=`HIBOR_FAST_PERFORMANCE_SUMMARY_V003`。10 个样本 elapsed 排序,第 5/6 平均为 median,第 9 个为 nearest-rank P90。batch first 使用 I01 elapsed,batch increments 使用 I02–I04 的 `terminal_delta_from_previous_ms`。 `PERFORMANCE_PASS` 必须同时满足: - `included_total=success_total=10`,trigger total `<=10`; - median/P90/batch first/batch increments 满足第 1 节; - 10/10 magic、bytes、hash、openability、page count、manifest、quota 全部为真; - 最终 active=0,effective consumed 始终 `<=27`; - 无缺失、错序、重复、pure reuse、计划/工具/文件漂移或失败样本。 少于 10 行只能是 `INSUFFICIENT_PERFORMANCE_SAMPLES`;任一已 reserve 样本失败只能是 `PERFORMANCE_FAILED`。访问控制、设备离线、额度不足、候选不足、超时和不确定均保留已完成子集及 blocker,不得伪造 PASS、静默重跑或扩展到未授权主题。 ## 9. 审核、执行和停止边界 本 V002 先提交 exact `dev.reviewer.ana.cai` 独立方案复审。只有 `PASS/0/0` 后,才向 `management.admin` 请求一次真实 APP/ADB、最多 10 trigger 的项目内执行授权。该方案 PASS 不是执行授权。 真实执行后,完整不可变 package 与 `PERFORMANCE_PASS/FAILED/INSUFFICIENT` 结论再次提交 exact `dev.reviewer.ana.cai` 独立复核。普通报告结果 review owner 仍为人工请求者/`case_analysis.report_collector`。 当前状态:`PENDING_INDEPENDENT_REAL_PERFORMANCE_PLAN_V002_REVIEW`。真实 ADB/APP/download trigger/quota increment/performance sample/database=`0/0/0/0/0/0`。BATCH-001 继续 HELD。