# C0-003 classify_legacy_273 状态:done 计划:`BLENDER_WASM_CORRECTIVE_TASK_PLAN` 阶段:P0 Gate:G0 依赖:`C0-002` lifecycleStatus:`done` blockedBy:`none` writeScope:`evidence_only` queueMutationAllowed:`false` ## 目标 把旧 M16 已有任务按实际证据重新分类,避免把 metadata-only 或 negative-only 当作正向 feature parity,并为后续 capability clustering 产生可复现的候选映射。分类不改变旧任务 的 `status`、manifest、completion registry 或 queue。 ## 分类来源 只能读取并交叉验证: - task manifest 的 operation/status/artifact hashes; - desktop report 的 poll/operatorStatus/mainMutation; - web report 的 WASM fields、revision、save/reopen、negative; - reader、API、WASM 构件 hashes; - focused command 和 governance report。 禁止根据 task ID、gap 名称或 `status: done` 单独推断 feature parity。 ## 分类规则 - `FEATURE_PARITY`:至少 L2,必须有 WASM positive command 和 Main mutation; - `READ_COMPATIBILITY`:L0/L1,只有读取/观察证据; - `NEGATIVE_BOUNDARY`:只证明取消、不支持、资源缺失或坏输入; - `METADATA_ONLY`:snapshot 有字段,但没有等价 mutation; - `UNSUPPORTED_DECLARED`:明确记录能力边界和用户可见错误; - `BLOCKED`:证据不完整、hash 漂移或流程 gate 失败。 - `PLANNED`:只有 capability 设计材料,没有可核验的旧任务证据;只能出现在新 capability 候选,不得出现在 legacy completion。 ## 输出 - `tests/golden/corrective/C0-003/legacy-gap-classification.json` - `tests/golden/corrective/C0-003/cluster-summary.json` - `tests/golden/corrective/C0-003/classification-report.md` 每条记录至少包含 `task`、`gapId`、`evidenceLevel`、`completionClass`、`desktopPositive`、 `wasmPositiveMutation`、`readerChanged`、`wasmChanged`、`saveReopen`、`reason`、 `candidateCapabilityId`、`mappingState`、`evidenceRefs` 和 `sourceHashes`。其中: - `candidateCapabilityId` 只能是一个 primary capability;其它复用关系写入 `coverageCapabilityIds`,不得让一个 gap 隐式重复完成; - `mappingState` 只能是 `UNMAPPED`、`CANDIDATE`、`COVERED`、`RETAINED_NEGATIVE`、 `DUPLICATE` 或 `BLOCKED`; - `evidenceRefs` 必须指向具体 manifest/report/command,而不是目录或 task 名称; - `sourceHashes` 必须覆盖被分类的 manifest、desktop/web report 和 production artifact。 ## 通过条件 - 273 条旧记录均有分类; - 每条分类都能追溯到具体 manifest/report/hash; - 生成两次 bytes 相同; - 能识别至少一个真实 L2+ cluster 和至少一个 metadata/negative cluster; - 每个 `FEATURE_PARITY` 记录都有 `wasmPositiveMutation:true`、`evidenceLevel` 为 L2-L5, 且 `desktopPositive:true`; - 每个 `RETAINED_NEGATIVE` 或 `READ_COMPATIBILITY` 记录不会生成 queue completion; - 不修改旧 manifest、status 或 queue。 ## 失败边界 无法从现有证据区分正向 mutation 与 metadata-only 时,分类为 `BLOCKED`,不得向上乐观归类。 mapping 发生多对一冲突、hash 漂移或 source 目录不完整时也必须保持 `BLOCKED`,并记录 冲突原因,不能自动选择 capability。