Skip to content

fix(merge): resolve spec conflicts losslessly and truthfully - #448

Merged
0xLeif merged 1 commit into
mainfrom
fix/427-merge-side-labeling
Jul 27, 2026
Merged

fix(merge): resolve spec conflicts losslessly and truthfully#448
0xLeif merged 1 commit into
mainfrom
fix/427-merge-side-labeling

Conversation

@0xLeif

@0xLeif 0xLeif commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • parse diff3 conflict bases without ever selecting base content
  • report both ours and incoming labels truthfully
  • resolve versions using the maximum numeric value and union supported list fields
  • leave divergent scalars, same-key API rows, unsafe YAML shapes, and malformed markers unresolved
  • preserve line endings and final-newline form
  • keep each conflicted file all-or-nothing: any manual region prevents every write
  • add CHG-0066 lifecycle evidence and synchronize the merge spec and companions

Root cause

The previous merge resolver treated conflict structure too loosely, could mislabel the selected side, and mixed auto-resolvable and manual regions in ways that made partial writes possible or diagnostics misleading.

Verification

  • 46 focused merge unit tests passed
  • 2 issue specsync merge claims HEAD while taking the incoming side (and diff3 leaves base markers) #427 integration tests passed
  • 2,031 repository unit tests passed
  • 331 repository integration tests passed
  • fledge lanes run verify passed
  • fledge trust verify passed
  • 62/62 specs passed with 100% file and LOC coverage
  • independent acceptance and adversarial reviews found no high- or medium-severity issues
  • private CorvidLabs/spec-sync-sandbox reproduction confirmed dry-run, successful persistence, and byte-identical all-or-nothing failure behavior
  • CHG-0066 was approved, freshly verified, and accepted

Fixes #427

@0xLeif
0xLeif requested a review from a team as a code owner July 24, 2026 16:59
@0xLeif
0xLeif requested review from 0xGaspar, Kyntrin and tofu-ux July 24, 2026 16:59
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ Corvin says...

      _
    <(;\  .oO(oh no...)
     |/(\
      \(\\
      " "\\

"I'm pecking through the errors..."

CI Summary

Check Status
Validate action.yml ✅ Passed
Packaged Action Consumer ✅ Passed
Dependency Audit ✅ Passed
Code Coverage ✅ Passed
Format Check ❌ failure
Docs Site ✅ Passed
Spec Validation ❌ failure
Tests (build, test, clippy) ✅ Passed
VS Code Extension ✅ Passed
📋 Spec Validation Details

❌ SpecSync: Failed

Metric Value
Specs checked 62
Passed 62
Errors 1
Warnings 0
File coverage 100% (105/105)
LOC coverage 100% (87135/87135)

Errors

.specsync/sdd.json

  • meaningful changed paths are not covered by an active change: src/merge.rs

Action Items

  • Review and fix -- meaningful changed paths are not covered by an active change: src/merge.rs

Generated by specsync · Run specsync check --format github to reproduce


Powered by corvid-pet

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ Corvin says...

      _
    <(;\  .oO(oh no...)
     |/(\
      \(\\
      " "\\

"I'm pecking through the errors..."

CI Summary

Check Status
Validate action.yml ✅ Passed
Packaged Action Consumer ✅ Passed
Dependency Audit ✅ Passed
Code Coverage ✅ Passed
Format Check ✅ Passed
Docs Site ✅ Passed
Spec Validation ❌ failure
Tests (build, test, clippy) ✅ Passed
VS Code Extension ✅ Passed
📋 Spec Validation Details

❌ SpecSync: Failed

Metric Value
Specs checked 62
Passed 62
Errors 1
Warnings 0
File coverage 100% (105/105)
LOC coverage 100% (87323/87323)

Errors

.specsync/sdd.json

  • meaningful changed paths are not covered by an active change: specs/merge/context.md, specs/merge/merge.spec.md, specs/merge/requirements.md, specs/merge/tasks.md, specs/merge/testing.md, src/merge.rs

Action Items

  • Review and fix -- meaningful changed paths are not covered by an active change: specs/merge/context.md, specs/merge/merge.spec.md, specs/merge/requirements.md, specs/merge/tasks.md, specs/merge/testing.md, src/merge.rs

Generated by specsync · Run specsync check --format github to reproduce


Powered by corvid-pet

@0xLeif
0xLeif force-pushed the fix/427-merge-side-labeling branch from c847dc4 to d798f40 Compare July 27, 2026 17:38
@0xLeif 0xLeif changed the title fix: merge labels both sides accurately, version=max, diff3 base handled, persist partial resolutions (closes #427) fix(merge): resolve spec conflicts losslessly and truthfully Jul 27, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Corvin says...

      _
    <(^\  .oO(Caw! ^v^)
     |/(\
      \(\\
      " "\\

"That's a nice looking export you've got there."

CI Summary

Check Status
Validate action.yml ✅ Passed
Packaged Action Consumer ✅ Passed
Dependency Audit ✅ Passed
Code Coverage ✅ Passed
Format Check ✅ Passed
Docs Site ✅ Passed
Spec Validation ✅ Passed
Tests (build, test, clippy) ✅ Passed
VS Code Extension ✅ Passed
📋 Spec Validation Details

✅ SpecSync: Passed

Metric Value
Specs checked 62
Passed 62
Errors 0
Warnings 0
File coverage 100% (105/105)
LOC coverage 100% (111010/111010)

Generated by specsync · Run specsync check --format github to reproduce


Powered by corvid-pet

@0xLeif
0xLeif merged commit e27cba1 into main Jul 27, 2026
20 checks passed
@0xLeif
0xLeif deleted the fix/427-merge-side-labeling branch July 27, 2026 17:57
0xLeif added a commit that referenced this pull request Jul 27, 2026
Archive accepted CHG-0066 after PR #448 integration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

specsync merge claims HEAD while taking the incoming side (and diff3 leaves base markers)

1 participant