Agent Only — Hooks Preflight

Harvest $HARVEST

The classic Basis Latch, and the launcher's public generic-router proof: a fresh wallet's first buy was built entirely by the standard Token-2022 resolver, and its immediate sell was vetoed on-chain.

Preflight report · last verified 2026-10-21 · all preflight reports

The platform trust assumption — read this first

Per-token configurations are Locked — no one can change a launched token's rules. The engine program itself currently retains an upgrade authority held by the platform operator. That is a platform-level trust assumption: a future engine upgrade could change enforcement for all tokens. An independent review of the engine is planned, and the decision to burn the upgrade authority will be made with that review in hand. Until then, AgentOnly does not claim the engine is fully immutable.

Identity

Mint2a8hxHj6CFLvQrhjEEDXBhSuRQkLfUMzTW36NijZ1tAo
Pool (Meteora DBC)4K5Li2zmfk4nKb7KyFiu7cEch4ep2Frdd6wfU9McZXxe
Token programToken-2022 — standard Token-2022 for the token's whole life; no proprietary token program
Hook / engine programEPdYVfsX7Lk9gtLp8CVouiFrNwtxP5g11NR6DDgs6akT
Engine config (this token)4asqjdbgs9uSH514BXp68zJPyprkStEiP7bVV8ndkcSi
Launched2026-10-17 (pool creation, UTC; launch record in the repository)
Creator fee100 bps (1%) of curve trades, to the deployer / fee-claimer wallet FMYVMuJgoM9J41PaXBmJe6ijSHUtSr2VPRbAJvH4MhCP.
Holder feesOff — no Distributor on this token.
Config authority modeLocked — the rule stack below cannot be changed by anyone

The rule stack, decoded

RuleWhat it does here — parameters in plain numbers
Basis Latch (rule 1) — classic modeSells and sends are vetoed while the feed price is at or above the holder's entry basis. The first time the feed price dips below basis, the holder is latched unlocked permanently. Basis blends on buys and ratchets down on cheaper rebuys. Price feed maximum staleness: 300 seconds.
Max Wallet (rule 9)No wallet may hold more than 500 bps = 5% of supply = 50,000,000 HARVEST.

Graduation — mode: release

At 42 SOL of curve progress the pool migrates to DAMM v2 and the transfer hook is revoked inside the completing swap. Both rules end at graduation. Current status: still on the bonding curve (not migrated).

Enforcement scope

The rules are enforced by a mint-level Token-2022 transfer hook: the engine program runs inside every transfer of this token — curve trades, venue trades, and plain wallet-to-wallet sends alike, whoever builds the transaction. There is no off-chain component to bypass. Rules that carry per-holder state read it from holder records keyed to the receiving token account, in the templated form the standard Token-2022 extra-accounts resolver builds — which is why generic routers can construct a first buy for a wallet that has never held the token, with no custom integration.

Trading routes — status by axis

Three separate questions, never collapsed into one badge: can the route be built (supported), has it actually run (tested), and does a named provider surface the token (indexed). Simulation results are labeled as simulation.

CheckStatusEvidence & scope
Route supported — generic resolvers & DBC doorsRoute supportedStandard Token-2022 mint + Meteora DBC pool; templated extra accounts (the live meta list decodes to 261 bytes / 7 extras, zero data-derived seeds).
Route tested — fresh-wallet buy via the generic resolverTested on mainnetA fresh wallet whose HARVEST token account did not exist at build time bought 0.01 SOL → 748,452.588404 HARVEST (2026-10-16/17), the transaction built exclusively with the standard resolver (swap2WithTransferHook): 2MtGkjSaEb…FZMXKX. The holder record was created at the account-keyed address with basis equal to the cranked feed price.
Route tested — immediate sell vetoed by the latchTested on mainnetThe same wallet's immediate full sell 4hNkuskxxt…LpVG6Y failed inside the Token-2022 transfer with engine error Locked; the swap unwound atomically and the buyer's balance was unchanged. The failed transaction is the rule working.
Route tested — buy through the launcher doorTested on mainnetA second fresh wallet bought 0.01 SOL → 747,399.2765 HARVEST via the agent door (hook.mjs flow buy): LTCnf95swK…EFPzW6.
Provider indexed — JupiterIndexed as generic DBCJupiter's token index carries this mint in the generic Meteora DBC class (launchpad: "met-dbc") — no AgentOnly partner label. Indexing as a generic DBC token is not the same as a tested swap route.
Provider indexed — BasedBotNot indexedBasedBot's app answers “No route to SOL” for this mint (observed 2026-10-20, as for the launcher's mints generally). Our assessment is that the refusal happens in the app's backend before any transaction is built — the same mint structure routes through generic resolvers, as the tested rows above show. BasedBot has not confirmed the reason; we state the observation and label the explanation as our assessment.
Graduation to DAMM v2Not yet tested liveNo launcher token has completed a live release graduation on mainnet yet. In simulation: launcher graduation suite 46/46 — curve completion, hook revocation by the completing swap, DAMM v2 migration, in simulation against the venue's real binaries (the original standalone graduation proof passed 22/22).
Rule behavior in simulationTested in simulationLatch-on-curve suite 55/55 · engine trial suite 64/64 · DBC×Engine integration suite 40/40 (real Meteora DBC binaries, local validator). Simulation is not mainnet execution.

Price feed & the crank

The Basis Latch reads a cranked price feed (an EMA of the pool price). The feed goes stale after 300 seconds and the hook vetoes transfers while it is stale — that is deliberate: a latch decision is never made on old prices. A dedicated crank service (Railway, polling every 30 seconds, crank wallet Hmuum57dKYa2XEm198fa5jCeKMJobxWHR3iq4mwV5rmN) keeps every launcher feed inside the gate; observed feed ages in steady state sawtooth between 0 and ~270 seconds. This token's feed is in the crank set.

Evidence & how to verify

Last verified: 2026-10-21. Statuses on this page describe what was true at that date; simulation results are labeled as simulation wherever they appear and are never presented as mainnet execution.