Skip to content

One Piece taxonomy: production audit and migration plan ​

Status: admin-only draft taxonomy deployed; public cutover remains inactive.

Classification policy, 21 October 2026: series membership follows the physical distribution of the exact printing. Shanks fr-OP09-001_p2 belongs in ST-23, while OP09-001 remains its printed gameplay number. See the One Piece classification rules for the binding product rule and acceptance checks. The dated audits below describe their respective historical batches, not the current preview totals.

Audit: 15 October 2026, 18:45 Europe/Paris, using a PostgreSQL repeatable-read, read-only transaction. The live admin catalogue and deployed API/admin source were also inspected. The local backend checkout is older than the running services; it is not the authority for this inventory.

1. Product outcome ​

A collector opening a release sees the physical versions distributed in that release and language. Searching a complete printed number groups its editions, as Cardmarket does. The printed number, physical version, distribution, official rarity and collector treatment remain separately inspectable.

The first delivery must be an admin-only preview of the proposed taxonomy, with an old/new comparison and evidence. Public catalogue behaviour changes only after that preview passes the acceptance gates. A plan or a proposed URL is not an already deployed feature.

Preview delivered on 15 October 2026 ​

Admin implementation PR #26 adds the deployed read-only preview at Taxonomy preview. The Sanji shortcut shows four FR printings across OP09, OP11 and PRB02; Shanks shortcuts distinguish OP09 from ST23. Filters cover language, market, product, release, rarity, collector classification, treatment, channel, review and changes. The comparison view and expandable evidence preserve the existing printing IDs.

The first implementation is deliberately smaller than the full target model in section 5: six tables (batches, terms, releases, printings, distributions, assignments) in catalog_taxonomy, plus four restricted admin read views. Logical identity is stored in each print profile; provider-product binding, finish/stamp qualification, approval writes and public activation are later work. Every batch is constrained to draft; there is no active pointer or cutover API.

The deployed immutable batch onepiece-preview-20261015 contains 13,460 physical profiles, 7,875 source distribution associations and 99 source sections (37 FR, 62 JA). Its input digest starts 33743d5c4c87. FR browsing includes 2,888 prefixed records plus 40 legacy records explicitly marked FR; the latter retain uncertain distribution. EN, JA and unknown-language records stay separate. Combined FR sections remain combined; no original French OP01-OP08 release is manufactured.

Only the seven French Shanks/Sanji reference cases are individually verified. Sanji P3 has SEC + evidenced Manga; Shanks P1 has L + evidenced Alternate Art. Other treatments remain visibly unqualified and unverified channels remain UNKNOWN. Suffixes do not classify artwork. Changed reference artwork invalidates verification. Source sections originate from the stored September import. Their number, raw rarity and artwork URLs have now been revalidated against live Bandai pages as described below; collector treatment coverage remains incomplete.

Validation: 54 admin tests passed, including HTTP roles, per-card identity and production component bundling; hosted CI passed. A full PostgreSQL/ pgvector backup was restored into a container without external networking or workers. Migration and import both ran twice. All 53 public tables were equal in both directions with EXCEPT ALL after the rehearsal. Restricted-reader checks passed on actual Shanks/Sanji records and all language scopes; nine reads took about 1.1 seconds total. One Piece holding/purchase/grading/quote fixtures also pass. The production importer has zero public-table write grants, its repeat import was unchanged, anonymous preview requests return 401, and the API container was unchanged by the admin-only deployment.

Authenticated Chrome checks also passed in the deployed dark-theme admin: all four Sanji artworks loaded side by side, Manga + SEC selected one printing, Shanks OP09 selected BASE/P1 and ST23 selected P2, and the comparison showed the legacy OP09 attachment beside proposed ST23. Review filters returned 94 FR and 41 JA incomplete records with language isolation. The Sanji view was left open for the user. User acceptance and public activation are still outstanding.

Per-card identity and complete stored-source audit ​

The detail and artwork pages now show identity before the metadata/upload form on every card. One Piece administrators also see the latest draft's logical number, physical printing ID, source printing ID, distribution release IDs, provider series IDs, rarity term ID, qualified treatment IDs and evidence links. The existing catalogue attachment is separately labelled. No source distribution is inferred from that legacy attachment, a number prefix or a variant suffix. Pokemon keeps its own catalogue identifiers. No schema migration or import was needed for this UI extension; deployment replaced only the admin container.

For fr-OP09-001_p2, the printed number is OP09-001, the logical identity is onepiece:OP09-001, the proposed distribution is fr-ST-23, the Bandai series ID is 622023, and the rarity term is onepiece:rarity:L. The unchanged legacy attachment fr-OP-09 remains visible for comparison.

A fresh Chrome audit on 15 October 2026 visited all 99 registered Bandai source sections, extracted DOM-backed printing/number/raw-rarity/artwork-URL facts, and compared them with a read-only catalogue export:

CheckResult
Card identity summaries evaluated39,839 (26,379 Pokemon, 13,460 One Piece)
Missing or duplicate physical identity0
One Piece records with a draft profile13,460 / 13,460
Existing distributions compared with live source7,875 / 7,875
Printed-number, raw-rarity or artwork-URL mismatch0
Live unique source appearances7,885
Live appearances absent from the stored draft10, all JA promo

Bandai PRB02 FR repeats ST20-003_p1, so its 7,886 raw anchors represent 7,885 unique appearances. The ten JA promo additions are OP11-107_p1, OP14-004_p1, OP14-118_p2, OP15-074_p1, OP16-097_p1, OP17-044_p1, P-093_p1, P-097_p1, P-160 and ST32-001_p1. They are recorded as an ingestion follow-up, not silently added to the immutable draft or public cards.

This audit validates source facts and membership, not every artwork's collector classification, finish, stamp or fine distribution channel. It does not promote records to verified: the draft retains 7 individually verified, 7,773 candidate and 5,680 needs-review profiles. The latter include 2,428 EN and 3,117 records without established physical language. Source/variant qualification and user acceptance are still required before activation. Local evidence is saved in live-bandai-source-audit.json, detail-coverage-report.json and detail-coverage-input.jsonl; the input contains catalogue data only.

Authenticated checks on the deployed detail extension passed in the existing in-app browser session: Shanks FR artwork management, Sanji FR Manga detail, Shanks JA artwork management, the unproven legacy OP06-119 detail and Pokemon base1-4. The unknown-language case stays unassigned; SEC and Manga are separate for Sanji; Japanese release/provider IDs differ from French IDs. The Chrome session was used for the 99 public source pages; its admin login was initially pending. A subsequent authenticated Chrome pass also confirmed Shanks FR identity, all three Shanks artworks with OP09/ST23 grouping, and separate SEC/Manga axes on Sanji. The Shanks detail was left open; screenshot evidence was saved locally.

2. What production actually contains ​

ObservationMeasured result
One Piece card rows / legacy attached sets13,460 / 178
French-prefixed physical versions2,888
Japanese-prefixed physical versions4,987
Unprefixed legacy rows5,585
Unprefixed rows with explicit source language EN / FR / absent2,428 / 40 / 3,117
French versions with stored Bandai appearance evidence2,888
Japanese versions with stored Bandai appearance evidence4,987
Memberships for FR-prefixed / JA-prefixed versions0 / 0
Existing One Piece memberships, all pointing to unprefixed rows701 across 12 sets
French candidates whose distribution differs from cards.set_id862
Japanese candidates whose distribution differs from cards.set_id921
FR / JA evidence records requiring explicit release mapping541 / 704

The candidate export contains 7,875 distinct evidence rows, derived from 7,876 raw appearance entries. fr-ST20-003_p1 repeats the same PRB02 appearance twice. Duplicate evidence must not create two distribution associations.

The simple ASCII-code audit initially could not parse Japanese brackets. The candidate export additionally recognises 【...】; the 921 Japanese candidates are from that improved analysis. These are mapping candidates, not approved corrections or proof that coverage is complete.

The 541 French mapping cases comprise OP14-EB04 and OP15-EB04 combined-release labels, a generic promo section and an other-products section. The 704 Japanese cases include a family deck set, limited products and a generic promo section. Do not classify these by the number prefix or invent a specific event.

Confirmed reference cases ​

Existing ID: preserve exactlyStored attached setEvidence-based distributionRarity / collector interpretation
fr-OP09-001fr-OP-09OP09, FRL, standard
fr-OP09-001_p1fr-OP-09OP09, FRL, alternate illustration
fr-OP09-001_p2fr-OP-09ST23, FRL, starter-deck version
fr-OP06-119_p1fr-OP-06OP09, FRTR
fr-OP06-119_p2fr-OP-06OP11, FRsource SP CARD, normalised SP
fr-OP06-119_r1fr-OP-06PRB02, FRSEC, standard reprint
fr-OP06-119_p3fr-OP-06PRB02, FRSEC, Manga treatment

All seven have no current membership row. Their stored data.appearances and data.obtained_from already distinguish the distributions. Bandai's live French catalogue and Cardmarket confirm the Shanks/Sanji examples. The exact English and French suffix sequences are not interchangeable.

Current attached-row counts are OP09 248, OP11 163, PRB02 38 and ST23 6 in French. These are counts under the old model, not verified checklist totals or new acceptance denominators.

English identity warning ​

Legacy OP06-119 is tagged base, attached to PRB02, and its source image is OP06-119_p3: the Manga printing. The actual OP06 standard and alternate are stored under immutable optcg_* IDs. OP01-OP08 contain 199 non-base rows with unsuffixed source-image identifiers and 21 base rows with suffixed source images. The 220 exported records are review signals only. An image filename is not sufficient evidence to rename or merge a physical version.

3. Root cause and admin defects ​

  1. The legacy cards.set_id often represents the origin derived from the card number. Actual distribution remains nested in the source JSON.
  2. Deployed set routes select cards.set_id OR card_set_memberships. Adding a correct ST23 association alone cannot exclude that Shanks from OP09.
  3. The deployed admin query filters admin_console.catalogue.set_id directly; its view joins the legacy attached set. It does not browse distributions.
  4. The admin marks all 2,888 French-prefixed rows as missing French translation because it checks a separate card_localizations row. Their primary source already declares FR and supplies the French name. All 2,888 also have card_text while the view checks only description.
  5. Rarity aliases and variant conventions coexist. There are 23 stored rarity values including null, and base, pN, rN, vN, optcg_*, source_* and fallback_* variant families. These fields cannot be treated as one taxonomy.

Preserve the original raw values. Correct completeness indicators by recognising the physical source language and populated effect text; do not manufacture FR localisation rows for Japanese or English artwork.

4. Identity contract ​

ConceptProposed representationRule
Logical cardcard_identities.id, (tcg, official_number)Shared across languages only when the official number is verified
Printed numberofficial_number, e.g. OP06-119Full printed reference; 119 alone is insufficient
Physical versionexisting cards.id as printing_idPreserve all existing IDs and legacy base_id / variant
Physical languageprint profile languageSeparate from UI locale and available translations
Releasecatalog_releases.idActual release, language and market; legacy set is an optional mapping
Distributionprinting-to-release association plus channelMany-to-many; identical physical print can have multiple proven distributions
Taxonomynamespaced terms and assignmentsOfficial rarity and collector treatment are independent axes
Provider referencescoped source/product mappingsCardmarket numbering stays external to Snag identity

Use semantic fields for the standard/alternate/reprint distinction. A legacy variant='base' is an opaque compatibility value if evidence contradicts its label. Do not reassign the ID to different artwork to make the label look right.

Unnumbered/DON!! records require source-specific identity evidence; do not merge all records called DON!! into a logical card. Unknown language or market stays unknown until supported. A French display name never proves French printing.

5. Proposed additive schema ​

Table names are proposed. Final migration numbering must be allocated from the then-current schema; do not edit a migration that has already run.

