docs+status: fix Token-2022 audit findings; Phase 1 live

- TOKEN_CLASSIFICATION.md: ASCII decision-flow diagram updated to match the
  Rev-2 prose (program → extension → lock → empty → non-empty protected → route),
  no longer routes all Token-2022 to UNSUPPORTED.
- CLAUDE.md: removed stale "Token-2022 support" from out-of-scope; documents
  the gated Token-2022 policy + that classifier code still skips it for now.
- status.json: Phase 1 (Wallet Scanner) marked done — app deployed live at
  feedthepyre.com (app at /, tracker at /status, api at /api), scan verified
  end-to-end through the public stack.

Reviewed by a doc-consistency audit agent (verdict after fixes: consistent).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 03:59:34 +00:00
parent ae33b6d794
commit 1a556f33a6
4 changed files with 35 additions and 20 deletions

View File

@@ -51,14 +51,24 @@ add application/business logic unless explicitly asked.
- Automatic Pump.fun launch - Automatic Pump.fun launch
- User-contributed Essence vault - User-contributed Essence vault
- Custom PYRE Solana program (Anchor) - Custom PYRE Solana program (Anchor)
- Token-2022 support
- NFT handling (incl. compressed NFTs) - NFT handling (incl. compressed NFTs)
- Automatic valuable-token sacrifice - Automatic valuable-token sacrifice
- Custodial signing - Custodial signing
- Background wallet automation - Background wallet automation
- On-chain swap routing (TRANSMUTABLE) and Token-2022 confidential-transfer /
fee-harvest flows
v0.1 ships: wallet connect → scan token accounts → classify → close eligible **Token-2022 IS in v0.1 scope** (Rev 2 — most new/pump.fun tokens are Token-2022),
empty ATAs (optionally burn obvious junk) → return rent to user → show receipt. supported conservatively with account+mint **extension gating**: confidential
transfer / withheld transfer fees / frozen / unknown extensions are skipped;
transfer-hook & permanent-delegate mints are cleanable but flagged. See
[`docs/PYRE_MVP_DESIGN.md`](docs/PYRE_MVP_DESIGN.md) §7.1. (Note: the classifier
code currently still skips all Token-2022 as a safe subset until the
extension-aware implementation lands.)
v0.1 ships: wallet connect → scan token accounts (classic SPL + Token-2022) →
classify → close eligible empty ATAs (optionally burn obvious junk) → return rent
to user → show receipt.
--- ---

View File

@@ -175,15 +175,20 @@ non-destructive category — **Unknown means skip.**
``` ```
scan account scan account
├─ not classic SPL? ───────────────────────────────► UNSUPPORTED ├─ unknown/other token program (not SPL or Token-2022)? ─► UNSUPPORTED
├─ bad metadata / layout / unhandled extension? ───► UNSUPPORTED ├─ Token-2022 unsafe/unknown extension
├─ NFT / cNFT / LP / receipt / staked / major / │ (confidential transfer / withheld fee / unrecognized)? ► UNSUPPORTED
│ valuable / SOL-WSOL / suspicious / frozen / ├─ bad metadata / unsupported layout? ───────────────────► UNSUPPORTED
│ delegated / over-threshold? ────────────────────► PROTECTED_SKIP ├─ frozen or delegated? (regardless of balance) ────────► PROTECTED_SKIP
├─ balance == 0? ──────────────────────────────────► EMPTY_CLOSE_ONLY ├─ balance == 0? (closes regardless of mint identity) ──► EMPTY_CLOSE_ONLY
├─ safe swap route + passes risk checks? ──────────► TRANSMUTABLE ├─ NON-empty & NFT / cNFT / LP / receipt / staked / major /
└─ otherwise (burnable junk, no safe route) ───────► INCINERATE_ONLY │ valuable / SOL-WSOL / suspicious / over-threshold? ───► PROTECTED_SKIP
├─ NON-empty & safe swap route + passes risk checks? ────► TRANSMUTABLE
└─ otherwise (burnable junk, no safe route) ─────────────► INCINERATE_ONLY
``` ```
(Transfer-hook & permanent-delegate Token-2022 mints pass the program/extension
gates — they are cleanable — but are flagged and excluded from swap. See design
doc §7.1.)
--- ---

