Wallet, Mining, and Marketplace Test Guide
Use this checklist after pulling, rebuilding, and restarting the agent and UI. Run live transfers only on wallets and networks you intentionally control.1. Wallet balance reads
In Chat, verify exact wallet handles do not fall back to a legacy default:@wallet:agentreturns the Agent wallet, notsolana-1@wallet:miningreturns the Mining wallet and assets@wallet:vaultis read-only unless an explicit Vault operation supports it- exact wallet-handle reads do not also dump every local wallet
- exact external Solana address reads do not also dump Agent, Vault, or local wallets
- address and balance reads do not require the user to say
chain=solana - local wallet balance lists show the handle naturally, without a
walletHandle:label - SOL amounts are shown as SOL, not lamports
2. Wallets page send flow
Open Wallet and test the manual send modal:- Select a source by handle or wallet name, for example
@wallet:agent. - Send to a local receive handle such as
@wallet:vault, or a raw external address. - Create an approval request first.
- Reject one request to confirm the approval path.
- For a real smoke, approve only a tiny SOL or token transfer.
- source selector lists local wallets with role handles
- Agent wallet can create ordinary sends
- Mining and Vault wallets are blocked as generic chat/send sources
- approval, execution, failure, and activity rows use human units
3. Chat sends and reviewed wallet actions
Use Chat prompts that force policy checks:- manual mode creates an approval instead of signing
- Auto mode signs only when Agent-wallet policy, caps, token caps, custody, and signer health pass
- SPL sends without a matching token cap are rejected
- decimal route or quote amounts, for example
0.01, are treated as human SOL units - scheduled work is created disabled until reviewed
- limit-action reviews remain review-only until the policy and prompt explicitly allow live execution
- recurring wallet-action reviews create disabled scheduled tasks until reviewed
4. Marketplace buyer and seller smoke
Open Marketplace and test a full refresh-stable purchase:- Search public offers.
- Open a
content.summarizeoffer. - Start checkout and run only a tiny intentional SOL order action.
- Keep checkout open until tx, invoice, receipt, evidence, delivery, and result appear.
- Refresh the buyer page.
- Confirm Purchases still shows old and new purchases.
- Open the seller node and refresh.
- Confirm Sales shows the inbound order with receipt and order evidence.
- buyer Purchases does not disappear on page load or refresh
- seller Sales receives inbound orders with order evidence
@offerssearches Marketplace data, not the public web- order-evidence prompts return Marketplace invoice/receipt/tx evidence records
- Agent > Tasks shows a Marketplace order record with wallet action, delivery, receipt, and dispute steps
- titles show human offer/service labels, not raw service ids
- order-action failures keep checkout state visible and explain the exact wallet or policy issue
5. Mining chat controls
Use@mining for mining operations, not generic wallet sends. These prompts
route through the dedicated mining tool and the same Gateway methods used by the
Mining page and the mining CLI:
@miningreports profile, readiness, status, and history- the singleton
@wallet:miningwallet can run mining-specific operations - start and stop use
sat.startMining/sat.stopMining, then report the post-command status - start reports success only when the returned status confirms mining is running
- stop reports success only when the returned status confirms mining is stopped, or reports drain mode when locked capital or pending cycles remain active
- the Mining page refreshes immediately after chat, channel, or Task
@miningchanges - if the runtime did not actually become active, chat says that instead of claiming mining started
- Mining wallet is rejected for ordinary Marketplace, advanced wallet-action, and chat-send operations
- strategy analysis can read own mining history and pool history
- strategy analysis does not spawn an unrelated sub-agent or ask for a gateway token
6. Mining CLI parity
The CLI should behave like chat and the Mining page. The operator command is the installedfased binary. If fased is missing, rerun ./install.sh --no-onboard from the repo checkout before testing this section.
fased mining startcallssat.startMiningand waits for the final Gateway result before printing success- start prints success only when
started=true,running=true, and the runtime is not in drain-only mode fased mining stopcallssat.stopMiningand waits for the final Gateway result before printing success- stop prints a drain/recovery message instead of a hard stopped message when locked capital or pending cycles remain active
--jsonprints the raw Gateway payload for scripts and debugging- the Mining page should reflect the same state after a refresh or live
mining.changedevent
7. Conditional mining automation
Create disabled scheduled tasks first. Suggested prompts:- scheduled task starts disabled for review
- isolated session target is used
- thresholds and wallet handles are explicit
- enabling the task does not bypass mining wallet policy
- scheduled task start/stop behavior matches chat and CLI: no success claim unless status confirms it
8. Channel parity
From each paired channel you use, such as Telegram or WhatsApp, run the same read-only prompts first. Channel control supports both explicit slash commands and handle-style chat commands:- paired channel user must be authorized
- Telegram, WhatsApp, Slack, Discord, and other paired channels use the same shared command router
- channel commands use the same mining, wallet, and Marketplace tools and policy gates as Chat
/tradecompatibility commands usewallet_action; they do not bypass Agent-wallet caps, custody, route inspection, route-action config, or approval policy- Advanced wallet-action commands create disabled scheduled tasks until reviewed
- unauthorized channel users are rejected
- approvals still happen in Wallet when required
- generic Marketplace search uses
@offersor/offers; plugin/skill marketplace commands stay under their own plugin/skill command surfaces - natural language that is not an explicit handle/slash command still falls back to the normal agent path
9. Failure cases
Deliberately test blocked failures:- unknown wallet handle, for example
@wallet:missing - external address used as a source wallet
- Mining wallet used for a normal send
- Vault wallet used for a normal send
- SPL send with no token cap
- Agent wallet locked by split-key custody
- bad payee address
- expired Marketplace token