Table / structureEssential fields and constraints
catalog_taxonomy_batchesUUID PK; scope TCG/language/market; status draft/reviewed/active/reverted; source and code revision; timestamps
card_identitiesStable text PK; TCG; nullable verified official number; optional verified origin release family; unique TCG/number where known
card_print_profilesBatch + existing card ID FK; identity FK; physical language/market; evidence status; source rarity preserved; no PK change on cards
catalog_releasesStable text PK; TCG; exact release code; language/market; product kind; translated labels; optional legacy sets.id
catalog_source_releasesProvider + language/market + external series ID PK; release FK; source URL; checked time; review status
card_distributionsBatch + card ID + release ID + channel; unique semantic association; eligibility/review status
catalog_distribution_evidenceDistribution FK; provider and source record; source URL; raw evidence/checksum; imported/verified times; repeated evidence deduplicated
catalog_taxonomy_termsNamespaced code PK, TCG, axis, translated labels, optional explicit aliases; unknown is permitted
card_taxonomy_assignmentsBatch + card ID + term FK + provenance/review status; multiple treatments allowed
catalog_provider_productsProvider product ID + language/market/finish dimensions; existing card ID FK; evidence and verification; reject ambiguous binding
Active-scope pointerOne reviewed batch per TCG/language/market; atomically switched; preview can name a draft batch

Use ON DELETE RESTRICT for new references to existing cards/releases. Initial migration creates side tables, indexes, terms and restricted views only. It does not update or delete cards, sets, localisations, holdings, prices or artwork. The baseline catalogue can therefore remain unchanged throughout admin review.

The existing card_set_memberships relation demonstrates the intended many-to-many model, but lacks release language, channel, review state and evidence versioning. Keep it for compatibility. Import its 701 rows as candidate evidence, not proof that unprefixed identities match French artwork. The v2 model replaces its authority gradually; do not maintain two independent authoritative graphs.

Classification axes ​

  • Official/source rarity: C, UC, R, SR, SEC, L, TR, SP where supported by that source and version. Preserve source label separately. SP CARD / SPカード may have explicit locale-aware aliases to SP. Compound SP R / SP SEC labels require a reviewed source mapping; do not discard one component by substring matching.
  • Illustration: standard, alternate, Manga, other verified treatments.
  • Finish/stamp: foil, textured, event stamp, serialised, etc., only on evidence.
  • Card type: Leader, Character, Event, Stage/Location, DON!!.
  • Product kind: booster release, premium booster, starter deck, combined release, promo collection, other product.
  • Distribution channel: booster contents, main deck, bonus pack, box topper, event/promo, other, unknown. Product kind does not prove channel: a deck package can contain a separate booster or bonus pack.

The admin can offer a familiar collector classification filter such as Manga Rare / Alternate Art / Treasure Rare / Special Rare / Secret Rare / Promo. It is an explicit presentation rule over the axes, with all badges retained. It must not silently replace the official rarity or introduce a price ranking. onepiece:rarity:SEC and onepiece:treatment:MANGA are term IDs, not printing IDs.

Sanji Manga example ​

json
{
  "printing_id": "fr-OP06-119_p3",
  "card_identity_id": "onepiece:OP06-119",
  "official_number": "OP06-119",
  "language": "fr",
  "legacy_variant": "p3",
  "rarity_code": "SEC",
  "treatments": ["MANGA"],
  "distributions": [{"release_id": "fr-PRB-02", "channel": "BOOSTER"}],
  "collector_label": "Manga Rare",
  "review_status": "verified"
}

This is a target contract for the verified example, not a row already written. Preserve fr-OP06-119_r1 as a distinct standard printing. Do not deduplicate by number, rarity or shared release.

6. Backfill and evidence policy ​

  1. Re-run the read-only audit against the deployment about to be changed. Record code/image revisions and candidate counts; imports are still active today.
  2. Register an explicit provider-series-to-release mapping keyed by provider, source language, market and external series ID. Read-only CSV label parsing generates candidates only. Review/revalidate official pages and print images.
  3. Build a draft batch for French print profiles and distributions. Keep all existing card and price identity fields byte-for-byte unchanged.
  4. Preserve combined labels OP14-EB04 / OP15-EB04 as actual release identities, mapped to any legacy set only through an explicit alias. Do not manufacture a French OP01-OP08 release because an old official number exists in French.
  5. Generic promo/other-product sections can support broad browse buckets. They do not prove an event, a pack or booster availability. Mark unresolved channel or fine provenance visibly; exclude it from a verified booster checklist.
  6. Map official rarity from the exact source printing. Add collector treatments from independently verified print evidence/Cardmarket bindings. P1/P2 does not automatically mean Alternate Art, Manga or any specific rarity.
  7. Review English candidates without rewriting base/vN/hash identities. Review the 40 unprefixed FR records for potential overlap with prefixed records, but perform no automatic merge in this migration.
  8. Stage Japanese separately with its own source-release mappings and regional rules. The French preview must never include JA records or EN fallback artwork as French physical versions.
  9. Make imports idempotent on stable provider record keys, not ordering. Store a proposed provenance change as a reviewed batch diff. Absence from an upstream response does not delete a printing, a holding or historical evidence.

Do not run the old ingest immediately after backfill without its compatibility test: it must not overwrite identities, approved distributions or provider bindings. Guard all jobs that can write the same catalogue, not only the main worker. A newly discovered printing receives a new immutable ID.

7. Collections and prices: preservation boundaries ​

The audit found 25 server collection rows and 25 collection events; no server collection row currently references One Piece. This is not evidence that no user owns One Piece: mobile-local favourites, binders, wishlists, scan history and older clients can retain card IDs outside that ledger.

The database has 21 foreign keys referencing cards or sets. Several price, alert, artwork and embedding relations cascade on deletion; collection references restrict deletion. The contract is stronger than row-count preservation:

  • Preserve existing cards.id, base_id, variant, local_id, set_id, source JSON, images and embeddings. All seven reference-case IDs must still resolve.
  • Preserve holding IDs, quantities, purchase values/currencies, dates, condition, language, variant, physical-variant keys, grading, favourites and event payloads.
  • Preserve all price keys, amounts, source references, freshness timestamps, estimate components, observations, refusals and watch/decision/evidence keys.
  • Never move a quote from one printing/language/finish/condition to another. Missing quotes remain missing. Taxonomy browsing must not invoke paid providers.

Price coverage observed ​

