[GH-ISSUE #690] feat(metadata): add metadata push --dry-run deterministic plan #187

Closed
opened 2026-02-26 21:33:56 +03:00 by kerem · 0 comments
Owner

Originally created by @rudrankriyam on GitHub (Feb 20, 2026).
Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/690

Parent

Summary

Implement asc metadata push --dry-run to compute a deterministic mutation plan without making API changes.

Proposed CLI

asc metadata push \
  --app "APP_ID" \
  --version "1.2.3" \
  --dir "./metadata" \
  --dry-run

Scope

  • Add metadata push planning pipeline.
  • For --dry-run, produce no API mutations.
  • Plan artifact includes deterministic arrays:
    • adds[]
    • updates[]
    • deletes[]
    • apiCalls[] (optional but preferred)
  • Stable identity keys for each change item.
  • Clear reason strings for each action.

Detailed Tasks

  • Read local canonical metadata and remote ASC state.
  • Normalize both sides using shared canonical model.
  • Diff engine emits stable adds/updates/deletes.
  • Include command options in artifact for CI traceability.
  • Ensure sorted deterministic ordering across all plan sections.

Test Plan (TDD)

  • Cmdtest: --dry-run makes zero mutation HTTP calls.
  • Cmdtest: output JSON parses and contains plan sections.
  • Cmdtest: repeated runs produce byte-identical JSON plan output.
  • Unit: diff correctness for add/update/delete scenarios.
  • Unit: normalization tests (whitespace/empty handling) to avoid false diffs.

Acceptance Criteria

  • metadata push --dry-run is available and documented.
  • Plan artifact is deterministic and suitable for CI gating.
  • No mutation calls occur during dry-run.
  • Tests cover determinism + no-mutation guarantee.

Out of Scope

  • Applying plan mutations (handled in follow-up issue).
Originally created by @rudrankriyam on GitHub (Feb 20, 2026). Original GitHub issue: https://github.com/rudrankriyam/App-Store-Connect-CLI/issues/690 ## Parent - #587 - Depends on #687 - Depends on #689 ## Summary Implement `asc metadata push --dry-run` to compute a deterministic mutation plan without making API changes. ## Proposed CLI ```bash asc metadata push \ --app "APP_ID" \ --version "1.2.3" \ --dir "./metadata" \ --dry-run ``` ## Scope - Add `metadata push` planning pipeline. - For `--dry-run`, produce no API mutations. - Plan artifact includes deterministic arrays: - `adds[]` - `updates[]` - `deletes[]` - `apiCalls[]` (optional but preferred) - Stable identity keys for each change item. - Clear reason strings for each action. ## Detailed Tasks - [ ] Read local canonical metadata and remote ASC state. - [ ] Normalize both sides using shared canonical model. - [ ] Diff engine emits stable adds/updates/deletes. - [ ] Include command options in artifact for CI traceability. - [ ] Ensure sorted deterministic ordering across all plan sections. ## Test Plan (TDD) - [ ] Cmdtest: `--dry-run` makes zero mutation HTTP calls. - [ ] Cmdtest: output JSON parses and contains plan sections. - [ ] Cmdtest: repeated runs produce byte-identical JSON plan output. - [ ] Unit: diff correctness for add/update/delete scenarios. - [ ] Unit: normalization tests (whitespace/empty handling) to avoid false diffs. ## Acceptance Criteria - [ ] `metadata push --dry-run` is available and documented. - [ ] Plan artifact is deterministic and suitable for CI gating. - [ ] No mutation calls occur during dry-run. - [ ] Tests cover determinism + no-mutation guarantee. ## Out of Scope - Applying plan mutations (handled in follow-up issue).
kerem 2026-02-26 21:33:56 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#187
No description provided.