Skip to content

Changes ​

  • Backend #520: shared read-model classification and additive per-series rank, SQL rarity predicates before counting/pagination, consistent nested/scalar card data and policy-versioned detail ETags. No migration or raw-data/holding rewrite.
  • Mobile #767, issue #766: validate ranks, order chips and cards, retain multi-selection, anniversary rules, immutable IDs, printed fractions and mixed-series sorting semantics. Canonical holo/shiny/gallery groups do not fall back to common-dot glyphs.
  • Business rules: every requested modern family and exclusion, all 62 historical secret cards, complete EX and Sword & Shield policy, limits and rollout order. Existing 6 October benchmark is not overwritten or misrepresented as a fresh visual audit.

Validation ​

API: 1,322 passing tests, 11 skipped; typecheck:js passed. Ingest: 554 passing tests. Mobile: lint clean, typecheck passed, 2,796 passing tests, 11 skipped; pre-push independently reran types and the full suite. Whitespace checks passed.

Read-only PostgreSQL/JavaScript comparison agrees across 14,766 catalogue rows in 113 sets (13,740 policy-covered; 1,791 projected label changes). This is a projection audit, not a deployed database change or independent card-by-card visual verification. No user tables or secrets were queried.

The new real-PostgreSQL E2E test is included in the existing fixture suite but blocked locally at Docker startup: dockerDesktopLinuxEngine pipe unavailable. Native Maestro has not run against the pending companion API/mobile revision; the existing emulator/account/collection remain untouched. GitHub Actions has been blocked by organisation billing; local results are not a green CI claim.

Delivery State ​

PRs target staging and are open for review, not merged or deployed by this task. Deploy backend before distributing the mobile build. EX7 is configured but absent from the audited French catalogue; no catalogue import is included. Notion source was inaccessible. Unknown/ambiguous source rarities remain visible rather than being inferred from card names or reverse availability.