StorageTotal rowsOne Piece rows
price_history741,4310
price_observations6710
price_provider_items560
pricing_snapshots16,6880
m1_prices10,5360
m1_refusals14,5387,980
price_estimates / components115 / 670 / 0
valuation_watcheschanging live inventory1,973 via market.productId
One Piece source JSON with market_price / inventory_price5,545 / 5,545 cardspreserve raw observations
card_images / card_embeddings_lab59,852 / 39,10013,420 / 13,365

Historical provider JSON amounts are not automatically current French EUR quotes. This refactor does not create One Piece price coverage or relabel those amounts as verified French market prices.

Hidden coupling: cache and quote fingerprints ​

The deployed quote fingerprint includes legacy variant, data.pricing.cardmarket.idProduct, normal/holo/reverse flags and data.card_image. Market keys also include card ID, language, condition, variant, currency and grading dimensions. The M1 watch key embeds productId in JSON without a card FK.

Therefore changing an image URL or cleaning up a technical variant can make a stored quote disappear even if all price rows remain intact. Keep these fields and their price adapters unchanged in the taxonomy rollout. New taxonomy/provider metadata belongs in side tables. Updating actual artwork, consolidating provider bindings or migrating price keys is a separate scoped change with its own checks. Do not recompute or retimestamp prices simply to make a validation test pass.

8. Admin review experience ​

The existing gallery remains available alongside the deployed Taxonomy preview. Use the dedicated page with a pinned immutable batch:

text
/admin/pages/TaxonomyPreview?batch=onepiece-preview-20261015&language=fr&releaseId=fr-OP-09

The screen must offer:

  1. Filters: TCG, physical language, market, product kind, actual release, collector classification, official rarity, treatment and review status.
  2. Tiles/table rows showing full number, name, physical language, actual release, official rarity, collector badges, artwork and the existing printing ID.
  3. Clicking OP06-119 opens all editions, grouped by release and language, with distinct images and versions. P1/R1 and provider V.1/V.2 appear as source references, never as globally interchangeable identities.
  4. Separate Origin and Distributed in fields. Multiple distributions are visible; booster eligibility has its own explicit indicator.
  5. Old/new comparison showing added/excluded release associations, why, source URL, verification state and batch revision. No silent automatic approval.
  6. A review queue for unknown language, unknown provenance/channel, ambiguous artwork, compounds, suspected duplicates and unmapped provider versions.
  7. Counts separately labelled as distinct logical cards, physical versions and distribution associations. No double-counting a shared physical print in a global collection total; release completion can legitimately reuse it.
  8. Correct source-language completeness and effect text. Keep image language separate from text language, especially for mixed legacy records.

The release dropdown should display OP09 - Les Nouveaux Empereurs - FR, ST23 - Rouge Shanks - FR, etc. Suppress duplicate aliases in normal browse; keep them inspectable in diagnostics. Technical legacy sets such as fr-OP-06 must not be presented as released French booster editions without evidence.

Admin permissions remain enforced through restricted admin_console views and existing staff roles. New read views must not expose collections, pricing credentials, customer data or private media. Review/activation is an explicit audited capability; marketing access does not imply activation authority.

9. API and query transition ​

Use a shared domain/query service for admin preview and the eventual public API. Do not implement separate provenance rules in SQL views, mobile screens and importers. Proposed v2 resources:

  • Release catalogue scoped by TCG, language and market.
  • Release printings filtered by explicit distribution channel.
  • Printing details preserving the current cards.id.
  • Logical-card details listing editions and physical versions.

An active v2 release query uses verified distributions only. It must not OR them with cards.set_id or use an official-number prefix as fallback. Unknown records remain findable in search/review and retain working legacy detail URLs. Legacy set routes remain unchanged until their scope has a reviewed v2 batch; compatibility adapters must be explicitly tested.

Maintain old response fields where required and add printing_id, official_number, origin_release, distributions, rarity_code, treatments and review status through a versioned/additive contract. Do not rename scan candidate fields or change scanner IDs, embeddings or decision policy. Add indexes for (batch_id, release_id, channel, card_id) and logical-card lookup; paginate lists and compute counts from the same predicate as their items.

10. Delivery sequence ​

Split implementation into reviewable PRs of at most ten changed files each. Each implementation PR follows the backend/admin TDD and delivery rules; the documentation and read-only SQL audit are not production behaviour changes.

StepDeliverableGate
AReviewed schema, source-release mapping and taxonomy terms; additive migration tested on restored cloneNo old-row mutation; permissions/idempotence checks pass
BRepeatable importer/backfill into a draft batch plus candidate/rejection reportsExact printing matches; uncertain records queued; second run produces no unintended diff
CShared v2 read model and restricted admin previewCase matrix, pagination, counts and roles pass; old gallery remains available
DHuman review inside the admin preview, including source artwork and edge casesRecorded batch revision and explicit acceptance; no catalogue writes from browsing
EControlled FR activation through an atomic scope pointer; API/mobile compatibility rolloutBackup/restore rehearsal, equality checks, quote/collection/scan checks and rollback drill pass
FIndependently reviewed EN and JA coverage; later retirement of legacy membership authorityNo cross-language equivalence inferred from suffixes; no destructive cleanup bundled

Do not deploy all steps as one unreviewable change. Reserve an implementation branch from current staging; the audited local backend has unrelated work. This document does not authorise an automatic apply/restart on its own.

11. Backup, rehearsal and rollout ​

  1. Resolve the actual target, running code/image revisions and current schema from the protected operator inventory. Keep host addresses, credentials and backup paths out of public documentation and exported reports.
  2. Take a protected, consistent full PostgreSQL custom-format dump before the apply, plus the relevant schema/view definitions and current rollout state. Retain catalogue media/provider bindings as appropriate. The dump contains customer/authentication data and must not be attached to this plan.
  3. Restore it into an isolated database without active workers, public writes or provider calls. A successful pg_restore --list alone is not a rehearsal.
  4. Capture before-tables/identity projections on the clone, run the candidate additive migration/backfill, then compare both directions with EXCEPT ALL for protected tables. Compare exact price identity/fingerprint projections as well. Counts alone are insufficient.
  5. Run the migration twice. Exercise a fixture with a real One Piece holding, a graded holding, a manual purchase value, an existing quote/provider mapping, a missing price, an old app ID, mixed languages and multiple distributions. Production currently has no One Piece server holding, so fixtures are required.
  6. Preview the restored draft in the admin UI; rehearse activation and reversal.
  7. Apply the reviewed additive migration on production with ON_ERROR_STOP, bounded lock/statement timeouts and one migration lock. Avoid blocking table rewrites; create large indexes concurrently in a separate, compatible step where necessary. Existing-table index validation remains separate from DDL that requires a transaction.
  8. Backfill in bounded transactions under a batch lock. Coordinate relevant catalogue writers; do not pause user collections or pricing merely because new side tables are being populated. Publish no draft as active.
  9. Approve the exact draft revision in admin. Activate only the reviewed FR scope. Validate item membership, collection retrieval, unchanged quote lookup, missing-price behaviour, scan resolution, roles and measured request latency.

