Skip to content

M3 launch: open /app + /login, per-mint CRITICAL precision copy, PR preview job - #27

Closed
solsentry wants to merge 4 commits into
mainfrom
launch/m3-open-app
Closed

solsentry wants to merge 4 commits into
mainfrom
launch/m3-open-app

Conversation

@solsentry

@solsentry solsentry commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

What

Site launch.

  • Open /app + /login via .env.production (NEXT_PUBLIC_M2_APP_OPEN=1, NEXT_PUBLIC_WATCHLIST_API=on). next build inlines NEXT_PUBLIC_*, so the flags live in the repo, not in wrangler.toml [vars]. Merging this PR is the production flip — owner gate (visual acceptance, D+10).
  • Per-mint copy (F-19): /pro KPI labelled "CRITICAL precision" was showing accuracy_pct (aggregate) — now critical_precision_pct. Landing stats bar: "CRITICAL precision · auditable per-mint" is the headline cell, aggregate accuracy is labelled as aggregate (EN + PT). No literal numbers anywhere; all values live from /v1/stats.
  • PR preview job: same-repo PRs run wrangler versions upload (uploads a non-live Worker version; never deploys). Preview URL lands in the job step summary. Needs "Preview URLs" enabled on the Worker.
  • CI Node 20 → 22: lockfile pins wrangler 4.129.1 (engines.node >= 22).

Verified locally

  • npm ci && npm run build && npm run pages:build green (warnings are pre-existing: pino-pretty via walletconnect).
  • Built worker under wrangler dev (Node 24): / /app /login /about → 200; /pro /dashboard/v3 /token/* → 307 (still gated).
  • Compiled middleware allowlist contains /app, /login.
  • Backend endpoints live on api.solsentry.app: /v1/watchlist (401 unauth), /v1/auth/wallet/nonce (400 empty body), /v1/auth/magic-link/request (200), /v1/pricing (200).

Not in this PR (D+7)

Pricing page wiring, Dossier/Graph buttons on /token/{mint}, x402 route tests on mainnet.

…CHLIST_API=on via .env.production), per-mint CRITICAL precision copy (F-19), PR preview job via wrangler versions upload, CI Node 22

- .env.production: build-time launch flags; merging to main = the production flip (owner gate, D+10)
- /pro KPI labelled 'CRITICAL precision' was rendering accuracy_pct (aggregate) — now critical_precision_pct
- landing stats bar: CRITICAL precision · auditable per-mint becomes the headline cell; aggregate accuracy labelled as aggregate (EN/PT)
- build.yml: preview job on same-repo PRs uploads a non-deployed Worker version (preview URL in step summary); Node 20 → 22 (lockfile wrangler 4.129 requires >=22)
@solsentry

Copy link
Copy Markdown
Owner Author

Preview (Worker version, not deployed): https://c44143ea-solsentry-app.solanasentryai.workers.dev — /app and /login → 200, /pro still gated. Production solsentry.app/app still 307 (unchanged until merge).

…ble, Dossier button + /dossier/[wallet] page

Middleware: NEXT_PUBLIC_M2_APP_OPEN=1 now also allows /pricing, /token, /operator,
/network, /drain and /dossier. The watchlist on /app links to /token/{mint} and
/operator/{wallet}; both 307'd back to / under the default-deny list, so the
cohort could track a token but never open it. /pricing already reads the live
/v1/pricing tiers and packs (no literal) — it was simply unreachable (307 on
prod and on the D+3 preview).

Token card + operator page: "Dossier →" next to Network tree / Trace drain.
New /dossier/[wallet]: server-rendered view of /v1/dossier/{wallet} (genesis,
funders, identity signals, CEX exits, timing siblings) with the confidence,
sources and cache state shown as-is; an empty report is labelled empty, never
shown as a clean bill of health. Dossier type extended to the fixture shape
(tests/fixtures/x402_route_payload_shapes.json "dossier").

Verified: tsc clean, eslint 0 errors, next build OK. Prod stays gated until
PR #27 merges (owner gate D+10).
…mirror is tier-gated (403 dossier_requires_pro)

Preview check: the server-component fetch always hit the anonymous 403, so the
page could only ever show "unavailable". DossierClient now calls the API with
credentials (same fetchWithSession as the watchlist) and renders each gate as
what it is: signed-out → Sign in (callback back to the dossier), Free tier →
"Pro feature, 10/month" + the upgrade_url the API returns, Pro/B2B → the
report. Render helpers moved into the client component; an empty report is
still labelled empty.

tsc clean, eslint clean, next build OK (/dossier/[wallet] dynamic).
…TICAL line — point to per-mint audit instead (BAN-01)
@solsentry

Copy link
Copy Markdown
Owner Author

Superseded by #29 — same commits rebased on main after #28 (public-tree cleanup), so nothing from the old base is reintroduced. Closing this one; reopen if needed.

@solsentry solsentry closed this Sep 29, 2026
solsentry added a commit that referenced this pull request Sep 29, 2026
…ble, Dossier button + /dossier/[wallet] page

Middleware: NEXT_PUBLIC_M2_APP_OPEN=1 now also allows /pricing, /token, /operator,
/network, /drain and /dossier. The watchlist on /app links to /token/{mint} and
/operator/{wallet}; both 307'd back to / under the default-deny list, so the
cohort could track a token but never open it. /pricing already reads the live
/v1/pricing tiers and packs (no literal) — it was simply unreachable (307 on
prod and on the D+3 preview).

Token card + operator page: "Dossier →" next to Network tree / Trace drain.
New /dossier/[wallet]: server-rendered view of /v1/dossier/{wallet} (genesis,
funders, identity signals, CEX exits, timing siblings) with the confidence,
sources and cache state shown as-is; an empty report is labelled empty, never
shown as a clean bill of health. Dossier type extended to the fixture shape
(tests/fixtures/x402_route_payload_shapes.json "dossier").

Verified: tsc clean, eslint 0 errors, next build OK. Prod stays gated until
PR #27 merges (owner gate D+10).
solsentry added a commit that referenced this pull request Sep 29, 2026
…ble, Dossier button + /dossier/[wallet] page

Middleware: NEXT_PUBLIC_M2_APP_OPEN=1 now also allows /pricing, /token, /operator,
/network, /drain and /dossier. The watchlist on /app links to /token/{mint} and
/operator/{wallet}; both 307'd back to / under the default-deny list, so the
cohort could track a token but never open it. /pricing already reads the live
/v1/pricing tiers and packs (no literal) — it was simply unreachable (307 on
prod and on the D+3 preview).

Token card + operator page: "Dossier →" next to Network tree / Trace drain.
New /dossier/[wallet]: server-rendered view of /v1/dossier/{wallet} (genesis,
funders, identity signals, CEX exits, timing siblings) with the confidence,
sources and cache state shown as-is; an empty report is labelled empty, never
shown as a clean bill of health. Dossier type extended to the fixture shape
(tests/fixtures/x402_route_payload_shapes.json "dossier").

Verified: tsc clean, eslint 0 errors, next build OK. Prod stays gated until
PR #27 merges (owner gate D+10).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant