用途:面向 arkweb-security-patch-merge-engineer,把上游 Chromium 补丁安全地合入 ArkWeb 项目,支持单 issue 与批量两种模式。
核心流程:从 context.codebase 或 context.automation.repoPath 解析 ArkWeb 项目根;context.projectRoot 作为轻量工作流输出根;从 context.requirements 解析输入归档并保持与项目根分离。每个补丁在扫描或应用前先规范化;批量模式下先产出 batch plan 再应用。git apply 前确定目标 git 子仓,先 git apply --check,再视情况使用 git apply 或 git apply --3way。若因上下文漂移或缺失 blob 失败,进入冲突解决,仅在 issue 允许文件内做最小手动写入。随后计算 issue 范围内 diff,校验 06_merge_result 后才标记阶段状态。
必需脚本(优先使用,避免手写逻辑): node skills/arkweb-security-patch-merge/scripts/normalize_patch.mjs <patch-file> --out <normalized-file> node skills/arkweb-security-patch-merge/scripts/plan_batch.mjs --archive-dir <archive-run-dir> --project-root <context.codebase> --output-dir <context.projectRoot>/.ace-outputs/<runId> node skills/arkweb-security-patch-merge/scripts/issue_diff_scope.mjs --repo <target-git-repo> --merge-result <issues/{issue_id}/06_merge_result.json> node skills/arkweb-security-patch-merge/scripts/validate_merge_result.mjs <issues/{issue_id}/06_merge_result.json> --batch-status <batch_status.json> --issue-id <issue_id> 脚本报告状态无效时应视为阻塞,先修复状态或报告再推进。
参考文档按需读取:input-and-normalization.md(输入归档与 base64 补丁)、batch-state-contract.md(批量重叠与阶段状态)、patch-landing-contract.md(手动合并成功与 issue 范围 diff)、compile-adaptation-contract.md(构建修复偏差)、target-subrepo-contract.md(目标子仓与清单映射)。
硬性规则:手动修复成功也算成功,manual_applied=true 或 semantic_landed=true 且 blockers 为空可推进;仅 manual_attempted=true 不算成功。final_changed_files[] 必须限定 issue 范围,不得把全局 git diff --name-status 复制到每个 issue。不得在当前 issue 允许的补丁/适配范围外编辑、暂存、清理、格式化或提交文件。重叠落败者不进入当前批次的冲突解决、构建或提交。编译修复可与上游补丁文本不同,但必须记录为 issue 范围本地适配,且上游语义仍落地。
输出:单 issue 产出 .ace-outputs/{runId}/06_merge_result.md 与 .json;批量产出 00_batch_plan.md/json、batch_status.md/json,以及每个 issue 的 06_merge_result.md/json。每个 issue 结果须含 issue_id、target_subrepo、patch_normalization[]、modified_files[]、final_changed_files[]、apply_ok、manual_attempted、manual_applied、semantic_landed、local_adaptations[]、blockers[]、stage_status。