refactor(conflicts): ship KnownConflicts.json as a committed src file (resolves #231 P2)#233
Conversation
Resolves the unresolved Codex P2 on #231. Since #231 the build extracted knownConflicts from build/dependency-policy.json into the shipped KnownConflicts.json, so a build/** policy file affected the published bundle -- but build/** is excluded from the Release path filter, so a future conflict-data edit would not have auto-published (stale conflict warnings). Make the conflict data the single source of truth as a committed source file at src/DLLPickle/KnownConflicts.json, copied into the module verbatim by CopyModuleFiles. This restores the invariant "bundle inputs live under src/, policy/CI edits do not trigger a release": conflict-data edits now correctly publish, while policy-only edits do not. - Add src/DLLPickle/KnownConflicts.json (identical content to what 2.2.0 ships today; the runtime read path in Get-DPKnownConflict is unchanged). - Remove build/Export-DLLPickleKnownConflicts.ps1 and the ExportKnownConflicts build task (no extraction step needed). - Remove knownConflicts from build/dependency-policy.json; update the OData blockedPreloadAssemblies cross-references to point at the new location. - Rework the extractor sync test into direct validation of the committed source file (via the real Get-DPKnownConflict reader). 13/13 unit tests pass; Analyze/AnalyzeTests/AnalyzeTools clean; PrepareModuleOutput ships the file. - Add superseding notes to the #174 design (§3) and plan docs; update CHANGELOG. The drift fingerprint (conflictSurfaceFingerprint) is computed by New-DLLPickleConflictMatrix from the live upstream inventory, not from knownConflicts, so the baseline is unaffected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Pull request overview
Relocates the conflict data from a build-time extraction (build/dependency-policy.json → module/DLLPickle/KnownConflicts.json) to a committed source file at src/DLLPickle/KnownConflicts.json. This restores the invariant that bundle inputs live under src/, so future knownConflicts-only edits correctly trigger the release pipeline (which excludes build/**). The runtime read path is unchanged.
Changes:
- Add
src/DLLPickle/KnownConflicts.json(copied verbatim byCopyModuleFiles); remove theExportKnownConflictsbuild task and theExport-DLLPickleKnownConflicts.ps1extractor. - Remove
knownConflictsfrombuild/dependency-policy.jsonand update ODatablockedPreloadAssembliescross-references to point at the new location. - Rework the extractor sync test into direct validation of the committed source file via
Get-DPKnownConflict; add superseding notes to the design/plan docs and update CHANGELOG.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/DLLPickle/KnownConflicts.json | New committed source-of-truth conflict-data file (content matches what 2.2.0 ships). |
| tests/Unit/KnownConflicts.Tests.ps1 | Replaces extractor sync test with direct validation of the committed JSON via the real reader. |
| build/Export-DLLPickleKnownConflicts.ps1 | Removed; extraction is no longer needed. |
| build/DLLPickle.Build.ps1 | Removes the ExportKnownConflicts build task; CopyModuleFiles already copies the new JSON. |
| build/dependency-policy.json | Drops the knownConflicts block; updates OData blockedPreloadAssemblies evidence cross-refs to the new path. |
| docs/superpowers/specs/2026-06-01-issue174-conflict-warning-design.md | Adds a superseded note on §3 explaining the move. |
| docs/superpowers/plans/2026-06-01-issue174-conflict-warning.md | Adds a superseded note explaining the relocation and removal of the extractor/sync test. |
| CHANGELOG.md | Updates the Added entry to reflect the new source-file location and release-trigger semantics. |
Up to standards ✅🟢 Issues
|
What & why
Resolves the unresolved Codex P2 on #231 ("include the policy in release triggers").
Since #231, the build extracted
knownConflictsfrombuild/dependency-policy.jsoninto the shippedmodule/DLLPickle/KnownConflicts.json— so thatbuild/**policy file became a published-bundle input. Butbuild/**is excluded from the Release path filter, so a futureknownConflicts-only edit would have merged without auto-publishing, leaving users with stale conflict data.This makes the conflict data a committed source file at
src/DLLPickle/KnownConflicts.json(the single source of truth), copied into the module verbatim byCopyModuleFiles. That restores the invariant "bundle inputs live undersrc/; policy/CI-only edits don't trigger a release" — conflict-data edits now correctly publish, policy-only edits don't.Changes
src/DLLPickle/KnownConflicts.json— identical content to what 2.2.0 ships today. The runtime read path (Get-DPKnownConflict, readsKnownConflicts.jsonat the module root) is unchanged.build/Export-DLLPickleKnownConflicts.ps1and theExportKnownConflictsbuild task.knownConflictsfrombuild/dependency-policy.json; update the ODatablockedPreloadAssembliescross-references to point at the new location.Verification
Invoke-Pesteron the conflict tests: 13/13 pass.Invoke-Build Analyze(Analyze + AnalyzeTests + AnalyzeTools): 0 errors, 0 warnings.Invoke-Build PrepareModuleOutput:module/DLLPickle/KnownConflicts.jsonships viaCopyModuleFiles(no extraction step).knownConflicts, so the recorded baseline is unaffected.Merge order⚠️
This is a
src/DLLPickle/**change, so merging it auto-triggers Release-and-Publish and cuts 2.2.0. Merge #232 first (it fixes the reusable-workflow permission startup failure that currently breaks the release pipeline), then merge this once its review settles. 2.2.0 ships the conflict data correctly either way; this PR only changes how future edits propagate.