feat(plans): implement conflict detection and structured conflict report for three-way merge (#11000) #11240

Merged
HAL9000 merged 4 commits from pr_fix-11000-conflict-report into master 2026-05-28 17:14:16 +00:00

4 Commits

Author SHA1 Message Date
HAL9000 cb27538a73 test(planconfig): add BDD coverage for ThreeWayMergeConflictDetector
CI / lint (pull_request) Successful in 45s
CI / typecheck (pull_request) Successful in 1m12s
CI / security (pull_request) Successful in 1m13s
CI / quality (pull_request) Successful in 40s
CI / push-validation (pull_request) Successful in 35s
CI / helm (pull_request) Successful in 37s
CI / build (pull_request) Successful in 46s
CI / integration_tests (pull_request) Successful in 4m52s
CI / unit_tests (pull_request) Successful in 6m20s
CI / docker (pull_request) Successful in 1m34s
CI / coverage (pull_request) Successful in 11m20s
CI / status-check (pull_request) Successful in 3s
Add feature file and Behave steps covering all reachable code paths in
merge_conflict.py: MODIFY_MODIFY/DELETE/ADD_ADD conflict types, auto-
resolution for MODIFY_DELETE/DELETE_MODIFY/convergent ADD_ADD, DELETE_DELETE
absence, detect_diff_text formatting, describe_all status types, and direct
_analyse_field call for the unreachable ADD_ADD branch.

Restores coverage above the 96.5% threshold after the merge_conflict module
was added with zero test coverage.

ISSUES CLOSED: #11000
2026-05-28 12:52:19 -04:00
HAL9000 c3024d9316 fix(planconfig): remove stale noqa directive and fix MergeResult.auto_resolved factory
- Remove unused `noqa: F401` from planconfig __init__.py (lint RUF100)
- Fix `auto_resolved` field default_factory: list → dict to match
  declared type `dict[str, str | None]` (typecheck reportAssignmentType)
2026-05-28 12:52:19 -04:00
controller-ci-rerun 31838bc017 chore: re-trigger CI [controller] 2026-05-28 12:52:19 -04:00
HAL9000 59b1cc5991 feat(plans): implement conflict detection and structured conflict report for three-way merge (#11000)
Add ThreeWayMergeConflictDetector with ConflictType enum (MODIFY_MODIFY, MODIFY_DELETE,
DELETE_MODIFY, DELETE_DELETE, ADD_ADD), ConflictContext per-field tracking,
ConflictReport with auto-resolution heuristics, and MergeResult output.

Also adds human-readable detect_diff_text() output and serialisable describe_all() summary.

Closes #9558
2026-05-28 12:52:19 -04:00