Appearance
Sealed Explorer catalogue policy
The 2026-10-19 request is implemented in mobile #747 and backend #510. The subsequently supplied One Piece block logos are backend-served theme-aware assets, not generic substitutes.
Shared series tree
The 2026-10-19 review follow-up records subsequent navigation fixes, actual sealed binder rendering, supplied Energy/EB-02 logos and the deployed API revision. Its activation evidence supersedes the original pre-deployment snapshot at the end of this page.
Sealed browsing uses the exact Cards catalogue projection: canonical block and set IDs, display names, logos, order and beta visibility. A series without sealed facets remains selectable and returns an ordinary empty page. Product filtering and pagination stay on the backend. Returning from an item preserves Explorer. Products retain primary and every verified included-booster series membership, without duplication within one page. Unverified contents are not promoted.
Packaging categories
| Exact Pokemon folder key | Correct category |
|---|---|
1-pack-sealed | Blister |
checklane-sealed | Blister |
premium-checklane-sealed | Blister |
tech-sticker-collection-display-sealed | Blister |
tech-sticker-collection-sealed | Blister |
mini-tin-sealed | Mini Tin |
The first five stop appearing under Autre; individual Mini Tins stop appearing under Blister. Mini Tin displays retain their category. Sleeved Boosters remain Blister, as previously chosen, without being renamed back into plastic blisters. Unrelated global types and One Piece are unchanged. The same backend policy is used by pages, facets, imports and price identity lookup. Unsupported Mini Tin pricing stays unavailable, never another format's quote.
Read-only VPS inspection found 205 public Pokemon products in the five former Autre mappings and 119 individual Mini Tins misclassified as Blister. The optional reference correction changes six mapping rows, not 324 product IDs. Labels, source paths, hashes, rights, compositions and user holdings are retained.
Chronological order
Every page, including legacy series_priority requests, orders by:
- Explicit recorded product release date.
- Canonical primary series date.
- Latest verified included-booster series date when no primary exists.
- Unknown dates last, with SKU ID as the stable tie-breaker.
All 2,393 inspected Pokemon product release dates are missing. Series dates are therefore a necessary chronology aid, not proof of a product launch day. Exact product-level chronology requires an audited date dataset. The API never writes fallback series dates into product release_date.
Named ME folder patterns me-...-30th-... and me-...-pitch-black-... resolve existing primary IDs 30th and me05 (Nuit Noire). Their catalogue dates order 30th before Nuit Noire when no exact product date exists. Explicit existing primary IDs win. No missing series or booster content is fabricated.
Item detail
Tiles open a stack route instead of an image preview. Existing card-detail price, chart and collection primitives are reused, without condition or grading selectors. Contained art falls back from detail to thumbnail, then a visible placeholder. Quotes resolve only the exact SKU and selected language; missing prices/history are not invented. A linked account is required before collection additions. The account-scoped repository receives kind: sealed, the exact SKU, quantity, language and optional unit purchase price. Internal sealed state is sealed; the required legacy nm ledger field is not an exposed item condition.
Verification and activation
Local gates passed: lint/TypeScript and 2,698 mobile tests (11 existing skips); backend TypeScript including scripts/tests and 1,280 tests (8 existing skips), using cached Node 22.23.3. The existing PostgreSQL HTTP suite adds classification, cross-category chronology, pagination, primary/secondary and missing-date coverage. CI is pending at documentation preparation. Native visual execution is not claimed.
The generated catalogue SQL was also executed against VPS PostgreSQL data inside BEGIN READ ONLY followed by rollback, without deploying code. It returned 356 Blisters and 139 Mini Tins, no Autre facet, with 30th products first and Nuit Noire next. Both series filters executed successfully. This validates real SQL against current catalogue data, not the future native mobile build.
No migration, VPS deployment, reference write, native rebuild or live account mutation occurred. After review and separate deployment approval, follow backend docs/SEALED_EXPLORER_POLICY.md and run:
sh
node scripts/correct-sealed-categories.ts --dry-runSave the six original reference rows outside Git before separately authorizing --apply. The operation validates previous values and rejects shared non-Pokemon keys before writing. Dry-run is a read-only transaction; apply locks rows, changes only sealed_type, is atomic and repeatable, and never touches collections.