Re-prioritizes the core loop (sell→feed→close; burn for unsellable only) per
user direction. READ-ONLY this increment — quotes + risk flags only, no swap
build/sign, no funds moved.
- docs: Rev 3 — §5 scope, §6 TRANSMUTABLE active, new §6.1 (Jupiter Ultra
routing incl. pump.fun pre/post-graduation + Token-2022; 3rd-party-swap trust
model = simulate + lamports-delta ≥ min-out + sole-signer + no
SetAuthority/Approve/bad-CloseAccount; Shield; price-impact/slippage/dust
guards; Essence model 1 = opt-in off-chain tally, no custody).
- @pyre/core: SellInfo type + TokenAccountDto.sell.
- @pyre/api: keyless Jupiter client (lite-api: /swap/v1/quote + /ultra/v1/shield);
bounded /api/scan enrichment — upgrades INCINERATE_ONLY→TRANSMUTABLE when a
worthwhile route exists; dust gate (proceeds ≤ fee+rent → keep burn); price
impact >10% blocks; graceful degrade if Jupiter down.
- @pyre/web: shows "Sellable for ~X SOL", price impact, Shield chips; disabled
"Sell & feed the PYRE (soon)" CTA (execution is the next, audited step).
Tracker: Phase 6 "swap candidate detection" + "route quote preview" done.
typecheck 8/8, core 85, solana 19, web build green.
LIVE FINDING: both pump.fun tokens ARE routable via Jupiter (so no pump.fun
engine needed) but quote ~0.0000097 SOL each — far below their ~0.002 SOL rent,
so the dust gate correctly keeps them INCINERATE_ONLY ("not worth selling").
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PYRE Status Dashboard
A static, self-contained dark "ember"-themed page the team uses to track PYRE MVP progress. It is a snapshot, not live telemetry.
Files
status.json— the single source of truth. All content on the page (phases, checklists, infra, dates, links) comes from here.index.html— the prebuilt rendered page. Committed so the page works even before anyone runs the generator. Self-contained: inline CSS, no external requests, no JS.README.md— this file.
Editing & regenerating
-
Edit
status.json— flip an item's"done"totrue, update a phase"state"(todo/in_progress/done), or bump"updated". -
Regenerate the page from the repo root:
node scripts/gen-status.mjsThe generator is dependency-free (plain Node ESM, no npm install). It reads
infra/status/status.jsonand rewritesinfra/status/index.html, recomputing the overall % complete from the item done-counts. It prints the output path when finished. -
Commit the regenerated
index.htmlalongside thestatus.jsonchange so the prebuilt page stays consistent with the data.
Deployment
The provision script deploys infra/status/* to /var/www/feedthepyre/status,
and nginx serves it as the site root (feedthepyre.com) until the real PYRE app
ships. Because index.html is prebuilt and self-contained, deployment is a plain
file copy — no build step or generator run is required on the server.