| | |
| | | - 授权限制:不得运行 3.57 小时源或 4 小时媒体,不得重试、调参、覆盖旧证据、并行转写或扩大范围;若生成、运行或资源门禁失败,应如实返回唯一失败证据,不得自行再次运行。完成后沿原任务链提交真实资源验收结果并交 `case_analysis.media_processor` 最终验收。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-TERMINALIZATION-20260814-001 |
| | | |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - original_request=`msg_20260814054037913_4e8037f7` |
| | | - canonical_findings_reference=`DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-20260814-001` |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | - F1=`TRUSTED_RUNTIME_CONTROLLER_AND_DISPATCH_ENVELOPE_MISSING` |
| | | - F2=`SOURCE_CONTROLLED_EXTRACTOR_CANNOT_PRODUCE_ACCEPTED_EVIDENCE` |
| | | - F3=`OVERALL_DEADLINE_NOT_ENFORCED_AT_COMMIT` |
| | | - F4=`LEGACY_SCHEMA2_PENDING_CAN_REISSUE_BROWSER_ACTION` |
| | | - F5=`IDENTITY_MISMATCH_NOT_PROJECTED_TO_FROZEN_BLOCKED_TERMINAL` |
| | | - formal_manifest=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 unchanged` |
| | | - code_and_formal=`FROZEN_UNCHANGED` |
| | | - disposition=`原链最小离线修复后同链复审` |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-20260814-001 |
| | | |
| | | - 记录时间:`2026-08-14T06:16:49.4892014+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,按已通过 V005+V006 组合合同对 supported Chrome runtime 增量做限定实现审核;V001—V004、F2/F3/F4、018/019/020 历史槽及正式数据边界不重开。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260814054037913_4e8037f7`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-IMPLEMENTATION-20260814-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 冻结工件身份独立复算匹配:collector=`71340/0EF9AD4970F7AC73C767734598ABF0FC7E3F13BEDAECA2B6AAA67CC33BC2378B`;refresh=`117252/88145C0DAEDA643F77D0359635C5231C9D152ECAC1FBDD0A25C3FAACC48B4D22`;extractor=`1383/6DA03360D42BA9820E45A67C9AE4FBE8EC0A811DEF800DB954CFF428F94E0B3F`;runtime contract=`754/434062C076F3E15135B96957961FC316725479900C33EC01629BC13843C70BB8`;example=`1702/85DCC6E682E3D8E2063BE008A974A640D8970B7CD489E8E6596AE863655DCFEC`;tests=`62883/A3D89398A995872167A27E684991C24FF9447456E22FFF3CA97DEAC8D8B1554E`;implementation evidence=`15788/F344A4CC65D87C4E20586BDBBC33C69DA3C7EFB1B5ED62032DE3209C93FDBFC3`。 |
| | | - 独立复验:V005+V006 runtime 聚焦矩阵=`8/8 PASS / 1.981s`;collector+refresh 全目标=`44/44 PASS / 9.963s`;`py_compile=PASS`;CLI help=`PASS`;UTF-8/BOM/trailing whitespace=`PASS/NO/0`;governance=`OK/projects1/warnings0`。 |
| | | - 正式 manifest 审核前后均为 `ana-data/news-青枫浦上Q/manifest.jsonl|51598|0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73|48 lines`,未修改。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | |
| | | #### F1 — `TRUSTED_RUNTIME_CONTROLLER_AND_DISPATCH_ENVELOPE_MISSING` |
| | | |
| | | - V006 要求 PRE/POST/CONFIRMED/TIMEOUT 只能由受信 controller 在实际 `reload/goto` 前后生成,并在 CreateNew evidence 前绑定 dispatch boolean、单调起止值与实际计数;evidence 调用者不得自行选 outcome。冻结产品只有外部 JSON validator、DOM 只读脚本和枚举 contract,未实现 `openTabs/reload/goto/playwright.evaluate` 或受信 envelope writer。测试 helper 直接填 outcome/count/timestamps 并 `write_text`。审核员在 browser action=0 时提交 caller-authored `CONFIRMED/count=1`,CLI exit0 并形成 `REFRESH_CONFIRMED_NO_NEW`。 |
| | | - 最小修复:实现受信 controller/evidence writer 或等价不可伪造绑定层,由实际 action 状态机产生 outcome/count/elapsed,并以 CreateNew partial→fsync→rename 落 evidence;用可控 fake controller 证明手写/篡改 outcome 不能获得成功终态。 |
| | | |
| | | #### F2 — `SOURCE_CONTROLLED_EXTRACTOR_CANNOT_PRODUCE_ACCEPTED_EVIDENCE` |
| | | |
| | | - `bili_dynamic_page_extract.js` 只返回 ready/visibility/url/title 和简化 nodes,不生成 CLI 所需的 page_observation、card bindings、unparsed fingerprints、creator、terminal marker、items/content 与 coverage 输入;测试中的完整 observation/items/marker 全由 Python helper 手工构造。真实单 evaluate 输出无法经产品路径生成可接受 schema3,44/44 未覆盖 extractor→evidence→CLI 非真空等价链。 |
| | | - 最小修复:让 extractor 或同一受信 controller 的确定性适配器完整生成 V001—V006 所需材料;以真实 JS 输出 fixture 驱动 readable-new/empty/unparsed/access/identity 入口反例。 |
| | | |
| | | #### F3 — `OVERALL_DEADLINE_NOT_ENFORCED_AT_COMMIT` |
| | | |
| | | - 实现只验证 evidence 自报时间位于 pending started/deadline,不检查 `refresh_commit(..., now)` 是否已越过 120 秒。审核员在 begin 后 180 秒提交内部时间伪装为期限内的 CONFIRMED evidence,仍 exit0/no-new。 |
| | | - 最小修复:controller 用同一 monotonic deadline 截断 action/observation/evidence commit;CLI 拒绝 deadline 后首次 evidence 绑定/业务提交,或验证不可伪造的期限内 durable-commit envelope。补 deadline+ε、伪造早时间戳与截止后 readable-new/no-new 反例。 |
| | | |
| | | #### F4 — `LEGACY_SCHEMA2_PENDING_CAN_REISSUE_BROWSER_ACTION` |
| | | |
| | | - V005 要求 schema2 只恢复/终结,不得触发 runtime-v2 action;但 `_recover_or_replay` 在 AWAITING_EVIDENCE 且 STARTED slot 缺失时无 schema 分支地修 slot 并返回 `_begin_result`。审核员临时 schema2 反例实际返回 `BROWSER_REFRESH_REQUIRED` 且无 runtime contract identity。 |
| | | - 最小修复:schema2 使用 recovery-only 状态机,任何 phase 都不得返回 browser-action-required。补 schema2 AWAITING_EVIDENCE × slot present/missing、deadline before/after、第三内容入口矩阵。 |
| | | |
| | | #### F5 — `IDENTITY_MISMATCH_NOT_PROJECTED_TO_FROZEN_BLOCKED_TERMINAL` |
| | | |
| | | - exact creator/final URL mismatch 应唯一落 `REFRESH_BLOCKED_AUTH_OR_ACCESS`;当前 readable mismatch 在 validator 直接抛 `E_CREATOR_MISMATCH`/SAFETY_STOP,pending 与 STARTED slot 留存,没有五终态。审核员反例复现 safety=true、pending_exists=true,formal manifest 虽不变但终态合同未实现。 |
| | | - 最小修复:把 URL/UID/name/profile mismatch 持久化为 durable blocked 终态,补 confirmed/timeout/post-dispatch × identity mismatch 入口矩阵和 slot/latest/pending cleanup 断言。 |
| | | |
| | | ### Preserved evidence and disposition |
| | | |
| | | - 已通过且未回退:固定 120/35/45/15 配置与 contract hash、PRE 0/0、POST/TIMEOUT 不得 no-new、可读新条目 coverage=false、schema3 字段自洽校验、原恢复/事务/锁合同、44 项目标回归、正式 manifest 零改写及 secret/控制面边界。 |
| | | - 本 HOLD 不授权真实 Chrome、reload/goto、network、download、formal write、Raw CDP、coordinate、Cookie/session、`F:\video`、media 或 transcription。只允许原边界内最小修复,无需真实动作。 |
| | | - 结论=`V005_V006_RUNTIME_LIMITED_IMPLEMENTATION_HOLD5_TRUSTED_CONTROLLER_EXTRACTOR_DEADLINE_LEGACY_RECOVERY_AND_TERMINAL_REQUIRED`。 |
| | | - Open questions:无。 |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001-FORMAL |
| | | |
| | | - 记录时间:`2026-08-13T13:10:00+08:00` |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813114445612_ca976cf4`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计=`24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`;code/test/fixture/formal data 均冻结。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | |
| | | 1. `F1_EVIDENCE_NO_NEW_PROOF_NOT_DETERMINISTIC`:no-new 依赖外部自报 coverage 布尔值,缺少可复算的 DOM/parser/逐页卡片/end-of-feed/limit 证明。须冻结 bounded `page_observation`,由 CLI 推导 coverage;任何上限、未推进或 marker 缺失均禁止 no-new,并补伪造/截断/空页反例。 |
| | | 2. `F2_REFRESH_PENDING_CRASH_RECOVERY_UNDEFINED`:`refresh-begin` 后、`transaction.pending` 前的崩溃没有 reopen 状态机,会让旧 pending 永久阻塞小时运行。须冻结 pre-transaction phase/ownership/deadline/evidence 恢复、durable run record、清理/保留、exit 与全点注入。 |
| | | 3. `F3_MIXED_HISTORY_CATALOG_CONTRACT_UNDERSPECIFIED`:48 行 mixed history 的 token namespace/union、状态优先级、UID 缺失、身份冲突、artifact 校验和新 state event schema 未冻结。须基于现有 48 行给出 exact 分类、canonical dedupe/unique-entity 摘要及冲突反例。只读核验确认 16 个 SAVED 实物存在且哈希匹配。 |
| | | 4. `F4_DUAL_MANIFEST_COMMIT_HAS_LOST_UPDATE_RACES`:state 前像在发布前未 compare,formal check 与 replace 间存在 TOCTOU。须冻结两份 exact candidate,并用共享跨进程锁或可证明 CAS 覆盖 compare-through-replace;任何漂移 fail/rebegin,补两进程竞争反例。 |
| | | 5. `F5_BOUNDED_RUN_EVIDENCE_NOT_ATOMIC_WITH_TERMINAL_RESULT`:formal commit、receipt、latest/168-slot 与 pending cleanup 的顺序和恢复未冻结,同小时 collision/slot 失败可导致业务结果与唯一审计证据分离。须冻结 exact run schema、slot 规则和 reopen 矩阵;durable record 前不得返回终态,并补全点异常/同小时/replay。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - supported Chrome exact URL、单次 navigate/reload、禁止 CDP/profile/Cookie/header/412 绕过;五终态总体优先级、discovery 非权威和两个真实样本解释方向正确。 |
| | | - 全文/原图/video metadata+cover、no-overwrite、secret/raw error fail-closed、失败不增长 formal manifest 可保留。 |
| | | - required_fixes 仅限 F1-F5;无需新增真实运行。产品 code/test/fixture、formal data、Chrome refresh、network retry、download/video、extension/policy/HKCU/secret 继续冻结。 |
| | | - 结论=`V001_DESIGN_HELD_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V002-FOCUSED-DESIGN-REREVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T13:02:49.6067485+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审 V001 `HOLD/5` 的 F1—F5 closure 与 preserved contracts;产品实现、测试、fixture、正式数据及真实动作保持冻结。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813124847123_2b989fed`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V002-FOCUSED-DESIGN-REREVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - V001=`24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`;V002=`22460/EC7E1D887FF930D7DA75F208975E17812E9D299606CD2A79B3E9BF14DE723A54`;请求=`3420/65EF31ED42BD2DAF618B2D12B6314D1C69774257FE5D023BFFDB39F0B44CBA3C`。 |
| | | - 冻结基线复算:code=`60090/67B2E6FB34F100C57BF50A4D3067D6FDD6E47C5D3FBEF58D2CF5D8796B07AB8B`;test=`31303/D82BFF8AD9B78FD749A7536FF9FED0486CF87D6B9FDDEE7947202C2414AAE322`;fixture=`1216/0CD53C7C93D7E05B4A913EBF5223366E3A06A17E2474DF52BC64F0BB4EBEA71F`;formal=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 lines`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/2` |
| | | - blocking_findings=`2` |
| | | |
| | | #### F1-R1 — `OBSERVATION_PARSED_COUNT_DOUBLE_COUNTS_UNPARSED_NODES` |
| | | |
| | | V002 第 2.2 节同时规定 `cards` 包含 `parse_complete`、`parsed_card_count=len(cards)`、`parser_error_count=未能形成完整 card 的节点数`,又规定 `visible_node_count=parsed_card_count+parser_error_count`。如果一个可见节点能形成带 stable identity 的 card,但因时间/类型等缺失而 `parse_complete=false`,它已进入 `cards`,又计入 `parser_error_count`,因此被双计;若不进入 cards,又无法通过 stable component 证明它没有消失。合法 partial 页面会被误判 schema error,CLI 也无法唯一重算 ordered stable-component proof。 |
| | | |
| | | 最小修复:冻结互斥计数合同。建议将 `cards` 改为所有已识别 card,另设 `complete_card_count` 与 `unparsed_node_count`,并规定 `visible_node_count=len(cards)+unparsed_node_count`、`complete_card_count=count(cards.parse_complete=true)`;或者明确 incomplete card 不进入 cards 并为每个 unparsed node 保存 bounded、无秘密、不可冒充身份的 ordinal/hash。同步修正 `parsed_card_count`、`parser_error_count`、proof/counts 及 incomplete-card/unknown-node/计数漂移反例。无需改变 no-new 的 fail-closed 方向。 |
| | | |
| | | #### F2/F4-R1 — `STALE_FORMAL_LOCK_RECOVERY_SELF_DEADLOCK` |
| | | |
| | | V002 第 5 节规定 formal lock stale 时“只有 owner 不存在且无 pending 事务后恢复”,但同一节又要求 transaction recovery 先按 `StateLock -> formal lock` 取双锁。若进程在创建 formal lock 并写入 `TRANSACTION_INTENT`、提交 state 或提交 formal 后被 kill,下一入口会同时看到 stale formal lock 与 pending transaction:规则禁止接管 stale lock,而恢复 pending 又必须先取得该锁,形成永久自闭锁。F2 明确要求这些 phase 可 reopen,F4 当前锁规则使其不可实现。 |
| | | |
| | | 最小修复:冻结 owner-dead stale-lock takeover 的唯一恢复协议。pending transaction 与 stale lock 必须精确绑定同一 task/run/owner nonce/lock identity;确认 PID/进程创建时刻已失效、锁文件普通非 reparse 且 bytes/hash 匹配后,recovery 可在持有 StateLock 时原子隔离/接管该 exact stale lock,再按 intent 恢复。无 pending、身份不符、活 owner、PID reuse、第三内容、删除/rename 失败均 SAFETY_STOP。补 kill-after-lock、各 transaction phase、PID reuse、异 run pending、活锁和两个 recovery 竞争者的真实子进程反例;不得通用删除 stale lock。 |
| | | |
| | | ### 已关闭且冻结的原 findings |
| | | |
| | | 1. F3 mixed-history:现有 48 行独立复算为 22 components/16 SAVED/5 video/1 retryable,29 个非 SAVED status exact allowlist 与实物相符;token/union/conflict、UID 兼容、artifact matrix、schema 2/state event 合同足以闭环,`CLOSED`。 |
| | | 2. F5 hourly evidence:UTC 小时唯一 run、168 slot、STARTED/TERMINAL、planned terminal、formal-commit 后补 slot、latest 重建与 cleanup 语义闭环,`CLOSED`。 |
| | | 3. F1 的 source-controlled extractor、CLI-derived no-new、terminal marker、limit/NO_PROGRESS 门禁方向保留;只修 F1-R1 计数一致性。 |
| | | 4. F2 pending WAL/reopen matrix 与 F4 exact candidate/双前像 compare/竞争写方向保留;只修 F2/F4-R1 stale lock takeover。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - exact creator/URL、单轮一次 navigate/reload、15s/8s、五终态优先级、public discovery 非权威、正文/原图/video metadata+cover、no-overwrite、secret/raw-error fail-closed及两个真实样本解释均未回退。 |
| | | - required_fixes 仅限上述 2 项;不得扩展范围或要求真实 smoke。 |
| | | - 产品 code/test/fixture、formal data、Chrome refresh、network retry、download/video、extension/policy/HKCU/session secret 继续冻结。 |
| | | - 结论=`V002_FOCUSED_DESIGN_HELD_2_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T13:10:00+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,对 B 站动态主动刷新采集器 V001 做一次完整重型方案审核;产品 code/test/fixture 与正式数据保持冻结,未执行新增 Chrome refresh、network retry、download、video 或 formal write。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813114445612_ca976cf4`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001.md=24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`。 |
| | | - 冻结基线:code=`60090/67B2E6FB34F100C57BF50A4D3067D6FDD6E47C5D3FBEF58D2CF5D8796B07AB8`;test=`31303/D82BFF8AD9B78FD749A7536FF9FED0486CF87D6B9FDDEE7947202C2414AAE322`;fixture=`1216/0CD53C7C93D7E05B4A913EBF5223366E3A06A17E2474DF52BC64F0BB4EBEA71F`;formal manifest=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 events`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | |
| | | #### F1 — `EVIDENCE_NO_NEW_PROOF_NOT_DETERMINISTIC` |
| | | |
| | | `REFRESH_CONFIRMED_NO_NEW` 依赖 `end_of_feed/pagination_complete/page_truncated/all_cards_parsed/unparsed_card_count` 等由外部 Chrome 步骤直接声明的布尔值,但 V001 未冻结可复算的页面证据:DOM extractor/parser 版本或哈希、所见卡片总数与逐卡稳定身份、滚动/分页观察序列、end-of-feed 的 exact DOM marker/selector,以及 `max_items=200` 或其他读取上限命中时强制 `page_truncated=true` 的规则。因而任意 JSON 可自称 coverage complete,CLI 无法独立证明“已覆盖窗口且没有新增”。 |
| | | |
| | | 最小修复:冻结 bounded、无秘密、可重算的 `page_observation`/coverage-proof schema;CLI 据此自行推导 coverage。任何数量/大小/滚动/分页/时间上限命中、重复页未推进、marker 缺失或 observation 不连续均不得 no-new,并增加伪造 complete、200 项截断、重复页、空页无 marker 的入口反例。 |
| | | |
| | | #### F2 — `REFRESH_PENDING_CRASH_RECOVERY_UNDEFINED` |
| | | |
| | | `refresh-begin` 会 CreateNew `refresh/pending.json`,但第 11 节只定义 `transaction.pending.json` 后的恢复。begin 后、Chrome 崩溃/EOF 后或 evidence 落地至 commit 前退出时,没有能清理或终结 durable pending 的状态机;后续小时 begin 会被旧 pending 永久阻塞。 |
| | | |
| | | 最小修复:冻结 pre-transaction pending 的 phase/ownership/deadline/evidence identity 与 reopen 状态机;对无 evidence、有效失败 evidence、有效 commit evidence、未知/篡改状态规定唯一 run record、pending 清理/保留、exit 和幂等重放,并覆盖每个中断点。 |
| | | |
| | | #### F3 — `MIXED_HISTORY_CATALOG_CONTRACT_UNDERSPECIFIED` |
| | | |
| | | 现有正式清单含同一 `stable_id/BVID` 的 SAVED、pending、blocked、download/transcription 等多状态历史;16 个 SAVED 实物均存在且哈希匹配。V001 未冻结 token namespace/canonicalization、跨 token union、状态优先级、creator UID 缺失兼容、身份冲突与历史 artifact 校验矩阵,可能直接改变 new/no-new 与重复正式写。 |
| | | |
| | | 最小修复:基于现有 48 行冻结 schema 1 字段/状态分类、namespaced token 与 union/conflict 规则、creator 缺失兼容、SAVED 校验和 schema 2 `dedupe_keys` exact form;给出 48 行预期 unique-entity/catalog 摘要与冲突反例,并冻结新 state event exact schema。 |
| | | |
| | | #### F4 — `DUAL_MANIFEST_COMMIT_HAS_LOST_UPDATE_RACES` |
| | | |
| | | begin 记录两份 manifest 前像,但未要求 artifact/state 发布前复核 state 前像;begin 与 commit 间旧命令的合法 state 追加可能被覆盖。formal 也只是 check 后再 replace,未定义覆盖 check-through-replace 的共享锁/CAS,仍有 TOCTOU lost update。 |
| | | |
| | | 最小修复:冻结两份 exact candidate=`preimage + canonical lines`,在任何正式发布前同时复核前像;formal 使用所有 writer 共用、跨进程、覆盖 check-through-replace 的锁或可证明 CAS,state 在 StateLock 内 compare-before-replace。任何漂移 fail/rebegin,不得 rebase/覆盖;补两进程竞争与中断反例。 |
| | | |
| | | #### F5 — `BOUNDED_RUN_EVIDENCE_NOT_ATOMIC_WITH_TERMINAL_RESULT` |
| | | |
| | | formal commit 后才写 final receipt、168-slot run evidence 和清 pending;no-new/blocked/unreadable/partial 又仅依赖 run evidence。设计未冻结同小时 collision、latest/slot 顺序、失败终态和 reopen,可能出现业务成功却无审计记录,或失败/no-new 对外返回后唯一证据缺失/覆盖。 |
| | | |
| | | 最小修复:冻结 run record schema/canonical bytes/slot 命名与同小时多 run 规则、latest/slot/receipt/pending 提交及恢复矩阵。durable run record 前不得返回终态;formal 已提交后的证据失败须可恢复且保持成功。补所有持久化点异常、同小时两 run、slot overwrite、latest/slot 失败与 replay。 |
| | | |
| | | ### 已通过且冻结的边界 |
| | | |
| | | 1. supported Chrome、exact creator URL、单次 navigate/reload、禁止 CDP/profile/Cookie/header/412 绕过的控制面方向正确。 |
| | | 2. 五终态总体优先级、discovery 永不提升 no-new,以及两个真实样本的 fail-closed 解释正确。 |
| | | 3. 全文/原图/video metadata+cover、no-overwrite、secret/raw error fail-closed、失败不增长 formal manifest 的方向可保留。 |
| | | 4. formal manifest 只读检查为 48 events/16 SAVED,16 个 SAVED 实物哈希均匹配;未修改正式数据。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - 结论:`V001_DESIGN_HELD_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - required_fixes:仅限 F1-F5;下一修订一次性冻结合同与非真空反例,保留已通过边界,不扩展产品范围。 |
| | | - HOLD 期间不得修改产品 code/test/fixture,不得新增 Chrome refresh、network retry、download/video、formal write、extension/policy/HKCU 或 secret access。无需新增真实运行。 |
| | | - Open questions:无。 |
| | | |
| | | <!-- |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T13:10:00+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,对 B 站动态主动刷新采集器 V001 做一次完整重型方案审核;产品 code/test/fixture 与正式数据保持冻结,未执行新增 Chrome refresh、network retry、download、video 或 formal write。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813114445612_ca976cf4`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001.md=24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`。 |
| | | - 冻结基线:code=`60090/67B2E6FB34F100C57BF50A4D3067D6FDD6E47C5D3FBEF58D2CF5D8796B07AB8`;test=`31303/D82BFF8AD9B78FD749A7536FF9FED0486CF87D6B9FDDEE7947202C2414AAE322`;fixture=`1216/0CD53C7C93D7E05B4A913EBF5223366E3A06A17E2474DF52BC64F0BB4EBEA71F`;formal manifest=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 events`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | |
| | | #### F1 — `EVIDENCE_NO_NEW_PROOF_NOT_DETERMINISTIC` |
| | | |
| | | `REFRESH_CONFIRMED_NO_NEW` 依赖 `end_of_feed/pagination_complete/page_truncated/all_cards_parsed/unparsed_card_count` 等由外部 Chrome 步骤直接声明的布尔值,但 V001 未冻结可复算的页面证据:DOM extractor/parser 版本或哈希、所见卡片总数与逐卡稳定身份、滚动/分页观察序列、end-of-feed 的 exact DOM marker/selector,以及 `max_items=200` 或其他读取上限命中时强制 `page_truncated=true` 的规则。因而同一任意 JSON 可自称 coverage complete,离线实现无法独立证明“已覆盖窗口且没有新增”。这也是 `no-new` 权威门,不能只靠 controller 自报。 |
| | | |
| | | 最小修复:冻结一个 bounded、无秘密、可重算的 `page_observation`/coverage-proof schema(包含 extractor contract version/hash、每次观察的 ordinal/visible-card stable IDs 或其 canonical hash、终止原因与 exact end-of-feed marker、observed/parsed/unparsed/limit counts);CLI 根据该证据自行推导 coverage booleans。明确任何 item/image/text/scroll/page/time 上限命中、重复页未推进、marker 缺失或 observation 不连续均不得 no-new,并增加伪造 complete、200 项截断、重复页、空页无 marker 的入口反例。 |
| | | |
| | | #### F2 — `REFRESH_PENDING_CRASH_RECOVERY_UNDEFINED` |
| | | |
| | | `refresh-begin` 会 CreateNew `refresh/pending.json`,但第 11 节只定义 `transaction.pending.json` 出现后的内容事务恢复。若进程在 begin 后、Chrome 超时/崩溃/EOF 后或 evidence 落地至 commit 前退出,既无 transaction intent,也没有能够清理/终结 durable pending 的状态机;后续小时 begin 只能“先按第 11 节恢复”,实际没有适用分支,会永久被旧 pending 阻塞。五种业务终态也无法覆盖这条真实崩溃路径。 |
| | | |
| | | 最小修复:冻结 pre-transaction pending 的 phase/ownership/deadline/evidence identity 与 reopen 状态机。对过期且无有效 evidence、有效失败 evidence、有效 commit evidence、未知/篡改/未来 deadline 分别规定唯一终态、run-slot 写入、pending 清理/保留和 exit;相同 run 重放必须幂等。覆盖 begin 后立即中断、Chrome timeout/EOF、evidence 写一半/完整但 commit 未启动、下一小时恢复的公共入口故障注入。 |
| | | |
| | | #### F3 — `MIXED_HISTORY_CATALOG_CONTRACT_UNDERSPECIFIED` |
| | | |
| | | 现有正式清单 48 行包含同一 `stable_id/BVID` 的 SAVED、pending、blocked、download/transcription 等多状态历史;16 个 SAVED 实物当前均存在且哈希匹配。V001 仅写“从 stable_id/bvid/source_url 抽 token、同 token 合并”,没有冻结 token namespace/canonicalization、跨 token 的 union 规则、状态优先级、creator UID 缺失兼容、同一实体 source URL/dynamic/opus/BVID 交叉身份规则,以及何种历史 artifact 字段必须做 bytes/hash 校验。不同实现可把 blocked 当 active、把同一实体拆开或把冲突错误合并,直接影响 new/no-new 与重复正式写。 |
| | | |
| | | 最小修复:基于这 48 行冻结 schema 1 字段/状态分类表、namespaced token 生成与 union-find/冲突规则、creator 缺失的唯一兼容规则、SAVED artifact 实物校验矩阵和 schema 2 `dedupe_keys` exact canonical form;给出 48 行预期 unique-entity/catalog 摘要与冲突反例。新 state `CONTENT_SAVED`/video `TODO_QUEUED` 也须冻结 exact event schema 及 catalog 作用,避免旧命令对新事件解释漂移。 |
| | | |
| | | #### F4 — `DUAL_MANIFEST_COMMIT_HAS_LOST_UPDATE_RACES` |
| | | |
| | | begin 记录两份 manifest 前像,但事务顺序只在提交 state 前写“原子提交”,未要求在 artifact/state 发布前复核 state 仍等于 begin 前像;begin 与 commit 之间旧 `check/move-completed/handoff` 的合法 state 追加可能被新 candidate 覆盖。对 formal manifest 也只是步骤 5 复核后在步骤 6 replace,复核与 replace 间仍存在 TOCTOU;未定义所有正式 writer 共用的锁/CAS,另一 writer 可在两步之间追加并被覆盖。恢复矩阵只能检测已经发生在检查前的第三 hash,不能阻止检查后的 lost update。 |
| | | |
| | | 最小修复:冻结两份 manifest 的 exact candidate=`preimage + canonical lines`,并在任何 artifact/state 正式发布前同时复核两份前像。为 formal manifest 规定所有 writer 共享、跨进程、覆盖 check-through-replace 的锁或可证明的 CAS/no-clobber 协议;state 也须在 StateLock 内 compare-before-replace。前像漂移只允许 fail/rebegin,不得 rebase 或覆盖。补 begin 后合法 state 追加、formal writer 在 check 前/后竞争、锁持有者中断及两进程实测反例。 |
| | | |
| | | #### F5 — `BOUNDED_RUN_EVIDENCE_NOT_ATOMIC_WITH_TERMINAL_RESULT` |
| | | |
| | | V001 把 formal commit 定义为业务 commit point,而 final receipt、168-slot run evidence 和 pending cleanup 均在其后;no-new/blocked/unreadable/partial 又只写 run evidence。设计未冻结 run-slot 路径/slot collision(同一小时多个顺序 run)、`latest.json` 与 slot 的提交顺序和崩溃恢复,也未说明 slot 写失败时终态 stdout/exit。结果可能出现 formal 已成功但没有审计状态,或失败/no-new 已对外返回但唯一有界证据缺失/被同小时覆盖,不能满足小时证据可审计与重跑幂等。 |
| | | |
| | | 最小修复:冻结 run record exact schema、canonical bytes、slot 文件名与同小时多 run 规则,以及 latest/slot/receipt/pending 的提交和 reopen 矩阵。终态不得在 durable run record 成功前对外返回;formal 已提交后 run-slot/receipt 失败必须由 pending 明确恢复并保持业务成功,非业务终态则必须在清 pending 前 durable 记录。补每个持久化点 OSError/KeyboardInterrupt/SystemExit、同小时两 run、slot overwrite、latest/slot 任一失败和已提交 replay 测试。 |
| | | |
| | | ### 已通过且冻结的边界 |
| | | |
| | | 1. Chrome 控制面限定为 supported Codex Chrome、exact creator URL、单次 navigate/reload,禁止 CDP/profile/Cookie/header/412 绕过,方向正确;PASS 前及本审核新增真实动作均为 0。 |
| | | 2. 五终态的总体优先级、公开 discovery 永不提升为 no-new、两个真实样本分别解释为 `REFRESH_FAILED_PAGE_UNREADABLE` 与非权威 `BLOCKED_412` 均正确;但须随 F1/F2/F5 补齐可落地证据和崩溃语义。 |
| | | 3. 正式内容的全文/原图/video metadata+cover 边界、no-overwrite、secret-like key/raw error fail-closed、正式 no-new/失败不增长 formal manifest 的方向可保留。 |
| | | 4. 现有 formal manifest 只读检查为 48 events/16 SAVED,16 个 SAVED 关联实物存在且可复算哈希一致;未修改任何正式数据。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - 结论:`V001_DESIGN_HELD_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - required_fixes:仅限 F1-F5;请在下一修订一次性冻结上述合同与非真空反例,保留已通过边界,不扩展产品范围。 |
| | | - HOLD 期间不得修改产品 code/test/fixture,不得新增 Chrome refresh、network retry、download/video、formal write、extension/policy/HKCU 或 secret access。修订设计可继续使用既有两份真实样本,无需新增真实运行。 |
| | | - Open questions:无。 |
| | | --> |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-COLLECTOR-MVP-IMPLEMENTATION-20260804-001 |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-COLLECTOR-MVP-IMPLEMENTATION-20260804-001 |
| | | |
| | |
| | | - build-005 已满足 installer 的独立 exact-build identity 前置门禁;未来只有获得另行明确安装调度的操作者,才可把同一 source approval、上述 build-005 approval、同一 schema 2 receipt 和同一 EXE 作为不可替换输入。任一 bytes/hash/path/output-set 漂移均须 fail closed 并重新审核。 |
| | | - 本 hash-only PASS 与 approval 本身不授权当前回合实际 install/HKCU,不授权 EXE execution,也不授权 Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data` 或 transcription。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V003-DESIGN-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T03:27:32+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内的 V003 重型安全设计独立审核;实现、Web Store 发布、policy/HKCU、Chrome/session、网络、下载和真实数据动作继续冻结。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;方案=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V003.md=17715/1EC7F6D8D6CD6AA9BEE5F5696D1CB578514CA3C61ADA838777093C8EFEF2C2F1`。 |
| | | - 请求交接:`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V003-DESIGN-20260810-001`;管理续派=`HANDOFF-INFOADMIN-INFODEV2-BILI-AUTHENTICATED-EXTENSION-ZERO-MANUAL-STANDARD-LOAD-ASSIGN-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 角色与入口核验:`dev.developer.project.secondary / infodev-2` 是登记 owner,`dev.reviewer.project / inforev` 是共享独立审核员;目标落点=`dev/project-dev`、`dev-doc/project-doc`,审计入口=`dev-doc/开发审计报告.md`,均与 `mbx.project.yaml`、项目配置和工作说明一致。 |
| | | - 上游账本核验:开发总纲、计划和执行日志已登记同一事项续派、重型方案先审、原 owner 不并发、真实动作全冻结;未创建新 task 或平行审核链。 |
| | | - 冻结基线独立复算:原 source manifest=`3681/333BA59512C5F68B35C00B8C9738C8B26FB78285F05851F9F35BA3FC44819535`;清单所列实际源码树=`17/17 exact`、缺失=`0`、额外=`0`、bytes/hash 漂移=`0`、reparse=`0`。拟新增 managed-load 产品目录和测试目录均不存在,符合 implementation frozen。 |
| | | - 方案编码检查:strict UTF-8=`PASS`、BOM=`NO`、trailing whitespace=`0`、目标文件 `git diff --check=PASS`。 |
| | | - 外部一手事实:Chrome Enterprise 官方策略页确认 Web Store 扩展可通过 Windows `Software\\Policies\\Google\\Chrome\\ExtensionInstallForcelist` 静默强制安装,策略在 profile 层生效;Chrome 官方分发文档确认 Windows 标准安装来源必须是 Chrome Web Store。因此 V003 选择的总体机制有受支持依据,不需要退回开发者模式、unpacked、CDP 或自托管 CRX。证据:`https://chromeenterprise.google/policies/extension-install-forcelist/`;`https://developer.chrome.com/docs/extensions/how-to/distribute`。 |
| | | |
| | | ### Findings |
| | | |
| | | #### F1_DESIGN_WEBSTORE_PACKAGE_NOT_UPLOAD_READY(阻断;产物/外部发布合同) |
| | | |
| | | - V003 第5、6、11节冻结 ZIP 恰好只有 `manifest.json/background.js/sidepanel.html/sidepanel.css/sidepanel.js` 五文件;实际冻结 manifest 没有 `icons` 字段,源码树也没有 icon 资产。Chrome 官方 manifest 文档把 `description` 与 `icons` 列为 Chrome Web Store 所需键,官方 Web Store 准备文档也要求提交完整扩展 ZIP。因此当前 exact-five 包不能作为已具备发布条件的安全实施合同。证据:`https://developer.chrome.com/docs/extensions/reference/manifest`;`https://developer.chrome.com/docs/webstore/prepare`。 |
| | | - 最小修订:在不改写原17文件的前提下,明确一个受审的 Web Store packaging overlay,冻结发布 manifest 相对原 manifest 仅允许的字段差异、所需 icon 文件及其 bytes/SHA-256,并相应修订 exact payload/ZIP/receipt/测试合同;或者提供 Google 官方 validator 对当前 exact-five 包确实可接受的可复验依据。发布返回 ID 非 exact ID 时继续 fail closed,不允许迁就修改 Native Host origin。 |
| | | |
| | | #### F2_DESIGN_SOURCE_APPROVAL_CONTRACT_MISSING(阻断;供应链信任) |
| | | |
| | | - 第6、11节要求 builder 在任何输出前消费树外 `source approval`,build receipt 也要绑定它,但全文没有冻结该 approval 的 schema、scope、批准角色、精确绑定字段、路径边界、生成时点和失效条件;第5节列出的 exact schema 集合也未包含 source approval。开发员将不得不自行发明信任锚或测试会误把同树自签文件当批准。 |
| | | - 最小修订:增加 reviewer-owned、source/output 树外 source approval 的 exact schema,至少绑定 task、managed-load contract bytes/SHA-256、原 source manifest、发布 payload/overlay exact set、批准角色/状态/时间;明确只在 V003 实现审核 PASS 后由 reviewer 创建,Build 只能消费其 exact bytes/hash,ValidateOnly 离线测试只使用临时 fixture。 |
| | | |
| | | #### F3_DESIGN_SECRET_SCAN_CONTRADICTS_FROZEN_RUNTIME(阻断;秘密边界/测试合同) |
| | | |
| | | - 第10、11节要求源码、ZIP、测试和证据递归拒绝 `cookie/token/...` 等“字段名”,但被冻结的合法五文件中,manifest 必然包含 `cookies` permission,`background.js` 必然包含 `chrome.cookies`、`cookie_store_id`、`cookies` 和内存 cookie record 字段。按设计逐字实施会让所有正确输入永久失败;放宽实现又会违反冻结方案。 |
| | | - 最小修订:把门禁改为拒绝认证秘密**值**、凭据持久化字段和秘密输出 sink,而不是拒绝运行所需的公开 API/协议标识符;使用唯一 synthetic secret sentinel 证明其不进入 ZIP 外持久化物、receipt、stdout/stderr、argv/env、日志和证据,同时保留对真实 credential literal、token 文件、profile/Cookie 数据落盘的硬阻断。 |
| | | |
| | | #### F4_DESIGN_EXCEPTION_MODEL_LANGUAGE_MISMATCH(阻断;错误处理/可验收性) |
| | | |
| | | - 产品入口被冻结为 PowerShell 脚本,但第8、9、11节使用 Python 的 `BaseException/KeyboardInterrupt/SystemExit` 类型体系并要求“原类型重抛”。PowerShell 实际处理的是 terminating .NET/PowerShell errors,`try/catch/finally` 及 Ctrl+C pipeline stop 的语义不同;当前测试矩阵没有可实现的异常注入与终态判定口径。Microsoft 一手说明:`https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_try_catch_finally`。 |
| | | - 最小修订:二选一并冻结唯一口径:保留 PowerShell时改为实际 terminating error、`PipelineStoppedException`/Ctrl+C、外部进程终止分类与 exit/stderr 合同;或把事务核心显式落为 Python 模块、PowerShell 仅做代理,从而使用 `BaseException` 语义。测试须与所选语言实际异常类型一致,不能在接口层声称保留不存在的类型。 |
| | | |
| | | #### F5_DESIGN_INSTALL_ROLLBACK_CRASH_REOPEN_GAP(阻断;策略污染/恢复) |
| | | |
| | | - Install 在写入 policy value 后、final install receipt rename 前若进程被终止或机器中断,会留下已生效策略值但没有正式 receipt;此时下一次 Install 因目标占用停止,Rollback 又因缺正式 install receipt 不能运行。Rollback 在删除 policy value 后、final rollback receipt 前中断也会留下相反的不可判定状态。`catch/finally` 不能覆盖强制终止或掉电,现有 BaseException 点注入不能证明恢复。 |
| | | - 最小修订:冻结 pending receipt 的 durable phase/ownership/preimage/commit-point 字段和启动时唯一恢复矩阵。建议以 final receipt rename 为 commit point:commit 前重启一律恢复前像;安装中断时只在能证明本次 ownership 和 exact value 时删除本值,回滚中断时恢复 exact value;任何外部漂移或所有权不明均 `SAFETY_STOP` 并保留证据。增加真实子进程 kill/crash-reopen 测试,覆盖 value 写/删与 final receipt 之间的每个持久化点。 |
| | | |
| | | #### F6_DESIGN_POLICY_PREIMAGE_SCHEMA_INCONSISTENT(阻断;策略并存安全) |
| | | |
| | | - 第7.2节的 install approval 只冻结“其他 value names 的排序哈希”,第8.1、8.3、8.4节却要求验证和保持其他 values 的 names/types/data exact 前像;现有 approval schema 无法证明同名 policy value 的 type/data 在审批后未变化,也不足以支持 exact 回读、回滚和 HealthCheck。 |
| | | - 最小修订:在 install approval 和 pending/install/rollback receipt 中冻结同一 canonical preimage 摘要,至少覆盖 policy key 是否存在,以及每个既有 value 的 name、registry type、data 的长度与无秘密哈希;安装前最后一次复算,安装/回滚后再次复算。任何 target race、同名数据变化或其他 value 漂移均不得覆盖/删除,必须停止并保留外部失败证据。 |
| | | |
| | | ### 结论与 required_fixes |
| | | |
| | | - 审计状态:`HOLD` |
| | | - 阻断问题数:`6` |
| | | - 非阻断建议:无;上述均是当前安全实施所必需的发布可行性、信任锚、秘密门禁或恢复合同,不是样式/命名加码。 |
| | | - required_fixes:只修订 V003 以一次闭合 F1—F6;保留 Web Store + official update URL + 单值 `ExtensionInstallForcelist` 主路径、exact extension ID、独立目录、冻结原17文件/runtime/bridge、四个后续外部门和全部零真实动作边界。复审只检查 F1—F6 及 preserved contracts 是否回退。 |
| | | - 本 HOLD 不授权创建 managed-load 代码、测试或候选 ZIP,不授权 Web Store 发布、policy/HKCU、Chrome/session、network/download、real media、`F:\video`、formal `ana-data` 或 transcription。 |
| | | - Open questions:无;开发员可直接按上述最小修订形成同链 V004 后一次性提交聚焦复审。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V004-DESIGN-REREVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T04:42:19+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅对 V003 `HOLD/6` 的 F1—F6 闭环及 preserved contracts 做聚焦设计复审;实现、候选包、Web Store 发布、policy/HKCU、Chrome/session、网络、下载和真实数据动作继续冻结。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;基础方案=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V003.md=17715/1EC7F6D8D6CD6AA9BEE5F5696D1CB578514CA3C61ADA838777093C8EFEF2C2F1`;修订=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V004.md=21074/6E2B2AEDD2A432889ACD5314B5AD1C93B923D937E628434AE952A303A2BE8486`。 |
| | | - 请求交接:`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V004-DESIGN-20260810-001`;前序结果=`HANDOFF-INFOREV-INFODEV2-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V003-DESIGN-REVIEW-RESULT-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 方案编码与治理:V004 strict UTF-8=`PASS`、BOM=`NO`、trailing whitespace=`0`;开发总纲、计划、执行日志和目录导读登记同一 task/owner/reviewer 链;`mbx validate --project project-info --governance=OK/projects=1/warnings=0`。 |
| | | - 冻结边界独立复算:原 source manifest=`3681/333BA59512C5F68B35C00B8C9738C8B26FB78285F05851F9F35BA3FC44819535`;实际源码树=`17/17 exact`、missing/extra/hash mismatch/reparse=`0/0/0/0`;拟新增 managed-load 产品目录和测试目录均不存在,候选 ZIP=`0`。 |
| | | |
| | | ### Findings |
| | | |
| | | - 阻断 findings:`0`。 |
| | | |
| | | ### F1—F6 闭环确认 |
| | | |
| | | 1. **F1 / upload-ready packaging overlay:PASS。** reviewer 严格解码 embedded overlay manifest,复算=`1150/92F2E950BA5CA5ECDA5A0F167DD90FB19449D4CC3AE1C6AB7AB404A337BA7A43`;与原 `manifest.json=1011/9B5CEB76758D69C3A9F7DEBDE5A55B026E70BA064769180A6F959A04283EA865` 深比较确认唯一新增字段为冻结 `icons` 对象,原 key/version/permissions/runtime 全部逐值不变。四个 embedded PNG 的提交 bytes/SHA-256 均匹配,PNG signature、IHDR 尺寸、RGBA 8-bit、chunk CRC、IDAT 解压/scanline 长度和 IEND 均通过;从未变 public key 独立派生 extension ID=`oidmclckpdmpabbfedplkbdplmfcenbb`。exact-nine ZIP、旧 exact-five 负例和 overlay-only 差异门禁足以闭合发布包阻断。 |
| | | 2. **F2 / reviewer-owned source approval:PASS。** schema、scope/status、批准角色、task、contract、原 source manifest、managed source tree、9-entry payload、实现 PASS 审计和 RFC3339 时间均已冻结;正式 approval 只能在实现审核 PASS 后由原 reviewer 于 source/output/install 树外创建,生产入口强绑定 exact path/bytes/SHA-256,test-only scope 只能经不可由生产 CLI/环境选择的内部 adapter 注入临时 fixture,developer 自签或旧批准均 fail closed。 |
| | | 3. **F3 / secret-value boundary:PASS。** V004 明确废止合法 `cookies` permission/API/协议字段的关键词误杀,改以冻结 source bytes、exact schema/value domain、零环境/profile 枚举和 synthetic sentinel 端到端 sink 检查证明秘密值不进入 ZIP、receipts、stdout/stderr、日志、argv 快照或证据;真实 credential literal、authorization/cookie header、signed URL、private-key/profile 数据和秘密输出 sink 仍硬阻断,未放宽 V001+V002 内存秘密合同。 |
| | | 4. **F4 / PowerShell exception model:PASS。** 产品语言保持 PowerShell,统一采用 terminating errors、`PipelineStoppedException`/合作式取消、实际 Ctrl+C 与不可捕获 kill/power-loss 分类;安全门禁、普通失败和可捕获取消分别冻结 exit `3/4/130`,不可捕获中断不虚报 stdout/exit 或成功 receipt,而由下次 reopen recovery 收口;已删除 Python `BaseException/KeyboardInterrupt/SystemExit` 和“原类型重抛”冲突语义。 |
| | | 5. **F5 / durable intent and crash-reopen:PASS。** receipt parent、current-user mutex、immutable install/rollback pending、final receipt atomic rename commit point及完整启动恢复矩阵均已冻结。commit 前只在 exact preimage/owned exact target 可证明时恢复前像;final exact 后按 committed state 识别;target、其他 value、key、temp、schema/hash/binding 任一歧义均零 registry mutation 并 `SAFETY_STOP`。真实子 PowerShell + file-registry seam 在每个持久化点强杀并重启入口的验收矩阵覆盖 install/rollback 两向恢复、recovery receipt 写失败、无自动重试和无伪成功。 |
| | | 6. **F6 / canonical policy preimage:PASS。** install approval、pending/final、rollback 和 HealthCheck 共用 exact preimage:`key_exists`、target absent、全部既有 value 的 ordinal name、kind、canonical data length/hash及总 hash;String/Expand/Multi/DWord/QWord/Binary 的规范编码明确,Unknown/不可无损规范化值 fail closed。管理员 install approval 同时绑定 release/source/native/receipt paths/full preimage;mutex 双进程、target/other-value last-check drift、key absent/existing、全部允许 kind 与 rollback 完整前像均进入非真空测试合同,已消除“仅 value names hash”与 exact 恢复要求的不一致。 |
| | | |
| | | ### Preserved contracts 与结论 |
| | | |
| | | - V003 的 Web Store + official update URL + 单值 `ExtensionInstallForcelist` 唯一路径、exact extension ID、冻结原17文件/build-005/installed Native Host/bridge/runtime、独立 managed-load 目录及 Web Store 发布、release approval、管理员 install approval、实际 policy install、Chrome enabled/runtime 分阶段外部门均未回退。 |
| | | - 审计状态:`PASS` |
| | | - 阻断问题数:`0` |
| | | - 结论:`V003_V004_F1_F6_DESIGN_CLOSED_IMPLEMENTATION_AUTHORIZED_OFFLINE_ONLY` |
| | | - 授权边界:仅允许唯一 owner 按 V003+V004 组合合同创建 `dev/project-dev/bili_authenticated_extension_managed_load/`、对应测试和实现证据,运行纯离线/合成测试并提交同链实现审核;实现审核 PASS 前不得创建正式 reviewer source approval。 |
| | | - 本 PASS 不授权候选包外部发布、Web Store upload/publish、release approval、policy/HKCU、Chrome/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime。任何后续门不得回退开发者模式、unpacked、`--load-extension`、CDP/profile 注入、自托管更新服务或第三方 Host。 |
| | | - Open questions:无;后续评审仅在实现明确提交后按组合合同进行。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-IMPLEMENTATION-REVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T09:01:23+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,按已通过的 V003+V004 组合合同对 managed-load 离线实现、测试与证据做一次独立实现审核;Web Store publish、policy/HKCU、Chrome/session、网络下载、真实媒体与 runtime 均未授权且未执行。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;MB-X 消息=`msg_20260810082543675_7b284c77`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-IMPLEMENTATION-20260810-001`;回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计基线:V003=`17715/1EC7F6D8D6CD6AA9BEE5F5696D1CB578514CA3C61ADA838777093C8EFEF2C2F1`;V004=`21074/6E2B2AEDD2A432889ACD5314B5AD1C93B923D937E628434AE952A303A2BE8486`;前序设计审计=`DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V004-DESIGN-REREVIEW-20260810-001 / PASS/0`。 |
| | | - 冻结实现复算:builder=`26507/F0F4ED492A02DAC7E03B7F45B3E118B597F950C696FAADC28158F69A6D3F4811`;installer=`58279/C444C85D0B4C0B550E64329415388294F555456DB1ED728EE3ADE683639F3EFF`;contract=`8294/F5E5DE4AEC355A5024E3E221B3E358C0D189B1949A1B18D870ABE6D8BF9EFA4B`;README=`2538/7FB38D806F0F37C99C1319B294ED4A64C82AF3A0A1DC0787C461B08042DCA2A3`;test=`30172/B28863DFFED9B2A71A8ED78EC85DDDFA8EF57D0F887EBBCCC15141A7EBA21968`;tool doc=`5429/98FE152D9CE9065371FDCE1DEE94091181819E28D19B092D91F84139388CF3EA`;evidence doc=`5122/32DA1913F16C3BFF114C735F48C510ACA6A032C921187C2E61A9DD9F0CCCA0BE`;machine evidence=`4757/047028BD9FA51A18EC3AEBA8550074D3776998CFDB1DD4A5355DEEAE585F0AA2`;review request=`4548/264EF88F38144B6317557690B3D630F31A4356D57036307F8795BA8EC1AB6E48`,均与提交一致。 |
| | | - 冻结原扩展独立复算:source manifest 所列实物=`17/17 exact`,missing/extra/hash mismatch=`0/0/0`。治理校验=`OK/projects=1/warnings=0`。 |
| | | |
| | | ### Findings |
| | | |
| | | #### F1_SOURCE_APPROVAL_TRUST_AND_SCHEMA_FAIL_OPEN(阻断;正式批准可被调用方自报) |
| | | |
| | | - `build_webstore_upload.ps1:308-331` 与 `install_managed_extension_policy.ps1:116-145` 只校验调用方提供文件的 path/bytes/SHA、`approved_by_role` 字符串以及 implementation-review 字段的格式;未复读或复算 `dev-doc/开发审计报告.md` 的 exact bytes/SHA,未证明 audit ID/`PASS` 终态实际存在,也未把正式 approval 限定到 reviewer-owned 树外信任位置。因此 developer 可自行生成内容自洽、角色自报为 reviewer 的 production-scope approval。 |
| | | - V004 第3节冻结 `managed_load_contract={path,bytes,sha256}`、`original_source_manifest={path,bytes,sha256}`;当前两入口却以 exact keys `@('bytes','sha256')` 接受缺 path 的对象并拒绝含 path 的正式对象,产品 schema 与已通过设计相反。 |
| | | - reviewer 临时 `ValidateOnly` 反例实际结果:production scope、自报 reviewer、`audit_bytes=1`、`audit_sha256=AAAA...` 且缺上述两个 path 的 approval 返回 `exit=0 / VALIDATION_PASS_ONLY`;同一对象补齐 V004 要求的两个 path 后返回 `exit=3 / E_BUILD_CONTRACT`。该反例未生成 ZIP、未写正式路径。 |
| | | |
| | | #### F2_PRODUCTION_SELECTABLE_TEST_SEAMS(阻断;test-only scope 可由产品 CLI 开启) |
| | | |
| | | - builder 的 `-TestOnlyAllowSyntheticApproval/-TestOriginalSourceRoot`(第12—15行)和 installer 的 `-TestOnlyAllowSyntheticApprovals/-TestFileRegistryPath/-TestInjectFailure/-TestPauseAt`(第15—23行)均为产品脚本公开参数;`DontShow` 只隐藏帮助,不形成不可达边界。调用者可直接选择 synthetic approval、替换原 source root、切换 file-registry provider 或注入暂停/故障。 |
| | | - 这违反 V004 第3节“test-only scope 只能经不可从生产 CLI/环境选择的内部 adapter 注入”的冻结合同;当前测试也全部依赖这些产品参数,未证明 production wrapper 对 developer 自签、test scope 和 test provider fail closed。 |
| | | |
| | | #### F3_RECOVERY_ERROR_TAXONOMY_AND_FAILURE_EVIDENCE_MISSING(阻断;恢复失败被吞并且无外部失败证据) |
| | | |
| | | - installer 第659—669、675—685行对 recovery/终态复核异常使用空 `catch {}`;二次恢复失败会被静默丢弃,主异常与 secondary rollback/recovery failure 均未留下可审核关系。第687—689行又把 receipt 损坏、unknown temp、外部漂移和恢复歧义统一压成 `E_MANAGED_LOAD`,未实现 V004 冻结的 `E_RECEIPT`、`E_RECOVERY_AMBIGUOUS` 等终态区分。 |
| | | - contract/install approval 未绑定 administrator-approved independent failure root,产品也未实现包含固定 error code/hash 的 CreateNew 外部失败证据;这不满足 V004 第5节和第6.4节对原 ErrorRecord、二次失败及失败证据落点的要求。 |
| | | |
| | | #### F4_CRASH_CANCEL_ACCEPTANCE_MATRIX_INCOMPLETE(阻断;提交证据不足以证明每一持久化点) |
| | | |
| | | - `test_managed_load.py` 的真实子进程强杀只覆盖 install `after-policy-write`、rollback `after-policy-delete`,以及并发测试中的 `after-install-pending`;其余 install/rollback pending flush、最后前像检查、postimage、final temp flush/rename 前后没有逐点 kill/reopen 反例。第489—524行仅对 install 侧做同进程普通异常注入,不能替代不可捕获中断。 |
| | | - 未发现 recovery receipt 写失败、实际 Ctrl+C(宿主支持时)或 primary+secondary recovery failure 的非真空测试;测试只断言若干 exit code,没有断言 `E_RECEIPT/E_RECOVERY_AMBIGUOUS` 与外部失败证据。提交材料声称“每个持久化点”的验收与实际测试集合不一致。 |
| | | |
| | | ### 已通过且冻结的检查 |
| | | |
| | | - exact-nine payload、overlay-only manifest、四个 PNG 固定内容、确定性 ZIP 基本实现未发现本次同边界阻断;冻结原扩展 17 文件未回退。 |
| | | - secret sentinel、禁止 Chrome/CDP/unpacked/自托管路径、policy canonical preimage、单值策略与主要 install/rollback happy path/部分 crash-reopen 测试未发现新增范围漂移。 |
| | | - 提交的 `12/12`、冻结扩展 `33/33`、其他 project `102/102` 结果仅说明现有测试通过;F1 的独立反例证明现有测试未覆盖正式 trust boundary,不能据此放行。 |
| | | |
| | | ### 最小 required fixes |
| | | |
| | | 1. 按 V004 exact schema 同时加入并验证两个 `{path,bytes,sha256}` 绑定;正式 source approval 必须位于 reviewer-owned、source/test/output/install 树外的固定信任位置,并由产品入口复算该 approval 所绑定的实际实现审计文件 bytes/SHA、audit ID 与 `PASS` 终态。增加 developer 自签、假 audit、旧 audit、错误/缺失 path、同树/输出树/安装树 approval 的 production-scope 反例。 |
| | | 2. 从产品参数面彻底移除 synthetic approval、source override、file-registry、fault/pause 等 test seams;改用测试目录内的内部 adapter/测试 wrapper 或不可由产品 CLI/环境选择的依赖注入。增加生产入口传入全部 test 参数均因未知参数失败且零副作用的断言。 |
| | | 3. 在 administrator-approved 独立 failure root 的 exact approval 绑定下实现 CreateNew/flush 的规范失败证据,记录固定 primary error code/hash 与 secondary recovery failure code/hash,不回显 message/path/value;不得使用空 catch 吞掉恢复失败,并恢复 `E_RECEIPT/E_RECOVERY_AMBIGUOUS` 等冻结终态。 |
| | | 4. 补齐 install/rollback 每个持久化点的真实子 PowerShell kill/reopen 矩阵、可支持时的实际 Ctrl+C、recovery receipt 写失败及 primary+secondary failure 反例;逐例断言 registry 前像/后像、pending/final/recovery/failure evidence、无伪成功、无自动重试及精确 exit/error code。 |
| | | 5. 修复仅限上述四项及对应测试/说明/证据;保持 V003+V004 其余合同、原17文件、build-005、installed Native Host、bridge/runtime 和全部真实动作边界不变,再沿同一 task/reviewer 链一次性提交 F1—F4 限定复审。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - 审计状态:`HOLD` |
| | | - 阻断问题数:`4` |
| | | - 结论:`IMPLEMENTATION_NOT_APPROVED_SOURCE_APPROVAL_NOT_CREATED` |
| | | - reviewer-owned 正式 source approval:`未创建`;当前 managed-load source tree、contract、builder/installer 和测试不得用于 Web Store candidate build 或后续发布门。 |
| | | - 当前安全边界:Web Store upload/publish、release approval、policy/HKCU、Chrome/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 与 runtime 继续冻结;不得回退开发者模式、unpacked、`--load-extension`、CDP/profile 注入、自托管更新服务或第三方 Host。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-HOLD4-LIMITED-REREVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T12:34:21.2746865+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅复审前序实现 `HOLD/4` 的 F1 source approval trust/schema、F2 production test seam、F3 recovery taxonomy/failure evidence、F4 crash/cancel matrix;V003+V004 其余 passed contracts、原17文件、build-005、installed Native Host、bridge/runtime 与产品范围不重开。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;MB-X 消息=`msg_20260810120722843_3cdd3ff8`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-HOLD4-LIMITED-REREVIEW-20260810-001`;回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 前序审计:`DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-IMPLEMENTATION-REVIEW-20260810-001 / HOLD/4`,提交时审计快照=`411809/48FEFD1CFD277139B0D94A4D72E8DACC35071CB0BB39D5B091FB2C37F34FDB50`。 |
| | | - 设计基线:V003=`17715/1EC7F6D8D6CD6AA9BEE5F5696D1CB578514CA3C61ADA838777093C8EFEF2C2F1`;V004=`21074/6E2B2AEDD2A432889ACD5314B5AD1C93B923D937E628434AE952A303A2BE8486`。 |
| | | - 冻结实现:builder=`28818/5B829CF265FD513C1076BA345D48EF48BC8880AB9AA083D21022E8F35BB0C8FB`;installer=`68147/568E1AEF1FA09AE29091A7133B5F0A0F5DDD1D9754C3F604B627E84EF44E177B`;contract=`9290/0143C8D9B00FA363B746D9228CB31CC23FFF0AFB4C78672005035E47E6738757`;README=`3271/87B6F2D5A0F2FD1C40FF92E9A70958DFC24ADAA3181D789FD451490600FEE0CC`;test=`52212/2CFD357EEC087BF6F11B50988E6CE3B0B7C2829168789069B283F0118131BAE5`。 |
| | | - reviewer 独立复算当前产品 `Get-TreeSummary` ordinal 算法:managed-load source tree=`4/B7D904E13C6629BF41CB80ED9527B43F23FD8B43240E62A3075C1D484E2FC55D`,reparse=`0`;payload=`9/1BD2276429357E84D23686C34109C0CCBAAAC0BF6CDA585204C88CAB26B54C63`;原 source manifest=`3681/333BA59512C5F68B35C00B8C9738C8B26FB78285F05851F9F35BA3FC44819535`。 |
| | | - 证据纠偏:提交请求及 machine evidence 的 tree=`7533015F5B0B034B9F1E4B305CD62D45B5317E647E945FB84E0C94FE86CF8144` 使用不区分大小写的路径排序,不是产品入口冻结的 ordinal 排序结果;本审计及正式 approval 以产品可自行复算的 `B7D904E13C6629BF41CB80ED9527B43F23FD8B43240E62A3075C1D484E2FC55D` 为唯一权威值。该说明性证据偏差未影响任何产品字节、反例或安全门禁。 |
| | | |
| | | ### Findings |
| | | |
| | | - 阻断 findings:`0`。 |
| | | |
| | | ### F1—F4 闭环确认 |
| | | |
| | | 1. **F1 / reviewer trust anchor 与审计物理绑定:PASS。** builder 与 installer 的正式入口均把 source approval 固定到 contract 声明的 reviewer 私有路径;approval 的 contract/original-source 两个嵌套对象均强制 exact `{path,bytes,sha256}`,同时绑定 managed source tree、九项 payload 及实现审计。产品重新读取真实 `dev-doc/开发审计报告.md`,复算 bytes/SHA-256,要求 audit ID 唯一、section 同时包含本 task、当前产品树和逐行 exact `PASS/0`/`blocking_findings=0` 终态。developer 自签、source/output/install 同树、假/旧审计、错误或缺失 path、旧树均在候选输出前 fail closed。 |
| | | 2. **F2 / production test seam:PASS。** 两个产品脚本的公开参数面仅保留正式参数;synthetic approval、source override、file-registry、fault/pause 与 adapter 参数全部为未知参数并在任何产品副作用前失败。测试只复制产品树到 `TemporaryDirectory`,再由测试代码在副本的固定内部锚点注入 adapter;该注入不能由正式 CLI 或环境开启。 |
| | | 3. **F3 / recovery taxonomy 与独立失败证据:PASS。** install approval exact `receipt_paths` 已包含 source/receipt 树外的独立 `failure_root`;产品在任何失败证据写入前验证其边界,使用 CreateNew、flush、复读与 exact schema 校验,仅记录固定 primary/secondary code 及其 SHA-256,不记录异常 message/path/value。恢复路径无空 catch;`E_RECEIPT`、`E_RECOVERY_AMBIGUOUS`、`E_RECOVERY_FAILED` 与普通回滚终态保持可区分,已提交 recovery receipt 可在 reopen 时复验并消费。 |
| | | 4. **F4 / crash、cancel 与 reopen 非真空矩阵:PASS。** install 与 rollback 各七个持久化点均由真实子 PowerShell pause、强杀和入口 reopen 覆盖;pending/final temp、policy mutation、postimage 与 final commit point 分别断言 registry 前像/后像、pending/final/recovery/failure evidence、精确 exit/error code、无伪成功及无自动重试。另覆盖 recovery receipt 写入前/temp/commit 三点强杀、ordinary/pipeline-stop、primary+secondary failure、ambiguous drift 与 mutex。当前 Windows PowerShell host 对实际 `CTRL_BREAK_EVENT` 不投递,测试按 V004 host-supported 条件明确 skip 并强制清理子进程;不可捕获强杀矩阵已完整通过。 |
| | | |
| | | ### Reviewer 独立验证 |
| | | |
| | | - F1/F2 聚焦反例:`2/2 PASS / Ran 2 in 29.607s`。 |
| | | - F3 taxonomy/failure evidence 与 recovery-receipt crash:`2/2 PASS / Ran 2 in 38.224s`。 |
| | | - F4 install/rollback 全持久化点真实 kill/reopen:`1/1 PASS / Ran 1 in 115.172s`。 |
| | | - 合计独立聚焦验证:`5/5 PASS / 183.003s`;PowerShell parser=`PASS`;scoped diff check=`PASS`;治理校验=`OK/projects=1/warnings=0`。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=PASS/0 |
| | | - blocking_findings=0 |
| | | - 结论:`HOLD4_F1_F4_CLOSED_IMPLEMENTATION_APPROVED_SOURCE_APPROVAL_AUTHORIZED` |
| | | - reviewer-owned source approval 固定路径:`ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-source-approval.json`;仅在本 section 成为审计文件最终快照后创建,并精确绑定本审计 bytes/SHA-256、当前 source tree 与九项 payload。 |
| | | - 本 PASS 仅关闭 managed-load 离线实现审核并允许 exact source approval 作为后续受控候选 ZIP 构建的必要输入;不授权 Web Store upload/publish、release approval、policy/HKCU、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-CANDIDATE-PACKAGE-REVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T17:14:00+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,对唯一 managed-load Web Store 候选 ZIP 的 identity、schema 1 build receipt、source approval 绑定与 release-gate 可推进性做合并独立审核;不重开已通过的 V003+V004 离线实现合同,不执行 Web Store upload/publish、policy/HKCU、Chrome/session、network/download、真实媒体或 runtime。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;MB-X 消息=`msg_20260810162629091_0240d438`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-CANDIDATE-PACKAGE-REVIEW-NATIVE-WAKEUP-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 候选实物:ZIP=`dev/tmp/bili-auth-extension-managed-load-candidate-20260810-001/project-info-bili-auth-ingress-webstore.zip=20072/96A7FA513EA136A63A15AC1654D4918F368B3D2CD195F381536C1A6B138D2E91`;receipt=`dev/tmp/bili-auth-extension-managed-load-candidate-20260810-001/webstore-upload-build-receipt.json=2165/4D90F74D7FE0DBDF197499AC48040733D1C4A885262C7B6734BC2A7F1284596F`;machine evidence=`5218/44F5BE0476C594CFB686AE568269D0B55FED302EE2C372D0FC87E22E0F851ACA`。 |
| | | - 前序 trust anchor:source approval=`ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-source-approval.json=2261/F54924D29A1390538C7BBB1BB30A5F2E2FC4A7AFB7F935E1184B8C6D91D22ED0`;其 implementation-review 绑定=`DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-HOLD4-LIMITED-REREVIEW-20260810-001`,整份审计文件快照=`417971/392A9C468FD19E422B5150043B58DCB24252A1A2C9C9203FA14B25A556CE5F4C`。 |
| | | |
| | | ### Findings |
| | | |
| | | #### F1_SOURCE_APPROVAL_BINDS_MUTABLE_APPEND_ONLY_AUDIT_SNAPSHOT(阻断;本次正式审计追加会使下游 installer 必然 fail closed) |
| | | |
| | | - source approval 的 `implementation_review` 把整个 `dev-doc/开发审计报告.md` 固定为 `audit_bytes=417971`、`audit_sha256=392A9C468FD19E422B5150043B58DCB24252A1A2C9C9203FA14B25A556CE5F4C`。本轮审核开始时 reviewer 独立复算该绑定仍精确匹配。 |
| | | - `build_webstore_upload.ps1:148-169` 与 `install_managed_extension_policy.ps1:130-151` 均重新读取当前物理审计文件,并要求整文件 bytes/SHA 与上述 immutable source approval 完全相等;installer 又在第175行无条件执行该检查。只读内存反例证明:在当前审计末尾追加任意非空合法内容后,文件 bytes/SHA 立即变化且 `binding_match=false`。 |
| | | - 本事项治理合同要求本次候选包审核在同一追加式审计文件 EOF 留痕,因此本 section 自身落盘即会使现有 source approval 过期。候选 ZIP/receipt 虽已正确生成,但后续即使 Web Store 返回 exact ID/version、reviewer 再签 release approval,installer 仍会在 source approval 的 implementation-audit 物理身份检查处失败,无法进入 copy/HKCU 前的正式安装门。 |
| | | - 这是 source approval 在实现审核 PASS 后首次形成、并进入下一次必须追加审计的候选包阶段才具备的生命周期反例;前序 F1—F4 限定实现复审时尚无可消费的正式 approval/后续审计组合,故本次发现不重开已关闭实现问题,而是当前 release-gate 的新增实质阻断。 |
| | | |
| | | ### 已通过并冻结的候选包静态检查 |
| | | |
| | | 1. output root 恰好包含上述 ZIP 与 receipt 两个普通、非 reparse 文件,目录与附加输出为 `0`。ZIP exact `9` entries、唯一且按 ordinal 顺序;固定 DOS 时间 `2026-08-10 00:00:00`、CRC、无加密、无绝对路径/`..` 均通过。 |
| | | 2. 九项 entry 的相对路径、逐项 bytes/SHA-256 与 source approval 全部一致;独立复算 payload tree SHA-256=`1BD2276429357E84D23686C34109C0CCBAAAC0BF6CDA585204C88CAB26B54C63`。manifest version=`1.0.0`、version_name=`1.0.0+20260805.v002`,public key 独立派生 extension ID=`oidmclckpdmpabbfedplkbdplmfcenbb`。 |
| | | 3. receipt strict JSON/no duplicate key、UTF-8 no BOM、schema 1、exact top keys、九项 entry、ZIP/source approval/contract/original manifest/payload tree 绑定均匹配。候选实物与请求所列 bytes/SHA-256 全部复算一致。 |
| | | 4. 静态 secret sentinel、credential/header、private-key 与 signed-URL 扫描未发现命中;提交证据声明 Web Store upload/publish、policy/HKCU、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription/runtime=`0`,静态实物审核未发现反证。 |
| | | |
| | | ### 最小 required fixes |
| | | |
| | | 1. 在同一 task/reviewer 链做聚焦 trust-contract 修订:source approval 不得绑定会继续追加的整个审计文件物理 bytes/SHA;应改为绑定不可变、reviewer-owned、树外的实现审计 receipt,或绑定可唯一抽取且有 canonical bytes/SHA 的实现审计 section。后续普通追加必须保持验证通过,而原实现审计 section/receipt 的删除、替换、重复或任意字节漂移必须 fail closed。 |
| | | 2. 同步修改 builder、installer、managed-load contract、source approval schema 与非真空测试;增加“source approval 形成后追加合法候选审核记录仍可由 installer 验证”的正例,以及篡改/删除/复制原实现审计 section 或 receipt 的负例。测试必须覆盖 builder 与 installer 两个消费者,并保持 reviewer-owned、树外、developer 不可自签边界。 |
| | | 3. 修订经同链限定设计/实现审核 PASS 后,由 reviewer 创建新的 source approval。由于当前 schema 1 candidate receipt 精确绑定旧 source approval bytes/SHA,当前 ZIP 可保留为内容身份已验证的历史证据,但当前 ZIP+receipt 组合不得进入发布门;须由管理员另行授权在新 absent output root 生成一次绑定新 source approval 的 exact candidate,再做同链 hash-only/release-gate 复核。 |
| | | 4. 正式 Web Store release approval 只能在受权发布完成并取得 exact Web Store ID/version/evidence 后由 reviewer 创建;本轮既无发布事实也存在上述 source-chain 阻断,因此不得创建预发布 release approval。修复闭环前 project.admin 不得授权 upload/publish,policy/HKCU、Chrome/session 与 runtime 继续冻结。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=HOLD/1 |
| | | - blocking_findings=1 |
| | | - 结论:`CANDIDATE_IDENTITY_VALID_RELEASE_GATE_BLOCKED_BY_MUTABLE_AUDIT_BINDING` |
| | | - reviewer-owned release-gate/release approval:`未创建`。候选包不能进入 project.admin 外部发布决策门。 |
| | | - 下一精确审批边界:先完成上述 source-approval 审计锚点修订的同链聚焦设计/实现审核与新 source approval,再生成并复核新 candidate;其 PASS 后才可请求 project.admin 对 Web Store upload/publish 作独立外部授权,发布事实核对通过后才由 reviewer 创建正式 release approval。 |
| | | - 当前继续禁止 Web Store upload/publish、policy/HKCU、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V005-AUDIT-ANCHOR-DESIGN-REVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T18:54:14+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅审核 V005 对 source approval lifecycle、schema 2 与 canonical LF implementation-audit section 锚点的聚焦设计;V003+V004 已通过产品/runtime 合同、历史候选与全部真实动作门禁不重开,产品代码、测试、候选输出均保持冻结。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;MB-X 消息=`msg_20260810183219226_3cb8fed7`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V005-AUDIT-ANCHOR-DESIGN-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计实物:`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V005.md=7957/0A679BB43B64E1AC7E5CB97F650E60F82467884F9D80B737756EBCE6990D27E2`;strict UTF-8、no BOM、LF、trailing whitespace=`PASS`。 |
| | | - 冻结实现复算:builder=`28818/5B829CF265FD513C1076BA345D48EF48BC8880AB9AA083D21022E8F35BB0C8FB`;installer=`68147/568E1AEF1FA09AE29091A7133B5F0A0F5DDD1D9754C3F604B627E84EF44E177B`;contract=`9290/0143C8D9B00FA363B746D9228CB31CC23FFF0AFB4C78672005035E47E6738757`;README=`3271/87B6F2D5A0F2FD1C40FF92E9A70958DFC24ADAA3181D789FD451490600FEE0CC`;test=`52212/2CFD357EEC087BF6F11B50988E6CE3B0B7C2829168789069B283F0118131BAE5`,均与提交一致且未修改。 |
| | | |
| | | ### Findings |
| | | |
| | | #### F1_SCHEMA2_APPROVAL_FIXED_PATH_LIFECYCLE_UNDEFINED(阻断;新 approval 与冻结旧 approval 占用同一唯一 production path) |
| | | |
| | | - V005 第1节明确冻结历史 schema 1 source approval `2261/F54924D29A1390538C7BBB1BB30A5F2E2FC4A7AFB7F935E1184B8C6D91D22ED0`,不得修改、覆盖或复用;第3节又禁止修改 reviewer 私有批准。该实物当前位于 `ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-source-approval.json`。 |
| | | - V003+V004 当前 production contract 的 `trust.reviewer_source_approval_path` 恰好仍固定为上述同一路径,builder 与 installer 只接受 contract 声明的该 exact reviewer-owned path。V005 虽要求实现审核 PASS 后由 reviewer 创建一个新 schema 2 approval,却没有冻结一个与历史文件不同的新 exact path,也没有授权覆盖旧路径;其第2.1节还声明 approval 外层 path 绑定继续不变。 |
| | | - 因而按当前文字实施只有两个选择,二者均违反冻结合同:覆盖旧 reviewer approval,或由实现者自行猜测一个新路径并使 builder/installer/contract 对消费者入口产生未审差异。Stage A 无法在不破坏历史证据且不猜合同的情况下完成,属于方案级阻断。 |
| | | |
| | | ### 已通过并冻结的 V005 设计检查 |
| | | |
| | | 1. schema 2 删除 whole-file `audit_bytes/audit_sha256`,改为绑定唯一 canonical LF level-2 section 的 bytes/SHA,根因方向正确;旧 schema 1、stale/cross-source approval 在副作用前失败关闭,边界清楚。 |
| | | 2. canonical 算法对 UTF-8/BOM/NUL/CR、唯一 exact heading、section 终点、尾部空行、最终 LF、required PASS lines、task ID 与当前 source tree 均有确定定义;builder/installer 共享 contract 且在输出/copy/HKCU/pending 前验证。 |
| | | 3. reviewer 用当前正式实现 PASS section 做只读可行性复算:整份审计 strict UTF-8/no BOM/NUL/CR,目标标题唯一;canonical section=`6161/C734E55AF42171D8B247431197E7AE4AB90141B48EA93A65C549387AED11D857`,exact `- verdict=PASS/0`、`- blocking_findings=0` 各1次,task ID 与 source tree `B7D904E13C6629BF41CB80ED9527B43F23FD8B43240E62A3075C1D484E2FC55D` 均存在;后续候选审计节已形成明确二级标题边界。 |
| | | 4. 两消费者正例、后续一个/多个无关 section 追加、原节修改/删除/截断/复制/插入、schema/ID/hash/format/verdict/tree/path/encoding/reparse 漂移的验收矩阵完整;production CLI 不暴露测试 adapter,失败均要求零输出/零 copy/零 HKCU/零 pending/receipt。 |
| | | 5. V003+V004 的 exact-nine payload、扩展 ID、秘密边界、policy 事务、安装恢复、历史候选不可复用以及 Stage A/Stage B/发布/release approval 分阶段门禁均未回退。 |
| | | |
| | | ### 最小 required fixes |
| | | |
| | | 1. 在同一链的 V005 修订中冻结一个与历史 schema 1 文件不同、唯一且确定的 schema 2 reviewer approval production path,并把 `managed-load-contract.json#trust.reviewer_source_approval_path` 明确迁移到该新路径;旧路径及旧文件继续 immutable historical evidence,禁止覆盖、删除、移动或作为 fallback。 |
| | | 2. 明确新路径在实现审核 PASS 前必须不存在;PASS 后只能由 `dev.reviewer.project` 以 CreateNew/复读/bytes/SHA 校验方式创建。developer、builder、installer 与 project.admin 均不得代建、覆盖或自动迁移;若新路径已占用则停止并重新审核,不得选择其他路径。 |
| | | 3. 在第4节补充两消费者的路径迁移反例:旧 schema 1 path/file、任意新路径、旧文件覆盖、目标预占、schema 2 放在旧路径、schema 1 放在新路径均须在输出/copy/HKCU/pending/receipt 前 `E_BUILD_CONTRACT`;同时断言旧 approval bytes/SHA 永久不变、新 approval 仅在 reviewer source review PASS 后出现。 |
| | | 4. 只修上述 approval-path lifecycle 与对应 contract/tests/说明;canonical section 算法和其他已通过合同保持冻结。修订后沿同一 task/reviewer 链做一次 F1-only 设计复审;PASS 前不得实施 Stage A。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=HOLD/1 |
| | | - blocking_findings=1 |
| | | - 结论:`V005_AUDIT_SECTION_ALGORITHM_VALID_SCHEMA2_APPROVAL_PATH_NOT_IMPLEMENTABLE` |
| | | - V005 当前不得进入 Stage A 实现;未创建新 schema 2 source approval,未生成或复用候选包。 |
| | | - 当前继续禁止 Web Store upload/publish、release approval、policy/HKCU、install/enable、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V006-SCHEMA2-APPROVAL-PATH-F1-DESIGN-REREVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T19:19:42+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅复审 V005 `HOLD/1` 的 F1 schema2 approval production-path lifecycle;V005 已通过的 canonical LF audit section 算法/schema 2 字段/两消费者验收矩阵及 V003+V004 产品/runtime/外部动作合同不重开,Stage A 实现继续冻结至本结论。 |
| | | - 审核对象:`DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001`;需求=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001`;MB-X 消息=`msg_20260810191413802_1285e824`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V006-SCHEMA2-APPROVAL-PATH-F1-DESIGN-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 复审对象:V005=`7957/0A679BB43B64E1AC7E5CB97F650E60F82467884F9D80B737756EBCE6990D27E2`;V006=`dev-doc/project-doc/开发方案/CODE-DESIGN-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-V006.md=5152/66C90694A3F51649D049E7400C27BC016314878DF3C2661C2F4BABE2AB8935E8`;V006 strict UTF-8/no BOM/LF/no trailing whitespace=`PASS`。 |
| | | |
| | | ### Findings |
| | | |
| | | - blocking findings:`0`。 |
| | | |
| | | ### F1 路径生命周期闭环 |
| | | |
| | | 1. 历史 schema 1 approval 路径和实物永久冻结为 `ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-source-approval.json=2261/F54924D29A1390538C7BBB1BB30A5F2E2FC4A7AFB7F935E1184B8C6D91D22ED0`;不得覆盖、删除、移动、重命名、迁移、复用或 fallback。reviewer 本轮独立复算实物仍精确匹配。 |
| | | 2. schema 2 production approval 的唯一新路径已明确冻结为 `ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-audit-anchor-source-approval.json`;本轮只读检查确认该路径 `ABSENT`。Stage A 仅允许把 contract 的 exact production path 迁移到该值,builder/installer 不得通过参数、环境、目录扫描、相邻文件或旧路径选择其他 approval。 |
| | | 3. 新路径在实现审核 PASS 前必须持续 absent;之后仅 `dev.reviewer.project` 可用 CreateNew、flush/fsync、strict JSON 复读及 exact bytes/SHA 校验创建。普通文件、目录或 reparse 预占均要求 SAFETY_STOP 并重新审核,不得删除占用物、覆盖或改选路径。 |
| | | 4. builder 与 installer 均在任何 output/copy/HKCU/pending/receipt 前验证 exact path、外层 bytes/SHA、schema 2、canonical audit section、managed source tree、original source、contract 与 payload。旧 path/file、任意新 path、schema/path 交叉、历史覆盖、目标预占、旧 tree/contract/section 与 fallback 尝试的非真空矩阵完整,并冻结零副作用与旧 approval 实物不变断言。 |
| | | 5. 冻结实现复算未漂移:builder=`28818/5B829CF265FD513C1076BA345D48EF48BC8880AB9AA083D21022E8F35BB0C8FB`;installer=`68147/568E1AEF1FA09AE29091A7133B5F0A0F5DDD1D9754C3F604B627E84EF44E177B`;contract=`9290/0143C8D9B00FA363B746D9228CB31CC23FFF0AFB4C78672005035E47E6738757`;README=`3271/87B6F2D5A0F2FD1C40FF92E9A70958DFC24ADAA3181D789FD451490600FEE0CC`;test=`52212/2CFD357EEC087BF6F11B50988E6CE3B0B7C2829168789069B283F0118131BAE5`。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=PASS/0 |
| | | - blocking_findings=0 |
| | | - 结论:`V005_V006_AUDIT_ANCHOR_AND_SCHEMA2_APPROVAL_PATH_DESIGN_CLOSED_STAGE_A_AUTHORIZED_OFFLINE_ONLY` |
| | | - 仅授权唯一 owner 按 V005+V006 组合合同实施 Stage A:修改已列 builder/installer/contract/test/README/证据说明,运行离线验收并提交同链 source/implementation 复审。实现审核 PASS 前新 schema2 approval 必须保持 absent,developer 不得创建或模拟正式 reviewer approval。 |
| | | - 本 PASS 不授权新候选、Web Store upload/publish、release approval、policy/HKCU、install/enable、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime;历史候选继续不可复用或发布。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-IMMUTABLE-AUDIT-ANCHOR-STAGE-A-IMPLEMENTATION-REREVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T21:21:44.0073219+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅复审 V005+V006 immutable implementation-audit section anchor 与独立 schema 2 source approval production path 的 Stage A 实施;V003+V004 已通过合同、冻结 bridge/runtime、历史候选与全部真实动作边界不重开。 |
| | | - task_id=DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001 |
| | | - requirement_id=REQ-BILI-DYNAMIC-COLLECTOR-20260804-001 |
| | | - MB-X 消息=`msg_20260810210126336_082b57d1`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-IMMUTABLE-AUDIT-ANCHOR-STAGE-A-IMPLEMENTATION-REREVIEW-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计基线:V005=`7957/0A679BB43B64E1AC7E5CB97F650E60F82467884F9D80B737756EBCE6990D27E2`;V006=`5152/66C90694A3F51649D049E7400C27BC016314878DF3C2661C2F4BABE2AB8935E8`;前序设计结论=`PASS/0`。 |
| | | - 冻结实现:builder=`30149/F3B22497AB9EE5F35E53769D191B795BF784F75F808434D9C73806EB0C20C4EC`;installer=`69545/1F8AFDBAD2FA8E9D73FF51C23ACA5F59FD12EA1B793C011A740ED6696100E681`;contract=`9782/56BEE58F540554ADEA85D323A434D2C3FD8B44643C7C00C6E2C36F247D2CCBDD`;README=`3857/650670F0A31C6351CE29367C111FF322CE86DAFE02C8DF6BB2D6A4E70C91EBA8`;test=`58365/9EDA8789B79A4C2D35EBB007FC70B2EDF392B73D0039D5BB95C1F48679C73729`。 |
| | | - managed_load_source_tree=1BC35E9C2973BC7A10B5F87DA63BBA4335774130F4C0A7D81F524B89FD896216 |
| | | - source_tree_file_count=4 |
| | | |
| | | ### Findings |
| | | |
| | | - 阻断 findings:`0`。 |
| | | |
| | | ### V005+V006 Stage A 闭环确认 |
| | | |
| | | 1. builder 与 installer 均从 `managed-load-contract.json` 消费同一 `mbx-markdown-level2-section-lf-v1` 合同,严格校验 UTF-8/no BOM/no NUL/no CR、唯一 exact 二级标题、下一二级标题或 EOF 边界、尾部空行归一和单一最终 LF;approval 精确绑定 section bytes/SHA、PASS 终态、task ID 与当前 source tree,不再绑定持续追加的整份审计 bytes/SHA。 |
| | | 2. schema 2 production path 唯一固定为 `ai-inforev/worklog/2026-08-10-bili-authenticated-extension-managed-load-audit-anchor-source-approval.json`;本结论落盘前该路径不存在。历史 schema 1 approval 保持 `2261/F54924D29A1390538C7BBB1BB30A5F2E2FC4A7AFB7F935E1184B8C6D91D22ED0`,两消费者无路径、schema、参数、环境或邻接 fallback。 |
| | | 3. reviewer 独立复算实现树=`4/1BC35E9C2973BC7A10B5F87DA63BBA4335774130F4C0A7D81F524B89FD896216`、reparse=`0`;产品代码中 whole-file `audit_bytes/audit_sha256` 匹配为 `0`。历史候选 ZIP=`20072/96A7FA513EA136A63A15AC1654D4918F368B3D2CD195F381536C1A6B138D2E91` 与 receipt=`2165/4D90F74D7FE0DBDF197499AC48040733D1C4A885262C7B6734BC2A7F1284596F` 未漂移,继续为 `NOT_PUBLISHABLE_HISTORY`。 |
| | | 4. 独立聚焦用例 `test_19_schema2_immutable_audit_section_and_approval_path_are_shared`=`1/1 PASS / 33.982s`,覆盖后续审计追加正例,以及 schema1/旧路径/章节篡改/缺失/重复/跨 source 重签的 builder+installer 零副作用反例;PowerShell parser=`PASS`,治理校验=`OK/projects=1/warnings=0`。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=PASS/0 |
| | | - blocking_findings=0 |
| | | - 结论:`V005_V006_IMMUTABLE_AUDIT_ANCHOR_STAGE_A_IMPLEMENTATION_APPROVED_SCHEMA2_SOURCE_APPROVAL_AUTHORIZED` |
| | | - 仅授权 `dev.reviewer.project` 在本 section 落盘后,以 CreateNew 在 V006 固定树外路径创建一次 schema 2 source approval,绑定本 section canonical bytes/SHA、当前 contract/original manifest/source tree 与 exact-nine payload,并回读冻结 approval exact bytes/SHA。 |
| | | - 本 PASS 不授权生成或复用候选包,不授权 Web Store upload/publish、release approval、policy/HKCU、install/enable、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 或 runtime;历史候选和旧 approval 继续 immutable、不可发布、不可 fallback。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-STAGE-B-CANDIDATE-HASH-RELEASE-GATE-REVIEW-20260810-001 |
| | | |
| | | - 记录时间:`2026-08-10T22:55:59.9897526+08:00` |
| | | - 审核阶段:同一 authenticated-session task、同一 owner/reviewer 链内,仅对 Stage B 唯一受控候选的 ZIP/schema 1 build receipt 做 hash-only/static identity 与 release-gate readiness 审核;不执行构建、上传、发布、release approval、policy/HKCU、Chrome/session 或任何真实动作。 |
| | | - task_id=DEV-PROJECT-INFO-BILI-AUTHENTICATED-SESSION-DOWNLOAD-20260805-001 |
| | | - requirement_id=REQ-BILI-DYNAMIC-COLLECTOR-20260804-001 |
| | | - MB-X 消息=`msg_20260810221524280_19c0b086`;请求交接=`HANDOFF-INFODEV2-INFOREV-BILI-AUTHENTICATED-EXTENSION-MANAGED-LOAD-STAGE-B-CANDIDATE-HASH-RELEASE-GATE-REVIEW-20260810-001`;来源/回传任务=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 管理授权=`msg_20260810214310133_51a87b66`;唯一 operator=`dev.developer.project.secondary/infodev-2`;build attempt=`1`;retry=`0`;本审核未执行或重试构建。 |
| | | - 审核根=`dev/tmp/bili-auth-extension-managed-load-candidate-audit-anchor-20260810-002`;输出集合=`2` 个普通非 reparse 文件、目录=`0`。 |
| | | |
| | | ### Findings |
| | | |
| | | - 阻断 findings:`0`。 |
| | | |
| | | ### 候选身份与 release gate 复核 |
| | | |
| | | 1. 接受候选 ZIP:`project-info-bili-auth-ingress-webstore.zip=20072/96A7FA513EA136A63A15AC1654D4918F368B3D2CD195F381536C1A6B138D2E91`。ZIP exact-nine entry 名称按 ordinal 排序且唯一,固定时间=`2026-08-10T00:00:00`,无加密、无绝对路径或 `..`,逐项 CRC、bytes/SHA-256 与 receipt 全部匹配。 |
| | | 2. 接受 build receipt:`webstore-upload-build-receipt.json=2165/441493BE0DC5B0AE19D4C4CAC14A93F12D9237AF6FD1FCDE654BD398698DCD7B`。strict JSON/no duplicate key、UTF-8/no BOM/LF、schema 1、exact key set、`BUILD_COMPLETE`、时间顺序、唯一 ZIP binding 均通过。 |
| | | 3. receipt 精确绑定 contract=`9782/56BEE58F540554ADEA85D323A434D2C3FD8B44643C7C00C6E2C36F247D2CCBDD`、原 source manifest=`3681/333BA59512C5F68B35C00B8C9738C8B26FB78285F05851F9F35BA3FC44819535`、schema 2 source approval=`2366/BE159EB0C4ABC211C20EEF4F11B4208F43EC384A2E3528B04492623E147D2E32`。approval 继续精确绑定 canonical implementation-audit section=`4093/FA5C924E1F98D372E5AA5EFFBA574079A30EE091D122D90684CC74C0AC774586` 与 source tree=`4/1BC35E9C2973BC7A10B5F87DA63BBA4335774130F4C0A7D81F524B89FD896216`;本次 append 不改变该 immutable section。 |
| | | 4. 独立复算 payload tree=`9/1BD2276429357E84D23686C34109C0CCBAAAC0BF6CDA585204C88CAB26B54C63`;manifest version=`1.0.0`、version_name=`1.0.0+20260805.v002`,public key 派生 extension ID=`oidmclckpdmpabbfedplkbdplmfcenbb`。Cookie/session/header/private-key/signed-URL 与 synthetic sentinel 静态命中=`0`。 |
| | | 5. 历史候选 ZIP 虽因确定性内容与本次 ZIP 同哈希,历史 receipt=`2165/4D90F74D7FE0DBDF197499AC48040733D1C4A885262C7B6734BC2A7F1284596F` 和 schema 1 approval=`2261/F54924D29A1390538C7BBB1BB30A5F2E2FC4A7AFB7F935E1184B8C6D91D22ED0` 仍是 `NOT_PUBLISHABLE_HISTORY`,不得与本次新 receipt 混用或 fallback。 |
| | | 6. 当前无 Web Store upload/publish 或 publication fact;reviewer-owned release approval 匹配实物=`0`。因此本结论只确认候选具备向独立外部上传授权门提交的静态准备条件,不构成上传、发布、安装或运行授权。 |
| | | |
| | | ### 结论与边界 |
| | | |
| | | - verdict=PASS/0 |
| | | - blocking_findings=0 |
| | | - release_gate_status=UPLOAD_READY_NOT_PUBLISHED_RELEASE_APPROVAL_ABSENT |
| | | - accepted_zip=20072/96A7FA513EA136A63A15AC1654D4918F368B3D2CD195F381536C1A6B138D2E91 |
| | | - accepted_receipt=2165/441493BE0DC5B0AE19D4C4CAC14A93F12D9237AF6FD1FCDE654BD398698DCD7B |
| | | - release_approval=ABSENT_NOT_CREATED_NOT_INFERRED |
| | | - 本 PASS 不授权 Web Store upload/publish;任何上传/发布仍须 project.admin 的独立外部动作授权,发布完成后还须 exact Web Store ID/version/publication evidence 的同链复核,方可由 reviewer 另行创建 release approval。 |
| | | - policy/HKCU、install/enable、Chrome/Cookie/session、network/download、real media、`F:\video`、formal `ana-data`、transcription 与 runtime 继续冻结;本轮外部/真实动作=`0`。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001-TERMINAL |
| | | |
| | | - 记录时间:`2026-08-13T13:10:00+08:00` |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813114445612_ca976cf4`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V001-DESIGN-REVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计=`24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`;code/test/fixture/formal data 均冻结。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | |
| | | 1. `F1_EVIDENCE_NO_NEW_PROOF_NOT_DETERMINISTIC`:no-new 依赖外部自报 coverage 布尔值,缺少可复算的 DOM/parser/逐页卡片/end-of-feed/limit 证明。须冻结 bounded `page_observation`,由 CLI 推导 coverage;任何上限、未推进或 marker 缺失均禁止 no-new,并补伪造/截断/空页反例。 |
| | | 2. `F2_REFRESH_PENDING_CRASH_RECOVERY_UNDEFINED`:`refresh-begin` 后、`transaction.pending` 前的崩溃没有 reopen 状态机,会让旧 pending 永久阻塞小时运行。须冻结 pre-transaction phase/ownership/deadline/evidence 恢复、durable run record、清理/保留、exit 与全点注入。 |
| | | 3. `F3_MIXED_HISTORY_CATALOG_CONTRACT_UNDERSPECIFIED`:48 行 mixed history 的 token namespace/union、状态优先级、UID 缺失、身份冲突、artifact 校验和新 state event schema 未冻结。须基于现有 48 行给出 exact 分类、canonical dedupe/unique-entity 摘要及冲突反例。只读核验确认 16 个 SAVED 实物存在且哈希匹配。 |
| | | 4. `F4_DUAL_MANIFEST_COMMIT_HAS_LOST_UPDATE_RACES`:state 前像在发布前未 compare,formal check 与 replace 间存在 TOCTOU。须冻结两份 exact candidate,并用共享跨进程锁或可证明 CAS 覆盖 compare-through-replace;任何漂移 fail/rebegin,补两进程竞争反例。 |
| | | 5. `F5_BOUNDED_RUN_EVIDENCE_NOT_ATOMIC_WITH_TERMINAL_RESULT`:formal commit、receipt、latest/168-slot 与 pending cleanup 的顺序和恢复未冻结,同小时 collision/slot 失败可导致业务结果与唯一审计证据分离。须冻结 exact run schema、slot 规则和 reopen 矩阵;durable record 前不得返回终态,并补全点异常/同小时/replay。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - supported Chrome exact URL、单次 navigate/reload、禁止 CDP/profile/Cookie/header/412 绕过;五终态总体优先级、discovery 非权威和两个真实样本解释方向正确。 |
| | | - 全文/原图/video metadata+cover、no-overwrite、secret/raw error fail-closed、失败不增长 formal manifest 可保留。 |
| | | - required_fixes 仅限 F1-F5;无需新增真实运行。产品 code/test/fixture、formal data、Chrome refresh、network retry、download/video、extension/policy/HKCU/secret 继续冻结。 |
| | | - 结论=`V001_DESIGN_HELD_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V003-TWO-BLOCKER-DESIGN-REREVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T13:33:29.7178224+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审 V002 `HOLD/2` 的 observation 互斥计数与 stale formal-lock/StateLock kill-recovery;F3、F5及其余已通过合同不重开,产品实现继续冻结。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813132059812_a522ee8e`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V003-TWO-BLOCKER-DESIGN-REREVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 复算对象:V001=`24165/DA597448EFD47361779464B44BF92C8CDE9B4AC1769764EE0AF2301075C86045`;V002=`22460/EC7E1D887FF930D7DA75F208975E17812E9D299606CD2A79B3E9BF14DE723A54`;V003=`11225/99F05DC30C374F93B527F688319B479651FA5D19909DDDDB8135066C552A7FC4`。 |
| | | - 冻结基线复算:code=`60090/67B2E6FB34F100C57BF50A4D3067D6FDD6E47C5D3FBEF58D2CF5D8796B07AB8B`;config=`1117/42A9AA7EE29ED061DC408C6C9A907FA7B20FD8C2B41605C54B6716A0FE388951`;test=`31303/D82BFF8AD9B78FD749A7536FF9FED0486CF87D6B9FDDEE7947202C2414AAE322`;fixture=`1216/0CD53C7C93D7E05B4A913EBF5223366E3A06A17E2474DF52BC64F0BB4EBEA71F`;formal=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 lines`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/1` |
| | | - blocking_findings=`1` |
| | | |
| | | #### F2/F4-R2 — `FORMAL_LOCK_TAKEOVER_NOT_RESTARTABLE_FOR_ALLOWED_PATHS_AND_RECOVERY_IDENTITY` |
| | | |
| | | V003 已把 formal lock 与 pending 精确绑定,并以进程死亡自动释放的稳定 `StateLock` 解开前序自闭锁;但接管提交仍有一个根因未闭环:其机械 quarantine 位于 `state_dir/refresh/lock-recovery/`,而被原子 rename 的主锁位于可独立配置的 `archive_dir/.bili-dynamic-formal-manifest.lock`。V001 未要求两根同卷,Windows 跨卷 rename 不能满足 V003 的 no-overwrite atomic rename,因此合法配置下步骤 2 不可实现。与此同时,`TAKEOVER_PLANNED` 在旧锁隔离前冻结“当前恢复进程”的 `new claim`;若该恢复进程在 phase 落盘后被 kill,下一进程按矩阵继续步骤 2/3 时可能写入已死亡或已被 PID reuse 的前一恢复者身份,造成虚假 busy、再次接管或无法证明当前 holder。 |
| | | |
| | | 最小修复须同时冻结: |
| | | |
| | | 1. quarantine 实物必须与 formal lock 位于同目录或可证明同卷的 owned 普通非 reparse 路径,保证 no-overwrite same-volume atomic rename;`state_dir` pending 只绑定该 exact quarantine path/bytes/hash,不把跨卷复制冒充原子隔离。补不同卷配置或等价 cross-device rename 反例。 |
| | | 2. 未提交的 `new claim` 不得跨恢复进程沿用。可将 holder-dependent claim 延后到 `OLD_LOCK_QUARANTINED` 后由当前进程生成,或在 `TAKEOVER_PLANNED` 重开且旧锁仍在时先以 WAL 原子换绑当前进程身份,再隔离旧锁。补 kill-after-`TAKEOVER_PLANNED`、前一恢复 PID reuse、继续成功/安全停止与无重复 formal append 反例。 |
| | | |
| | | 上述两点属于同一 stale-lock takeover 状态机根因;其余 owner-dead、PID creation time、generation、第三内容、双 recovery、terminal cleanup 门禁保持不变。 |
| | | |
| | | ### 已关闭且冻结的原 finding |
| | | |
| | | - observation 互斥计数 `CLOSED`:V003 将 `cards` 严格限定为 complete card,将不完整节点置于 `unparsed_nodes`;`complete_card_count=len(cards)`、`unparsed_node_count=len(unparsed_nodes)`、`visible_node_count` 为二者之和,并要求 position 唯一、不相交且完整覆盖 `[0, visible_node_count)`。stable component/proof hash、50 节点上限及 unknown/incomplete/duplicate/limit 反例足以让 CLI 唯一复算,未再发现同边界阻断。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - F3 mixed-history、F5 bounded hourly evidence 继续 `CLOSED`;V001+V002 已通过的 exact URL/一次刷新、五终态、no-new fail-closed、双 manifest candidate/前像比较、secret/raw-error、no-overwrite 和真实样本解释不重开。 |
| | | - required_fixes 仅限上述 F2/F4-R2;无需真实运行或新增产品范围。 |
| | | - 产品 code/test/fixture、formal data、Chrome refresh、network retry、download/video、extension/policy/HKCU/session secret 继续冻结。 |
| | | - 结论=`V003_TWO_POINT_DESIGN_REREVIEW_HELD_1_IMPLEMENTATION_REMAINS_FROZEN` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V004-FINAL-LOCK-DESIGN-REREVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T13:56:40.4975911+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审 V003 `HOLD/1` 的 formal-lock quarantine volume 与 `TAKEOVER_PLANNED` holder identity;其余 findings 与已通过合同不重开,产品实现保持冻结。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813135410147_cab50254`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V004-FINAL-LOCK-DESIGN-REREVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 复算对象:V003=`11225/99F05DC30C374F93B527F688319B479651FA5D19909DDDDB8135066C552A7FC4`;V004=`6285/7B6198D74C90915E6DD36E4C12554FC5F9094A2B58D0230E6D76F0B844E7CCD5`;V004 strict UTF-8/no BOM/no CR/no NUL=`PASS`。 |
| | | - 冻结基线复算:code=`60090/67B2E6FB34F100C57BF50A4D3067D6FDD6E47C5D3FBEF58D2CF5D8796B07AB8B`;config=`1117/42A9AA7EE29ED061DC408C6C9A907FA7B20FD8C2B41605C54B6716A0FE388951`;test=`31303/D82BFF8AD9B78FD749A7536FF9FED0486CF87D6B9FDDEE7947202C2414AAE322`;fixture=`1216/0CD53C7C93D7E05B4A913EBF5223366E3A06A17E2474DF52BC64F0BB4EBEA71F`;formal=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 lines`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`PASS/0` |
| | | - blocking_findings=`0` |
| | | |
| | | 1. `F2/F4-R2 quarantine volume` 已闭环:formal lock 与所有 quarantine 实物由同一已验证 `archive_dir` 父目录机械派生;lexical/reparse、owned marker、no-overwrite atomic rename、volume serial/device identity 和 cross-device fail-closed 门禁明确。`state_dir` 只持久化 exact relative path/bytes/hash/目录 identity,不再保存或 fallback 跨卷 quarantine;分离 state/archive root、不同 volume/EXDEV、第三目标及 rename 前后 kill 反例足以验证。 |
| | | 2. `F2/F4-R2 holder identity` 已闭环:`TAKEOVER_PLANNED` 只保存 old claim、quarantine、next generation 等 holder-independent intent;只有 `OLD_LOCK_QUARANTINED` durable 后才由当前恢复进程生成 `CREATE_PLANNED` claim。恢复进程死亡时须证明旧 planned holder dead/PID reuse并以 WAL 换绑当前身份,`claim_attempt` 单调记录全部失败隔离历史;不会把前一恢复进程 PID/creation time 写成当前 holder。 |
| | | 3. reopen 矩阵覆盖 `TAKEOVER_PLANNED`、`OLD_LOCK_QUARANTINED`、`CREATE_PLANNED`、`NEW_LOCK_HELD` 的主锁/quarantine 唯一组合;活 holder busy、PID reuse/第三内容/异 run ambiguous、双 recovery 仅 StateLock winner、formal append 最多一次均保持 fail-closed。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - V003 observation 互斥计数及 V002 已关闭的 F3/F5 继续 `CLOSED`;V001—V003 其余 exact URL/一次刷新、五终态、no-new、pending WAL、双 candidate/前像、secret/raw-error、no-overwrite 合同不重开。 |
| | | - 未发现 V004 限定范围内剩余阻断;允许按 V001+V002+V003+V004 组合合同开始最小实现及离线测试,之后仍须提交独立实现审核。 |
| | | - 本 PASS 不授权 Chrome refresh、真实 network/download/video、formal data write、extension/policy/HKCU/session secret 或真实 smoke;这些动作继续冻结。 |
| | | - 结论=`V004_FINAL_LOCK_DESIGN_PASS_IMPLEMENTATION_AUTHORIZED_OFFLINE_ONLY` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-IMPLEMENTATION-REVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T17:38:09.9849672+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,按已通过的 V001+V002+V003+V004 组合合同进行独立离线实现审核;未触发 Chrome、网络、下载、session/Cookie、formal ana-data 写入、F:\video、媒体或转写。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813170207391_e004c3a4`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-IMPLEMENTATION-REVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 冻结工件已复算匹配:collector=`70562/EAA7FEA89BAB8A21766544A883C4B6DFE132B31183E9F5112B74AEFB86DB6D4C`;refresh=`70902/66FC55C3D5321DE11598A0A8428F07AD780D0AFDE509BAC9F7D30C91B2E1493D`;observation contract=`757/230E4F32766E8986805BE24272E1D893644D77936ED59A1919AB8A4F77B8F869`;extractor=`795/489052F4C4DBD831962A9B67D0FC5EE3D4D9C9C2C7130415B6CD37F2F096B2E6`;config=`1636/1E256CF760A9D66C44E229AE5EBD31BACD37F80AB6E73412DCCE6F612D95B9A7`;old tests=`31468/AD3C93B36B659E6646AE1834071257D35150E6CE768DA40D07E59FC791724156`;refresh tests=`20301/F181D020A3B38FC4E8E73622000A0A22D73C3F0475DCBC41B4C3410D6C99D0B1`。 |
| | | - 独立离线验证:`py_compile=PASS`;目标 unittest=`22/22 PASS / 4.164s`;五个 CLI command help 存在;formal manifest 审核前后均为 `51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 lines`,未写入。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/4` |
| | | - blocking_findings=`4` |
| | | |
| | | 1. `F1_OBSERVATION_ITEMS_NOT_BOUND_NO_NEW_FALSE_POSITIVE`:`_validate_observations` 只从 `page_observation.cards` 推导 coverage,而 `_plan_content` 独立遍历 `evidence.items`;实现未证明二者按 stable-key component 一一对应、无缺失/额外/字段漂移。独立入口反例以一张新的完整 card、exact end marker、`items=[]` 提交,实际返回 `exit=0/status=REFRESH_CONFIRMED_NO_NEW/coverage_complete=true`,违反“observed components 相对 catalog 无可保存新增”硬门。最小修复:在任何 no-new/事务判断前,从 cards 与 normalized items 重算并强制 exact component/identity/content/published/source 对应;缺项、额外项、错配只能 partial/schema failure,补 missing/extra/mismatch 公共 CLI 反例。 |
| | | 2. `F2_MIXED_HISTORY_CATALOG_FAIL_OPEN`:`load_formal_catalog` 以每行首 token 直接计数,没有实现 V002 冻结的跨行 union-find、namespace/content-video/URL-stable 冲突、状态优先级;schema2 分支仅检查 `dedupe_keys` 排序。独立反例中 schema2 事件具有错误 `entity_id`、unknown status 与不存在 artifact,仍被接受为 saved component。schema1 的完整类型、URL身份及 artifact路径门也未全部实现。最小修复:实现 deterministic union/conflict 与 22/16/5/1 的组件级状态归并;schema1/2 全字段、UID、entity_id、dedupe、status/event、artifact relative/reparse/bytes/hash fail-closed,并补 V002 已冻结的全部 mixed-history 负例。 |
| | | 3. `F3_PENDING_SLOT_LATEST_RECEIPT_RECOVERY_CONTRACT_INCOMPLETE`:hourly evidence 未按 V002 落地。`latest.json` 被写成完整 slot 副本,而非 exact 八字段可重建索引;no-formal-change terminal 的 `transaction_receipt` 实际为 `null`,而非 `NO_FORMAL_CHANGE` receipt;slot/latest 写后未完整回读校验,`TERMINAL_RECORDED` reopen 不核/补 latest,`EVIDENCE_BOUND` reopen 未实现,cleanup warning 语义缺失。独立 no-new 入口实物确认 latest 含完整 slot keys 且 receipt=null。最小修复:按冻结 schema/commit point/reopen matrix 实现 STARTED、planned terminal、slot readback、八字段 latest、NO_FORMAL_CHANGE/业务 receipt、cleanup warning,并补普通异常、KeyboardInterrupt/SystemExit、真实子进程 kill 的全持久化点矩阵。 |
| | | 4. `F4_FORMAL_LOCK_V004_KILL_RECOVERY_NOT_IMPLEMENTED`:V004 的 `CREATE_PLANNED` holder 换绑和 quarantine 合同未落地。当前 `_recovery_formal_lock` 在 `CREATE_PLANNED + main absent + old quarantine exact + planned holder dead` 时直接 `E_RECOVERY_AMBIGUOUS`,独立临时反例已复现;main 为 exact dead planned claim 时也不隔离失败 attempt 后换绑。quarantine 目录无 owner marker/fsync 证明,测试仅覆盖一次普通 dead-lock takeover,未覆盖 V004 全点 kill/reopen。最小修复:落实 holder-independent `TAKEOVER_PLANNED`、`OLD_LOCK_QUARANTINED` 后 current identity claim、dead/PID-reuse planned holder 的 claim_attempt 换绑与同目录失败隔离、owned marker/no-overwrite/fsync/cleanup;补 V004 明列的全 phase kill、双 recovery、cross-volume/reparse/第三内容反例。 |
| | | |
| | | ### Preserved contracts and boundary |
| | | |
| | | - 现有 22 项目标测试、原 check/move-completed/handoff 回归、互斥 observation node 计数、StateLock 基本内核互斥、正式 48 行只读摘要与 formal manifest 未变均确认;这些通过项不能覆盖上述非真空反例。 |
| | | - required_fixes 仅限 F1-F4,须以最小代码/离线测试/证据闭环;不要求也不授权真实 Chrome、网络、下载、formal write、F:\video、媒体或转写重跑。 |
| | | - 产品在实现审核通过前不得用于正式 hourly refresh/no-new 认定;现冻结快照可继续作为离线开发基线,不得声称 formal collector 已验收。 |
| | | - 结论=`IMPLEMENTATION_HELD_4_OFFLINE_REPAIR_REQUIRED` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD4-FOCUSED-IMPLEMENTATION-REREVIEW-20260813-001 |
| | | |
| | | - 记录时间:`2026-08-13T20:41:14.6508278+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审首次实现 `HOLD/4` 的 F1—F4 修复;已通过合同与其余边界不重开。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813191657480_b3ae7ca9`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD4-FOCUSED-IMPLEMENTATION-REREVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 冻结工件独立复算匹配:refresh=`95237/84DFC57CC2B00E19F7594137E7766DDC2D4E0D2026323362601ACE282E20465D`;entrypoint=`70562/EAA7FEA89BAB8A21766544A883C4B6DFE132B31183E9F5112B74AEFB86DB6D4C`;refresh tests=`35296/A98D1D473656FF91AB399AEB559991CB862E22542F7383CDD0539E10D46A6EB0`;collector tests=`31468/AD3C93B36B659E6646AE1834071257D35150E6CE768DA40D07E59FC791724156`;machine evidence=`3203/8D26DAEB10C62D2FBC8EC12BF994F21742A0EBC61ECD73769D998E042386B37B`。 |
| | | - 独立离线复验:`py_compile=PASS`;目标 unittest=`30/30 PASS / 5.356s`。以下结论还基于临时目录公共入口/内部恢复入口的非真空反例与逐分支源码核验;未运行 Chrome、网络、下载或正式写入。 |
| | | - 正式 manifest 审核前后均为 `ana-data/news-青枫浦上Q/manifest.jsonl|51598|0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73|48 lines`,零改写。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/3` |
| | | - blocking_findings=`3` |
| | | |
| | | 1. `F2_CATALOG_EXACT_SCALAR_TYPE_AND_ID_LENGTH_FAIL_OPEN`:F2 主体 union/conflict/precedence 与 artifact 身份已落地,但冻结的严格标量合同仍可被绕过。schema2 以 `str(event["creator_uid"])` 比较 UID,导致整数 `1420210197` 被当作 exact string 接受;schema1 的数字 `stable_id` 只检查 `isdecimal()`,未限制 V002 冻结的 `1..32` 位,33 位 ID 仍进入 catalog。独立临时 formal 反例均被实际接受。最小修复:schema2 UID 必须先验证为 exact string;schema1 opus stable_id 必须为 1—32 位 ASCII 数字,并补两条公共入口 fail-closed 反例及 manifest 零改写断言。 |
| | | 2. `F3_PENDING_SLOT_EXACT_RECOVERY_STILL_FAIL_OPEN`:八键 latest、receipt 和普通 terminal replay 已闭环,但完整 reopen matrix 仍未实现。`refresh-begin` 先 CreateNew pending,再用 replace 写 STARTED slot;若在二者之间崩溃,`AWAITING_EVIDENCE` reopen 只返回 `E_BUSY`,不会按 V002 重建同 run STARTED。`_terminal` 又会无条件 replace 当前 hour slot,故第三内容可被 terminal 覆盖;`TERMINAL_RECORDED` 只核 `run_state/run_id/receipt is Mapping`,未对 exact terminal schema、planned terminal、slot bytes/hash/receipt 身份作完整一致性验证。独立反例已分别复现“pending存在而 STARTED 缺失不重建”和“第三 slot 被终态覆盖”。最小修复:把 STARTED 写后回读及 reopen 重建纳入 WAL;任何非 exact same-run STARTED/TERMINAL slot 必须 `E_RECOVERY_AMBIGUOUS` 且零修改;terminal 写前验证当前 slot 只能是 exact same-run STARTED/允许的 exact replay,补 crash/third-content/tampered-terminal 非真空矩阵。 |
| | | 3. `F4_QUARANTINE_TAKEOVER_WAL_NOT_CRASH_DURABLE`:基础 dead/PID-reuse CREATE_PLANNED 换绑正例已通过,但 V003+V004 的全点 kill/no-overwrite/fsync/cleanup 合同未落地。`_rebind_takeover_claim` 在把 exact stale main lock `os.rename` 到 failed quarantine 后,才把 failed identity 与新 claim 写入 pending;该窗口被 kill 会留下 pending 未记录的第三实物。rename 仍是“exists 检查 + os.rename”,没有 no-overwrite 原语或目录 fsync;quarantine 新建/marker/rename 后也无父目录 fsync,pending 保存 absolute path 而非冻结的 relative path+directory identity。另 `_release_formal_lock` 在 main lock 已缺失时直接 return,不能恢复“主锁已删、quarantine 尚未清”的 cleanup 崩溃点。最小修复:在每次隔离前先 durable 记录 exact relative target/目录 identity/attempt intent,采用同父目录 no-overwrite rename、源/目标目录 fsync+readback,再推进 phase;release 依据 pending 即使 main 已缺失也须验证并清理 exact quarantine/failed claims,歧义只报 warning/stop 而不丢 WAL;补 V004 明列的每一持久化点真实子进程 kill、existing target、第三内容及 cleanup-reopen 反例。 |
| | | |
| | | ### Closed and preserved |
| | | |
| | | - F1 observation/cards/items exact 双向 binding 已通过缺项、额外项、字段漂移、重复及 token overlap 非真空反例,本轮 `CLOSED`。 |
| | | - F2 已实现的 union/conflict/precedence/artifact、F3 已实现的 receipt/latest 基本路径、F4 的基础 current-identity 换绑,以及既有 CLI、五终态、secret、formal source protection 等通过部分继续冻结;不得用这些通过项覆盖上述三个反例。 |
| | | - required_fixes 仅限 F2/F3/F4 的上述根因;不要求也不授权真实 Chrome、网络、下载、formal write、F:\video、Cookie/session、extension/HKCU、媒体或转写重跑。 |
| | | - 当前快照可作为隔离开发基线,但不得用于正式 hourly refresh/no-new 认定或宣称验收。 |
| | | - 结论=`HOLD3_F1_CLOSED_F2_F3_F4_MINIMAL_OFFLINE_REPAIR_REQUIRED` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD3-F2-F4-IMPLEMENTATION-REREVIEW-20260814-001 |
| | | |
| | | - 记录时间:`2026-08-14T00:27:06.9553096+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审前序 `HOLD/3` 的 F2—F4 修复;F1 与其余 passed/frozen contracts 不重开。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260813230457007_d6f2e150`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD3-F2-F4-IMPLEMENTATION-REREVIEW-20260813-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 冻结工件独立复算匹配:refresh=`108102/579D743E141394727A5916D4A3DC12B6FEE648424A02176025FB6246BBF11609`;entrypoint=`70562/EAA7FEA89BAB8A21766544A883C4B6DFE132B31183E9F5112B74AEFB86DB6D4C`;refresh tests=`42589/59CBE3E6F44EFDDA882B01787C6533F422E4C65DC9CF15E478DDDD6D05AE35E3`;collector tests=`31468/AD3C93B36B659E6646AE1834071257D35150E6CE768DA40D07E59FC791724156`;machine evidence=`3033/7389A17107D20C383BCC5C59DC325B8440F005D4D57DC9FE2DA511504835E40B`。 |
| | | - 独立离线复验:目标 unittest=`34/34 PASS / 6.284s`;另对 F2 strict scalar、F3 pending/terminal third-content、F4 takeover/no-overwrite/cleanup 六项冻结反例复跑=`6/6 PASS / 0.686s`。未运行 Chrome、网络、下载、正式写入、F:\video、Cookie/session、扩展/HKCU、媒体或转写。 |
| | | - 正式 manifest 审核前后均为 `ana-data/news-青枫浦上Q/manifest.jsonl|51598|0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73|48 lines`,零改写。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/1` |
| | | - blocking_findings=`1` |
| | | |
| | | 1. `F4_NEW_FORMAL_CLAIM_CREATE_NOT_READBACK_OR_DIRECTORY_DURABLE`:F2 strict scalar 与 F3 exact slot/replay 已按冻结反例关闭;F4 的隔离 intent、no-overwrite rename、relative/directory binding 与 main-missing cleanup 也已落地,但 V003+V004 冻结的 CreateNew 持久化点仍未闭环。`_recovery_formal_lock` 和 `_rebind_takeover_claim` 在 `_create_new(path, payload)` 返回后,未对新 formal lock 做 lexical lstat、exact bytes/hash 回读,也未 fsync 父目录,即把 claim 推进为 `HELD`、takeover 推进为 `NEW_LOCK_HELD` 并持久化 pending。独立非真空反例在第二次 formal CreateNew 返回后把实物改为第三字节串;恢复入口仍持久化 `claim_state=HELD`、`takeover_phase=NEW_LOCK_HELD`,而实际 SHA-256=`8BF4BA49514F86E5747155134DB581C3D65C20E69427EFFB219313519A3FD131` 与 claim 期望 SHA-256=`4990D0C9E5AF0C044B4F97FECE1CB8293E62F685992B32117ACAA55C6D059A0A` 不同。现有测试覆盖同进程普通异常,但未覆盖 V004 明列的 CreateNew/NEW_LOCK_HELD 真实子进程 kill 与写后身份漂移,不能证明崩溃后已宣告持锁的实物可信。 |
| | | |
| | | ### Required fix and preserved boundary |
| | | |
| | | - 仅修 F4:把所有 formal-lock CreateNew 分支统一收敛为“CreateNew + 文件 flush/fsync + lexical lstat + exact bytes/hash 回读 + 父目录 fsync”成功后,才允许 `HELD/NEW_LOCK_HELD`;任一步失败必须保留可重放的 `CREATE_PLANNED`,不得宣告持锁成功。 |
| | | - 补公共恢复入口的写后字节漂移/回读失败/父目录 fsync 失败反例,并补 V004 冻结的 CreateNew 与 NEW_LOCK_HELD 真子进程 kill-reopen 非真空矩阵;断言第三内容零覆盖、formal manifest 零改写、同 run 可精确恢复或 fail closed。 |
| | | - F2、F3 本轮 `CLOSED`;F4 已通过的 intent/no-overwrite/binding/cleanup 部分继续冻结,不得扩审或回退。 |
| | | - 当前快照仍仅可作为隔离开发基线,不得用于正式 hourly refresh/no-new 落盘。生产页面发现新增内容不改变该安全门槛;在实现复审 PASS 前不得执行正式 collector 写入。 |
| | | - 不要求也不授权真实 Chrome、网络、下载、formal write、F:\video、Cookie/session、extension/HKCU、媒体或转写重跑。 |
| | | - 结论=`HOLD1_F2_F3_CLOSED_F4_CREATE_DURABILITY_REPAIR_REQUIRED` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD1-F4-DURABLE-CREATE-REREVIEW-20260814-001 |
| | | |
| | | - 记录时间:`2026-08-14T01:55:34.1872079+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审前序 `HOLD/1` 的 `F4_NEW_FORMAL_CLAIM_CREATE_NOT_READBACK_OR_DIRECTORY_DURABLE`;F2、F3 与其余 passed/frozen contracts 不重开。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260814014710681_441dd970`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-HOLD1-F4-DURABLE-CREATE-REREVIEW-20260814-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 冻结工件独立复算匹配:refresh=`109597/5C813E3023319A4DEB38AC7213135D52F7DB3E137D9306F642A94941AF8011BD`;refresh tests=`53314/5895C8409DF753C67A3E1429FF50048F7BE7850CABC63B13EBA42A55CBE85E10`;entrypoint=`70562/EAA7FEA89BAB8A21766544A883C4B6DFE132B31183E9F5112B74AEFB86DB6D4C`;collector tests=`31468/AD3C93B36B659E6646AE1834071257D35150E6CE768DA40D07E59FC791724156`;implementation evidence=`13570/1F2236337280E2CAA4919DED9C42FD80F131E4DFE983031C91BB893F9381EDEF`;machine evidence=`2766/74DE6928B8231E5BC6A4531E6874D5C24370131E1E63C0A5A5BF40F0C787E84B`。 |
| | | - 实现核验:所有 formal-lock CreateNew/重开分支均通过 `_durable_formal_lock_claim`;顺序为文件 CreateNew+flush/fsync、lexical lstat、exact bytes/length/SHA-256 回读、父目录 fsync、持久化后再次 exact 回读,全部完成后才允许 claim=`HELD` / takeover=`NEW_LOCK_HELD` 并写 pending。读取、身份或目录持久化失败均不会提前晋升;已存在 exact PLANNED claim 可在 reopen 时重验并完成晋升,第三内容 fail closed 且不覆盖。 |
| | | - 独立离线复验:聚焦 drift/readback/fsync 与真实子进程 CreateNew/NEW_LOCK_HELD kill-reopen=`2/2 PASS / 1.675s`;collector+refresh 全目标=`36/36 PASS / 8.913s`;`py_compile=PASS`;CLI help=`PASS`;governance=`OK/projects1/warnings0`。 |
| | | - 正式 manifest 审核前后均为 `ana-data/news-青枫浦上Q/manifest.jsonl|51598|0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73|48 lines`,零改写。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`PASS/0` |
| | | - blocking_findings=`0` |
| | | - 前序唯一阻断 `F4_NEW_FORMAL_CLAIM_CREATE_NOT_READBACK_OR_DIRECTORY_DURABLE` 已关闭;未发现本限定范围内剩余阻断。 |
| | | |
| | | ### Boundary and disposition |
| | | |
| | | - F2、F3 保持 `CLOSED`;F4 前序通过的 intent/no-overwrite/binding/cleanup 合同未回退。V001+V002+V003+V004 的离线实现审核现已通过。 |
| | | - 交付结论=`OFFLINE_IMPLEMENTATION_ACCEPTED`。本 PASS 只确认离线协调器、恢复语义与正式 manifest 零改写证据;不自动授权真实 Chrome 刷新、网络、下载或正式内容写入。 |
| | | - 后续真实页面读取与正式落盘仍须由请求方/项目管理员按既有独立生产边界显式调度,并保留 exact UID、五终态、coverage/no-new 与事务门禁;不得因页面已发现新增内容绕过门禁。 |
| | | - 本次未运行 Chrome、网络、下载、formal write、F:\video、Cookie/session、extension/HKCU、媒体或转写。 |
| | | - 结论=`PASS0_F4_DURABLE_CREATE_CLOSED_OFFLINE_IMPLEMENTATION_ACCEPTED` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-RUNTIME-TIMEOUT-DESIGN-REVIEW-20260814-001 |
| | | |
| | | - 记录时间:`2026-08-14T04:58:49.8735583+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅审核 V005 对 supported Chrome control→visible page read 超时合同的增量;V001—V004、F2/F3/F4、UID、五终态、coverage/no-new、catalog、事务、slot 与 formal-lock 合同不重开,产品实现保持冻结。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260814044901141_9ff484b0`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-RUNTIME-TIMEOUT-DESIGN-20260814-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计工件独立复算匹配:V005=`10479/D455D070B78C6DE815ECBDF80A42C5FA359B9B8B372052E1FD37B1B63A2DC118`,strict UTF-8=`PASS`、BOM=`NO`、trailing whitespace=`0`;只读诊断=`2454/3144C2DE317457994C25D348E27486776CD3103E43FBEE6055D1C5C09ACC6E2E`;冻结 product=`109597/5C813E3023319A4DEB38AC7213135D52F7DB3E137D9306F642A94941AF8011BD`;冻结 tests=`53314/5895C8409DF753C67A3E1429FF50048F7BE7850CABC63B13EBA42A55CBE85E10`;governance=`OK/projects1/warnings0`。 |
| | | - 诊断证据支持“冻结 15s/8s 小于当前约 21.3s 受支持控制路径延迟”的边界结论;未把内部遥测实现过度认定为唯一根因。018/019/020 旧槽保持不可变,正式 manifest 仍为 `51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 lines`。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`HOLD/1` |
| | | - blocking_findings=`1` |
| | | |
| | | 1. `F1_ACTION_ERROR_COUNT_AND_TERMINAL_PROJECTION_UNDEFINED`:V005 冻结了 `refresh_action_outcome=CONFIRMED|TIMEOUT|ERROR`,但第 3.3 节矩阵只定义 confirmed、timeout 与 observation timeout/access 的投影,没有定义 action=`ERROR` 且 observation=`READABLE` 时新完整条目能否保存、无新增时应为 `PARTIAL_DISCOVERY_UNCONFIRMED` 还是 `REFRESH_FAILED_PAGE_UNREADABLE`,也没有明确在 action 调用已发出但同步报错、调用前校验失败两种情形中 `refresh_count` 是否均必须为 1。与此同时第 4 节又要求 `refresh_count` 只能为 1,导致“动作未发出即失败”无法诚实编码,“动作已发出但返回 ERROR”也缺少唯一终态。该缺口会让相同 runtime evidence 在实现中产生不同业务保存/终态,直接影响 formal write 安全与五终态确定性。 |
| | | |
| | | ### Required fix and preserved boundary |
| | | |
| | | - 仅修 V005 runtime 增量:冻结 `refresh_action_outcome=ERROR` 的两类精确语义——动作调用前失败与动作调用已发出后失败;为每类固定 `refresh_count`、是否允许一次 observation、可读新条目保存资格、无新增/coverage 的唯一终态及 no-new=false 门禁。若设计决定不支持 action=`ERROR`,则从 schema allowlist 删除并统一映射为既有 timeout/unreadable/access 的唯一合同。 |
| | | - evidence 的 `refresh_count` 应表达实际已发出的 action 次数,并与 pending 上限分离;若允许动作前失败,应允许 count=0 且禁止任何 no-new/正式保存,或明确由 controller 在 evidence 形成前直接终结 unreadable。补 action-before-dispatch error、action-after-dispatch error × READABLE-new/READABLE-empty/observation-error 的离线矩阵。 |
| | | - 已通过且继续冻结:单 action/单 observation、35/45/15/120 预算、同一单调总 deadline、零重试、action timeout 后不 no-new、schema2 历史只恢复、旧槽不可改判、秘密与禁止控制面边界。 |
| | | - 实现仍冻结;本 HOLD 不授权 Chrome、reload/goto、network、download、formal write、F:\video、Cookie/session、Raw CDP、媒体或转写。 |
| | | - 结论=`V005_RUNTIME_TIMEOUT_DESIGN_HOLD1_ACTION_ERROR_SEMANTICS_REQUIRED` |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V006-F1-RUNTIME-ERROR-DESIGN-REREVIEW-20260814-001 |
| | | |
| | | - 记录时间:`2026-08-14T05:10:59.4664278+08:00` |
| | | - 审核阶段:同一 task/reviewer 链内,仅复审 V005 `HOLD/1` 的 `F1_ACTION_ERROR_COUNT_AND_TERMINAL_PROJECTION_UNDEFINED`;V005 已通过合同、V001—V004 与前序实现合同不重开,implementation 继续冻结。 |
| | | - task_id=`DEV-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-20260813-001` |
| | | - requirement_id=`REQ-BILI-DYNAMIC-COLLECTOR-20260804-001` |
| | | - MB-X 消息=`msg_20260814050803015_18ed4f02`;handoff=`HANDOFF-INFODEV2-INFOREV-BILI-DYNAMIC-REFRESH-COLLECTOR-V006-F1-RUNTIME-ERROR-DESIGN-20260814-001`;reply task=`019fbcbb-bed7-7c90-83ab-f50610f80d3a`。 |
| | | - 设计工件独立复算匹配:V005=`10479/D455D070B78C6DE815ECBDF80A42C5FA359B9B8B372052E1FD37B1B63A2DC118`;V006=`5204/4E2455708FC0C60BBBFD16CE60A0F335E237E63F7575FBCE10E07E308C172A84`,strict UTF-8=`PASS`、BOM=`NO`、trailing whitespace=`0`;冻结 product=`109597/5C813E3023319A4DEB38AC7213135D52F7DB3E137D9306F642A94941AF8011BD`;冻结 tests=`53314/5895C8409DF753C67A3E1429FF50048F7BE7850CABC63B13EBA42A55CBE85E10`;governance=`OK/projects1/warnings0`。 |
| | | - 正式 manifest 复核为 `ana-data/news-青枫浦上Q/manifest.jsonl|51598|0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73|48 lines`,未修改。 |
| | | |
| | | ### Findings |
| | | |
| | | - verdict=`PASS/0` |
| | | - blocking_findings=`0` |
| | | - 前序唯一阻断 `F1_ACTION_ERROR_COUNT_AND_TERMINAL_PROJECTION_UNDEFINED` 已关闭;未发现本限定范围内剩余阻断。 |
| | | |
| | | ### Closure and preserved boundary |
| | | |
| | | - V006 删除笼统 `ERROR`,精确拆分 `PRE_DISPATCH_ERROR` 与 `POST_DISPATCH_ERROR`,并由 controller dispatch 状态绑定,不允许 evidence 调用者单独自报。 |
| | | - PRE 固定 `refresh_count=0/observation_count=0/elapsed=0/NOT_ATTEMPTED`,零保存、no-new/coverage=false、唯一 unreadable;POST 固定 `refresh_count=1`、零重试,deadline 尚存时最多一次 observation:可读新完整条目可保存但 no-new/coverage=false,可读空/旧为 partial,read error 为 unreadable,access/identity mismatch 为 blocked;deadline 耗尽时固定 `1/0 + DEADLINE_EXHAUSTED + unreadable`。 |
| | | - evidence 实际计数与 pending 最大上限已分离;outcome/count/elapsed/observation/terminal 不一致均在 manifests/slot 修改前 `E_EVIDENCE_SCHEMA`。离线矩阵覆盖 PRE/POST × readable-new/readable-empty/observation-error、deadline exhausted、第二 action/observation 与非法旧 `ERROR`。 |
| | | - V005 已通过的单 action/单 observation、35/45/15/120 秒单调预算、retry0、timeout 不得证明 no-new、schema2 历史恢复、018/019/020 不可变、秘密/控制面边界继续冻结。 |
| | | - 结论=`V005_V006_RUNTIME_TIMEOUT_DESIGN_PASS_IMPLEMENTATION_AUTHORIZED_OFFLINE_ONLY`。只授权按 V005+V006 实现、离线/合成测试及后续限定实现审核;不授权真实 Chrome、reload/goto、network、formal write、Cookie/session、Raw CDP、download、media、F:\video 或 transcription。 |
| | | - Open questions:无。 |
| | | |
| | | ## DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-TERMINALIZATION-SUCCESSOR-20260814-001 |
| | | |
| | | - canonical_findings_reference=`DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-20260814-001` |
| | | - prior_terminalization_reference=`DEV-AUDIT-PROJECT-INFO-BILI-DYNAMIC-REFRESH-COLLECTOR-V005-V006-RUNTIME-LIMITED-IMPLEMENTATION-REVIEW-TERMINALIZATION-20260814-001` |
| | | - verdict=`HOLD/5` |
| | | - blocking_findings=`5` |
| | | - F1=`TRUSTED_RUNTIME_CONTROLLER_AND_DISPATCH_ENVELOPE_MISSING` |
| | | - F2=`SOURCE_CONTROLLED_EXTRACTOR_CANNOT_PRODUCE_ACCEPTED_EVIDENCE` |
| | | - F3=`OVERALL_DEADLINE_NOT_ENFORCED_AT_COMMIT` |
| | | - F4=`LEGACY_SCHEMA2_PENDING_CAN_REISSUE_BROWSER_ACTION` |
| | | - F5=`IDENTITY_MISMATCH_NOT_PROJECTED_TO_FROZEN_BLOCKED_TERMINAL` |
| | | - formal_manifest=`51598/0E69AF2AF1C4B0014D2033A21F3986E283ECFD758EA652E7F2416006736C8D73/48 unchanged` |
| | | - code_and_formal=`FROZEN_UNCHANGED` |
| | | - disposition=`SAME_CHAIN_MINIMAL_OFFLINE_REPAIR_REQUIRED` |