Live users and background pricing can legitimately add/update rows between production observations. Exact before/after equality belongs to a quiescent restored clone or a controlled migration boundary, not unrelated live snapshots. The migration account/job must have no write path to protected price/holding tables; production verification checks the changes attributable to the rollout.

12. Acceptance matrix ​

ScenarioRequired result
OP09 FR / ShanksExisting BASE and P1 included; P2 excluded from booster contents
ST23 FR / ShanksExisting P2 included; printed number stays OP09-001
OP09 FR / SanjiExisting fr-OP06-119_p1 included; TR visible
OP11 FR / SanjiExisting P2 included; SP alias and raw source label inspectable
PRB02 FR / SanjiExisting R1 and P3 included as distinct printings; P3 has SEC + Manga
All editionsSearch OP06-119 groups releases/languages without merging physical versions
English originalStandard OP06 artwork represented correctly despite legacy hash ID; legacy Manga base ID still resolves to its original Manga artwork
Same suffix, different languageSeparate print profiles; no FR/EN/JA merger on suffix
No original French OP01-OP08Old-number French reprints appear in actual releases; no fictitious original booster is created
Combined releaseOP14-EB04 and OP15-EB04 represented by reviewed explicit mappings
Promo/bonusPromo number prefix never implies booster availability; bonus pack separated from main-deck channel
Identical printing in two productsOne physical-version record, two proven distributions
Duplicate appearanceRepeated source evidence creates one semantic association
Ambiguous provenanceVisible review state; excluded from verified booster checklist; still searchable
Admin metadataNative FR names/effect text no longer falsely shown as missing; image language still explicit
Counts/paginationDistinct printed versions; identical count/list predicates; stable tie-breaking; no alias duplication
HoldingsExact before/after rows and events on restored clone; mobile-local old IDs continue resolving
Price rows and keysExact before/after rows, keys and fingerprints; quote amount/source/time unchanged
Missing pricesRemain null/unavailable; no zero, invented quote or automatic provider call
ScopePokemon and unactivated EN/JA queries/collections/prices unchanged
Roles/mediaExisting staff boundaries, private media restrictions and public catalogue-media policy unchanged
Idempotence/concurrencySame input twice is stable; concurrent batches cannot silently replace active state
RollbackOld read path resumes by pointer/feature reversal; no deleted rows or restored-over user writes

13. Rollback and later cleanup ​

Keep the prior application image and active-batch pointer. Revert the read-path flag/pointer to the previous state, leaving harmless additive tables installed. No down migration, card deletion or wholesale database restore is part of the normal rollback. A full restore could erase collections created after the backup and requires a separate recovery procedure.

Do not flush all Redis keys, overwrite historic prices, regenerate embeddings, rename old IDs, merge duplicates or delete synthetic legacy sets in this rollout. Those actions have different invariants and must be proposed separately after their consumers are accounted for.

14. Evidence and verification status ​

Completed: read-only live schema/foreign-key/count audit; source-evidence and EN review exports; deployed API/admin/pricing-contract inspection; authenticated legacy gallery inspection; official and marketplace reference-case comparison; additive draft schema/import/admin implementation and deployment; full protected backup/restore rehearsal; exact preservation checks; repeat migration/import; 54 tests and hosted CI; real-data case/language/permission checks; identity coverage across all 39,839 cards and all 7,875 stored FR/JA distributions revalidated against 99 live Bandai source pages.

Not completed: provenance recovery for EN/unknown legacy records, exhaustive treatment and fine distribution qualification, ingestion of ten new JA promo appearances, user review of the draft, active-scope cutover or price-coverage expansion. The complete future cutover matrix remains a gate; the deployed feature covers preview only.

The local evidence package contains audit.sql, audit.jsonl, appearance-candidates.sql / CSV, english-review-candidates.sql / CSV and the inspected deployed code snapshots. It contains no credentials, customer rows, private scans or database dump. Its export queries explicitly run READ ONLY.

Reference pages:

See also admin data, admin operations and catalogue updates.

15. Bulk reconciliation follow-up — 16 October 2026 ​

Admin PR #27 extends the preview to every stored One Piece record through one bulk reconciliation pass. It does not create public cards or merge historical IDs. Migration 012 adds draft-only source identity/provenance fields, classification terms and a restricted view. The new batch is onepiece-reconciled-20261016; the first batch remains selectable.

Sources and matching rules ​

The evidence manifest combines 99 previously audited FR/JA Bandai sections, 60 official EN Bandai sections/series IDs, and four complete OPTCG catalogue exports: allSetCards, allSTCards, allPromos and allDonCards. The OPTCG homepage explicitly documents its English release scope. The documentation's allPromoCards endpoint returns 404; the recorded source endpoint allPromos supplies the current complete promotional metadata. No price fields are retained in the manifest or imported into the draft.

The resolver builds in-memory source indexes and processes all 13,460 stored records together (approximately 0.3 seconds for the pure matching pass). Exact official artwork/number matches establish Bandai provenance. Provider artwork and number, or exact source identity/name/number tuples, establish OPTCG proposals. The 40 older French records use their official image and explicit pack_id. The 3,117 previous unknown-language records all match the live English export. An explicitly conflicting physical language is never overwritten.

When a provider changes a printing ID/image, a unique full product name, number and source product may propose a replacement source binding. Its evidence records that weaker matching method and its review warning persists. Existing artwork, physical IDs, base IDs, variants and provider price identity remain unchanged.

