Skip to content

Project checkpoint and component links, 6 November 2026 ​

This documents beta-2026-11-06, before the proposed invitation-free V1. It is a source recovery checkpoint, not a public-beta announcement, production certification or database backup. Detailed French map.

Immutable repository inventory ​

Fourteen populated repositories have the same tag and prerelease. agent-sandbox is empty. main remains the target for snag-data and snag-gitops. The shared manifest records exact commits. This page is subsequent to the snapshot; never move the tag to include it.

RepositoryRoleBranchCommit
snag-dataCollect, normalize, match, publish catalogue/pricesmaind16bfe972818e9f110fca7cb43bdc5470c88a0a2
agent-workflowsShared engineering workflowsstagingb3b4903a8996a8ecb1fc100ad1dcde55aa06abcd
designDesign handoff, themes, Penpotstagingcb7bf188fa2dd5ca1e6e797a9478705fbb218953
admin-frontendStaff console, authorized SQL, catalogue/mediastaging1f8803de98b13df94b2b7dad160205fd2ad9c9a2
snag-gitopsKubernetes, image overlays, ArgoCDmain3692d654a49b06ef5ca0573fcec4d524f084d0de
tcg-collector-backendAPI, identity, catalogue, pricing, collection, scanstagingea4580781516cc7c370ac94aefef7d9b71f53d9b
documentationVitePress guides and change trackingstaging5bc276b82d77c14450c4628168c5e235135201ff
poc-tcg-collectorMobile React Native / Expostaging42189afcba12923df4e0d1966f0827dfbb0de717
tg-bridge-tsTypeScript bridge toolingstagingcbcc46487f88909553f7458aa16823a09ac92a33
tg-bridge-pyPython bridge toolingstaging694b813b73b7b87cb338b11ae52ab5ceed315010
snag-landingPublic landing sitestagingfbf8247fe0a765cf445a019334be9e280af953d7
testTest repository; runtime not auditedstaging17c6f0271026bfeed28875cc463345f03c2f42fd
routinesAuxiliary automations; runtime not auditedstaginge5eb124c2a8877e95056038ff8d4f8ec19fa62de
tg-bridge-goGo bridge toolingstaging11a1bbe7c04e208553725bddfd0fccde2a92e8ce

Connections and responsibilities ​

ComponentConnections and boundary
React Native / Expo mobileShared HTTPS /api; UI, navigation, caches and secure session transport
Fastify APIPostgreSQL identity/catalogue/collection, Redis prices, recognition services, validated catalogue media
OAuthBackend announces providers, starts/exchanges/verifies flows; HTTPS provider callback differs from app return link
AdminStaff authorization; controlled PostgreSQL functions, S3, scan test service, public reference API, GitHub and monitoring
snag-dataSources -> bronze/raw -> silver -> gold -> explicit database/media publication
GitOpsGitHub tests/build -> registry image -> overlay commit -> ArgoCD
Docker productionStill observed separately; full Kubernetes migration is not established
EAS / AppleNative builds and store distribution, not GitHub release creation
DocumentationVitePress and historical tracking; dated guides are not live-state proof

The backend owns business rules. Client caches and interface state remain necessary; this policy does not claim every legacy client rule was already migrated.

Identity and admission ​

GET /api/auth/beta/status controls entry. POST /api/auth/beta/validate neither reserves nor consumes a code. Authentication and permanent account admission are separate. Beta signup follows invitation then email/Apple; direct beta email signup avoids the initial mailbox code, not recovery proofs. Returning admitted accounts regain access after reinstall by signing in again.

isBeta grants unlimited scans, but team unlimited rights need not imply isBeta. Distribution email metadata must not be confused with Apple identity binding. A 4 November observation found recipient columns missing from the live invitation table; that schema was not reaudited today.

OAuth secrets stay server-side; Apple/Google accounts do not automatically acquire a Snag password. Classic email login remains. Provider callbacks are /auth/oauth/google/callback (GET) and /auth/oauth/apple/callback (POST), separately routed from ordinary /api calls. Configured origins and exact provider return URIs belong in the protected operator inventory.

Sources: backend gate, mobile gate, invitation operations, OAuth.

Scan, collection and catalogue ​

The pinned mobile URL table contains /scan-lab (default), /scan, /scan-frame and /scan-sealed-lab. Historical compat/tormknd modes are not resolvable for normal captures. Route availability does not imply every mode is shown in every build.

