Skip to content

Reject repeated JSON keys before package identity and parity validation #418

Closed

Description

@devantler

🤖 Generated by the Agentic Engineer

Problem

Current main accepts repeated keys in marketplace manifests, plugin manifests and the persisted rename baseline. Normal jq decoding erases the conflicting value, so normalized parity reports success for ambiguous package identities or compatibility history.

Observed on fresh main during hands-on validation on 2026-10-03. The package cases exercise the production gate against a complete isolated fixture; the catalogue cases exercise its shared parser and native CLI argument contract.

Intended outcome

Require one complete object with unique decoded keys before semantic reads of every package manifest, rename baseline and desired-state resource. Cover nested and escaped duplicate keys and healthy formatting.

Success proxy: a regression fails against current main, then passes with the root-cause repair; healthy packages and normal installation remain usable. No external adoption is claimed.

Size: S. Part of #38.

Activity

  1. added theissue type on Oct 3, 2026
  2. self-assigned this
    on Oct 3, 2026
  3. moved this to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Oct 3, 2026
  4. added a commit that references this issue on Oct 3, 2026
  5. devantler commented on Oct 3, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Delivered in #426 at merged commit 465a84f. The merged tree matches the reviewed final source. The actual merged package passes its production gate; introducing a conflicting repeated declaration into that otherwise healthy package is rejected.

    The 39 package boundary cases, 313 existing manifest cases and 25 MCP boundary cases pass, and required CI was green at the final reviewed commit. All review findings were fixed or refuted with evidence before merge.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Fields

Priority

None yet

Effort

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions