Package stablev4 is the permanent half of the gems6v2 split-realm design (stablev3 plus two fixes from the 2026-09-15 Pearl test run: a burned token's own page, and no per-token copy of the sealed image) -- a candidate successor to the real gems6/stable, built to prove two things together before either goes anywhere near mainnet: a delayed-reveal mint (fixing the OutOfGasError problem the real gems6/v1's instant-reveal MintAssembled has against Adena's own gas estimation -- confirmed on a throwaway single-realm spike, gno.land/r/g1gn6t0q9wenwhdda47rkrpfd63kcxjvyp7eqwku/revealpoc, before this real split-realm version was attempted), and the approved gemsartfab art package (crystal-look repaint + a real Rose Cut cascade fix + a facet-merge seam fix on Round Brilliant/Oval).
Deployed under a test address (not the vesting wallet) so this whole prototype -- stable, campaign, v2, and gemsartfab itself -- is self-contained and doesn't need the real collection's own keys to validate. Folding a confirmed-good design into the real mainnet deploy is a separate step once this proves out.
Reveal mechanism: MintAssembled records a trait selection and a SEALED placeholder image immediately (cheap, see RecordMint's own doc comment for why this is the whole point). TokenURI/TokenMetadata compute the real image via gemsartfab -- but ONLY once RevealDelayBlocks has passed -- through currentMetadata, which is the one addition to the real stable's own read path. This DOES mean this realm, unlike the real gems6/stable, imports an art package directly: unavoidable given gno's static imports (the realm serving TokenURI has to know how to render, and rendering can't be deferred to "whichever realm is currently approved" the way minting can, since a future version's own art package isn't importable before it exists). Matches the tradeoff the older g20 collection already accepted for the exact same reason -- not a new problem introduced here.
Everything else (ownership, whitelist, royalty, claim log, campaign wiring) is unchanged from the real gems6/stable -- see that package's own doc comments for the full design history.
Ledger: the standard gno.land/p/nt/grc721/v0 (2026-09-26), not a vendored grc721. Adena lists only collections whose NewToken/Transfer events come from that exact package (see ~/gno-land-dev-notes.md), and chain.Emit stamps the emitting package, so this cannot be retrofitted later. The package stores ownership only; every token's metadata is computed here from its traits (sealedData), never stored per token. TokenURI returns the image itself (Adena puts it straight into an <img>); TokenMetadata returns the metadata as a JSON string, and TokenJSON the classic base64 JSON data URI for marketplaces that want it.