Photo capture/preparation precedes backend identification. Returned candidates supply identity and metadata; collection writes require authentication. Bulk is pending work until confirmed. Multiple purchases of one product may have different costs; visual grouping must preserve those acquisitions. Purchase cost and market value are distinct.

Stable catalogue IDs connect scan, prices, collection and assets. Printed card numbers alone cannot identify One Piece variants. Sealed historical names/tags and source paths are preserved alongside backend labels/subtitles based on family templates and exceptions; reserved ambiguous Mini Tins are not silently renamed.

Account deletion is distinct from cache clearing or software rollback.

Media and valuation ​

S3/bronze upload, silver/gold processing, catalogue association and public serving are separate steps. Each needs verification. The One Piece Promos block uses fruit P; its series uses the PROMOS banner. They have different sizing/theme assets. A tagged correction does not prove every iPhone runs that build.

Redis caching remains. Client caches are server-data copies, not pricing authority. Image/price loading states differ; missing prices are not zero and pending requests are not confirmed unavailable quotes. Scroll retention does not promise unlimited memory or a fully offline catalogue. Portfolio 24h variation requires historical coverage across relevant positions; source code alone does not establish that coverage.

Sources: media route, price cache, data inventory.

Admin and publishing ​

The console is not merely a client of all private mobile API routes. Several features use authorized SQL directly; others use S3, the scan test service or public reference API. Staff permissions remain separate.

The data pipeline preserves provenance and expert decisions while collecting, normalizing, matching and publishing. Data PR #19 adds card text; #20 adds experimental enhancement benchmarking. Merging these did not execute gold publication or authorize replacement of catalogue artwork.

Admin data · Admin security · Data pipeline.

CI and distribution ​

Merged PRs: admin #124, GitOps #21, data #19/#20, design #3, agent-workflows #1. The data documentation conflict retained both sections. Combined data checks passed Ruff and 919 tests, 7 skipped, repeated after resolution. Admin CI tests passed. Design Python/JavaScript syntax passed without executing Penpot.

Image builds were blocked by missing rootlesskit on the runner. Actual workflow files at the tag override historical CI prose: backend/admin release triggers no longer include pushes to main; staging remains. Data builds from main and targets its staging overlay. Merges may trigger existing automation; no manual deployment was performed for the tags.

EAS profiles cover simulator, development, preview, production and apk. A GitHub release neither builds EAS nor submits/installs TestFlight. CI design.

Read-only runtime observations ​

On 6 November:

  • Anonymous /api/auth/beta/status: 200, required=true, admitted=false.
  • /api/auth/oauth/providers: 200, apple only; not a successful end-to-end login test.
  • Anonymous /api/health: 401; not proof of an API outage.
  • Docker API image skns-api:beta-0542cea running; admin snag-catalogue-admin:open-beta-0084aff healthy.
  • PostgreSQL, Redis, vision and three embedding services present with healthy reported checks.
  • Nginx, Caddy, Grafana, Loki and Alloy present.
  • Private admin gateway unhealthy; no restart or deeper diagnosis in this task.
  • Separate development services must not be mistaken for production.

Tagged source and deployed images differ. Image names do not establish immutable digests. Kubernetes runtime, backups, digests and current TestFlight versions were not audited. No secrets, personal data or private deployment paths are included.

Recovery ​

Choose whether restoring tagged source or a previously deployed image. Preserve local work and back up affected data/configuration before risky operations.

git fetch origin tag beta-2026-11-06
git switch --detach beta-2026-11-06

For corrective development:

git switch -c restore/beta-2026-11-06 beta-2026-11-06

Never move published tags or force-reset shared branches. Verify schema compatibility, applied migrations, external assets and API/mobile contracts. Rebuild/deploy through the approved process and retain the old image. Test email/Apple login, refresh, catalogue, images, prices, collection and gate status with a dedicated test account. Record SHA, digest, mobile build, date and checks.

Git does not restore databases, credentials, external assets or distributed binaries. Do not reverse migrations or delete collections blindly.

Proposed V1 and historical caveats ​

Invitation-free V1 is proposed, not implemented here. Documented retirement uses BETA_GATE_ENABLED=false and an approved API recreation, then checks required=false and email/Apple signup. Preserve admissions/additive schema. Quotas and unlimited entitlements remain a separate decision.

Older architecture, scan fan-out and OAuth guides describe historical implementation stages. Follow pinned source plus dated observations. Source presence, merge, build, deployment and device verification are different states. Old catalogue counts and naming blockage totals are not reaffirmed.

Tracking · Repository docs · Production readiness.