| name | arkweb-security-patch-conflict |
| description | Resolve ArkWeb patch merge conflicts while preserving upstream security fix intent. |
| descriptionZH | ArkWeb 冲突解决技能。git apply 失败或上下文漂移后,在允许文件范围内执行最小等价手工写入,并保持上游安全修复语义一致。 |
| tags | ["ArkWeb","conflict","merge"] |
ArkWeb Conflict Resolution
用于 arkweb-security-patch-conflict-resolver。
遇到手工落地、manual_attempted / manual_applied、旧 blocker 清理和 issue 过滤 diff 裁决时,先读本 skill 内的 references/manual-landing-contract.md。不要引用其它 skill 的脚本或 md。
输出
单 issue 模式写入 .ace-outputs/{runId}/07_conflict_resolution.md。
批量模式必须逐个 issue 处理,读取 .ace-outputs/{runId}/issues/{issue_id}/06_merge_result.md/json 中记录的目标子仓、patch_normalization[]、modified_files[] 和 blockers,并在当前工程目标 git 子仓内执行最小等价手工写入;每个 issue 写入 .ace-outputs/{runId}/issues/{issue_id}/07_conflict_resolution.md,总览写入 .ace-outputs/{runId}/07_conflict_resolution.md。
必须包含:
- apply 失败/冲突文件和根因。
- 上游修复意图。
- ArkWeb 本地差异和适配决策。
- 最小等价手工写入方案。
- 与上游 patch 的偏差说明。
规则
- 先理解安全修复意图,再改代码。
- 本工作流里的“冲突解决”就是最小手工写入:读取规范化 patch hunks 和当前目标文件,在
modified_files[] 范围内做最小等价改动。
- 对
patch does not apply、三方合并缺 blob、上下文漂移和空 diff,不能只复述 git apply 失败;必须尝试最小手工写入,除非能证明不可在允许范围内完成。
- 若未执行手工写入,必须写明
manual_attempted=false 和 manual_skip_reason。
- 手工写入成功后必须写回
manual_attempted=true、manual_rewrite=true、最终变更文件、关键语义对应关系,并清除旧的 patch_apply_failed:*、no_real_file_change;旧 worktree_add_failed 只作为历史失败记录,不参与当前裁决。
- 手工修复成功就是合入成功:只要最小手工写入真实落地了上游 patch 的安全/功能语义,并且按 issue 过滤后的 diff 包含允许文件,就必须写回
manual_applied=true、semantic_landed=true,清空当前合入 blocker,并允许该 issue 进入 ready_for_next。
- 不能把“尝试过手工”误当成成功。若进入过手工路径但没有实际写入 issue 允许文件,或语义无法确认,必须写
manual_attempted=true、manual_applied=false,保留最新 blocker,不能进入 ready_for_next。
final_changed_files 必须只列出当前 issue 的允许文件和已登记本地适配文件。全局 worktree diff 只能作为诊断输入,不能原样写入该 issue 的结果。
- 只允许修改上游 patch 明确涉及的冲突文件,以及合入/适配报告中明确列出的本次 patch 必需文件。
- 工程中其它未提交代码、未跟踪文件、历史脏改、构建产物和无关删除必须忽略。
- 批量模式禁止使用 git worktree;必须在当前工程目标子仓解决冲突。
- 如果多个 issue 修改同一文件,自动合入阶段应先按 issue_id 数值升序选择最小 issue_id 作为 winner 进入 active batch,其它 issue 标记
duplicate_file_overlap 和 deferred_for_archive;非 winner issue 不进入冲突解决。不得把非 winner 的重叠文件强行写入 winner issue 的结果。
- 不得清理、暂存、格式化、重写或顺手修复本次 patch 范围外的任何文件。
- 如果冲突需要改动范围外文件才能继续,停止并输出阻塞项,不得自动扩大处理范围。
- 无法确认语义时,不要强行通过,输出阻塞项。
- 批量模式每轮必须记录本轮前后的 fail/pass/blocker 变化和 final diff 变化;如果没有任何 issue 的 blocker 减少、
manual_attempted 状态变化或 diff 变化,必须输出 no_progress 并停止继续空转。