Strategy Hub

Activity & Reason Codes

Recent Strategy Activity is an operational view of what Strategy Hub recently observed, decided, requested, skipped, or completed. It is not a complete audit ledger or full-history search product.

An entry tells you what was recorded at its event time. Its absence does not prove that nothing happened: high-volume diagnostic skips are recent best-effort activity, and a temporary capture, persistence, projection, read, or update-stream problem can delay what the screen shows.

Open Activity

In Strategy Hub, open Logs on mobile or Activity Logs on desktop.

Filter and load activity

The controls narrow the server-backed feed:

  • TypeAll, Trades, Skips, Alerts, or Systems
  • Strategy — one strategy or the whole account
  • Search loaded activity — matches only entries already loaded in this session
  • Load older — follows the server cursor without replacing the rows already on screen

The feed does not show global totals for a tab. A search miss means no match in the loaded rows, not that no older event exists.

Updates connected describes the live update stream only. It does not prove that Activity storage is healthy or complete.

What an entry shows

Entries are grouped by strategy, with account-wide events in an Account group, and appear newest first. Depending on the evidence available, a row or its detail view can show:

  • the recorded event type, plain-language reason, and copyable reason code
  • the strategy, token, venue, wallet, position, request, order, or source identity
  • the authoritative event time in UTC
  • a real transaction signature and explorer link, when one exists
  • observed filter values that are safe to publish

Missing linkage stays unavailable; the client does not infer it from a nearby row.

Exact money and quantities

Finalized trade and position-close money appears only when accounting is complete and the quote is a supported SOL or USDC asset. The detail view names the quote asset and scale. Principal, proceeds, sold-token cost basis, realized swap P&L, and native-SOL wallet movement remain separate.

The API carries these values as exact integer strings and the client formats them without JavaScript floating-point conversion. If denomination, attribution, or accounting is incomplete, the screen says the financial details are unavailable instead of showing zero or assuming SOL.

A requested buy principal is a separate SOL allocation. It is not proof of the venue charge or of a fill.

For a Match Wallet % decision that reached exact sizing, expanded Activity also shows a compact signal-time calculation: the tracked wallet's exact SOL or USDC buy and quote scale; the resident SOL/USD rate and observation time when USDC conversion was required; the normalized SOL value; percentage and uncapped result; maximum; final requested amount; cap outcome; and lamport rounding rule. The client derives and cross-checks those values from exact integer strings rather than floating-point display fields. If the source evidence is incomplete or mathematically inconsistent, the calculation stays hidden and the reason code remains the explanation. The full Logs detail wraps long values so the compact Dashboard preview is not the only way to inspect them.

This calculation proves how Strategy Hub sized that recorded decision. It does not by itself prove provider submission, confirmation, finalization, fill, or actual venue spend.

What lifecycle words prove

Treat each event as one state observation:

  • Accepted means Strategy Hub admitted the request or lifecycle change. It does not prove provider submission or an on-chain result.
  • Request dispatched means the request left the Strategy decision path. It does not prove provider submission, confirmation, finalization, or fill.
  • Submitted requires a real downstream or chain submission identity. It is not confirmation or finalization.
  • Confirmed records the observed chain commitment level. It is not the stronger finalized state.
  • Finalized buy/sell is shown only from the finalized accounting projection.
  • Canceled before submit means the recorded attempt ended before any submission was proved.
  • Issue observed may later be superseded by stronger chain reconciliation; it is not automatically a terminal failure.
  • Terminal failure means that recorded attempt has no more automatic work planned. It does not prove that no chain effect occurred unless reconciliation also proves that.
  • Unknown means Strategy Hub cannot yet prove the downstream outcome; inspect current Orders and Positions state rather than treating it as failed.
  • Exit request dispatched means a rule requested an exit; inspect the later order and position state for the result.
  • Notification queued means a durable delivery request exists. Delivered is used only with a provider receipt; an alert or queued notification alone is not a Telegram delivery receipt.
  • Campaign finished counts accepted buy attempts and requested SOL principal, not filled trades or actual on-chain spend.
  • Close All Complete is earned only after an authoritative check finds no open or transitional Hub position, no unresolved Hub sell, and no in-flight entry or held reservation capable of opening one.