Promotional set_id values often describe a number family, so they never imply booster membership. Explicit event/product names generate stable provider-scoped draft grouping keys, not invented official Bandai or Cardmarket product IDs. DON records retain distinct source printings without fabricated collector numbers. PRB numbers are recognized. Combined EN OP14/OP15 aliases require both the explicit source code and a matching product title.

Coverage and qualification ​

ObservationNew draft
Stored One Piece IDs / proposed distributions13,460 / 13,460
Records without proposed distribution0
FR / JA / EN records2,928 / 4,987 / 5,545
Exact Bandai provenance matches7,915
OPTCG provider proposals, including metadata-only matches5,545
Release/grouping records346
Distinct cards with a sourced collector treatment1,219
Treatment assignments (multiple axes can apply)1,240
Provenance/artwork review cases156

Treatment assignments comprise 49 Manga, 511 Alternate Art, 182 Parallel, 74 Full Art, 67 Gold, 3 Silver, 90 Pirate Foil, 72 Jolly Roger Foil, 22 Textured Foil, 12 Wanted Poster and 158 special-print proposals. These labels come only from explicit source tokens or matching official composite rarity facts; they are not inferred from p1/p2 or copied between languages. The source labels remain visible and provider proposals are not presented as Cardmarket verification.

The 156 unique review cases include 142 missing source artworks, 14 changed source artworks/IDs, 3 legacy artwork warnings and one unqualified rarity; issue counts overlap. They remain visible without replacing images. Separately, 12,241 records have no qualified collector treatment. This does not prove that they are standard artwork. The treatment-qualification filter exposes them for further review; complete treatment parity across FR/JA/EN is not claimed.

Detail pages show the actual source printing alongside the immutable Snag ID and legacy technical variant. For example, the historical OP06-119 stays unchanged while the draft identifies its actual OPTCG printing OP06-119_p3, English scope, PRB02 distribution and explicit Manga label. The preview adds whole-batch coverage, an all-OP shortcut, provenance filters and classified/unqualified treatment filters.

The requested scope is identifier taxonomy and discoverability, including rarity and collector classification for filtering. The official rarity selector is in the primary filter row. Searching accepts a printed number, immutable Snag ID, logical identity, actual source printing ID, internal release ID or source series ID. Each proposed distribution exposes a derived onepiece:<release-id>:<source-printing-id> lookup key. For the Shanks example, onepiece:fr-ST-23:OP09-001_p2, fr-ST-23 and 622023 find the same proposal. This key is a draft search alias; it does not rename a card or replace a collection or price key. SEC remains independently filterable from Manga and SP; the combined SP classification also includes explicitly evidenced special-print treatments.

Preservation and rollout gates ​

The full production database was backed up and restored to a network-isolated PostgreSQL/pgvector clone. Migration 012 and the evidence import were repeated; the second import was unchanged. All 53 public tables remain exactly equal under bidirectional EXCEPT ALL, and the original draft's pre-existing fields are unchanged. The final import/schema files are hash-matched to the rehearsed source.

All 65 local tests pass, including production bundling, roles, conflicting evidence, promo-family separation, source ID changes, immutable batches and protected collection/price fixtures. Restricted-reader checks on real restored data cover old/new language counts, the French legacy bindings, English Manga, promotional groupings, source printing IDs, search aliases, rarity filters and denied collection/price access. Fourteen requests took about 9 seconds on the isolated clone. Only the admin container was replaced; there is no public cutover or price/holding write path.

Deployed preview ​

Admin image taxonomy-a7eaa68 exposes batch onepiece-reconciled-20261016. The production import matches the rehearsed digest d684e16ceabd272feff5a02342bbe97e9374d2b61249fcb3575f23eef91dfa1c; its repeat import is unchanged. All 13,460 records have source printing IDs and proposed distributions. 13,459 have normalized rarity IDs. The remaining fr-ST13-001_p1 has no rarity in either the stored data or matched official entry, so no value is guessed. The old draft is unchanged, the API container was not restarted, the importer has no public-table writes, and admin health passes.

Source references:

16. Complete read-only verification and unique lookup keys — 18 October 2026 ​

The authenticated Chrome session was used to finish the preview checks. A fresh read-only audit covers every one of the 13,460 stored One Piece IDs: no missing draft profiles, source IDs, distributions or evidence references, and no number or language mismatch between a profile and its recorded source association. Replaying the frozen source manifest against current catalogue metadata exactly reproduces batch onepiece-reconciled-20261016 and its existing digest.

Rarity validation joins the exact source artwork, name, number and printing ID. Provider IDs alone are insufficient: OPTCG reuses some IDs for both R and TR artwork. With the complete match tuple, all qualified rarities agree with the recorded source. The 13,459 qualified rarities comprise 4,110 C, 2,110 UC, 2,793 R, 1,926 SR, 392 SEC, 858 L, 851 P, 212 SP, 20 TR and 187 DON. The Bandai entry for fr-ST13-001_p1 was reopened on 18 October and still displays a blank rarity between its collector number and LEADER category; its rarity remains unknown.

The audit found 77 shared source-key groups covering 154 stored versions. For example, OP13-084 and OP13-084_v3 share a provider ID but represent Parallel and standard artwork. The admin reader now formats a canonical preview key as onepiece:printing:<release-id>:<immutable-card-id>. These 13,460 keys have no collisions. Complete canonical keys use exact matching, including when one card ID prefixes another. Historical provider-based lookup aliases remain searchable and may return multiple variants. Both gallery and detail responses use the same formatter; physical IDs and provider IDs retain their original values.

This correction requires no migration or import and changes no stored batch. It replaces only the admin image. All 66 local tests and CI pass, including a regression fixture with shared provider IDs and independently retained SEC/TR rarities. A restricted-reader check of every deployed profile confirms unique keys, legacy searches, detail lookup consistency, rarity combinations and zero generic public-table write privileges. Admin health passes and the API container is unchanged. The 156 provenance/artwork review cases and 12,241 records without qualified collector treatments remain visible; exhaustive treatment verification against Cardmarket is not claimed.

Final Chrome checks confirm Shanks fr-OP09-001_p2 keeps printed number OP09-001, source printing OP09-001_p2, proposed series fr-ST-23 / Bandai 622023, rarity L and canonical key onepiece:printing:fr-ST-23:fr-OP09-001_p2. Sanji's four FR rows retain distinct TR, SP, SEC/Manga and SEC reprint classifications. The combined SEC/Manga filter returns one FR version; searches by source series 622023 and the canonical OP13-084_v3 key select the intended versions. Source-only ID OP06-119_p3 finds the older English OP06-119 record without renaming it. The general preview and Shanks detail remain open for human double-checking. Admin image taxonomy-bbd25d7 passed health; no migration or import ran and both existing batch rows/digests and the API container remained unchanged.

17. Supplemental review evidence — uncommitted work, 18 October 2026 ​

The user explicitly requested no further commits or pushes. This follow-up remains uncommitted. All 156 prior review cases were checked: 155 provider identities still match the current complete OPTCG exports, and 48 have a unique exact counterpart in Bandai's Other Product/Promotion lists when matching product, collector number, card name and rarity. Three other product matches are ambiguous and are not used as corroboration. Fourteen changed-image pairs were checked; their bytes differ, so no changed-artwork warning is removed merely because both URLs respond.

The missing rarity on fr-ST13-001_p1 is resolved by reading the printed L badge directly beside ST13-001 on the exact official French image. Bandai's text field remains blank and is preserved. This is evidence from the artwork, not an inference from the LEADER category or a different-language printing.

The supplemental operator manifest contains 204 bound reviews over those 156 cards: 155 current provider checks, 48 official product corroborations and one printed-rarity reading. The new immutable draft is onepiece-review-evidence-20261018; every card has a rarity term. Its 155 remaining review cases retain their missing/changed-artwork warnings. No image, historical ID, collection, quote binding or price is replaced, and public activation stays off.

Validation: 71 local tests, including stale-proof rejection, blank raw rarity preservation, immutable prior batches, the three proof filters and issue filters. The full database is backed up and the import is rehearsed in a network-isolated clone with exact bidirectional comparisons of public tables and prior drafts.

For review in the admin, select the new batch and use:

  • French, search fr-ST13-001_p1: proposed L with a direct official-artwork proof.
  • English, Contrôle complémentaire → Collection confirmée chez Bandai: 48 cases.
  • English, Contrôle complémentaire → Identifiants fournisseur revérifiés: 155 cases.
  • À compléter · Toutes langues, then Motif à revoir: the remaining artwork warnings, without relabeling missing images as confirmed artwork.

Source snapshots: the four public OPTCG metadata exports and the official Bandai English Other Product (569801) and Promotion (569901) lists. No provider price fields are included in the evidence.

The uncommitted preview is deployed as taxonomy-review-wip-20261018, with digest 19dea9f93683a52857350c2d73603162a71c694e50015fc11fb7e8e0aa1e0a6c. The repeated import is unchanged. All 54 public tables and both previous drafts are exactly preserved in the restored-clone rehearsal. The restricted production reader confirms 155 current-provider checks, 48 official-product corroborations, one printed-rarity proof, 142 missing-artwork flags and 14 changed-artwork flags (one record has both). Authenticated Chrome displays Sabo's L proof and the 48-card official-product filter. No commit or push was performed for this follow-up.

18. Visual follow-up — uncommitted work, 19 October 2026 ​

All 155 outstanding cases were reconciled again against the four complete current OPTCG metadata exports and the official English product/promotion lists. Of these, 141 still have no current provider image. The 13 non-null historical changed-image URLs return the same SVG fallback, mislabeled image/jpeg with HTTP 200; successful HTTP responses in the previous audit did not establish usable artwork.

Ten Best Selection Vol.5 current provider illustrations were compared with the official Bandai illustrations and the exact product/number/rarity records. The images agree on the illustration and printed identity. Texture/foil finish is not certified. Black Maria OP08-074 was separately corroborated against Bandai's Illustration Box Vol.2 product page and illustration. This page supplies product identifier ib02, not a native card-list printing suffix; none is invented.

The new manifest contains 155 fresh provider reviews, 49 official product reviews, 11 visual comparisons and the preserved Sabo printed-rarity review. Visual reviews resolve only changed-artwork ambiguity. Black Maria retains its missing historical catalogue-image warning. The new draft has 145 remaining review cases, including 142 missing catalogue images and three unresolved changed DON illustrations. Three ambiguous official product matches remain unassigned. The 38 missing-image cases with exact official list metadata are not presented as visually verified.

Use Contrôle complémentaire → Visuel actuel rapproché de Bandai to inspect the 11 comparisons and their official/provider links. Use À compléter · Toutes langues for the 145 remaining cases. The case disposition artifact documents all 155 outcomes. No source image, historical ID, collection, quote or price changes; no commit, staging, push or public cutover is authorized for this follow-up.

Sources: Bandai Other Product cards, Promotion cards, Best Selection Vol.5 product, and Illustration Box Vol.2.

Deployment: taxonomy-review-wip-20261019, batch onepiece-review-evidence-20261019, digest 0431960c56b5500bbf0833bbe52de9eb388745a6b993d2428b08309d59791886. All 75 local tests pass, including a second run against the integrated deployment source. During the rehearsal, a concurrent documentation deployment was detected and the guard stopped before changes. Its five changed/new runtime files were preserved byte-for-byte in the deployment source, along with its Compose override. The post-deployment check confirms identical environment and mounts, an unchanged API container, healthy admin, and zero public write privileges for the importer.

The full database backup was restored in an isolated disposable clone. All 54 public tables and all three previous drafts compare exactly with bidirectional EXCEPT ALL; repeated import is unchanged. Restricted clone and production reader checks pass: 13,460 cards and rarities, 155 current-provider checks, 49 official products, 11 visual reviews, one printed-rarity reading, 145 review cases, 142 missing-artwork warnings and three changed-artwork warnings. Authenticated Chrome shows the new filter, direct proof links and retained IDs on Merry Go's asset detail, plus product source ib02 on Black Maria. No activation or image upload ran.

19. Stored-image swarm follow-up — uncommitted work, 19 October 2026 ​