View File

@@ -147,10 +147,10 @@
<section class="overall"> <section class="overall">
<div class="overall-head"> <div class="overall-head">
<h2>Overall MVP Progress</h2> <h2>Overall MVP Progress</h2>
<span class="overall-pct">27%</span> <span class="overall-pct">29%</span>
</div> </div>
<div class="bar"><span style="width: 27%"></span></div> <div class="bar"><span style="width: 29%"></span></div>
<p class="count">14 of 51 phase deliverables complete</p> <p class="count">15 of 51 phase deliverables complete</p>
</section> </section>
<h2 class="section">Development Phases</h2> <h2 class="section">Development Phases</h2>
@@ -172,12 +172,12 @@
<li class="item done"><span class="mark"></span><span>Environment templates</span></li> <li class="item done"><span class="mark"></span><span>Environment templates</span></li>
</ul> </ul>
</article> </article>
<article class="card in_progress"> <article class="card done">
<header class="card-head"> <header class="card-head">
<h3><span class="phase-id">Phase 1</span> Wallet Scanner</h3> <h3><span class="phase-id">Phase 1</span> Wallet Scanner</h3>
<span class="badge in_progress">IN PROGRESS</span> <span class="badge done">DONE</span>
</header> </header>
<p class="count">6 / 7 complete</p> <p class="count">7 / 7 complete</p>
<ul class="checklist"> <ul class="checklist">
<li class="item done"><span class="mark"></span><span>Wallet connect frontend</span></li> <li class="item done"><span class="mark"></span><span>Wallet connect frontend</span></li>
<li class="item done"><span class="mark"></span><span>Scan endpoint (POST /api/scan)</span></li> <li class="item done"><span class="mark"></span><span>Scan endpoint (POST /api/scan)</span></li>
@@ -185,7 +185,7 @@
<li class="item done"><span class="mark"></span><span>Basic classification (conservative, 43 tests)</span></li> <li class="item done"><span class="mark"></span><span>Basic classification (conservative, 43 tests)</span></li>
<li class="item done"><span class="mark"></span><span>Scan results UI (grouped)</span></li> <li class="item done"><span class="mark"></span><span>Scan results UI (grouped)</span></li>
<li class="item done"><span class="mark"></span><span>Protected/skipped UI</span></li> <li class="item done"><span class="mark"></span><span>Protected/skipped UI</span></li>
<li class="item"><span class="mark"></span><span>Deploy app + live-wallet e2e verification</span></li> <li class="item done"><span class="mark"></span><span>Deployed live at feedthepyre.com + scan verified e2e</span></li>
</ul> </ul>
</article> </article>
<article class="card todo"> <article class="card todo">

View File

@@ -23,7 +23,7 @@
{ {
"id": 1, "id": 1,
"name": "Wallet Scanner", "name": "Wallet Scanner",
"state": "in_progress", "state": "done",
"items": [ "items": [
{ "label": "Wallet connect frontend", "done": true }, { "label": "Wallet connect frontend", "done": true },
{ "label": "Scan endpoint (POST /api/scan)", "done": true }, { "label": "Scan endpoint (POST /api/scan)", "done": true },
@@ -31,7 +31,7 @@
{ "label": "Basic classification (conservative, 43 tests)", "done": true }, { "label": "Basic classification (conservative, 43 tests)", "done": true },
{ "label": "Scan results UI (grouped)", "done": true }, { "label": "Scan results UI (grouped)", "done": true },
{ "label": "Protected/skipped UI", "done": true }, { "label": "Protected/skipped UI", "done": true },
{ "label": "Deploy app + live-wallet e2e verification", "done": false } { "label": "Deployed live at feedthepyre.com + scan verified e2e", "done": true }
] ]
}, },
{ {