Skip to content

Admin and Free-credit release: local verification

September 12, 2026, approximately 11:13 UTC. Work is saved on codex/admin-analytics-upgrade. The owner authorized local browser checks. Production deployment, pricing activation, announcement publication, Neon restart, replication setup and credential rotation remain deferred.

Update after the authorized local VM correction: both Linux images build and execute; the web's two-replica PostgreSQL/Redis checks, worker publication/restoration, and all 26 analytics tests pass. A catalog race during legacy analytics-table initialization was fixed and the rebuilt web image passes. See the real service verification for current results; the remaining-gates list below records the earlier state.

Results

CheckResultWhat it establishes
Admin browserPassed at 1440, 390 and 360 pxOverview, acquisition details, finance day/week controls, customer averages/risk/capacity tabs, tokens, world filters/zoom, retention, cached moderation navigation, embedded world review and reviewed-revision approval payload. All API responses are fixtures. No runtime errors or page-level horizontal overflow.
Report failuresPassed desktop and phoneFailed refresh retains and labels the saved report. Recovery removes the delay warning. A cold period does not reuse another period’s numbers; manual retry recovers.
Wallet browserTen scenarios passedNew Free, existing notice, new check-ins with old cycle, Gold, empty-wallet referral, desktop/phone and English, Simplified/Traditional Chinese, Japanese and Spanish. Reward expiry is visible before claim; changed referral terms require another review. Screenshots inspected.
Compiled web serverPassed on Node 22.23.2, WindowsCurrent-schema isolated PGlite, real Better Auth fixture sessions and HTTP endpoints. Health and frontend assets serve; anonymous requests and ordinary-user admin requests are rejected with private no-store headers.
Real rewardsPassedNew Free: 1,000 cycle / 500 recovery cap / first check-in 50. Existing Free before cutoff: 2,000 / 1,000 / 100. Gold: unchanged 4,000 / 2,000 / 100. Old clients cannot claim new Bonus; repeated claims cannot issue twice.
Real referral and giftsPassed500 referral Bonus, stale terms rejected, duplicate redemption rejected. Gift expiry follows the funds, duplicate gifts do not debit twice, competing gifts honor the 200 monthly cap, and combined wallet value is conserved.
Wallet/schema/moderation/cache suite28 passedIncludes actual SQL expiry/recovery, idempotency, refund preservation, caller-owned referral transaction rollback, installer/schema agreement and cascade rules.
Admin client testsFive passedQuery reuse/isolation and popup layout invariants.
Analytics suite23 passed, two external tests skipped in this commandBoth external ClickHouse integration tests passed separately during the preceding connection audit in disposable databases. These results do not establish complete production CDC coverage.
Monorepo checksTypecheck and build passedEight typecheck tasks and five build tasks. Existing large frontend chunk warnings remain.

Local report data and account identities are synthetic. Real cloud connection findings are in the separately timestamped connection audit. No local test claimed production credits, published a world, contacted users or changed a live policy.

Fixes from this pass

  • Compact, distinct chart ticks prevent weekly labels overlapping on phones. Full period descriptions remain in the readout.
  • Removed the duplicate wallet balance. Customer-economics details now have consistent padding.
  • Limited map labels by available width and collision; phone details carry readable world names.
  • Retained reports are explicitly marked delayed after refresh failure or expiry.
  • Referral grants and in-transaction gift-cap checks stay on the caller’s database connection. This removes a connection escape that stalled the isolated endpoint rehearsal and could break transaction coordination.
  • Registered all four Bonus/cycle/refund tables in the managed schema, matching the reviewed SQL installer. No live migration was run.
  • Split the local mute installer into individual prepared statements, fixing its fresh-database bootstrap failure.
  • Excluded local analysis logs and money-dive artifacts from the container build context.

Repeatable compiled-server rehearsal

packages/server/scripts/verify-admin-release.mjs starts compiled code with an explicit environment containing only fixture credentials, creates a temporary PGlite database from exported schema, exercises signed-session reward and gift endpoints, and removes its temporary database after success. Logs and results go to packages/server/scripts/admin-release.local/. Failed runs retain their temporary fixture for diagnosis. It does not read a supplied production database URL.

From the repository root, with dependencies installed and Node 22 selected:

powershell
pnpm build
New-Item -ItemType Directory -Force packages/server/scripts/admin-release.local
pnpm --filter @yumina/server exec drizzle-kit export --dialect postgresql --schema ./src/db/schema.ts > packages/server/scripts/admin-release.local/schema.sql
node packages/server/scripts/verify-admin-release.mjs --schema packages/server/scripts/admin-release.local/schema.sql

The blank embedded database bootstrap is not a replacement for migrations; this rehearsal intentionally initializes the full current schema first, then exercises the release as production would after its schema preparation.

Remaining release gates

  1. Linux containers: Docker, Podman and WSL are unavailable on this machine. The Node 22 Windows rehearsal is not a container pass. The commands below are prepared but have not run. They build local images without pushing or deploying them.
  2. Real PostgreSQL/Redis rehearsal: verify pooling, competing writes, migration order and compatibility during overlapping versions. Preserve the additive-schema-before-code sequence.
  3. Final coordinated live step: enable replication and rotate credentials only in the later agreed window. Finish the ClickPipe snapshot, validate deletes/lag and reconcile matching Stripe/OpenRouter cutoffs before enabling the new admin. Three corporate charges still lack reliable customer identity; retain explicit unattributed treatment if not resolved.
  4. Owner notice and activation: the owner sends the announcement. New-account activation gets its own timestamp. Existing users retain at least seven days’ notice and personal-cycle treatment; September 21 remains the proposed check-in cutoff, not an activated setting.

Container commands for the later authorized build environment, after exporting the schema above:

powershell
docker build -f Dockerfile -t yumina-admin-release:web .
docker build -f Dockerfile.analytics -t yumina-admin-release:analytics .
$fixtureSchema = (Resolve-Path packages/server/scripts/admin-release.local/schema.sql).Path
docker run --rm --entrypoint node --mount "type=bind,source=$fixtureSchema,target=/tmp/schema.sql,readonly" yumina-admin-release:web scripts/verify-admin-release.mjs --schema /tmp/schema.sql

The container rehearsal starts only a temporary embedded database and uses no host port or vendor credentials. The worker still needs its own connected staging smoke check. Runtime migration files, Redis behavior, source freshness and report completeness must be checked there.

No additional billing setup, cloud account or key submission is needed from the owner for the current preparation. The announcement and final launch decision remain with the owner.