Skip to content

pm files and docs duplicate add reports changed true after deduplication #867

Closed

Description

@unbraind

Summary\n\nRe-adding an existing linked artifact with the same path and scope enters the mutation path and returns changed: true, even though deduplication preserves the existing entry. A different note is silently ignored, so the reported change does not correspond to final item state.\n\n## Evidence\n\nGiven an existing project-scoped file link with note A, adding the same path and scope with note B returned changed: true while the resulting entry still contained note A. The SDK intentionally ignores duplicate path and scope additions, but the CLI path reports changed after any add, remove, or migrate request.\n\n## Expected\n\nIf normalized artifacts equal the current array, return changed: false and avoid a no-op history mutation. If note replacement is desired, require an explicit upsert or update flag rather than claiming an implicit change.\n\n## Duplicate search\n\nSearched all open and closed issues and the full issue corpus for no-op changed true, idempotent changed false files, duplicate linked file changed, deduplicated add changed, and related terms. Closed #170 added standalone notes for new links and does not cover false changed reporting.

Activity

  1. coderabbitai commented on Aug 2, 2026

    @coderabbitai
    🔗 Related PRs

    #372 - fix(validate): remote-reference awareness for linked-artifact validation (URL doc-refs no longer flagged/pruned as missing files) [merged]
    #543 - Promote linked-resource and dependency governance into the pm SDK [merged]
    #545 - SDK contract integrity: workspace paths, dependency truth, validation, and MCP parity [merged]
    #712 - SDK context integrity: atomic Plans, batch similarity, sparse settings, and tombstones [merged]
    #783 - Harden SDK context integrity, merge safety, and agent-efficient output [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. unbraind commented on Aug 2, 2026

    @unbraind
    OwnerAuthor

    Tracked in pm item pm-jb1ron. This issue is included in the active SDK/CLI context-integrity delivery bundle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions