Appearance
Latest Preview: Team FR/EN Series Reference
Backend #531 and mobile #795 now use Spleen/Lulu's supplied 2026-10-21 reference for editorial naming. The original reference is retained at business-rules/sealed-series-fr-en-reference.md; its SHA-256 is 0edb1153bd146d4d88032e04ab967929d4fec1d77bb740682b37835fccf4dff7. The backend's 193 main/special Pokemon and OP/EB/PRB/ST entries are checked by exact names or unambiguous game-scoped codes. Supplemental tables define boundaries: galleries, promo prefixes and technical IDs do not create series. English-only editions keep their English titles. Shared EV10.5 codes need the actual Black Bolt/White Flare name; One Piece western OP14-EB04/OP15-EB04 labels stay distinct from a Japanese standalone EB-04 product.
The latest local preview has 1,284 ready / 1,123 blocked / 56 excluded. 167 proposals change, including classification-code normalization and French/English editorial names, with zero newly unblocked products and zero regressions. Earlier official-source and visual year reviews are retained. The two HGSS Knock Out collections and the Suicune/Kyogre edition-year conflicts remain unresolved; block naming is not evidence of a particular expansion.
All 2,463 source tags, product IDs and raw snapshot fields are unchanged. Labels remain separate from tags. No database write, VPS connection, migration, deployment, restart, account operation or collection operation was performed. Report approval digest: 6eac018bd82231cac58654fe3ffbeb3058bcef9dd129fe583b4530110475a3a7. This digest includes the reference as well as family models. Prior approvals do not authorize this preview. The counts below are historical previews.
Observed Red/Green cycles cover English expansion localization, source-bound reference matching, reference-bound approval digests, and rejecting an era-only HGSS box after typography normalization. Regression tests cover all 193 reference rows, ambiguous/conflicting codes, English-only releases and mobile label/tag identity preservation. Native database/emulator E2E remains unverified.
Current local validation: API 1,417 passed / 12 skipped; ingest 554 passed; mobile 2,854 passed / 11 skipped, ESLint and TypeScript passed; strict API TypeScript/check-JS and VitePress build passed. The optional SQL integration was skipped because its isolated runtime is not configured in this shell. Maestro is unavailable. Hosted CI is not represented as green.
The naming follow-up now reuses existing product research rather than requiring every naming fact to be re-entered manually. Research is joined by exact asset path and original image SHA-256. French Pokemon names, unambiguous expansion branding, documented release/edition years, plain named Pokemon boxes and printed World Championships deck names become snapshot-bound review facts. No product identity, physical taxonomy, set membership, price identity or holding is changed. An incomplete booster assortment is not confused with an unknown product identity.
The standalone evidence command supports dry-run only, refuses to overwrite an existing report, and never connects to PostgreSQL. Partial filename hints, unlocalized forms, Japanese generic Box names, held/unresolved research, ambiguous quantities and contradictory set associations are not guessed. Multi-series reviewed subtitles no longer inherit a false missing primary-code error from a template that will not be used.
Historical Tag and Display Label
The original convention is retained in data.naming.fr.tag; the reviewed new convention becomes the nullable TEXT column sealed_products.label, with JSON data.naming.fr.label/name compatibility aliases. Additive migration 0046_sealed_product_label.sql is prepared, not applied; it performs no backfill and removes no tag or column. The raw source name is untouched, and subsequent publication keeps the first nonempty historical tag. The API returns both fields, keeping name as a compatibility alias of the label. Search matches the source name, historical tag and new label without changing physical types.
The mobile client validates the optional fields and routes the label through existing product titles. The tag remains available for binder search rather than replacing the title or adding clutter to tiles. Older API responses and malformed optional fields fall back to the existing name. No accounts, holdings, price keys, taxonomy or source identity are changed.
The refreshed dry-run includes explicit tag/label columns. Blocked/excluded rows keep the current display label; partial new-name candidates are not published. The version-2 report binds publication to the physical label column. Its digest is fecff50aac9ea1aa72db9d9db275fc03525c7f291b0494cb074997db08e22e58. An earlier report digest does not authorize this version.
New Preview
The counts in this section describe the preceding physical-label delivery. The latest rules follow-up is recorded below.
The read-only catalogue snapshot contains the same 2,463 public reviewed items. The refreshed report has 1,069 ready, 1,338 blocked and 56 excluded, versus 971 ready, 1,436 blocked and 56 excluded previously. 100 previously blocked items are resolved; two formerly ready proposals are reblocked for safety. The Zeraora/Deoxys V Battle Decks previously matched branding from a contradictory era; their actual series/code still needs evidence. These are proposed presentation changes, not published product names. Reasons can overlap. The supplied family models, not illustrative examples, remain the source of truth. Existing verified official series abbreviations, documented branded tin collections and independently localized regional forms now fill their actual placeholders. Source-era contradictions reject false expansion matches; an era prefix never establishes a series by itself. No dictionary convention was removed.
All unresolved rows remain listed with original identity, source URLs, existing research notes and required action. In particular, 28 sleeved-booster cases need exact inner/master quantity evidence; the Battle Stadium subtitle still needs explicit confirmation. Missing commercial names, official localizations, forms, edition years and series/DP codes are not invented. Live Bulbapedia pages were under maintenance during the follow-up, so no additional facts were claimed from those unavailable pages.
API tests passed: 1,405, with 11 skipped; focused catalogue tests passed: 115, including an isolated embedded PostgreSQL (PGlite) integration for publication, idempotent additive migration, physical label priority, search by retained tag, unchanged holdings, replay and rollback. Mobile tests passed: 2,847, with 11 skipped; lint and TypeScript passed. Ingest tests passed: 554. The offline CLI integration passed with an invalid PGHOST. Native emulator E2E and native PostgreSQL 16/Docker E2E were not rerun. No production UPDATE, migration, purge, deployment, service restart or account/collection access occurred.
The complete CSV/JSON preview, isolated ambiguities, source hashes and evidence diagnostics are delivered locally for human review. Applying any proposal still requires explicit approval of the migration and final digest, a backup and stale-snapshot guards. This follow-up does not authorize application of the 1,069 proposals. API reads remain compatible before migration; mobile retains the same explicit label/tag contract, so no additional client rewrite is needed.
Rules Follow-Up: Latest Preview
The three supplied documents were reread against all 1,338 remaining blockers. Conditional subtitle families now select the documented Pokémon | [Année] fallback without demanding a fabricated block/series. A missing fallback year still blocks publication, but now has the correct reason. Repeated reasons are counted once per product.
Collector chests prefer their verified collection before an edition/year; documented spring/fall editions distinguish same-year chests. Explicitly inspected variant identity notes can corroborate the featured Pokemon even if the commercial title names an assortment; unconfirmed alternatives remain rejected. First Partner packs reuse a corroborated region and the dictionary's fixed 2021 subtitle. League/arena deck suffixes are retained only when corroborated by title and source.
Latest dry-run: 1,095 ready, 1,312 blocked, 56 excluded. 26 former blockers resolved, zero formerly ready rows reblocked. All 2,463 original names remain identical as tags; new names target the separate nullable label column. No production write, migration, VPS access, deployment or restart occurred in this pass.
Among remaining blockers, 193 lack only the documented product year. A year is missing on 844 rows overall; other overlapping gaps include distinctive names (446), featured Pokemon (375), collections (182), block (69), series code (53) and carton quantity (28). Earlier block/code counts were misleading for conditional families and must not be read as required catalogue reassignments.
Latest report digest: dad62b8462de90ef33aaee7bffee9971d4d6bdab2b3222c4fa3dd6357b09fa1b. The earlier digests are not approval of this version. CSV/JSON and per-row source/evidence/action diagnostics remain local for human approval before any database operation.
API: 1,413 passed, 11 skipped; catalogue: 123 passed including embedded PostgreSQL publication/rollback; TypeScript/check-JS passed. Eight focused regression tests were observed Red before implementation, then Green. Mobile, ingest and their wire contract are unchanged; their previous validation results remain above. Native PostgreSQL16/Docker and emulator E2E were not rerun.