The 145 outstanding cases were researched in parallel against Bandai and Cardmarket. A critical distinction corrects the earlier wording: a null provider artwork URL does not establish a missing catalogue image. Of these cases, 117 already have an English image stored in Snag; 28 genuinely lack a stored image. The actual 117 stored images were inspected. Image-distance rankings were used only to find candidate references, never to establish edition identity.

The new immutable batch is onepiece-swarm-review-20261019, with digest ccfc203b6f962ef50507845fa72759106c4587fe109608e291b30711c70465a8. It adds 93 bound stored-image comparisons: 86 use a primary Bandai reference and seven a primary Cardmarket reference. Seven Judge cards additionally retain an individually compared Cardmarket numeric ID beside the primary Bandai pack proof. Bandai's exact event prize lists establish six explicitly named Judge volumes; the aggregate Cardmarket Judge Promos category is not treated as a pack alias.

85 review alerts are resolved. The remaining 60 comprise 52 unresolved artwork matches, six unestablished distributions and two actual source-label conflicts. The 52 include 28 cards without a stored image and 24 whose exact external edition reference still needs corroboration. Cardmarket security interstitials were not bypassed. The issuer-only PSA Shanks observation is retained in the research artifact rather than being misrepresented as a Bandai/Cardmarket visual proof.

Eight draft rarity terms are corrected from the physically read badge while raw provider PR remains intact: Zoro OP01-001 → L, Sanji OP01-013 → R, Brook OP01-022 → UC, Okiku OP01-035 → R, Perona OP06-093 → SR, Uta P-011 → L, Nami ST01-007 → C and Franky ST01-010 → C. Existing card IDs, source IDs, images and public rarities are preserved. No quote binding, price or collection changes are performed.

The two conflicts remain deliberately actionable. Yamato ST13-016 matches Illustration Box Vol.2 while its supplier label says Vol.1. The Nami labeled Tournament Pack Vol.3 Winner has the gold-background, unstamped Participation image; Bandai's separate Winner image is red full-art with a WINNER stamp. Neither conflict is silently relabeled or treated as an equivalent price product.

The importer binds the full existing image metadata row, byte count and SHA-256, then verifies the actual file through an explicitly mounted read-only catalogue root. Stale metadata, changed bytes, missing files or foreign references abort before insertion. Official product sheets and event prize images require exact observed registry entries with per-card locators. Positions in prize galleries are not collector numbers or native Bandai printing IDs. No image is replaced.

Use Contrôle complémentaire → Visuel enregistré contrôlé · Bandai / Cardmarket for the 93 comparisons. Expand Comparer et voir les preuves for actual product, native reference IDs, rarity readings, visual observations and direct links. Search 873735 for the Robin Gold DON Cardmarket reference, 773858 for the Pacifista Judge comparison, or cardcollection_leader for the individually located Ace/Luffy cards on Bandai's composite. Use À compléter · Toutes langues for the 60 remaining cases. Explicit language= now survives refresh/shared links, so this all-languages selection does not silently revert to French.

Validation: all 86 tests pass against the final integrated runtime source. Its isolated HTTP fixture follows the already deployed rarity-bookmark documentation route. The rehearsal restores a fresh protected full database backup, imports twice and compares all 54 public tables and all four previous drafts exactly in both directions with EXCEPT ALL. The second import is unchanged. Concurrent documentation, account-view and spacing changes are preserved in the packaged source and existing Compose override chain. No commit, staging or push is made.

Primary source examples: Bandai's Tournament Pack Vol.3 participation/winner prizes, Championship 2023 Celebration Pack, Illustration Box Vol.2, Judge Pack Vol.3 and Cardmarket Robin Gold DON product.

The uncommitted admin image taxonomy-swarm-wip-20261019 is deployed with the same rehearsed digest. Restricted production-reader checks pass for all 93 proof filters, all warning counts, eight rarity corrections, native ID searches and the unchanged older draft. Health is good; the API container, admin environment and mounts are unchanged, and the importer has zero public write privileges. Chrome confirms the 93-card filter and 60-case coverage, Uta's proposed L with raw PR retained, and Pacifista via Cardmarket ID 773858 with the exact Bandai Judge Pack Vol.3 source beside it. The existing image files were only read and hashed.

20. Whole-catalogue audit and PR publication — 19 October 2026 ​

Following explicit authorization to commit and push, the reviewed implementation and evidence are published in admin PR #35 and this guide for documentation PR #251. The prior sections record the earlier uncommitted deployment state; this update does not authorize a public catalogue cutover.

The restricted reader reconstructs all 13,460 current OP printings from the exact operator manifest and reproduces the deployed immutable digest. Every printing has a distribution, rarity term and unique canonical lookup key. All 13,461 primary source-proof records are present in the source snapshots; the nine rarity differences are explained by the earlier Sabo badge reading and the eight newer printed-badge corrections. There are no unexplained source-rarity differences. All 93 reviewed stored-image files still match their bound metadata and SHA-256.

77 provider aliases are reused by different printings; those aliases are not the unique physical lookup keys. 1,737 logical-card/language/market groups appear in multiple recorded releases. These are useful edition groupings, without a claim about chronological order. 187 DON printings intentionally have no collector number. The 60 open review cases remain visible.

First-release chronology and explicit reprint relationships are not stored or verified by the current schema. A printed OP prefix, a source p/V suffix, a legacy set date or an earlier Japanese release cannot establish the first physical French or English edition. TR/SEC/SR rarity terms and Manga/Alternate Art/Gold treatments are separate axes. A physical printing can be associated with multiple products without receiving a new card ID for each product. Collections and pricing retain their existing immutable card IDs.

The full public-fact manifest, 93 human-readable catalogue reviews, 60 pending cases, whole-catalogue audit and concise preservation proof are versioned in the admin repository under evidence/onepiece-20261019/. No image binaries, private database dumps, customer data, prices or credentials are committed. The verifier can be rerun with the restricted reader and a read-only image mount; it performs no import, activation or writes.

The deployed preview is available at all OP identities. For an immediate comparison, use Shanks across French editions and expand Comparer et voir les preuves. Open these links in the Chrome session authenticated to the admin; the in-app browser has an independent session.