For Agents
Reverse-chronological session log. Newest entries at top, grouped by date (
## YYYY-MM-DD). Each bullet: one piece of work, short summary, wikilinks to docs touched. Updated byobsidian-documenteron every project doc write. Read byhistorianat bootstrap.
2026-07-05
- Solana arbitrage (5th strategy) — feasibility + passive measurement, leaning NO-GO — the first PRINCIPAL-SAFE strategy in the whole arc (atomic Jito bundle reverts if the spread’s gone → lose fees not inventory; flash loans push at-risk capital → 0), which is why it earned a look after copy/sniper/co-buy all died. Desk research (
~/coding/slv1/docs/arbitrage-feasibility.md): CONDITIONAL GO to measurement only — mainstream arb is a solved colocated machine (~90M arbs/yr, 1,800–3,800/mo); the only solo lane = thin long-tail pump.fun→PumpSwap × Meteora-DLMM the giants under-index, but latency-INSENSITIVE so ShredStream is table-stakes for the 3rd time. Rejected: mainstream DEX-DEX/backrun (colocated), CEX-DEX (capital-heavy, non-atomic). BUILT a passive zero-capital harness (arb-measure/, Python, brancharb-measure-harness): DexScreener discovery → WSS pool subscribe (slot-stamped) → decode reserves→price (PumpSwap CPMM reconciled ~16/16 vs DexScreener, median ~0.5%; Meteora DLMM active-bin ~11–12/16) → log spread + slot-persistence + depth-adjusted realizable profit. KEY FINDING: the naive mid-price “captured-before-us” metric was a FALSE GO (~17% captured, spreads persist → looks like opportunity); adding depth/slippage REVERSED it — persistent spreads persist precisely because they’re not profitably capturable (on 1.58 @5SOL / neg @10; ANSUM 2.15% → +0.33** — and under an optimistic Meteora model (CPMM-on-full-TVL ignores DLMM concentration, ~6× thinner in reality → truth is worse). The one positive-persistent event = a pure latency race (Meteora bin price lagging PumpSwap ~3 slots) = commoditized. Decision-grade 180-min run collecting now to confirm — solv1-arbitrage-feasibility-measurement-2026-07-05 - Strategy scorecard closed out — 5 explored, meta-pattern crystallized — refreshed the candidates menu to the full arc: Copy-trading NO-GO · Launch-sniper NO-GO · Co-buy consensus NO-GO · Meme-beta timing = RISK OVERLAY (not alpha) · Solana arbitrage = leaning NO-GO. Meta-pattern across all five: every “be fast / follow informed flow” edge is commoditized or structurally behind — the banked Jito ShredStream turned out to be table-stakes in copy, sniper AND arb (3×); the only openings are thin niches where speed doesn’t matter and margins ≈ 0. The one thing that ever added value was SELECTION/filtering (+14.8pp in copy); the one thing that paid was BETA (+109.5%, capturable only as a risk-managed overlay). (#4 Jito back-run MEV remains parked/unexplored.) — slv1-strategy-candidates-2026-07-04
2026-07-04
- Strategy-candidates menu created — post-NO-GO decision-space note so parallel exploration can pick any angle up cold. Four candidates chosen to reuse banked assets: Chainstack non-archival RPC (realtime/send-tx only, NOT historical), banked Jito ShredStream (pre-confirmation tx visibility — the rarest UNUSED asset; copy-trading never needed it), Jito bundles, GMGN browser deep-data, shelved
solv1-rigshred consumer,solv1-alphaharness. Meta-filter: latency is commoditized table-stakes, SELECTION is the durable edge (+14.8pp), beta swamps skill in a bull (+109%). ACTIVE: (1) co-buy consensus signal (≥K quality wallets pile into one token — dodges single-wallet survivorship, cheapest test on existing data) · (2) data-filtered launch sniper (ShredStream detects pump.fun launches pre-confirmation → Jito-bundle snipe quality-filtered launches; no survivorship/decay but most bot/rug-heavy → feasibility-first,docs/sniper-feasibility.md). Parked: (3) meme-beta timing (harvest the beta), (4) Jito back-run MEV (tip-auction vs pro firms, lowest priority) — slv1-strategy-candidates-2026-07-04 - solv1-alpha FIRST REAL VERDICT: NO-GO on naive copy-trading — run
f02ed44f(3wk train / 1wk test, 28-day GMGN harvest, local Docker Postgres). Funnel: 121 harvested → 84 bots auto-rejected → 37 copyable → cohort of 8 (cuts: unprofitable 12, min_winrate 10, min_trades 1; ~1/3 of “top leaderboard” wallets fail an honest on-chain re-derivation). 231 positions priced with real 1s-kline decay. Cohort net +23.0% (decayed, after fees) vs a random 50-meme basket +109.5% and below the SOL-hold+10pp bar → NO-GO. Segment breakdown (the insight): scalp −20.5% (entry decay destroys fast copies), swing +3.4%, position +296.1% (edge concentrates in long/decay-tolerant holds); filtered−raw +14.8pp (adverse-selection filters add value). Survivorship upper bound → hard NO-GO on naive copy; refined hypothesis to test next: copy ONLY position/long-holds, never scalps — solv1-alpha-first-verdict-no-go-2026-07-04 - GMGN-ingester increment BUILT (was “Full scope chosen”) — G2 JSON→Trade mapper
858b5b1, G3 wallet-ingest+Phase-Aac2b6c1, G4 kline-decay+Phase-Bd4e6998; 56 tests; migration0003_solv1_alpha_klines. Decay pivoted to GMGN 1-second klines (/api/v1/token_kline/sol/<token>?resolution=1s): full per-fill harvest of 391 tokens was infeasible, klines give ~100% coverage at one request/token. Harvest bridge (as built) = browser same-origin fetch → blob download to~/Downloads(a localhost sink is CSP-blocked; needs the site’s “automatic downloads” permission once); a fire-and-forget async page loop harvests unattended; GMGN rate-limits ~1.3k fetches/session (the ceiling that forced the kline pivot) — solv1-alpha-gmgn-ingester-increment-2026-07-04 solv1-alphavalidation backtest built — Rust walk-forward go/no-go harness (workspace memberalpha/, sibling to the now-shelvedsolv1-rig) rendering a structured GO/NO-GO on the copy-trading edge from historical wallet data, before any live rig or capital. 16 tasks + 1 whole-branch-review must-fix, subagent-driven on Opus (each Opus-implemented + Opus-reviewed); commits67183a6..2f1f69b(17), 48 tests green vs a live throwaway Postgres. Pipeline: GMGN universe → index → walk-forward split (created_at − test_weeks) → net-SOL-flow score → adverse-selection filters (wash / copy-bait / age-funding) → precedence-ordered cohort → non-tautological lookahead guard → paper-mirror (real decay + fees +sol_sizesweep) → SOL-hold + random-basket benchmarks → 4-condition verdict + verbatim survivorship caveat + 10 limitations. 7solv1_alpha_*tables on Supabasemgmt. Final review: walk-forward integrity sound, no train/test leak — solv1-alpha-validation-backtest-2026-07-04- Data-source pivot — the first real run produced no verdict: the Chainstack node is non-archival (
getSignaturesForAddresskeeps ~3h; an active wallet pages out at 2.9h) so multi-week indexing is impossible, and the raw GMGN 7d-PnL leaderboard is polluted (24 sampled ≈ 21% HFT bots / 29% dead / ~0% steady copyable humans;CyaE1V…= Cented, 609k followers). Fix: harvest per-wallet trades from GMGNwallet_activity/sol?wallet=&cursor=data.nextvia same-origin fetch in claude-in-chrome (browsercf_clearancebeats Cloudflare; headless curl/reqwest = 403); rich schema (tx_hash, event_type, token, quote_amount SOL, fees, dex), no slot → synthetic slot from timestamp — solv1-alpha-data-source-pivot-2026-07-04 - GMGN-ingester increment chosen (Full scope) — browser-harvest-to-JSON (Claude drives same-origin fetch) → Rust file-ingester →
solv1_alpha_trades; analysis A8–A16 reused, RPC indexing A4–A7 replaced. Two-phase semi-manual run: harvest wallet activity → ingest+score+filter+cohort → harvest cohort-token full fill streams → mirror(real decay)+bench+verdict. Tasks G1 harvester (+bot/dead filter: activity-rate + smartmoney), G2 JSON→Trade mapper, G3 wallet ingest, G4 token-fill harvest+ingest, G5 run_all rewire — solv1-alpha-gmgn-ingester-increment-2026-07-04
2026-07-03
- Initialized project folder + overview for new Solana meme-coin trading project (repo
~/coding/slv1) — slv1 - Documented executive feasibility analysis of Strategy #1 (Jito-shreds copy trading): CONDITIONAL GO, 2–4 wk measurement MVP on managed feeds, no colo pre-Alpenglow; key structural insight: mirror trades can’t land before slot N+1, edge = wallet selection not latency — slv1-copy-trading-feasibility-2026-07-03
- Round 2 gap-closure integrated into the feasibility note (56-agent slimmed Opus run, source now Rev 2): Alpenglow defused near-term (Votor-only, keeps Turbine — kill trigger re-pegged to the unscheduled Rotor SIMD); Jito ToS structurally adverse → build feed-agnostic; ~120ms edge corroborated (still self-measure); adversarial-wallet detection partial (Wallet Master); EU regulatory grey zone. Verdict sharpened: desk research exhausted, next step is the Week-1 rig — slv1-copy-trading-feasibility-2026-07-03
- Logged user workflow directive: run subagent fan-out fleets on Opus (never Fable — burns usage limits), prefer slimmed deep-research shape (4 angles / 10 sources / 12×2 votes ≈ 56 agents, ~1.75M tokens vs ~103 agents, ~3.24M) — deep-research-subagent-fleet-directive
- Spec-grounding pass on the Week-1 measurement-rig design (
docs/superpowers/specs/2026-07-03-measurement-rig-design.md): 3 parallel Opus verification agents (feeds / chain / infra) caught 7 material errors pre-implementation — including a 10–100× venue-volume estimate error and an upstream-fleet Rust OTel root cause. Reusable method: run a per-domain verification panel over a design spec before building — slv1 - Root-caused the house-wide “Rust OTel logs missing in SigNoz” as
tracing-opentelemetrynot exporting logs by design; fix = wire theopentelemetry-appender-tracingbridge as a third layer. Cross-project (deploy fleet:pmv2-position-manager/cohort/tg), routed todev-setup/, relayed via babylon DM #1040 — rust-otel-logs-signoz-export - Supabase-from-GCP connection recipe: Supavisor session mode :5432 (transaction :6543 breaks sqlx prepared statements; direct
db.<ref>host is IPv6-only vs IPv4 GCP VMs);postgresbypasses RLS via table ownership not BYPASSRLS (that’sservice_role) — never FORCE RLS on owner-written tables — supabase-from-gcp-connection-gotchas - Solana v0/ALT venue-classification trap: top-level program IDs are always static (
require_static_program_ids), but CPI-invoked (router / Jupiter) venue programs can be ALT-loaded and are invisible to shred static-key scans → geyser leg is venue authority, shreds = hint only. Plustip_floorf64-SOL,e2-standard-2, SIMD-0525 400→200ms corrections — solana-v0-alt-classification-trap solv1-rigincrement 1 built — Rust dual-feed Solana latency rig producing the shred-vs-Yellowstone arrival-delta kill-criterion data. 15 tasks, subagent-driven on Opus, per-task + whole-branch review = “ship it” (0 critical); 21 tests + pipeline proven END-TO-END against a throwaway Docker Postgres (ReplayFeed→matcher→histogram→sink→read-back). On gitmain(local, unpushed); live capture blocked on RPC Fast creds + a GCP FRAe2-standard-2VM. Load-bearing integrity decisions: pre-decodeInstanton both feeds/one clock, Yellowstone = venue authority, histogram = percentile authority (raw rows 1:100), no MutexGuard across await — solv1-rig-increment-1-build-2026-07-03- Routed 2 reusable build learnings to
dev-setup/: Rust+protoc in Docker/CI needslibprotobuf-devfor well-known-type.protoimports — rust-protoc-docker-wkt-proto; yellowstone-grpc 12.x/13.x proto module layout (solana::storage::confirmed_block), the newtoken_accountsfilter field, and client/proto non-lockstep version pinning — yellowstone-grpc-proto-layout-versioning - Appended build-time gotchas to existing notes:
sqlx↔Postgres type-decode casts (make_interval(hours => $1::int),sum(x)::bigint) — supabase-from-gcp-connection-gotchas; corrected the Rust OTel version-pinning (tracing-opentelemetry 0.33needs otel0.32; pintracing-opentelemetry 0.32to stay on the 0.31 stack) — rust-otel-logs-signoz-export