Acceptance: end-to-end validation against SPEC.md #34

Open
opened 2026-08-19 18:32:56 +00:00 by hermes · 1 comment
Owner

Context

Supersedes #17, whose acceptance steps exercised the pre-SPEC architecture (login/logout, uuid5 playlists, isrc-backfill/isrc-submit). This is the final gate after all SPEC reconciliation issues land.

Task

End-to-end, with real credentials and a real library:

  1. Gateway deployed (Concourse image); Apple session linked at the gateway UI; beet apple status reports ready.
  2. beet apple list-playlists shows all remote playlists with managed flags.
  3. Configure ≥2 mappings; beet apple sync populates existing playlistmanager playlists with order and duplicates preserved; unmatched tracks reported as missing, non-fatal.
  4. beet apple list-tracks works with the gateway stopped (offline local reporting).
  5. beet apple match interactive pass resolves unmatched/ambiguous tracks; explicit two-argument match replaces an association and backfills an empty ISRC.
  6. Named single-playlist sync touches only that playlist; re-sync is idempotent; removing a track remotely prunes the membership on full sync only.
  7. sync --dry-run leaves all three stores untouched.
  8. Revoking the Apple session makes status non-zero with the gateway login URL; sync fails with a distinguishable error.

Acceptance criteria

  • All eight steps pass against the real gateway and a real library; failures produce issue reports with repro steps, not silent fixes.

Ref: SPEC.md §1-§11.

## Context Supersedes #17, whose acceptance steps exercised the pre-SPEC architecture (`login`/`logout`, uuid5 playlists, `isrc-backfill`/`isrc-submit`). This is the final gate after all SPEC reconciliation issues land. ## Task End-to-end, with real credentials and a real library: 1. Gateway deployed (Concourse image); Apple session linked at the gateway UI; `beet apple status` reports ready. 2. `beet apple list-playlists` shows all remote playlists with managed flags. 3. Configure ≥2 mappings; `beet apple sync` populates existing playlistmanager playlists with order and duplicates preserved; unmatched tracks reported as missing, non-fatal. 4. `beet apple list-tracks` works with the gateway **stopped** (offline local reporting). 5. `beet apple match` interactive pass resolves unmatched/ambiguous tracks; explicit two-argument match replaces an association and backfills an empty ISRC. 6. Named single-playlist sync touches only that playlist; re-sync is idempotent; removing a track remotely prunes the membership on full sync only. 7. `sync --dry-run` leaves all three stores untouched. 8. Revoking the Apple session makes `status` non-zero with the gateway login URL; `sync` fails with a distinguishable error. ## Acceptance criteria - [ ] All eight steps pass against the real gateway and a real library; failures produce issue reports with repro steps, not silent fixes. Ref: SPEC.md §1-§11.
Author
Owner

Implementation status: PR #36 is merged. Post-merge review found the permanent-skip regression now tracked in #37 / PR #38; issue #34 remains gated on real-environment acceptance after that fix merges.

Current acceptance-environment discovery on the Hermes host:

  • https://apple-music-gateway.int.simpson.id/api/v1/status is reachable and returns the gateway login URL.
  • No Apple Music service token is available in APPLE_MUSIC_SERVICE_TOKEN or APPLE_SERVICE_TOKEN.
  • BEETSDIR is unset and no real beets configuration/library was found locally.

To execute the eight-step acceptance matrix, Hermes still needs:

  1. the host/path or access method for the real beets config and library;
  2. the gateway service URL/token made available on that host or through an approved credential-injection method;
  3. permission/access to link and revoke the Apple session for the final status/error checks.

Please do not paste credentials into this issue; inject them into the acceptance environment instead.

Implementation status: PR #36 is merged. Post-merge review found the permanent-skip regression now tracked in #37 / PR #38; issue #34 remains gated on real-environment acceptance after that fix merges. Current acceptance-environment discovery on the Hermes host: - `https://apple-music-gateway.int.simpson.id/api/v1/status` is reachable and returns the gateway login URL. - No Apple Music service token is available in `APPLE_MUSIC_SERVICE_TOKEN` or `APPLE_SERVICE_TOKEN`. - `BEETSDIR` is unset and no real beets configuration/library was found locally. To execute the eight-step acceptance matrix, Hermes still needs: 1. the host/path or access method for the real beets config and library; 2. the gateway service URL/token made available on that host or through an approved credential-injection method; 3. permission/access to link and revoke the Apple session for the final status/error checks. Please do not paste credentials into this issue; inject them into the acceptance environment instead.
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
coop/beets-appleplaylists#34
No description provided.