Skip to content

feat(metadao): config-driven PDA surface + local surfpool TDD (capstone gap) - #263

Merged
ernanibmurtinho merged 3 commits into
mainfrom
feat/metadao-launchpad-surface
Aug 3, 2026
Merged

feat(metadao): config-driven PDA surface + local surfpool TDD (capstone gap)#263
ernanibmurtinho merged 3 commits into
mainfrom
feat/metadao-launchpad-surface

Conversation

@ernanibmurtinho

Copy link
Copy Markdown
Contributor

What

Fourth and capstone program on the config backbone: MetaDAO launchpad_v7 (the ICO/launch program, moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM). Comprehended into configs/orquestra/metadao_ico.json + local TDD (offline $0 + real surfpool fork).

The gap it showcases — the whole thesis in one program

Orquestra's PDA Finder reports "No PDA accounts found in this IDL" for this program. Its Anchor-IDL generator drops every seed, because none are declared in IDL pda.seeds metadata — they exist only as #[account(seeds=...)] in v07 source. So Orquestra derives nothing; Gecko recovers launch/launch_signer/funding_record from source and derives them first-plan-correct. This is the cleanest demonstration yet of the comprehension gap Gecko fills.

Version gotcha handled: Orquestra labels this "IDL v8" (its own upload counter), but the program is v07_launchpad, not v08 (moonDJU…) — recipes verified against v07.

Proof (verified, not claimed)

Ground truth = metaDAOproject v07 source, verified live against mainnet getProgramAccounts (20/20 launches + 5/5 funding records re-derived). On a live surfpool fork ($0, read-only, no signing):

  • launch1AEZZsSh… — exists, owned by launchpad_v7
  • funding_record13DiYjVw… — exists, owned by launchpad_v7
  • launch_signer5spjbrDn… — derives correctly; a signing-authority PDA (used via invoke_signed), so no persistent account required ✅

Scope / follow-ons

Core derivable set only. Honest follow-ons needing new seed kinds: token_metadata (constant-pubkey Metaplex seed + cross-program owner), the SPL ATA vaults, and complete_launch's caller-supplied foreign programs (DAMM v2 / Squads / Futarchy) — each flagged in the config notes.

Note on merge order

Branched off main (apis = meteora/pumpfun). If #261 (ORE) merges first, expect a trivial one-line conflict on provider.json apis (both append) — resolve by keeping all four.

Gate

ruff + mypy gecko clean; targeted suites 16 passed; surfpool E2E passes with GECKO_SURFPOOL_E2E=1.

🤖 Generated with Claude Code

…ne gap)

MetaDAO launchpad_v7 (the ICO/launch program). THE CAPSTONE GAP: Orquestra's PDA
Finder reports 'No PDA accounts found in this IDL' — its Anchor-IDL generator drops
EVERY seed (none declared in IDL pda.seeds; they live only in v07 source). Gecko
recovers launch/launch_signer/funding_record from source, all deriving the real
mainnet addresses (verified on a surfpool fork, $0: launch + funding_record owned by
launchpad_v7; launch_signer is a signing-authority PDA). Version gotcha handled: the
program is v07_launchpad, not v08 (Orquestra's 'IDL v8' = its own upload counter).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ernanibmurtinho ernanibmurtinho self-assigned this Aug 3, 2026
@ernanibmurtinho
ernanibmurtinho merged commit 65c311c into main Aug 3, 2026
1 check passed
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