Skip to content

Pokemon rarity symbols ​

Scope and Provenance ​

The 18 original PNG symbols were retrieved from public Pokecardex series controls on 20 October 2026. Each source is https://pokecardex.b-cdn.net/assets/images/rarete/ids/rarete_<id>.png. The repository manifest src/api/src/pokemonRaritySymbols.json records full SHA-256, source URL, dimensions and theme treatment. The local source batch additionally retains source pages and the original download manifest.

The user explicitly confirmed usage/publication rights for Snag on 20 October 2026. This attestation supersedes the download-time pending publication decision; it does not claim independent legal verification or change historical evidence.

Reviewed Manifest ​

Source IDSource labelPixelsTheme treatmentSHA-256 prefix
1Commune50x50Theme ink463a44ca7fd2
2Unco50x50Theme ink18794172aa6f
3Rare50x50Theme ink31719d6f6898
4Holographique50x50Original colors05e6f90f0faa
5Ultra-rare50x50Original colors70c52d41c7c1
6Secrète50x50Original colors61bbdf11e2f0
7Promo50x50Original colors81a958668586
32Double Rare250x250Original colors4d3b162a0876
33Illustration Rare250x250Original colorsdfca65ad297a
34Ultra Rare250x250Original colors0ab8a51a68e2
35Illustration Spéciale Rare250x250Original colors7956fd514cfb
36Hyper Rare250x250Original colorsf71143f2208a
38Illustration Rare Chromatique82x78Original colorscb7f2712a94d
39Illustration Spéciale Chromatique152x100Original colorsb01c8cfe1f4c
40HIGH-TECH rare250x250Original colors437245b5ed07
43Noir Blanc Rare238x162Original colors8fdfc4db9acb
45Mega Hyper Rare100x100Original colorsefa243add360
47Méga Attaque Rare30x20Original colors149a42cff048

Display Contract ​

  • Backend list and detail responses optionally provide rarity_symbol with id, path, monochrome, width and height.
  • Filenames are content-addressed: rarity-symbols/pokemon/<id>.<sha12>.png. The public media proxy allows only the exact reviewed manifest paths, not the directory. No arbitrary URL, fake card/set row or image ownership bypass.
  • The app validates all metadata and resolves paths through its configured first-party catalogue-media base. Public disk hydration revalidates metadata.
  • Images occupy a stable 24x20 slot using contain, not cover. Only the reviewed alpha-mask originals follow theme ink; colored/bordered originals stay intact. Native image failure or absent metadata uses the existing glyph, preserving counts, accessibility, selection and filter geometry. Mixed-set groups only show a PNG when every card agrees on the source URI.
  • Label aliases reuse the existing source-ID resolver: modern Rare/Holographique and Ultra Rare must not be confused with their legacy meanings. Unsupported Snag-only groups keep their fallback; no invented source match.
  • No card rarity, membership, order, number, account or holding is changed.

Installation and Rollback ​

The static installer defaults to a dry-run. It validates all 18 PNG hashes, headers, dimensions and source/target paths before creating a private backup receipt outside public images. Existing exact targets are backed up; previously absent files are recorded as absent. Atomic individual replacements are rehashed. Use a fresh backup directory and the reviewed source files; no recursive chmod, cache purge, SQL migration or service restart is required for static uploads.

Observed installation: 18 new files, 55,367 bytes, zero replacements. Host hashes and all 18 internal Nginx HTTP 200 payload hashes matched. Receipt and approved manifest are retained privately. New public catalogue-media paths require the backend PR deployment; copying files alone does not activate the API allowlist. Rollback must target only the receipt entries and requires approval before removing newly created public files.

Validation and Limits ​

Local API suite: 1,328 passed, 11 skipped; TypeScript and check-JS passed. Mobile: 2,805 passed, 11 skipped; types and targeted lint passed. Tests cover all 18 backend mappings, exact media allowlisting, hostile wire input, both native theme styles, load-error fallback/retry, group ambiguity and disk hydration. Installer exercises cover dry-run, fresh install, repeat backup and corruption rejection. A browser contact sheet verifies all 36 light/dark image instances at the display slot size; this is not a native emulator screenshot.

No native build is installed by this change. Docker-backed PostgreSQL E2E was not run locally. PRs target staging; no merge or API deployment is implied. Implementation: backend #526 and mobile #775. Backend CI run 39452773316 was rejected before jobs started because of the organisation's payment/spending limit. Local green gates do not replace this CI status.