# Arkweb Security Patch Conflict

> Resolve ArkWeb patch merge conflicts while preserving upstream security fix intent.

- Skill: `openharmonyinsight/arkweb-security-patch-conflict` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add openharmonyinsight/arkweb-security-patch-conflict`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openharmonyinsight/arkweb-security-patch-conflict/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: openharmonyinsight (https://skillmd.com/u/openharmonyinsight)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openharmonyinsight/arkweb-security-patch-conflict

---


# ArkWeb Conflict Resolution

用于 `arkweb-security-patch-conflict-resolver`。

遇到手工落地、`manual_attempted` / `manual_applied`、旧 blocker 清理和 issue 过滤 diff 裁决时，先读本 skill 内的 [references/manual-landing-contract.md](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`。

必须包含：

1. apply 失败/冲突文件和根因。
2. 上游修复意图。
3. ArkWeb 本地差异和适配决策。
4. 最小等价手工写入方案。
5. 与上游 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` 并停止继续空转。

