Agent Skills: ArkWeb Conflict Resolution

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

UncategorizedID: openharmonyinsight/openharmony-skills/arkweb-security-patch-conflict

Install this agent skill to your local

pnpm dlx add-skill https://github.com/openharmonyinsight/openharmony-skills/tree/HEAD/workflows/arkweb/.aceharness/skills/arkweb-security-patch-conflict

Skill Files

Browse the full folder contents for arkweb-security-patch-conflict.

Download Skill

Loading file tree…

workflows/arkweb/.aceharness/skills/arkweb-security-patch-conflict/SKILL.md

Skill Metadata

Name
arkweb-security-patch-conflict
Description
Resolve ArkWeb patch merge conflicts while preserving upstream security fix intent.

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。

必须包含:

  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 并停止继续空转。