For an order or position outcome, the current Orders/Positions state is authoritative; Activity supplies recent context.

Retention and availability

High-volume filter and warming diagnostics are best effort and expire after seven days. Critical records are excluded from that diagnostic expiry rule, but Recent Strategy Activity is still not presented as a complete audit ledger. A diagnostic row can therefore be absent even though the strategy evaluated the signal.

The screen distinguishes:

  • No recent Activity records for this selection — a current, unexpired no_known_gap read returned no rows for this selection
  • No matches in loaded activity — search did not match the rows in memory
  • Activity data unavailable — the initial read failed; use Retry
  • Activity updates delayed — recorded rows remain visible while a recovery-safe local journal or the shared critical writer still owns a not-yet-visible fact, an authoritative projection is stale, or the latest refresh failed
  • Activity history has a known gap — scoped recovery evidence proves that one or more critical facts are not currently present in live Activity; available rows remain visible
  • Activity status unavailable — current capture or projection authority cannot prove freshness or continuity; recorded rows remain visible but must not be treated as complete

Common V1 reason codes

A reason code is a stable machine-readable label paired with a plain-language explanation. You can copy it when asking Support for help.

Data or filter input was unavailable

Reason codeMeaning
token_metadata_warmingRequired token metadata or launch-time evidence has not finished loading.
token_safety_warmingRequired safety or holder evidence is not ready, so the strategy refused to guess.
token_history_warmingThe rolling or pre-migration history is still building.
token_history_partialAvailable history is only a lower bound and cannot prove the condition.
execution_context_missingNo fresh resident price or market context could prove the condition.
holder_snapshot_missingDev-holding evidence was unavailable.
sol_price_unavailableA required SOL/USD conversion had no fresh resident rate. No fetch was made during evaluation.
unsupported_quote_assetThe observed quote was outside the supported SOL/USDC V1 set.
unsupported_venueThe signal venue is outside the V1 Pump.fun/PumpSwap scope.

A warming or unavailable reason means the strategy skipped rather than converting missing evidence into a safe-looking value.

A V1 allocation or position limit refused the buy

Reason codeMeaning
max_buy_amount_exceededRequested SOL principal exceeded this strategy's per-buy cap.
daily_spend_cap_reachedThe next buy would exceed the strategy's accepted requested-principal cap for the current UTC day.
max_open_positions_reachedThe strategy already held its allowed number of open positions.
consecutive_loss_limit_reachedThe configured number of losing full position closes paused new entries.
campaign_trade_limit_reachedThe campaign reached its accepted-buy-attempt cap.
campaign_spend_cap_reachedThe next request would exceed, or the campaign reached, its requested-principal cap.
emergency_pausedAccount-wide Emergency Stop fenced automatic entries, exits, waits, callbacks, and retries.

An exit rule requested or skipped work

Reason codeMeaning
take_profit_level_hitA take-profit rung requested its configured share of the original bought quantity.
stop_loss_hitThe position's quote-native stop threshold requested an exit.
sell_by_time_hitThe configured time exit elapsed.
copied_wallet_soldThe copied-wallet sell reaction fired.
dev_soldThe dev-sell reaction fired.
manual_sell_requestedAn explicit manual-sell request was accepted for dispatch; this does not prove a fill.
moonbag_floor_reachedThe retained Moonbag floor prevented a further automatic sell.
dust_remainderThe remaining executable quantity was too small to dispatch.
exit_dispatch_failedAn exit request could not be dispatched.
exit_order_timed_outConfirmation was not observed within the expected window; inspect current state.
exit_retries_exhaustedAutomatic retries ended; inspect the position and consider a manual sell.
pending_order_does_not_match_closing_orderThe position closed, but its saved pending sell could not be matched to the closing order. The record was preserved for review; this does not imply an additional sell.

Trailing stop is not a V1 exit and has no public launch reason code.

Documentation maintained by SpeedyTurtle Labs.