🗄 ARCHIVE — shipped work (204) · impact category + comments
🛡 RELIABILITY 85💰 PROFIT-EDGE 77⚙️ CAPABILITY 21🔎 DISCOVERY 16💵 COST 5ALL
🏁 #729 Wire deepseek-v4-flash-0731 into TDE m20_shadow empty human_score slot (LLM trade-selection synthesis)💰 PROFIT-EDGE2026-08-11
2026-08-11 20:26 cli SHIPPED, shadow-only, verified live with real data. Built lib/llm_attention_scorer.py (deepseek-v4-flash-0731 via hermes CLI, fails-open to None on any error/empty-evidence) + m20_human_scorer.py (async batch job, NOT wired into the synchronous paper_universal.py/TDE hot path - tails trading_decisions.jsonl via a byte-offset cursor, gap-proof, MAX_PER_RUN=40 cost/runtime cap). Populates the human_score slot in lib/m20_shadow.py that has existed since it was built but had n=0 forever. Cron */10min. LIVE PROOF (real run against real current paper-trading candidates, not synthetic): 44 admitted candidates in one tail window, 37 scored, 1 error, 2 skipped (no evidence tracks, correctly fails open). Output quality is genuinely good: correctly distinguished a thin single-B-tier-caller signal (human_score 8-20, script_score 52.5 - the linear score liked it, the LLM correctly did not) from real 7-channel S-tier social confluence (human_score 68, script_score 82.5, arms all TRUE) while appropriately discounting for the specific callers negative historical paper EV and absent floor-accumulation evidence - exactly the nonlinear contextual judgment admission_gate cannot do (see original proposal: linear score r=0.020 vs return). Sample: /opt/data/trading/m20_human_scores.jsonl. GOVERNANCE: zero write access to any live trading file anywhere in the codebase; only populates a measurement field. NEXT (not done this session, deliberately deferred to match this systems own patience-before-proof doctrine, e.g. paper_edge_incubator needs n>=25/d>=5 before any verdict): once real volume accumulates, join m20_human_scores.jsonl into paper_scorecard/m20 dashboard reporting, then replay_engine + param_evaluator FDR-vs-M20_SCRIPT_HIGH-control before any promotion to a real conv_mult/admission input + explicit Chris approval, per feedback_edge_discovery_mandate.
🏁 #730 exit_lab domain 168h+ stale, degrading decision_fabric health on every single trade decision right now🔎 DISCOVERY2026-08-11
2026-08-11 20:11 cli FIXED + likely closed the 2-month B2 mystery as a side effect. Root cause: cron_stuck_watchdog.py (host root crontab, 13-59/15 * * * *) ran 3x docker exec calls with NO -u hermes, defaulting to root — its unconditional every-15min health-check (hermes cron status) exactly matches the observed ~15min ownership-drift cadence in hermes_data_guard.log (512 events/125h). Patched all 3 call sites to -u hermes (backup: cron_stuck_watchdog.py.bak_260811_uhermes), verified syntax+live-run. Also hardened exit_optimizer_core.py CHAMPS write with retry-with-backoff (v1.3.0, belt-and-suspenders regardless of root cause) and manually reran it live: exit_champions.json regenerated fresh (was 169h stale). Found decision_fabric.py cached snapshot (decision_intelligence_fabric.json, what TDE actually reads) had ZERO producer cron ever - only refreshed on manual run, so even a fixed data source would have stayed invisible. Added cron 4-59/15 * * * * decision_fabric.py write. Verified end-to-end: fresh_coverage_pct 64.71 to 88.24, exit_lab domain fully cleared from degraded/stale. WATCH: confirm hermes_data_guard drift-event rate drops over next 24-48h to fully validate the B2 hypothesis (correlation strong, not yet proven causal over time).
🏁 #731 strategy_proof_registry.json does not exist - TDE proof_status() structurally stuck at RESEARCH_ONLY forever, ENTER action has never fired once💰 PROFIT-EDGE2026-08-11
2026-08-11 20:12 cli RESOLVED - not a broken link, a never-scheduled producer. sol_cluster_fomo_challenger.py (PIT_SOL_CLUSTER_FOMO_V1 pre-registered challenger) is the correct, real writer of strategy_proof_registry.json - proper atomic tmp+replace write, correct schema matching TDE proof_status() exactly. It had ZERO cron entry and had literally never been run once (no log file existed). Same never-cronned pattern as dashboard_insight_harvester/performance_surfaces.py/wallet_s_tier_graduation. Test-ran it live: clean, honest output (n=60, DESCRIPTIVE_SHADOW_ONLY, promotion_eligible=false, correctly fails closed on low sample). Registry file now exists + populated, TDE reads it correctly. Scheduled daily 58 12 * * *. TDE ENTER pathway now has a real (if not-yet-proven) candidate flowing through it for the first time.
🏁 #732 Roadmap dashboard: #id + date filters, archive fix, TG post rich-formatted⚙️ CAPABILITY2026-08-11
2026-08-11 20:28 cli shipped same session, see detail
🏁 #733 Built uncronned_producer_watchdog.py — closes the built-but-never-scheduled bug class (5th+ recurrence) after Chris flagged it directly⚙️ CAPABILITY2026-08-11
2026-08-11 20:47 cli shipped, cronned daily, verified live against real data (47 findings), see detail
🏁 #734 Architecture diagrams: new drillable Decision Engine page + ATTENTION page wired to real LLM scores + arch.html cross-links⚙️ CAPABILITY2026-08-11
2026-08-11 21:02 cli shipped and verified live, see detail
🏁 #735 Decision engine improvements: evidence_tracks widened 3->6 tracks (volume+accumulation+narrative), oggy_boost_tuner model+flag fix, diagrams updated💰 PROFIT-EDGE2026-08-11
2026-08-11 21:21 cli shipped, verified live end to end, see detail
🏁 #736 arch.html legacy 19-card knowledge base refreshed against live code💰 PROFIT-EDGE2026-08-11
2026-08-11 21:24 cli verified via 2 independent spot-checks, both exact matches, see detail
🏁 #737 Model policy correction: system_edge_digest.py + wallet_param_windows.py -> flash-0731, found+fixed a real silent reasoning-token truncation bug, cost bible updated with new standing law💰 PROFIT-EDGE2026-08-11
2026-08-11 21:42 cli shipped, verified live end to end, see detail
🏁 #738 Systematic bug-class sweep + oggy outcome-tracking fix + model_hygiene_watchdog.py (sustainable daily sweep)💰 PROFIT-EDGE2026-08-11
2026-08-11 22:06 cli shipped, verified live, watchdog cron 06:30 UTC daily, see detail
🏁 #661 X/Twitter half of #639: capture caller follower_count via xurl (Telegram half already shipped)🔎 DISCOVERY2026-08-09
2026-08-09 18:17 cli REDIRECTED + SHIPPED 260807 (Chris: use GMGN + easy proxies before expensive X/Twitter calls, approval for X API deferred). Investigated GMGN token info payload directly (gmgn-cli token info --raw) and found stat.degen_call_count/signal_count/fresh_wallet_rate/top_10_holder_rate/bot_degen_rate + wallet_tags_stat.{fresh_wallets,renowned_wallets,smart_wallets,top_wallets,whale_wallets,sniper_wallets,bundler_wallets} -- ALREADY computed by GMGN, already free. degen_call_count specifically is GMGN own count of KOL/degen callers on a token -- the closest already-available proxy to caller/audience reach without any X/Twitter follower API. BEST PART: ta_capture.py _gmgn_signed_flow() ALREADY calls token info for every signal (for buy/sell volume) -- these fields were sitting in the same already-fetched response, just discarded. Zero additional API calls. Shipped ta_capture.py v1.2.0->v1.3.1: added the 12 gmgn_* fields to the ta{} block (same dict chart_archetype lives in), so they auto-flow to every downstream consumer (token_ta_cache.json, wallet_buysize_signals.jsonl ta block, combo_discovery.py #638, trading_decision_engine.py) with zero additional plumbing. VERIFIED end to end: called capture_ta() live against a real base-chain token, confirmed all 12 fields populated with real values (gmgn_fresh_wallets=11, gmgn_top_10_holder_rate=0.1916, gmgn_fresh_wallet_rate=0.022, etc), chart_archetype capture still works unaffected. No restart needed -- ta_capture.py is imported fresh inside each of ~10 cron-scheduled detector scripts (sniper_detector.py, accumulation_detector.py, cluster_detector.py, etc), not a long-running process. Backup: ta_capture.py.bak_260807_gmgnstats. Noticed but NOT touched (pre-existing, unrelated, already fail-soft): capture_ta() logs alpha feature ladder capture failed: unsupported operand type(s) for /: NoneType and float on every call -- separate module (alpha_feature_ladder.py), caught by its own try/except, did not block or affect this work; worth a look separately. NEXT: once combo_discovery.py daily cron accumulates enough joint samples with these new fields (need several days), add them as new combo conditions same as #638 chart/fresh-wallet fields. X/TWITTER HALF (caller follower_count/account_age via xurl) remains queued pending Chris approval -- not built, no cost incurred.
2026-08-09 22:01 cli ADDENDUM 260807: closed the measure-loop per Chris standing rule (feedback_enrichment_must_be_measured) same session as capture. combo_discovery.py v1.1.0 -> now 46 conditions (was 40): added gmgn_calls_any/gmgn_calls_multi (degen_call_count>=1/3), gmgn_fresh_rate_hi (fresh_wallet_rate>=0.05), gmgn_bot_rate_hi (bot_degen_rate>=0.15), gmgn_renowned_any/gmgn_smart_any (wallet_tags_stat>=1) -- all UNVALIDATED PRIORS, explicitly labeled as such in-code, will refine once real coverage accumulates. Ran live: compiles clean, 9,205 positions scanned, gmgn_fresh_rate_hi/bot_rate_hi/renowned_any/smart_any already have 5-6 real hits (ta_capture.py has been actively capturing since #661 shipped earlier today) confirming the field->measurement pipe is genuinely connected end to end, not just code that compiles. gmgn_calls_any still 0 -- degen_call_count specifically has not fired yet in the handful of signals captured so far, expected given how new this is. Backup: combo_discovery.py.bak_260807_gmgnproxy.
🏁 #663 Narrative catalyst writer missing: narrative_catalysts.jsonl has only 1 event ever (now expired) -- whalemover_signals.jsonl narrative_tags/narrative_events permanently empty by design⚙️ CAPABILITY2026-08-09
Claude Filed per the 260807 dead-field watchdog's first-run finding (see item #279's last comment and /opt/data/knowledge/project_deadfield_watchdog_260807.md). Diagnosis-only per standing doctrine (feedback_diagnosis_outlives_remedy) -- did not fabricate a stub narrative writer or force-populate the fields. Posted to TG thread 203.
Claude 260809: built catalyst_detector.py (/opt/data/scripts/catalyst_detector.py, v1.0.0), cron-wired every 20m (jobs.json id 6994780f3082, 5,25,45 * * * *, no_agent, deterministic $0). Scans alphafeed/userbot_raw.jsonl (8h window), reuses narrative_pulse.py's proven CA/ticker extraction + channel win-rate + caller_ranking.json proven-KOL weighting. Hard-gates on an actual CA present in text (never fires on ticker alone, per narrative_layer.py's exact-CA-only doctrine). Resolves bare 0x CA -> chain via DexScreener search (adapted from tdwa_trigger_processor.py's resolve_pair_link pattern) so the exact chain+CA join can't silently break -- unresolvable CAs are skipped, never guessed. Firing bar MEASURED live and raised above narrative_pulse.py's own 2-channel digest bar: 2 channels fired on 98 CAs/8h (base-rate noise from a few very high-volume trench chats), 4 channels measured at a much more plausible 15 CAs/8h -- shipped min_channels=4 OR a proven KOL caller (caller_ranking.json >=8 calls/>=50% ROI, same bar as narrative_pulse.py), ranked by weight, capped at 8 events/run. All events proof_status=untested_challenger (shadow-only, THROTTLE/ACCUM-2 doctrine) with tunable boost (6-10, below the manual seed's 10) and 48h expiry (shorter than the seed's 7d -- automated multi-channel pump narratives decay fast). Verified live: fired 16 real events off the actual buffer (backed up narrative_catalysts.jsonl first), dedup confirmed (2nd run did not refire the same CAs), and proved the FULL loop closes -- NL.enrich() on a synthetic signal for a freshly-written CA correctly returns narrative_flag=True with populated tags/boost/event_id, and a negative-control CA correctly returns False. 'Front and center': checked before building new wiring -- accumulation_engine.py (v1.13.0, thread 92561), whalemover_tracker.py (thread 182, both HTML+fallback branches) and wallet_buysize_edge.py ALREADY call NL.enrich()+NL.flag_line() directly into their live Telegram alert text; this gap gets fixed automatically now that the file has real data, no dashboard/alert-path changes were needed. paper_universal.py enriches its outcome records too (no flag_line surfacing there, informational only, left as-is). Backups: narrative_catalysts.jsonl.bak_260809_before_catalyst_detector, jobs.json.bak_260809_catalyst_detector, todo.json.bak_260809_catalyst_detector. Follow-up left explicitly out of scope: config knobs are all in CFG/_DEF with no /opt/data/trading/catalyst_detector_config.json override written yet (same pattern as accum_engine_config.json, create one if thresholds need live tuning); outcome_tracker/replay_engine grading of these challenger events against a control cohort per standing backtest doctrine has not been run yet -- that's the actual promotion gate before boost values should be trusted beyond shadow. Posted to TG thread 203.
🏁 #664 FIXED: trench_signals.jsonl vol.liq_mcap_ratio was permanently null -- trenches_detector.py never copied GMGN's `liquidity` field into the output row🔎 DISCOVERY2026-08-09
Claude Filed per the 260807 dead-field watchdog's first-run finding (/opt/data/knowledge/project_deadfield_watchdog_260807.md). One real bug fixed (vol.liq_mcap_ratio missing input), rest diagnosed and allowlisted per standing doctrine (feedback_diagnosis_outlives_remedy) -- did not fabricate perps data or a buyer-count source that doesn't exist. Verified with a live dry-run against real GMGN trenches API data (not just unit logic). Posted to TG thread 203.
🏁 #683 Extend EP-5 to catch FIELD-level GMGN gaps too (command-level only today) -- the mechanism that should have caught the degen_call_count find💰 PROFIT-EDGE2026-08-09
2026-08-09 21:58 cli Done by Claude 260807: edge_ep5_meta_discovery.py v1.0.0 -> v1.1.0. Added field_coverage_check() -- samples 2 live token-info calls (WETH/base, wSOL/sol, chosen for guaranteed full-schema responses), flattens every NUMERIC leaf field (numeric-only = no denylist to maintain, cosmetic fields are strings), corpus-checks each bare field key the same way command_signatures() already checks commands, flags anything never referenced in any local .py script. Wired into main(), queue_field_proposals() files one hermes_todo item per newly-found field (capped 5/run to avoid flooding, dedups against existing todo titles like the existing queue_missing_proposals()). RAN LIVE: 0 errors, found 30 real unwired numeric fields on token info alone (buys_1m/6h/24h + sells_* transaction-count fields distinct from the buy_volume_* USD fields already captured, ath_price, dexscr_ad/boost/trending paid-promotion flags, twitter_create_token_count/twitter_del_post_token_count deployer-reputation signals, creator_wallets -- this last one is a field I personally missed when manually wiring #661, confirming the check catches real gaps beyond what I already knew to look for). Auto-filed #688-692 for the top 5, correctly proposal-only per the hard_gate. EP-5 cron already existed (every 2d, 47 15 */2 * *, from earlier in this session) -- confirmed live via job list, next scheduled run 260811, so this now actually executes on the committed cadence instead of sitting built-but-unscheduled.
🏁 #696 Cron stuck: 4369748093b0 (script_timeout)🛡 RELIABILITY2026-08-09
2026-08-09 22:37 watchdog script_timeout failure, 2 attempts, open since 2026-08-09 22:22 UTC, last run seen 2026-08-09T22:14:10. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-09 22:52 watchdog script_timeout failure, 3 attempts, open since 2026-08-09 22:22 UTC, last run seen 2026-08-09T22:14:10. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-10 13:07 watchdog script_timeout failure, 3 attempts, open since 2026-08-09 22:22 UTC, last run seen 2026-08-10T12:55:44. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-11 13:07 watchdog job recovered / escalation cleared
🏁 #697 Monaco predecessor miner → multi-chain (BASE/BSC/ETH/SOL), Chris-directed 260809⚙️ CAPABILITY2026-08-09
2026-08-09 23:40 cli BASE+ETH shipped. ETH lane LIVE and producing (34s, 1 anchor token, 6 candidates, cron 13:20 daily, promotion OFF). BASE ported+verified but 0 anchors — PRIMARY is airdrop-dominated there, split to its own item. Port design: CHAIN_CFG with per-chain v2/v1 hosts, anchors, block-lookback calibration (2M blocks is 2.7d on RH but 46d on Base / 277d on ETH), Blockscout v1 getLogs instead of RPC (no keyless ETH RPC reachable), per-chain output files, AUTO_PROMOTION off for new chains. Caught+fixed 9 hardcoded 'robinhood' literals that would have written BASE/ETH wallets into wallet_db as chain=robinhood. RH regression verified identical to baseline (20 candidates, promotion still on). BSC+SOL remain — separate item.
🏁 #638 Continuous Goldilocks combo engine: reactivate+extend+cron combo_discovery.py (currently one-shot, 12 days stale, missing chart/wallet-tier features)💰 PROFIT-EDGE2026-08-08
2026-08-09 16:53 cli Done by Claude 260807: combo_discovery.py v1.0.0 -> v1.1.0. (a) 14 new conditions: chart_pattern_intel bias groups (chart_continuation/reversion_risk/wait, fixed a bucketing bug where WAIT_FOR_BREAKOUT fell through all 3) + 2 named classes (chart_distribution_plateau/chart_bull_flag) from the ta{} block ta_capture.py already stamps; fresh-wallet buy-USD tiers (fresh_buy_500_2k/2k_4k/4k_plus) using is_fresh+buy_usd (NOT fresh_max_buy_usd -- that field is DEAD, verified 0/10029 non-null, filed separately below); full social_best_caller_tier S/A/B (already on the ledger row directly, ~12pct coverage) replacing the old is_kol bool that only ever fired on 2/9114 rows. (b) cron-wired: hermes cron create job 67f0f8e50479, daily 06:17 UTC, --no-agent, verified live via hermes cron list (was one-shot since 260726, 12+ days stale). (c) canonical_validation.py wired onto every GRADUATED combo, run HONESTLY (spec=None, no attestation faked) -- current run: 0/15 pass, all show real blockers (preregistration, matched_control, execution_model, etc) which is correct behavior for a one-shot exploratory scan, not a bug. (d) named 3-way combo (fresh-buy-tier x chart-archetype x volume) will surface automatically once enough joint samples accumulate -- today chart+fresh-buy coverage is thin (single-digit/low-double-digit n, both fields only went live 260731-260806) so it has not fired yet; this is expected, not broken, and will fill in as the daily cron accumulates history. Verified: compiles clean, ran live against 9,114 closed positions (86pct joinable), backup at combo_discovery.py.bak_260807_extend.
🏁 #639 New capture gap: zero follower/account metadata on social calls -- blocks Chris earliest-follower topping-signal hypothesis🔎 DISCOVERY2026-08-08
2026-08-09 17:00 cli TELEGRAM HALF done by Claude 260807: userbot.py v1.0.4 -> v1.0.5. Added channel_member_count field to every buffered record (the tier>0/watchlisted alpha-signal path only, not TA/onboard/todo/tdwa internal capture) via GetFullChannelRequest, 12h per-channel cache to avoid API load, fail-safe (lookup error -> field is None, message capture never blocked/dropped). RESTART executed carefully on the live host process (uptime since Aug 4): confirmed via /proc/PID/environ + userbot_watchdog.sh source exactly how it is normally launched/monitored (5min cron watchdog, pidfile-based), killed the correct in-container PID (4151772 -- host ps showed a different PID number for the SAME process due to separate PID namespaces, first kill attempt targeted the wrong namespace and correctly no-opped), relaunched via userbot_watchdog.sh, confirmed clean reconnect (23 tier-1 channels resolved, watchlist loaded, Online as @FutureLanding), then polled the live buffer for 90s: real member counts flowing correctly across many channels (chadsroom 2916, tncportal 5695, oggysignalbase 390, spydefi 41836, burpboard 6446, oggyrobinhoodsignal 56), cache working (repeat value for repeat channel), zero errors in the log, process stable 2min+ post-restart. Backup: userbot.py.bak_260807_memcount. NOTE: Telegram exposes no account-creation-date API for individual senders, so channel-size-at-call-time is the honest achievable proxy for the Telegram half of the hypothesis -- per-sender account age is not obtainable this way. X/TWITTER HALF NOT DONE -- separate pipeline (social_catalyst.py / KOL relay), not touched this session, needs its own investigation before editing; filed as a new item.
🏁 #538 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 00:52 watchdog job recovered / escalation cleared
🏁 #540 OpenRouter prepaid balance low: $5.95💵 COST2026-08-06
2026-08-06 03:06 watchdog Prepaid balance $5.72 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 06:05 watchdog Prepaid balance $5.71 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 07:07 watchdog Prepaid balance $5.54 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 08:06 watchdog Prepaid balance $3.44 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 09:05 watchdog Prepaid balance $3.36 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 10:06 watchdog Prepaid balance $3.13 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 12:05 watchdog Prepaid balance $2.52 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 13:05 watchdog Prepaid balance $2.51 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 14:09 watchdog Prepaid balance $2.30 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 15:07 watchdog Prepaid balance $1.76 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 16:09 watchdog Prepaid balance $1.55 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 17:05 watchdog Prepaid balance $1.32 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 18:06 watchdog Prepaid balance $1.28 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 19:05 watchdog Prepaid balance $1.17 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 21:05 watchdog Prepaid balance $0.87 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 22:07 watchdog Prepaid balance $0.70 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-06 23:05 watchdog Prepaid balance $0.35 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-07 00:06 watchdog Prepaid balance $0.17 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-07 01:06 watchdog Prepaid balance $0.03 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-07 03:05 watchdog Prepaid balance $-0.18 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-07 06:05 watchdog Prepaid balance $-0.19 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-07 13:05 watchdog Prepaid balance $-0.20 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-07 17:05 watchdog balance recovered: $19.06
🏁 #541 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 01:54 watchdog job recovered / escalation cleared
🏁 #583 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 06:52 watchdog job recovered / escalation cleared
🏁 #585 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 07:22 watchdog job recovered / escalation cleared
🏁 #587 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 07:52 watchdog job recovered / escalation cleared
🏁 #588 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 08:22 watchdog job recovered / escalation cleared
🏁 #589 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 12:52 watchdog job recovered / escalation cleared
🏁 #591 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 13:53 watchdog job recovered / escalation cleared
🏁 #592 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-06
2026-08-06 14:22 watchdog job recovered / escalation cleared
🏁 #480 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 01:22 watchdog job recovered / escalation cleared
🏁 #482 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 01:52 watchdog job recovered / escalation cleared
🏁 #527 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 06:52 watchdog job recovered / escalation cleared
🏁 #530 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 07:38 watchdog script_timeout failure, 2 attempts, open since 2026-08-05 07:23 UTC, last run seen 2026-08-05T07:38:25. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-05 07:52 watchdog job recovered / escalation cleared
🏁 #531 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 12:53 watchdog job recovered / escalation cleared
🏁 #533 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 13:23 watchdog script_timeout failure, 2 attempts, open since 2026-08-05 13:08 UTC, last run seen 2026-08-05T13:23:16. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-05 13:38 watchdog script_timeout failure, 3 attempts, open since 2026-08-05 13:08 UTC, last run seen 2026-08-05T13:38:06. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-05 13:52 watchdog job recovered / escalation cleared
🏁 #534 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 18:52 watchdog job recovered / escalation cleared
🏁 #536 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 19:23 watchdog script_timeout failure, 2 attempts, open since 2026-08-05 19:09 UTC, last run seen 2026-08-05T19:23:39. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-05 19:38 watchdog script_timeout failure, 3 attempts, open since 2026-08-05 19:09 UTC, last run seen 2026-08-05T19:37:43. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-05 19:52 watchdog job recovered / escalation cleared
🏁 #537 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-05
2026-08-05 20:22 watchdog job recovered / escalation cleared
🏁 #426 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-04
2026-08-04 01:07 watchdog job recovered / escalation cleared
🏁 #431 P1: 46 ledger rows have exit_ts < entry_ts (negative hold)💰 PROFIT-EDGE2026-08-04
2026-08-07 20:32 cli Fixed 260807: paper_universal.py v1.20.1 adds a write-time exit_ts>=entry_ts guard at the actual ledger-write site (line ~1043). Violating rows are quarantined to paper_ledger_quarantine.jsonl (never lost, never booked) instead of being silently written into paper_universal_ledger.jsonl. Verified: py_compile clean, runtime import clean, QUARANTINE constant correctly defined. Backup at paper_universal.py.bak_260807_431guard.
🏁 #472 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-04
2026-08-04 07:08 watchdog script_timeout failure, 2 attempts, open since 2026-08-04 06:52 UTC, last run seen 2026-08-04T06:53:57. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-04 07:24 watchdog script_timeout failure, 3 attempts, open since 2026-08-04 06:52 UTC, last run seen 2026-08-04T07:23:27. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-04 07:38 watchdog script_timeout failure, 3 attempts, open since 2026-08-04 06:52 UTC, last run seen 2026-08-04T07:37:41. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-04 07:52 watchdog job recovered / escalation cleared
🏁 #476 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-04
2026-08-04 13:23 watchdog script_timeout failure, 2 attempts, open since 2026-08-04 13:08 UTC, last run seen 2026-08-04T13:08:19. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-04 13:38 watchdog script_timeout failure, 3 attempts, open since 2026-08-04 13:08 UTC, last run seen 2026-08-04T13:37:30. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-04 13:52 watchdog job recovered / escalation cleared
🏁 #477 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-04
2026-08-04 19:08 watchdog job recovered / escalation cleared
🏁 #374 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-03
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #375 Cron stuck: 16ab8a06191a (script_timeout)🛡 RELIABILITY2026-08-03
2026-08-03 01:38 watchdog script_timeout failure, 2 attempts, open since 2026-08-03 01:22 UTC, last run seen 2026-08-03T01:10:06. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-03 01:54 watchdog script_timeout failure, 3 attempts, open since 2026-08-03 01:22 UTC, last run seen 2026-08-03T01:10:06. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-03 03:22 watchdog job recovered / escalation cleared
🏁 #376 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-03
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #377 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-03
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #378 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-03
2026-08-03 07:52 watchdog job recovered / escalation cleared
🏁 #379 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-03
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #380 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-03
2026-08-03 12:52 watchdog job recovered / escalation cleared
🏁 #382 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-03
2026-08-03 13:23 watchdog job recovered / escalation cleared
🏁 #383 Cron stuck: 92a096984817 (credit_402)🛡 RELIABILITY2026-08-03
2026-08-03 16:52 watchdog job recovered / escalation cleared
🏁 #387 EDGE SIGNAL: SMART_INTEL/smartmoney is the one family with real-looking edge (pbo=0.05, SPA p=0.04) -- targeted deep pass💰 PROFIT-EDGE2026-08-03
2026-08-04 01:38 cli RETRACTED 260803: the pbo=0.05/SPA-p=0.04 result this was based on was itself an overfitting artifact -- sa_accum was miscategorized into SMART_INTEL (see #423), forcing common_n down to 15 and aligning on a lucky short window. After fixing the classification, SMART_INTEL common_n rose to 47 and pbo WORSENED to 0.85. Full diagnostics (previously computed but discarded, see #424) now show SMART_INTEL net_mean=-48.4%/trade, deflated-Sharpe probability=1.8e-07, 0/4 walk-forward OOS folds positive, 100% simulated ruin probability. Do not treat SMART_INTEL as a real-edge family. Superseded by #424.
🏁 #424 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-03
2026-08-03 19:24 watchdog script_timeout failure, 2 attempts, open since 2026-08-03 19:08 UTC, last run seen 2026-08-03T19:23:21. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-03 19:38 watchdog job recovered / escalation cleared
🏁 #363 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-02
2026-08-02 01:08 watchdog script_timeout failure, 2 attempts, open since 2026-08-02 00:53 UTC, last run seen 2026-08-02T01:08:17. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-08-02 01:22 watchdog job recovered / escalation cleared
🏁 #364 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-02
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #366 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-02
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #367 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-02
2026-08-02 07:22 watchdog job recovered / escalation cleared
🏁 #368 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-02
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #369 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-02
2026-08-02 07:55 watchdog job recovered / escalation cleared
🏁 #370 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-02
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #371 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-02
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #372 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-02
2026-08-02 19:52 watchdog job recovered / escalation cleared
🏁 #373 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-02
2026-08-02 20:23 watchdog job recovered / escalation cleared
🏁 #341 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #343 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-01
2026-08-01 01:22 watchdog job recovered / escalation cleared
🏁 #344 Propagate chart_archetype badges to paper trading cards (currently 0 refs in paper_dashboard_gen.py)⚙️ CAPABILITY2026-08-01
2026-08-07 20:32 cli Done by Claude 260807: inversion_gen.py v1.4.0 (P0 gallery now 7/7 shelf classes incl UNSTABLE_CONSOLIDATION+ORDINARY_CHOP; new P0b section = 12-class chart_pattern_intel gallery, was 0 visuals). paper_dashboard_gen.py v2.20.0: added arch/arch_bias fields (read-only token_ta_cache.json lookup, no network calls) to trade_row() + open-position builder, wired a colored archBadge() into both TCOLS/renderTrades and the open-positions table. Verified live: 31/300 closed + 40/339 open positions carry a real cached archetype (e.g. FAILED_SHELF/REVERSION_RISK, FAILED_BREAKDOWN_RECLAIM/BOUNCE_CANDIDATE) -- low coverage is honest (token_ta_cache only has entries ta_capture.py already fetched, TTL 600s), not fabricated. Both scripts recompiled+ran clean, existing test_plateau_archetypes.py (4/4) and test_chart_pattern_intel.py (6/6) still pass. Backups: inversion_gen.py.bak_260807_archgallery, paper_dashboard_gen.py.bak_260807_archbadge. DISPLAY ONLY as specced -- no admission/sizing/exit wiring, proof_status untouched at HYPOTHESIS_SHADOW_ONLY.
🏁 #345 Cross-process escalation: replace APEX 6h hard-cutoff fusion with a decayed CUMULATIVE score (prototype built+tested, MarsCoin proof: 65.9h -> 1.6h)💰 PROFIT-EDGE2026-08-01
2026-08-01 01:25 cli BACKTESTED on real cohort (30d, 297 winners-with-events vs 300 dud-control), not just MarsCoin -- and the honest result does NOT support replacing apex_runner live fusion: median_lift is NEGATIVE at every HALF_LIFE x THRESHOLD combo tested (-0.2h to -4.5h, i.e. cumulative method fires LATER on average) and FP rate is 6-33%. MarsCoin was a favorable, non-representative case (had known_conv+whalemover weight boost). CORRECT framing found instead: of 297 winners, 178(60%) already get SOME real APEX/PRIME fire under the current 6h system -- it is not broken for bursty confluence, in fact it beats the decay method on speed for that group. 119(40%) never fuse at all, but 88 of those never had 2+ distinct sources in the first place (a coverage gap, not a fusion-speed gap -- no method fixes that). Only 31/297(10%) are TRUE blind spots (2+ real sources, zero fusion ever) -- and apex_cumulative_score(HL=72h,TH=2.0) catches 17/31(55%) of exactly those as NEW detections, zero overlap/risk with the live path. RECOMMENDATION: do NOT replace apex_runner 6h window. Instead add apex_cumulative_score as a SEPARATE low-frequency (daily) slow-burn safety-net pass that only emits on tokens the live 6h system has never fused -- pure additive coverage, no interference with existing paper-lane auto-entry. Still needs Chris go-ahead to cron even in this safer additive form. Backtest data: apex_cumulative_backtest.json.
🏁 #346 Add apex_cumulative_score.py as a DAILY slow-burn safety-net pass (additive only, catches true blind spots the live 6h APEX never fuses)💵 COST2026-08-01
2026-08-03 18:09 cli SCOPE CORRECTION 260803: apex_cumulative_score.py takes a single --ca (single-token forensic tool, cannot run unattended over a live cohort) and its own docstring requires a multi-token backtest before any live promotion -- cron-wiring it as originally worded would have skipped that gate. Built apex_cumulative_daily.py instead (SHADOW/report-only, extends the MarsCoin n=1 proof over the real 7d winner cohort). First live run: 21 tokens, median lift -0.2h, only 3/21 positive -- the MarsCoin case was NOT representative. Do not promote to live alerting on this evidence; correctly gated as report-only per the original scripts own stated bar.
🏁 #347 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-01
2026-08-01 01:52 watchdog job recovered / escalation cleared
🏁 #351 Cron structural_gap_auditor.py DAILY -- standing watchdog for the bug-shape found repeatedly 260731 (disconnected pipelines, hard-cutoff windows, realized-only scoring blind spots)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:09 cli Cron-wired 260803: 0 5 daily, tested clean (398 scripts scanned, 14 orphan/26 hardcut/18 realized-only confirmed still current)
🏁 #353 Cron wallet_s_tier_graduation.py -- gate NEW S-tier promotions behind your approval, leave A-tier auto-graduation untouched🔎 DISCOVERY2026-08-01
2026-08-03 18:09 cli Cron-wired 260803: 10 5 daily. First live run flagged 34 pending S-tier candidates (backlog since 635-wallet bootstrap grandfather, one-time catch-up) -- now in queue for individual review, going forward only new promotions post.
🏁 #354 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #355 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #356 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #357 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-01
2026-08-01 13:22 watchdog job recovered / escalation cleared
🏁 #358 OpenRouter prepaid balance low: $5.87💵 COST2026-08-01
2026-08-01 18:07 watchdog Prepaid balance $5.83 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-01 19:06 watchdog Prepaid balance $5.65 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-01 21:08 watchdog Prepaid balance $5.32 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-01 22:11 watchdog Prepaid balance $5.16 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-01 23:05 watchdog Prepaid balance $5.07 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 00:05 watchdog Prepaid balance $4.98 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 01:07 watchdog Prepaid balance $4.79 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 03:05 watchdog Prepaid balance $4.59 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 06:10 watchdog Prepaid balance $4.56 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 08:05 watchdog Prepaid balance $4.50 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 09:06 watchdog Prepaid balance $4.44 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 10:08 watchdog Prepaid balance $4.23 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 11:09 watchdog Prepaid balance $3.99 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 12:08 watchdog Prepaid balance $3.88 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 13:06 watchdog Prepaid balance $3.76 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 14:08 watchdog Prepaid balance $3.55 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 15:05 watchdog Prepaid balance $3.46 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 16:05 watchdog Prepaid balance $3.38 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 17:05 watchdog Prepaid balance $3.17 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 18:05 watchdog Prepaid balance $3.16 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 19:07 watchdog Prepaid balance $2.99 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 21:06 watchdog Prepaid balance $2.65 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 22:10 watchdog Prepaid balance $2.46 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-02 23:05 watchdog Prepaid balance $2.37 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 00:06 watchdog Prepaid balance $2.31 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 01:06 watchdog Prepaid balance $2.04 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 03:07 watchdog Prepaid balance $1.72 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 04:06 watchdog Prepaid balance $1.65 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 06:06 watchdog Prepaid balance $1.62 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 09:06 watchdog Prepaid balance $1.20 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 10:10 watchdog Prepaid balance $0.95 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 11:09 watchdog Prepaid balance $0.47 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-08-03 12:10 watchdog Prepaid balance $-0.04 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-03 13:08 watchdog Prepaid balance $-0.14 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-03 14:06 watchdog Prepaid balance $-0.19 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-08-04 03:06 watchdog balance recovered: $18.74
🏁 #361 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-08-01
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #362 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-08-01
2026-08-01 19:24 watchdog job recovered / escalation cleared
🏁 #318 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-31
2026-07-31 01:07 watchdog job recovered / escalation cleared
🏁 #319 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #320 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-31
2026-07-31 07:08 watchdog script_timeout failure, 2 attempts, open since 2026-07-31 06:54 UTC, last run seen 2026-07-31T07:07:58. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-31 07:23 watchdog job recovered / escalation cleared
🏁 #321 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #322 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #323 Cron stuck: 922c66af174e (script_timeout)🛡 RELIABILITY2026-07-31
2026-07-31 10:52 watchdog job recovered / escalation cleared
🏁 #324 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-31
2026-07-31 12:53 watchdog script_timeout failure, 2 attempts, open since 2026-07-31 12:37 UTC, last run seen 2026-07-31T12:53:21. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-31 13:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-31 12:37 UTC, last run seen 2026-07-31T13:02:49. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-31 13:22 watchdog job recovered / escalation cleared
🏁 #325 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #326 T5.1 Markov 3-state regime pilot -- tested, NO edge found (closed)💰 PROFIT-EDGE2026-07-31
Chris explicitly scoped this as exploratory/optional, not urgent -- see 260731 session.
🏁 #328 Built Trade Selection Journal (journal.html)💰 PROFIT-EDGE2026-07-31
2026-07-31 14:57 cli Deployed + tested against live trading_decisions.jsonl (3.6k decisions). journal.html live, nav wired, cron piggybacked on alpha_map_refresh.sh (30min).
🏁 #329 dashboard_lint.py v1.2.0 — STALE STRATEGY REFERENCE check + 5th/6th instance fixes🛡 RELIABILITY2026-07-31
2026-07-31 15:00 cli Deployed, syntax-checked on container py3.13, real (non-dry) run posted to TG 200.
🏁 #330 paper_dashboard_gen.py STRAT_INFO table: false 'LIVE' claim on TRAIL-hair + stale 'historical' claim on SWING🛡 RELIABILITY2026-07-31
2026-07-31 15:20 cli Fixed. Backup: paper_dashboard_gen.py.bak_260731_stratinfo_timeline (v2.18.0->2.19.0). Added a strat_which(profile_key) helper that reads PT.LIVE_STRATEGY at generation time; the JS literal now carries {WHICH_TRAIL_HAIR}/{WHICH_TIGHT5}/{WHICH_SWING} placeholders swapped via plain .replace() in main() (avoided touching the giant brace-heavy JS literal directly, no f-string risk). Added the missing TIGHT5 entry with real evidence-backed why/when/link text. TRAIL-hair now correctly reads 'Was LIVE - 2026-07-14 to 2026-07-17, superseded by TIGHT5.' TIGHT5 reads 'Was LIVE - until 2026-07-27, superseded by SWING.' SWING now correctly reads 'LIVE - every new position, any age, since 2026-07-27.' with a full rewritten why-field covering the six-line 260727 evidence trail. SNIPE/MOMENTUM's genuinely-still-historical text left untouched (verified correct). Verified: py_compile clean, paper_dashboard_gen.py ran clean (paper.html v2 written), grepped output for zero leaked {WHICH_*} placeholders and zero remaining stale TRAIL-hair 'LIVE...260714' claims, confirmed dashboard_lint.py's STALE STRATEGY REFERENCE check no longer flags this file (0 findings, down from 1). Note: the agent that made this edit hit a session usage limit before finishing verification/roadmap/Telegram - the source edit itself was already complete and correct, so a second session (this one) picked up from there to verify, close out the roadmap item, and post the summary.
🏁 #331 paper_forensics_gen.py:932 — stale 'profile_for() now returns TIGHT5' claim🛡 RELIABILITY2026-07-31
2026-07-31 15:12 cli Fixed. Re-derived ground truth from paper_trader.py: profile_for() now unconditionally returns SWING for the APEX book (no ab_key); the #259 A/B config (profile_ab_config.json, enabled=true, control_every=4) keeps a 1-in-4 control slice on TIGHT5 for wallet-copy entries only, via LIVE_STRATEGY (promoted 2026-07-27, approved by Chris). Backed up paper_forensics_gen.py to paper_forensics_gen.py.bak_260731_staletight5claim before editing. Rewrote the line-932 sentence to read PT.LIVE_STRATEGY.get(profile/promoted_at/approved_by) live instead of hardcoding TIGHT5, added a PT-import-failure stub so the read cannot crash the generator, and named the #259 A/B control slice explicitly. Found ONE additional stale claim beyond line 932 in the same sentence: SWING volume is mostly runner-bags, which are force-set to SWING at paper_universal.py:453 -- checked paper_universal.py directly and (1) line 453 is now unrelated px_cache pre-warm code, the file has moved on; (2) runner bags no longer hardcode SWING at all -- roadmap #271 (fixed 260730) made bags inherit the PARENT position real profile, only hard_sl stays pinned at -50% for unchanged bag risk. Rewrote that clause to describe the current inherit-from-parent behavior instead of a hardcoded profile/line number. Checked the rest of the file (grep TIGHT5/SWING/TRAIL-hair/SNIPE/MOMENTUM, plus current/now returns/is live/the default) -- lines 27-29 are an unreachable except-branch fallback const (fine), line 466 and lines 1001/1049 are accurate historical/illustrative references to TIGHT5, not current-tense claims -- no other stale claims found. Confirmed cron-active: jobs.json id 180 Paper Forensics dashboard gen runs 10 */4 * * * (every 4h), enabled, last run today ok -- source fix propagates automatically, but also ran the generator manually once now (wrote forensics.html, 8011 legs) so it is correct immediately. Verification: py_compile clean; manual run exit 0; grepped forensics.html and confirmed it now renders now returns SWING for every APEX-book entry (promoted 2026-07-27, approved by Chris) with zero remaining hits for now returns TIGHT5 or force-set to...SWING at; diffed backup vs fixed source and the diff is exactly the two intended hunks (the PT-stub addition and the sentence rewrite), nothing else changed. todo.json backed up to todo.json.bak_260731_stalestrategyref before this write (no prior same-day backup existed).
🏁 #334 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #335 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-31
2026-07-31 19:39 watchdog job recovered / escalation cleared
🏁 #336 Per-token explosive-winner retrospective (fuse detection-lag + accum + social) — MarsCoin 0xFe189E97832DA1573e4e4Ff034F4fFC3a15c7777 100x miss-analysis💰 PROFIT-EDGE2026-07-31
2026-07-31 21:01 cli BUILT + tested 260731: (1) social_catalyst.py v0.3.0 patched -- EVM_RE added, was SOL-base58-only so it could NEVER fire on a BSC/ETH/Base token. Verified on MarsCoin: 61 real social hits recovered incl a KOL tweet(michacalls) at 2026-07-28 13:47 UTC, ~42h before our APEX PRIME fire. (2) weekly_winner_retrospective.py v1.0.0 built + registered in capability_registry, SHADOW only, no cron. Ran on real 14d data (13 tokens after dust-pool CLAMP=50x sanity gate, per project_dustpool_miss_autopsy): median detection lag 28.7h, worst case 0xb200(base) 214.9h late. onchain currently always leads social as earliest signal (6/6) simply because social coverage for non-SOL tokens was zero until this patch -- expect that to shift once the EVM fix accrues data. NEEDS: Chris approve before cron wiring (proposal-only per edge discovery mandate); no live threshold changed.
🏁 #337 ops.html Est-LLM/day cost table charged phantom spend for no_agent scripts (FIXED 260731)⚙️ CAPABILITY2026-07-31
2026-07-31 21:00 cli Fixed and deployed 260731. Live on ops.html now.
🏁 #338 alpha_wallets.html audited (260731) — no bugs found, already exemplary💰 PROFIT-EDGE2026-07-31
no comment logged
🏁 #339 index.html (WHALE COMMAND) audited (260731) — no bugs found, integration layer holding up🔎 DISCOVERY2026-07-31
no comment logged
🏁 #340 Cron-wire weekly_winner_retrospective.py + social_catalyst.py v0.3.0 (currently SHADOW-only, tested)💰 PROFIT-EDGE2026-07-31
2026-08-03 18:09 cli Cron-wired 260803: 20 5 daily. social_catalyst already at v0.4.0 (imported by this script, no separate cron needed).
🏁 #307 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-30
2026-07-30 01:08 watchdog script_timeout failure, 2 attempts, open since 2026-07-30 00:52 UTC, last run seen 2026-07-30T01:08:09. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 01:23 watchdog job recovered / escalation cleared
🏁 #308 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-30
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #309 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-30
2026-07-30 06:52 watchdog script_timeout failure, 2 attempts, open since 2026-07-30 06:37 UTC, last run seen 2026-07-30T06:52:41. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 07:08 watchdog script_timeout failure, 3 attempts, open since 2026-07-30 06:37 UTC, last run seen 2026-07-30T07:07:44. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 07:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-30 06:37 UTC, last run seen 2026-07-30T07:22:45. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 07:37 watchdog script_timeout failure, 3 attempts, open since 2026-07-30 06:37 UTC, last run seen 2026-07-30T07:37:46. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 07:52 watchdog job recovered / escalation cleared
🏁 #310 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-30
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #311 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-30
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #312 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-30
2026-07-30 12:53 watchdog script_timeout failure, 2 attempts, open since 2026-07-30 12:38 UTC, last run seen 2026-07-30T12:53:02. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 13:07 watchdog job recovered / escalation cleared
🏁 #313 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-30
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #314 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-30
2026-07-30 18:55 watchdog script_timeout failure, 2 attempts, open since 2026-07-30 18:40 UTC, last run seen 2026-07-30T18:54:04. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 19:08 watchdog script_timeout failure, 3 attempts, open since 2026-07-30 18:40 UTC, last run seen 2026-07-30T19:08:11. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-30 19:37 watchdog job recovered / escalation cleared
🏁 #315 Forensic: 2 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-30
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #316 Score by POSITION not LEG — parent+bag pairs double-count as 2 trades💰 PROFIT-EDGE2026-07-30
Claude Fixed at the source generator: paper_scorecard.py (feeds strategy_family_scorecard.py, perf_dashboard.py, accumulation_dashboard.py — none of those 3 re-read the raw ledger themselves, they only consume paper_scorecard.json / strategy_family_scorecard.json / exit_lab.json, so fixing it there propagates cleanly with no duplicated logic) and exit_lab.py (reads the ledger directly for its own counterfactual replay). Both now aggregate closed ledger rows into positions keyed on (ca, entry_ts, dim) before any win-rate/expectancy/N stat, where dim is the SAME field the live position-dict key uses (source for universal, lane for apex) — collapsing a parent(75%)+bag(25%) leg pair into one size-weighted position outcome. Verified: universal 8002->6195 rows, apex 2798->1412 rows post-aggregation, exactly matching the count of clean 1-parent+1-bag groups found (1781 + 585) plus 1 dropped orphan bag leg (no parent in the same ledger file, likely a rotation artifact). ITEM 2 (1218 mislabeled SWING rows) RESOLVED AS A SIDE EFFECT, no raw-ledger rewrite needed or done: the combined position always inherits `profile` from the parent leg, which was never corrupted (only the bag's copied field was hardcoded SWING pre-#271), so every historical bag row self-corrects to its true parent profile the moment it's merged. No relabel-vs-flag-vs-leave ruling needed from you — the aggregation fix and the mislabel fix are the same fix. CAUGHT MID-BUILD, WORTH FLAGGING: first attempt keyed apex on `tier` (matching my initial guess) and it silently over-merged — multiple LANES (A/B/C/D) can open on the same ca at the identical entry_ts under APEX PRIME convergence, and tier doesn't distinguish them. Caught it by diffing total N before/after against the raw bag-row count instead of just eyeballing the output looking plausible; switched to `lane` (matching paper_scorecard's own existing dim column) and the numbers now match exactly. NEW FINDING (filed separately as #327, not fixed here): ~76 rows (34 apex + 42 universal) sit in ambiguous multi-leg groups with 2+ non-bag (parent) legs sharing the same ca+entry_ts+dim — not runner-bag pairs, a distinct and not-yet-understood duplicate-position artifact. Left un-aggregated (counted individually, same as pre-fix) rather than guessed at, since there's no field in the ledger schema to disambiguate which rows belong together. Backups: paper_scorecard.py.bak_260731_positionscoring, exit_lab.py.bak_260731_positionscoring. Versions bumped 1.1.0->1.2.0 and 2.7.0->2.8.0. Ran all 4 named scripts (paper_scorecard, exit_lab, strategy_family_scorecard, perf_dashboard) plus accumulation_dashboard against live data post-fix, all wrote valid output, no exceptions. perf_dashboard/accumulation_dashboard/strategy_family_scorecard needed NO code changes — they only consume the now-fixed upstream JSON.
🏁 #317 FIRST canonical_validation pass on all 8 real strategy families -- result: 0/8 pass, 100% ruin probability, 0/4 OOS folds positive for ANY family💰 PROFIT-EDGE2026-07-30
2026-07-31 14:42 cli VARIANT_RETURNS FOLLOW-UP BUILT & RUN (260731): variant_return_builder.py (new, /opt/data/scripts) groups each family's constituent detector methods (the `source` field in paper_universal_ledger.jsonl) via strategy_family_scorecard.classify(), truncates every qualifying variant (>=12 trades) to a common ORDINAL-aligned length (last N chronological trades -- not calendar-aligned, documented as a real caveat), and feeds canonical_validation.validate_strategy(spec={'variant_returns':...}). Re-ran all 8 families via canonical_validation_variant_pass.py (output: canonical_validation_variant_pass_260731.json). RESULT: PBO/CPCV and White-RC/Hansen-SPA are now AVAILABLE for the 6 families with >=2 qualifying variants. CONVERGENCE -- informally the 'least-bad' family by raw bootstrap CI in the 260730 pass -- turns out to have the WORST overfitting signature of any testable family: PBO 0.80 (vs 0.20 governance ceiling), White Reality Check p=0.99, Hansen SPA p=1.00 (cannot reject luck at any reasonable alpha; best variant fomo_curated's own excess mean is negative, -0.068). MOMENTUM: PBO 1.00 -- the maximum possible value, meaning the in-sample winner among {momentum_scalp, trending, volume_spike} NEVER held up out-of-sample across all 20 CSCV splits. KOL: PBO 0.65, RC/SPA ~0.99. SNIPER_TRENCH: PBO 0.70, RC/SPA = 1.00 (total failure). Two families are the exception: SMART_INTEL (PBO 0.05, passes the ceiling; RC p=0.04 barely passes but SPA p=0.23 fails) and WHALE_ALPHA (PBO 0.10, passes; RC/SPA both fail ~0.7) -- but their common_n is only 15/16 trades (smallest qualifying variant sets sa_accum/wc:shadow_dowville), so this reads as small-sample fragility, not a promotion signal. ACCUMULATION and BASELINE remain structurally UNAVAILABLE for PBO/SPA: each has exactly ONE constituent source in the current taxonomy (accum_engine, control) so there is no second variant to test overfitting against -- not a bug, just no internal competition yet (would need parameter-level challengers, not source-variants, to ever get a reading here). BOTTOM LINE: 0/6 testable families pass White RC/SPA at alpha=0.05; robust_backtest_pass stays False everywhere regardless via the ~15 other governance blockers already known from this item's first pass. This closes the 'flagged as follow-up' gap named in this item's own detail. Posted to TG thread 203.
🏁 #291 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-29
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #292 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-29
2026-07-29 01:22 watchdog script_timeout failure, 2 attempts, open since 2026-07-29 01:07 UTC, last run seen 2026-07-29T01:22:42. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-29 01:37 watchdog job recovered / escalation cleared
🏁 #293 Cron stuck: 7020f7589b95 (script_timeout)🛡 RELIABILITY2026-07-29
2026-07-29 02:08 watchdog script_timeout failure, 2 attempts, open since 2026-07-29 01:52 UTC, last run seen 2026-07-29T01:51:18. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-29 02:22 watchdog job recovered / escalation cleared
🏁 #296 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-29
2026-07-29 06:52 watchdog script_timeout failure, 2 attempts, open since 2026-07-29 06:37 UTC, last run seen 2026-07-29T06:52:27. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-29 07:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-29 06:37 UTC, last run seen 2026-07-29T06:52:27. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-29 07:22 watchdog job recovered / escalation cleared
🏁 #297 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-29
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #298 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-29
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #299 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-29
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #303 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-29
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #304 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-29
2026-07-29 19:24 watchdog job recovered / escalation cleared
🏁 #280 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-28
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #281 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-28
2026-07-28 01:22 watchdog job recovered / escalation cleared
🏁 #282 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-28
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #283 OpenRouter prepaid balance low: $5.97💵 COST2026-07-28
2026-07-28 08:06 watchdog Prepaid balance $5.82 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 09:05 watchdog Prepaid balance $5.62 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 10:12 watchdog Prepaid balance $5.10 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 11:11 watchdog Prepaid balance $4.81 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 12:12 watchdog Prepaid balance $4.55 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 13:05 watchdog Prepaid balance $4.31 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 14:10 watchdog Prepaid balance $4.11 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 15:06 watchdog Prepaid balance $4.05 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 16:05 watchdog Prepaid balance $3.92 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 17:05 watchdog Prepaid balance $3.77 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 18:06 watchdog Prepaid balance $3.71 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 19:10 watchdog Prepaid balance $3.54 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 20:05 watchdog Prepaid balance $3.53 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 21:07 watchdog Prepaid balance $3.25 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 22:10 watchdog Prepaid balance $3.06 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-28 23:05 watchdog Prepaid balance $3.04 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 00:05 watchdog Prepaid balance $2.89 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 01:05 watchdog Prepaid balance $2.76 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 03:06 watchdog Prepaid balance $2.60 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 06:06 watchdog Prepaid balance $2.54 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 07:06 watchdog Prepaid balance $2.50 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 08:07 watchdog Prepaid balance $2.29 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 09:09 watchdog Prepaid balance $2.08 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 10:10 watchdog Prepaid balance $1.54 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 11:06 watchdog Prepaid balance $1.26 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 12:08 watchdog Prepaid balance $0.95 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 13:05 watchdog Prepaid balance $0.56 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 14:08 watchdog Prepaid balance $0.35 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 15:05 watchdog Prepaid balance $0.25 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 16:06 watchdog Prepaid balance $0.11 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting f
2026-07-29 17:06 watchdog Prepaid balance $-0.01 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-07-29 18:06 watchdog Prepaid balance $-0.08 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-07-29 19:06 watchdog Prepaid balance $-0.19 (threshold $6). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-07-30 03:09 watchdog balance recovered: $15.57
🏁 #284 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-28
2026-07-28 07:22 watchdog job recovered / escalation cleared
🏁 #285 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-28
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #286 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-28
2026-07-28 12:54 watchdog script_timeout failure, 2 attempts, open since 2026-07-28 12:38 UTC, last run seen 2026-07-28T12:53:39. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-28 13:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-28 12:38 UTC, last run seen 2026-07-28T13:07:10. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-28 13:22 watchdog job recovered / escalation cleared
🏁 #287 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-28
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #288 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-28
2026-07-28 19:10 watchdog script_timeout failure, 2 attempts, open since 2026-07-28 18:52 UTC, last run seen 2026-07-28T19:10:03. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-28 19:23 watchdog script_timeout failure, 3 attempts, open since 2026-07-28 18:52 UTC, last run seen 2026-07-28T19:10:03. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-28 19:37 watchdog job recovered / escalation cleared
🏁 #289 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-28
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #253 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-27
2026-07-27 00:53 watchdog script_timeout failure, 2 attempts, open since 2026-07-27 00:38 UTC, last run seen 2026-07-27T00:53:21. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-27 01:08 watchdog job recovered / escalation cleared
🏁 #262 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-27
2026-07-27 07:22 watchdog job recovered / escalation cleared
🏁 #263 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-27
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #264 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-27
2026-07-27 12:53 watchdog script_timeout failure, 2 attempts, open since 2026-07-27 12:37 UTC, last run seen 2026-07-27T12:37:18. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-27 13:08 watchdog script_timeout failure, 3 attempts, open since 2026-07-27 12:37 UTC, last run seen 2026-07-27T13:07:21. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-27 13:37 watchdog job recovered / escalation cleared
🏁 #265 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-27
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #271 BUG: runner bags are relabelled profile=SWING, destroying profile attribution💰 PROFIT-EDGE2026-07-27
Claude Fixed at source in paper_universal.py, paper_universal_fastmark.py, paper_trader.py: bag now inherits parent profile (dict(p), no override) + new leg_type=BAG field, instead of hardcoded profile=SWING. hard_sl explicitly pinned at -0.50 in the runner_bag override block in all 3 files so bag RISK behavior is unchanged (only attribution label was fixed) -- avoids a silent constant retune. Also fixed 3 dashboards (perf/DECIDER, exit_lab, accumulation) that had hardcoded TIGHT5-promoted-260717 captions stale since the 260727 SWING promotion -- found while investigating this ticket, separate bug, same fix pattern (read paper_trader.LIVE_STRATEGY live instead of hardcoding). NOT done: retroactive relabeling of the 1218 historical SWING rows that are actually TIGHT5-derived (judgment call, flagged not fixed), and per-position (not per-leg) scoring aggregation across exit_lab/perf_dashboard/accumulation_dashboard/strategy_family_scorecard so parent+bag pairs stop double-counting as 2 trades -- that is real, separate follow-up work, tracked as new item.
🏁 #272 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-27
2026-07-27 19:07 watchdog script_timeout failure, 2 attempts, open since 2026-07-27 18:52 UTC, last run seen 2026-07-27T18:57:48. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-27 19:22 watchdog job recovered / escalation cleared
🏁 #273 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-27
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #205 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-26
2026-07-26 00:53 watchdog script_timeout failure, 2 attempts, open since 2026-07-26 00:38 UTC, last run seen 2026-07-26T00:52:39. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 01:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-26 00:38 UTC, last run seen 2026-07-26T01:07:25. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 01:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-26 00:38 UTC, last run seen 2026-07-26T01:22:49. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 01:37 watchdog script_timeout failure, 3 attempts, open since 2026-07-26 00:38 UTC, last run seen 2026-07-26T01:37:28. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 01:52 watchdog job recovered / escalation cleared
🏁 #206 Dashboard header UI broken on alpha_wallets.html🛡 RELIABILITY2026-07-26
2026-07-26 04:46 cli Fixed: header fallback rendered raw compound_label debug string for newly-upgraded wallets. Replaced with clean fallback message.
🏁 #207 Wallet cards need full-address-on-expand for copying⚙️ CAPABILITY2026-07-26
2026-07-26 04:46 cli Fixed: extended existing leaderboard expand panel with monospace full-address row + copy button.
🏁 #208 Wallet cards should show top 3 winners not just top 1⚙️ CAPABILITY2026-07-26
2026-07-26 04:46 cli Fixed: top_gains already carried up to 4 entries, only first was rendered. Added topWins helper, now shows up to 3.
🏁 #209 Audit ALL S-tier personas for WhaleMover real-time coverage gaps⚙️ CAPABILITY2026-07-26
2026-07-26 04:42 cli Audited all 7 S-tier persona clusters (sapphy/shadow_dowville/monaco_messiah/dylan_cluster/traderpow/profitleader/gitlawb). Findings: (1) sapphy/shadow_dowville primary KOL handles NEVER appear as sender in 50k-msg userbot buffer (only reach via own low-volume channel, now fixed by 260726 override patch) - alpha for these two personas comes almost entirely from on-chain WhaleMover polling, not TG text, by design. (2) 19 sapphy-cluster wallets + 1 monaco wallet in wallet_db are cluster-discovery associates (mega_cluster_discovery, tier B, low-confidence) that are MISSING top-level chain/address fields entirely (only encoded in the dict key) -> whalemover_tracker.py's per-wallet loop hard-skips them (not addr) regardless of the chain-list bug, a distinct data-completeness gap, low-priority since they are not S-tier. (3) monaco's 3 robinhood-chain wallets already covered by whalemover_tracker_rh.py sibling poller (confirmed actively running, fresh output). No missing persona channels found beyond what bug#1 already covered.
🏁 #211 Reconcile whale_mover_scorer.py vs whalemover_tracker.py score drift🔎 DISCOVERY2026-07-26
2026-07-26 04:42 cli Resolved: NOT a real drift. whalemover_score field (set by whale_mover_scorer.py, daily) is read by ZERO other scripts (grep confirmed) - purely cosmetic/display, never gates whalemover_tracker.py's live is_whalemover() scoring, which reads wallet_db fields directly each run. Case wallet bsc:0xb9d978... scored whalemover_score=3 (stale) but live is_whalemover()=dims4/S-TIER(via group==sapphy override) - correctly included in poller's S-tier bucket (polled first every run, never starved). No fix needed; the two scorers are intentionally independent, just confusingly named the same.
🏁 #212 TG topic 75304 stale while sibling FOMO channels are fresh🔎 DISCOVERY2026-07-26
2026-07-26 04:43 cli ROOT CAUSE FOUND+FIXED: thread 75304 = fomo_thread config, owned by fomo_side_cluster.py (daily cron 52b743788ced, 13:33 UTC). Script gates its Telegram post behind 'post = "--post" in sys.argv', but Hermes cron's --script mechanism has NO way to pass argv to no_agent scripts -> the job has run successfully 19x since 260706 and NEVER once posted (silent shadow-only mode was unintentional, not a crash/staleness). Fixed in /opt/data/scripts/fomo_side_cluster.py (backup: fomo_side_cluster.py.bak_260726_prepostfix): post now defaults True unless --no-post passed; --dry still short-circuits before any posting. Verified: py_compile OK, --dry run OK, real run executed and posted (n_side=416 hidden wallets across 279 anchors) with no tg() error to stderr, bot token confirmed live via getChat. Next daily run (13:33 UTC) will auto-post going forward.
🏁 #213 Confirm/fix wallet harvesting from FOMO + ProTrending + GMGN Rick-bot leaderboards, wire into wallet_db + graduation🔎 DISCOVERY2026-07-26
2026-07-26 04:43 cli Confirmed both FOMO and ProTrending wallet-harvesting pipelines are actively running and feeding wallet_db.json: fomo_harvester.py (30m cron, last ok run 04:12) writes cohort addrs to channel_discovered_wallets.json with whalemover_group='fomo:<list>'; fomo_graduate.py (30m cron, last ok 03:48) promotes them into wallet_db.json as tracked_alpha=True/intel_only (same P5 approval-gated graduation pattern as ep11). protrending_harvester.py + protrending_runner.py + channel_wallet_extractor.py (Cielo+ProTrending) all last-ran within the hour, status ok. No dedicated 'GMGN Rick-bot' script found by name; ProTrending coverage (bscprotrending/solanaprotrending/ethprotrending channels, low volume 2-5 msgs each in recent buffer) appears to be the Rick-bot-adjacent leaderboard source and is captured via the same ProTrending harvester chain. Once graded, these wallets flow through whalemover_tracker.py's standard source-agnostic is_whalemover()/graduation (GRAD dict) exactly like every other source - no separate/broken graduation path found.
🏁 #214 Wire robinhoodchain.blockscout.com into mega_cluster_discovery.py chain list🔎 DISCOVERY2026-07-26
2026-07-26 05:02 cli RH-chain discovery built as sibling script mega_cluster_discovery_rh.py, funding-trace plus token-overlap via Blockscout, tested against Monaco RH seed, rediscovered both known funded wallets.
🏁 #215 persona_side_wallet_miner.py RH-chain-aware pass🔎 DISCOVERY2026-07-26
2026-07-26 05:02 cli persona_side_wallet_miner.py v1.1.0 now routes robinhood seeds to mega_cluster_discovery_rh.py, Monaco RH anchor added, tested end to end.
🏁 #217 RH WhaleMover: contract addresses fire INVERSE signals🛡 RELIABILITY2026-07-26
2026-07-26 16:11 cli shipped v3.0.0 - contract receivers dropped, counted in telemetry
🏁 #219 RH WhaleMover: widen real-time coverage past Monaco💰 PROFIT-EDGE2026-07-26
2026-07-26 16:11 cli shipped v3.0.0 - scope 4 -> 119 wallets (monaco + S-tier clusters), side wallets prioritised
🏁 #221 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-26
2026-07-26 07:07 watchdog script_timeout failure, 2 attempts, open since 2026-07-26 06:53 UTC, last run seen 2026-07-26T07:07:01. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 07:22 watchdog job recovered / escalation cleared
🏁 #222 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-26
2026-07-26 13:22 watchdog script_timeout failure, 2 attempts, open since 2026-07-26 13:07 UTC, last run seen 2026-07-26T13:22:41. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 13:37 watchdog job recovered / escalation cleared
🏁 #224 Detached expensive-tier cluster discovery for S-tier/high-return-A wallets💰 PROFIT-EDGE2026-07-26
2026-07-26 16:04 cli Verified live and hardened further: real run confirmed stale-lock clearing and cross-persona rotation both work correctly. Found a second bug during verification - DISCOVERY_TIMEOUT_S (700s, sized for tier-A) was still used for tier-B calls, so a single GMGN-gate-congested call could block up to 700s, blowing past the 300s cron kill even after the earlier tier-A to tier-B fix. Added a bounded 90s tier-B timeout plus a self-imposed 150s wall-clock deadline across the whole rotation loop (mirrors whalemover_tracker.py pattern), so the script always returns safely regardless of gate congestion. Confirmed live: real GMGN gate congestion does occur (one call hit the 90s cap), and the script still exited cleanly at exit 0.
🏁 #227 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-26
2026-07-26 19:07 watchdog script_timeout failure, 2 attempts, open since 2026-07-26 18:52 UTC, last run seen 2026-07-26T19:07:17. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 19:22 watchdog job recovered / escalation cleared
🏁 #233 VOL-5: the ADMISSION ENGINE does not exist - Chris asked 'is it working? I do not see it on the dashboard'💰 PROFIT-EDGE2026-07-26
2026-07-28 04:10 cli Same ship as #200 — the admission engine now exists and is visible: admission_gate_log.jsonl + admission_verdict field on every new position in paper_universal_positions.json / the ledger. Chris can grep it directly.
Claude Tested the actual hypothesis with real data before building anything: bucketed all 4,153 scored closed positions in paper_universal_ledger.jsonl by conviction.py tier boundaries (PRIORITY score>=35, WATCH>=18, LOG>0). Result: LOG tier (n=77) has the BEST expectancy of the three (-.15/trade) vs PRIORITY -.86 and WATCH -.66 -- the opposite of what a real quality gate should show, confirming forensics own r=0.016 score-return finding at the actual tier boundaries that would be used. Gating out LOG+SUPPRESS would only avoid - of a -k+ book (negligible) and would NOT improve per-trade expectancy -- it might make it slightly worse. CONCLUSION: conviction.py score/tier is NOT a viable admission signal on this evidence -- the existing boost-not-filter doctrine for this specific field is correct and should stay as-is. NOT implementing a tier-based admission gate. The two dimensions that DO have proven predictive power (volume-crowding IC -0.186, deployer blacklist) are already gated via admission_gate.py v1.10.0. Recommend closing #200/#233 as adequately addressed for the score/tier dimension specifically, or scoping a fresh EP around a DIFFERENT quality signal (e.g. wallet-grade completeness per #279) if more admission tightening is wanted.
🏁 #251 Forensic: 3 novel pre-pump indicators (lift≥1.5)💰 PROFIT-EDGE2026-07-26
2026-08-03 18:10 cli Superseded by #381 (260803 queue hygiene): 39 near-identical accum_explosion_forensic re-runs of the same SA-CONVERGENCE/SA-REPEAT finding, repeated because the generating script never checked for an existing open proposal before posting. #381 is the highest-N version (n31-50). Review that one; this one is a duplicate, not a distinct finding.
🏁 #179 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 01:07 watchdog script_timeout failure, 2 attempts, open since 2026-07-25 00:52 UTC, last run seen 2026-07-25T01:07:55. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 01:22 watchdog job recovered / escalation cleared
🏁 #181 P0-CRITICAL: fails>=6 books -100% — 68% of all reported losses are a DATA BUG🔎 DISCOVERY2026-07-25
2026-07-25 16:48 cli SUPERSEDED by #195 + #196. Refined 260725: the bug is 70.7% of booked losses ($163,342 of $231,079), not 68%, and the CAUSE is now pinned: v1.7.3 (260723) removed the GMGN price fallback, taking DEAD from ~0-15% of daily closes to a sustained 57-60%. It is a regression with a deploy date, not a standing condition. Also: observed book is -20.7%, and the honest figure is a RANGE (-10.9% to -47.2%), not a point.
2026-08-07 16:49 cli Verified 260807: already fixed in v1.8.0 (260725). paper_universal.py:861 routes DEAD_STRIKES to unresolved, never a -100%% close. Confirmed empirically — post-fix -100%% bookings are real rugs plus residual historical rows, not feed deaths. The REAL remaining problem was the opposite failure mode: 57%% of the book had no outcome at all, root-caused today to the EVM address-case bug.
🏁 #188 Cron stuck: c15259e76c30 (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 04:22 watchdog script_timeout failure, 2 attempts, open since 2026-07-25 04:07 UTC, last run seen 2026-07-25T04:06:03. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 04:37 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 04:07 UTC, last run seen 2026-07-25T04:06:03. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 14:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 04:07 UTC, last run seen 2026-07-25T14:09:14. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 04:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 04:07 UTC, last run seen 2026-07-26T04:06:17. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 14:08 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 04:07 UTC, last run seen 2026-07-26T14:07:49. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-26 21:06 cli Root cause was tier-A discovery (~312s/seed) exceeding the hard 300s cron ceiling. Script was patched 260726 16:03 (after the 14:07 failure): MAIN_LOOP_DEADLINE_S=150 wall-clock guard, rotation switched to tier-B (cheap methods 1,3, ~8s/seed), tier-A now only on the robinhood path which uses the 180s RH timeout. Verified under a simulated 300s ceiling.
🏁 #189 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 06:54 watchdog script_timeout failure, 2 attempts, open since 2026-07-25 06:37 UTC, last run seen 2026-07-25T06:52:36. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 07:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 06:37 UTC, last run seen 2026-07-25T07:07:33. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 07:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 06:37 UTC, last run seen 2026-07-25T07:17:50. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 07:37 watchdog job recovered / escalation cleared
🏁 #190 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 12:52 watchdog script_timeout failure, 2 attempts, open since 2026-07-25 12:37 UTC, last run seen 2026-07-25T12:37:06. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 13:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 12:37 UTC, last run seen 2026-07-25T13:07:09. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 13:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 12:37 UTC, last run seen 2026-07-25T13:22:11. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 13:37 watchdog job recovered / escalation cleared
🏁 #192 Auto-regenerate arch.html STRUCTURE from live jobs.json⚙️ CAPABILITY2026-07-25
2026-07-25 16:57 cli Shipped: arch_map_gen.py builds a Live System Map (mermaid, from cron jobs.json, grouped by function) injected into arch.html via markers; wired into freshness_orchestrator (every 4h). Curated master diagram untouched.
🏁 #193 Per-wallet recency PnL trend sparkline💰 PROFIT-EDGE2026-07-25
2026-07-26 19:37 cli Shipped: lib/wallet_trend.py — cohort-calibrated HEAT chip live NOW on whale+alpha (7d-vs-30d ROI pace, quartile-scored: 215 hot/429 steady/216 cooling); daily wallet_history.jsonl snapshot started 260726 so TRUE trend sparklines auto-activate at 3 days. Wired into the 4h orchestrator.
🏁 #194 Wire freshness.json badge into nav.js and ops.html⚙️ CAPABILITY2026-07-25
2026-07-25 16:57 cli Shipped: nav.js v1.1.0 injects a live freshness badge into every masthead (reads freshness.json); ops.html has a DATA FRESHNESS panel; orchestrator cache-busts /nav.js refs so it propagates within one 4h cycle.
🏁 #195 PAPER FIX 1 (BLOCKER): stop booking unobserved outcomes as -100%💰 PROFIT-EDGE2026-07-25
2026-07-28 04:10 cli CONFIRMED SHIPPED (v1.8.0, 260725) + verified holding 260728: DEAD rate 0.0% post-fix (n=816 closes) vs 28.3% pre-fix (1,689/5,962). Unresolved positions correctly excluded from P&L via paper_unresolved.jsonl (880 rows, none counted). Claude re-verified with a fresh query, not just trusting the earlier forensics.html snapshot.
🏁 #196 PAPER FIX 2 (BLOCKER): restore price fallback before declaring DEAD - v1.7.3 regression⚙️ CAPABILITY2026-07-25
2026-07-28 04:10 cli CONFIRMED SHIPPED (v1.8.0 Fix 2, RESCUE_AT=3/RESCUE_BUDGET=25) — GMGN rescue before declaring DEAD, spent highest-peak-first. 84 rescued-open positions observed live on 260728 manual run.
🏁 #198 PAPER FIX 4: every exit profile arms BELOW its own breakeven (design bug)🛡 RELIABILITY2026-07-25
2026-07-28 04:10 cli SHIPPED as a deliberate WARNING system (check_profiles() in paper_universal.py, v1.8.0 Fix 4), not a hard code assertion — correct call: retuning arm/trail constants is a strategy change needing backtest proof, not a patch. All 5 profiles DO arm below their own breakeven (confirmed via EXIT_PROFILES: SNIPE/MOMENTUM/SWING/TRAIL-hair/TIGHT5 all fail arm>=trail/(1-trail)) but the dead-zone is mitigated live via BE_STOP (Fix 3, #197), which is the correct fix location, not the arm threshold itself.
🏁 #199 PAPER FIX 5: mark faster than the stop can gap (+$29,535 upper bound)🛡 RELIABILITY2026-07-25
2026-07-28 04:10 cli SHIPPED 260728 (Claude): paper_universal_fastmark.py, cron every 1min (job 514fa6fd9fdf), singleton-shares the paper_universal lock (zero race risk), CLOSE-ONLY (never opens positions, never touches admission/volume/throttle — those stay in the 5-min job). Filters to near-trigger positions only (21/281 on first live run) before spending any price call. This is what BE_STOP (#197) was explicitly gated on ("cannot work on a 5-minute poll" — v1.8.1 note). Verified: py_compile clean, manual run against real 281-position book succeeded with no exceptions.
🏁 #200 PAPER FIX 6 (THE REAL ONE): build actual admission control - there is none today💰 PROFIT-EDGE2026-07-25
2026-07-28 04:10 cli SHIPPED 260728 (Claude): admission_gate.py wired into paper_universal.py v1.10.0. Real reject-capable gate (not just sort order) on two evidence-backed, zero-cost checks: volume-crowded (VG shadow SKIP, IC -0.186 n=1,612) and hard veto (exit-only signal / blacklisted deployer via existing deployer_intel). Deliberately does NOT gate on conviction score/tier — stays boost-not-filter doctrine, conv_mult unchanged. Verified live: manual run produced a real admitted verdict logged to admission_gate_log.jsonl. Kill switch: admission_gate_config.json enabled=false. Watch admission_gate_log.jsonl reject rate over the next few days before considering widening scope to conviction-tier gating (that needs its own OOS proof, not bundled here).
Claude Tested the actual hypothesis with real data before building anything: bucketed all 4,153 scored closed positions in paper_universal_ledger.jsonl by conviction.py tier boundaries (PRIORITY score>=35, WATCH>=18, LOG>0). Result: LOG tier (n=77) has the BEST expectancy of the three (-.15/trade) vs PRIORITY -.86 and WATCH -.66 -- the opposite of what a real quality gate should show, confirming forensics own r=0.016 score-return finding at the actual tier boundaries that would be used. Gating out LOG+SUPPRESS would only avoid - of a -k+ book (negligible) and would NOT improve per-trade expectancy -- it might make it slightly worse. CONCLUSION: conviction.py score/tier is NOT a viable admission signal on this evidence -- the existing boost-not-filter doctrine for this specific field is correct and should stay as-is. NOT implementing a tier-based admission gate. The two dimensions that DO have proven predictive power (volume-crowding IC -0.186, deployer blacklist) are already gated via admission_gate.py v1.10.0. Recommend closing #200/#233 as adequately addressed for the score/tier dimension specifically, or scoping a fresh EP around a DIFFERENT quality signal (e.g. wallet-grade completeness per #279) if more admission tightening is wanted.
🏁 #202 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 18:52 watchdog script_timeout failure, 2 attempts, open since 2026-07-25 18:37 UTC, last run seen 2026-07-25T18:42:46. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 19:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 18:37 UTC, last run seen 2026-07-25T19:02:46. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 19:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-25 18:37 UTC, last run seen 2026-07-25T19:22:48. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-25 19:37 watchdog job recovered / escalation cleared
🏁 #203 Cron stuck: wallet_sell_tracker_30m (script_timeout)🛡 RELIABILITY2026-07-25
2026-07-25 20:52 watchdog job recovered / escalation cleared
🏁 #204 PAPER: 104 exits booked at exactly -100% on a >99.99% single-interval price collapse (dust-pool signature)⚙️ CAPABILITY2026-07-25
Claude Investigated, NOT implementing a ruling unilaterally -- this is a genuine judgment call, not a mechanical bug, and forensics own text says a real rug and a bad price tick look identical in the data. Evidence gathered: 27 suspect_price legs currently in the live ledger (26 distinct CAs, essentially all one-off). 20/27 (74pct) were trading ABOVE entry at some point before the collapse; 15/27 (56pct) were up 25pct+ before it -- same shape as the false-DEAD forensic pattern (mass-simultaneous kills that had been up). Concentrated in momentum_scalp (13) and oggy_boost (7). Total booked PnL on these 27 = -,910 (modest -- the ,658/131-row figure in forensics.html is the full historical count across a rotated/archived ledger, not just this live file). Recommendation: same treatment as Fix 1 (exclude from P&L to paper_unresolved.jsonl, do not invent a -100pct outcome) given the prior-pump pattern matches the known infrastructure-artifact signature more than a typical rug profile -- but this trades off against occasionally excluding a genuine rug, which IS a real possibility here unlike Fix 1s case. Chris to rule; not implemented.
2026-08-04 03:53 cli FIXED 260804. Root cause: v1.8.0 (260725) already flagged suspect_price (>98pct single-interval collapse) but never gated it -- if the collapsed mark also tripped HARD_SL/TRAIL it was booked into the ledger as a realised ~-100pct exit anyway. Investigated why re-corroborating against a 2nd price source (the fix option originally proposed) would not actually resolve the ambiguity: a genuinely-dust/decayed pool and a real rug both settle at a price every source agrees on, so corroboration cannot structurally tell them apart -- confirmed by tracing the code path (prices_batch has its own SANE_JUMP hold-last-good gate; by the time suspect_price fires, a position has already survived a RESCUE-path corroboration via PT.price() against a DexScreener reference pool and still shown the collapse). FIX: same treatment as FIX 1 (DEAD, v1.8.0) -- do not invent a -100pct outcome, route to paper_unresolved.jsonl instead (exit_reason=UNRESOLVED_SUSPECT_PRICE, kept distinct from plain UNRESOLVED). Patched paper_universal.py v1.18.0->v1.19.0 (5-min main job) AND paper_universal_fastmark.py v1.0.0->v1.1.0 (1-min off-cycle job, #199) -- the fastmark script deliberately re-implements rather than imports the main close logic, so it needed the identical fix separately or the bug would have kept firing through that path. Both verified live: fastmark ran clean (checked 14/289, closed 1, unresolved 0 this cycle), main job confirmed via jobs.json last_run_at=03:53:22 status=ok post-patch. FORWARD-ONLY -- the 27 suspect_price rows already in the live ledger are not retroactively touched, that is a separate historical-cleanup decision. Backups: paper_universal.py.bak_260804_dustpool204, paper_universal_fastmark.py.bak_260804_dustpool204. Ties to #428 (this was the leading suspect for why all 8 canonical_validation families + baseline showed 0/4 OOS-positive folds / 100pct ruin) -- re-running that validation pass after enough forward data accumulates under this fix will show whether it moves those numbers.
🏁 #172 SpyDefi (@spydefi TG) as ranking input — v1 feasibility confirmed, needs approval💰 PROFIT-EDGE2026-07-24
2026-07-24 17:57 cli BUILT + LIVE (260724). Verified userbot session was actually joined to @spydefi (get_dialogs confirmed) but 0 msgs ever captured -- root cause: Telethon resolves this channel entity username=None even fresh, so TIER_MAP lookup always returned tier 0 and the curated-selection gate silently dropped everything. Fixed userbot.py v1.0.4 (PRIVATE_CHANNELS ID override, same pattern as pinnaclecabal/tncportal). Restarted userbot cleanly via userbot_watchdog.sh; also caught+fixed an unrelated transient /opt/data 700-perm lockout during the restart window (host chown/chmod, self-heals via existing 5min guard cron anyway). Built spydefi_extract.py v1.0.0 -- parses achievement-bot xN-call + conviction posts, reuses caller_ranker.update_caller_stats/load_ranking/save_ranking directly (writes into the SAME caller_ranking.json global_kols kol_reputation.py already reads -- zero kol_reputation.py changes needed). Applies the michacalls v1.1.0 seen-after-success pattern. Cron wired 7,17,27,37,47,57 * * * * (staggered from michacalls :4/14/24.., ahead of caller_ranker/kol_reputation aggregator runs). Verified end-to-end live: real message (@WCTCalls x6 call on USOH) captured -> parsed -> landed in caller_ranking.json global_kols.wctcalls -> kol_reputation.py ran clean and correctly held it back from tier display (only 1 call so far, MIN_CALLS=8 bar not met yet -- will surface automatically with watchlist/gmgn/consistency fields once real volume accrues).
🏁 #176 Cron stuck: 4ef8b6ea903e (script_timeout)🛡 RELIABILITY2026-07-24
2026-07-24 18:39 watchdog script_timeout failure, 2 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T18:38:58. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 18:52 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T18:52:18. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 19:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T18:57:19. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 19:22 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T19:22:20. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 19:37 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T19:37:21. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 19:52 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T19:52:23. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 20:07 watchdog script_timeout failure, 3 attempts, open since 2026-07-24 18:22 UTC, last run seen 2026-07-24T20:07:25. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-24 20:22 watchdog job recovered / escalation cleared
🏁 #167 OpenRouter prepaid balance low: $5.82💵 COST2026-07-23
2026-07-23 18:16 watchdog Prepaid balance $5.61 (threshold $10). Auto Top-Up is deliberately OFF (standing preference) so this needs a manual top-up at openrouter.ai/settings/credits. Below this, agent-mode jobs start getting
2026-07-23 18:40 watchdog balance recovered: $24.06
🏁 #168 Cron stuck: 19c9b2c56d54 (script_timeout)🛡 RELIABILITY2026-07-23
2026-07-23 16:25 watchdog job recovered / escalation cleared
🏁 #169 Cron stuck: 05e161606dff (script_timeout)🛡 RELIABILITY2026-07-23
2026-07-23 17:07 watchdog job recovered / escalation cleared
🏁 #170 Cron stuck: 05e161606dff (script_timeout)🛡 RELIABILITY2026-07-23
2026-07-23 17:52 watchdog script_timeout failure, 2 attempts, open since 2026-07-23 17:37 UTC, last run seen 2026-07-23T17:52:10. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-23 18:08 watchdog script_timeout failure, 3 attempts, open since 2026-07-23 17:37 UTC, last run seen 2026-07-23T18:08:22. This failure class has no safe auto-fix by design -- needs a human decision (see verifier_loop_e
2026-07-23 18:22 watchdog job recovered / escalation cleared
🏁 #126 #2-4 DONE: alpha map + accum channel + nav consistency🛡 RELIABILITY2026-07-18
no comment logged
🏁 #127 Wire wallet_intel_db (3124 tiered wallets) into card Tracked line + APEX convergence💰 PROFIT-EDGE2026-07-18
2026-07-18 03:43 cli SHIPPED 260718 (shadow/gated): (1) known_wallet_index.py — builds token->curated-known-wallet reverse index from buyer addresses ALREADY captured in signals (cluster buyers, stealth wallets, whalemover, accum, frontrun, fresh-edge, fomo cohort) cross-reffed to the 3124 graded wallet_db — ZERO GMGN calls, works behind the CF wall. First run: 457 tokens carry >=1 known wallet, 31 have >=2 tier-S/A converging (incl sapphy-cluster Giggles7figCar, kien28.base.eth, Crypto Saba). Cron 3-59/15. (2) lib/wallet_intel.py extended with offline tracked_entries()/tracked_wallets_cached() — root cause was tracked_wallets_in_token() pulling GMGN LIVE (empty when walled). (3) token_card.py now populates card[tracked] from the index BEFORE the PLAY block -> the 🎯 Tracked line renders curated wallets (⭐ + grade + ROI, GMGN-linked, ranked ABOVE generic smart tags) on EVERY card, and the copy-decision cluster flag now sees them. (4) known_convergence_signals.jsonl wired as paper_universal known_conv lane (+CLUSTER_SRCS) for forward outcome scoring. GATE: promotion into live APEX SRC_FILES held until the paper lane shows FDR-positive expectancy vs control. Next: apex_runner SRC_FILES add + boost weight after proof.
🏁 #129 Known-wallet WEIGHTED convergence + first-mover ranking (copy-timing core)💰 PROFIT-EDGE2026-07-18
2026-07-19 02:56 cli DONE 260718: known_wallet_index.py v1.1.0 - weighted_conviction (grade-weighted+recency) + first_mover (label/grade/lead_min) + wallets_by_time added to every known_convergence signal. Proven on live data: weighted_conviction=188.0, first_mover grade=S lead_min=0.0. No new script - expansion of EP127.
🏁 #131 Known-wallet EXIT/distribution siren (protect gains — the flip side of convergence)⚙️ CAPABILITY2026-07-18
2026-07-19 02:56 cli DONE 260718: known_wallet_index.py v1.1.0 - known_distribution_signals.jsonl (>=1 S-tier or >=2 known-graded wallets selling = distribution siren). Proven: 165 signals fire at 168h test window. Wired as SHADOW-OBSERVE paper lane (known_dist) in paper_universal.py - per edge-discovery gate, will earn a live TG alert only after proving it precedes drawdowns.
🏁 #133 #1 DONE: exit-truth dashboard fix + TIGHT5 promotion VALIDATED🛡 RELIABILITY2026-07-18
no comment logged
🏁 #134 Interactive filters + MIX math fix + paper TIGHT5 default (DONE)💰 PROFIT-EDGE2026-07-18
no comment logged
🏁 #135 #2 DONE (read-only): per-family best-exit in alpha map⚙️ CAPABILITY2026-07-18
no comment logged
🏁 #137 Header mix de-misled + explainer modal + watchdog gap closed (DONE)🛡 RELIABILITY2026-07-18
no comment logged
🏁 #139 EP-21 MIX OPTIMIZER CORE — per-trade-type profit+sustainability weight optimization (industry-grade)💰 PROFIT-EDGE2026-07-18
2026-07-18 20:47 cli Chris GO-AHEAD 260718. EP-21 phase 1 BUILT: mix_optimizer_core.py v1.0.0 (dependency-free simplex, Sortino objective, 70/30 OOS split, 200x bootstrap gate, per-family segments). Cronned daily 12:40 UTC -> 37479. FINDING: freely optimized, ALL 8 trade types choose 100%% TIGHT5 - NO mix beats single-best OOS because current exits are all correlated trailing-stop variants (a convex blend mean sits between components; no downside-diversification benefit). Validates live single-TIGHT5 with math. Per-segment bonus: MOMENTUM/CONVERGENCE/SMART/KOL positive under TIGHT5; ACCUMULATION/WHALE/SNIPER NEGATIVE even under best exit = ENTRY problem not exit.
2026-08-09 21:24 cli 260809 COMPLETE + CONTINUING: exit-only v1.1 correctly found TIGHT5 100% across 10,965 trades because correlated exits offered no diversification. Added goldilocks_mix_optimizer.py v1.0.0 to search weighted entry-parameter interactions by trade type across 104,272 resolved trades: wallet/fresh/dormant/insider, flow/volume, MC/age, TA, chain/regime/source. Method is 60/20/20 chronological; atoms discovered on train, weights+threshold selected on validation, final test untouched, 2,000x block bootstrap + BH-FDR, PIT coverage hard gate. Live run tested up to 10,695 permutations/segment; 3 validation champions, 0 final-test survivors/promotions (honest no-alpha result). Daily deterministic change-gated cron 7dbef0905258 at 12:55 UTC now reruns and stays silent unless an unseen positive final-test+FDR survivor appears; never auto-deploys. 6/6 tests pass; pipeline dependency validator 0 violations.
🏁 #142 Robinhood-chain wallet coverage — we are BLIND to it (missed the RWA token)⚙️ CAPABILITY2026-07-18
2026-07-19 03:00 cli DONE 260718: found + fixed the EXACT bug. gmgn_trending_multi.py FETCHES robinhood chain (line 367 loop already had it) but the RENDER loop (line 526) and CHAIN_EMOJI dict did not include robinhood - so robinhood signals were silently fetched then dropped from every TG card. Added robinhood to CHAIN_EMOJI (🪶) and the render loop. Verified: runs clean, syntax OK. This is very likely why we missed the RWA token - it was probably fetched and discarded at render, not undetected upstream.
🏁 #145 EP-21 phase 2: DECORRELATED exit primitives (so mixing can actually help)💰 PROFIT-EDGE2026-07-18
2026-07-19 15:17 cli PHASE-2 TESTED HONESTLY 260719. (1) Added peak_ts+time_to_peak_s FORWARD capture to paper_universal.py (4 sites) - needed for real time-stop/volume-exhaustion primitives, will accumulate over coming days/weeks. (2) Built + tested REGIME-CONDITIONAL exit (buildable today w/ existing regime_at_entry: poor/ground/extreme_poor) in mix_optimizer_core.py v1.1.0 - HONEST NULL RESULT: every regime independently picks TIGHT5 too, boot_win=0%, no decorrelation benefit from regime-switching. Confirms phase-1 finding at a second angle: only genuinely NEW telemetry (time-to-peak, volume-at-peak) can unlock decorrelated exits - not blending or regime-switching the SAME trailing-stop family. Capture is now live; re-test in ~2-3wks once n accumulates.
🏁 #110 EP-13 COVERAGE BIAS = the real bug — score measures enrichment, not accumulation💰 PROFIT-EDGE2026-07-17
2026-07-17 03:04 cli Chris approved 260716: do all. Build order = 110 (eyes) -> 112 (watchlist) -> 111 (arcanegems/sapphy+rune) -> 109 (weekly report). 111 upgraded: sapphy telegraphs subtly on arcanegems, Rune uses AnySwap bot to hide tracks.
2026-07-17 03:14 cli DEPLOYED 260716: accumulation_engine v1.8.0 + NEW lib/px_source v1.0.0, both registered in version_manager, v1.7.0 backed up. Dry-run PROOF: GMGN-CLUSTER + FRESH-SWARM (which fired on 172/235 + 162/235 of ALL historical fires) now correctly DROP OUT — they were firing off gtags with a 6.7d median / 11.7d max age. polled_snaps 3 -> 10 via DexScreener fallback. Alerts now carry conviction%% + coverage%% + N-blind.
🏁 #111 EP-14 Capture sapphy TG charts+commentary like we do Monaco (asymmetry gap)🔎 DISCOVERY2026-07-17
2026-07-17 03:04 cli Chris approved 260716: do all. Build order = 110 (eyes) -> 112 (watchlist) -> 111 (arcanegems/sapphy+rune) -> 109 (weekly report). 111 upgraded: sapphy telegraphs subtly on arcanegems, Rune uses AnySwap bot to hide tracks.
2026-07-17 03:14 cli DIAGNOSED 260716 — 3 concrete bugs, all confirmed: (1) COVERAGE: userbot IS in arcanegems but userbot_raw.jsonl only holds 119 msgs back to 07-14 17:59 (~2.5 days). Chris FLORK msgs 24188/24215 (~Jul 5) are NOT captured — FLORK mentions in arcanegems = ZERO. Need history backfill. (2) ATTRIBUTION COLLAPSED: userbot_config has _channel_sender_override {arcanegems: sapphycrypto} so ALL 119 msgs get sender=arcanegems/sapphycrypto. Chris: Rune CO-OWNS arcanegems and uses AnySwap bot to hide onchain tracks. We are misattributing Rune to sapphy. TG signed-channel posts carry post_author (the Sapphire / Rune signature visible in Chris screenshots) but grep confirms userbot.py NEVER reads post_author. FIX = capture post_author, drop the blunt override. Evidence msg 24494 is Rune quoting his own x.com/RuneCrypto_ thesis while labelled sapphy. (3) NO HARVESTER: call_type=unknown on all 119; nothing classifies arcanegems (monaco_wisdom_harvester does exactly this for Stuff_I_Ape). NOTE the system ALREADY encodes Chris thesis in _caller_notes: sapphycrypto = owner of arcanegems, top-tier moverwhale, SHILLS AFTER CABAL ACCUMULATION VIA SIDE WALLETS, x1000 track record. That note should drive a scored SHILL-LAG indicator (time from cabal side-wallet accumulation -> subtle mention -> open shill), not sit as prose.
2026-07-19 03:00 cli DONE 260718: sapphy_arcanegems_harvester.py v1.0.0 - cloned monaco_wisdom_harvester.py template (proven pattern). Backfilled 63 substantive posts from the already-captured arcanegems buffer (123 total messages, buffer only spans ~3d/50k lines - no older history exists to backfill). GROUNDING WORKS: verified live - a BRIAN mention auto cross-references accum_engine score 18 + known-wallet convergence n=10 + known-wallet DISTRIBUTION WARNING n=19, exactly Chris directive check against all other signals. Cronned 20/50 * * * * -> knowledge/sapphy_arcanegems_wisdom.md. HONEST GAP: keyword classifier under-tuned (61/63 fell to generic NOTE tag vs the 6 named categories) - needs a pass reading real captured examples to refine phrasing matches. Rune AnySwap-hidden tracks noted in header, no trace built (no address to trace yet).
🏁 #117 Wire strategy_family_scorecard as cron⚙️ CAPABILITY2026-07-17
2026-07-17 17:16 cli Shipped 260717: strategy_family_scorecard cron 2x/day + EXIT-STRATEGY leaderboard section
🏁 #118 Accumulation dedicated channel + dashboard⚙️ CAPABILITY2026-07-17
2026-07-17 17:16 cli Shipped 260717: accumulation.html live + hourly cron; signature leaderboard = accumulation indicators
🏁 #119 Speed up accum_engine cadence⚙️ CAPABILITY2026-07-17
2026-07-17 17:16 cli Resolved 260717: accum_engine healthy (rare-event, already 30m) — no change needed
🏁 #122 Wire EXIT_POLICY into paper_edge_incubator💰 PROFIT-EDGE2026-07-17
2026-07-17 17:16 cli In progress 260717: exit_edge_graduate companion — exits graduate/surface like entries
2026-07-17 17:19 cli Shipped 260717: exit_edge_graduate.py — exits now test→graduate→surface like entries; champion leads all 20 segments; roadmap leaderboard shows live+new exit graduates
🏁 #123 EP-16 DONE: gmgn gate v1.4.0 — hang+herd-close fix (crons unblocked)🛡 RELIABILITY2026-07-17
no comment logged
🏁 #125 #1 DONE: gmgn stuck-breaker self-heal (holder data restored)🛡 RELIABILITY2026-07-17
no comment logged
🏁 #92 EP: HIGHEST-EV Side-Wallet Activation Siren (Chris STANDING directive)⚙️ CAPABILITY2026-07-13
2026-07-19 02:56 cli DONE 260718: side_cluster_frontrun.py v1.1.0 now calls copy_decision.decide() on the groups PRIMARY wallet grade, emitting action/size_mult/tp_pct/sl_pct/timing on every FRONTRUN alert (was a bare setup-detected line). Verified: decide() returns real non-exception verdicts (tested SKIP case). No new detector - wired two existing builds together.
🏁 #95 EP: Multi-Trade Side-Wallet COPY ENGINE (capital-building flips)💰 PROFIT-EDGE2026-07-13
2026-07-19 02:56 cli DONE 260718: same wiring as #92 - the frontrun siren now IS the capital-building copy engine (action+size+tp+sl per side-wallet setup, 30min cron, 18 live setups observed). Multi-trade compounding is the natural next layer once paper-graded (EP-22 scalp lane is the dedicated fast-compounding build).
🏁 #64 EP-17 (#) Implicit-endorsement LLM sniffer + KOL reputation edge💰 PROFIT-EDGE2026-07-07
2026-07-07 04:45 cli Chris approved 260707 — build implicit-endorsement LLM sniffer + KOL reputation-history
2026-07-07 04:52 cli BUILT 260707: (a) kol_reputation v1.0.0 data-driven tiers from 1697 callers (50 S/53 A) -> wired into tweet_alpha v1.2.1. (b) tweet_semantic v1.0.0 implicit-endorsement LLM sniffer, cost-GATED OFF (social_config.json semantic_enabled) — activates on redacted join + flag. Reputation half LIVE now; LLM half ready.
🏁 #65 EP-18 (#) FLOOR REVIVAL detector — cabal-accumulation-at-floor → revival (the Ansem/Sapphy play)💰 PROFIT-EDGE2026-07-07
2026-07-07 04:45 cli Chris approved 260707 — build floor-revival detector, gated+paper+backtest before trust
2026-07-07 04:52 cli BUILT 260707 floor_revival v1.0.0 (cron 15min->180, wired into paper_universal). Fires on cipher-revival + cabal floor-accum (N wallets held through death) + supply control (top10%) +/- serial deployer +/- reputable social; on-chain gate. Live test: 6 fires incl bull (dead 3d, 18w, top10 64%, +325%). Backtest revival hit-rate via paper before trust.
🏁 #57 EP-14 (queue #57) GMGN filter-comb recurring + top_followed harvest💰 PROFIT-EDGE2026-07-06
2026-07-06 04:17 cli DEPLOYED 260706: 3 crons (ids 7e516959c385 4ef79924e1df d396415584a0) at 06:25/10:35/14:25 ET → thread 181. no_agent, candidates gated (backtest gate still required before any promote-to-tracked).
🏁 #58 Deploy fomo_harvester + fomo_card crons (30m)🔎 DISCOVERY2026-07-06
2026-07-06 16:34 cli deployed: fomo_harvester 12,42 + fomo_card 22,52 + fomo_graduate 17,47; card thread=75304 (own FOMO topic)
🏁 #59 FOMO side/front-run cluster EP🔎 DISCOVERY2026-07-06
2026-07-06 16:34 cli fomo_side_cluster v0.1.0 deployed daily 13:33 SHADOW; 34 hidden side/20 frontrun; kept off master_scanner glob until backtest
🏁 #61 Deepen arch.html interactivity (live source tables + node links)🔎 DISCOVERY2026-07-06
2026-07-06 16:34 cli arch v5.5.0 LIVE: fomo+userbot+protrending processes, drillable source tables, NEW-highlight, cache-bust; browser-verified
🏁 #63 EP-16 (#) Wire trading_style→copy params + identity→conviction into copy_decision/Karpathy💰 PROFIT-EDGE2026-07-06
2026-07-07 01:20 cli Chris approved 260706. Build in SHADOW/challenger mode; backtest per-style copy params via param_evaluator before it drives paper/real decisions (self-improvement gate).
2026-07-07 01:23 cli BUILT 260706 copy_decision v1.2.0 in SHADOW: style->TP/SL/size/timing + identity mult (kol .8 / smart 1.15 / top_followed 1.1). Logs base-vs-adjusted to copy_style_shadow.jsonl on every decide() (6 prod callers fill it). ENABLE (gates.style_overlay_enabled=true) pending param_evaluator proof that adjusted beats base on expectancy — the doom-loop gate.