Opens as plain Markdown. Use Copy report or select all in the box below.
# PROJECT RECOVERY AND INTEGRATED ROADMAP REPORT | Field | Value | | --- | --- | | Date (UTC) | 2026-09-27 | | Code root | `/opt/blob-desk-review/code` | | Live DB | `/opt/blob-desk-review/data/phase1_lab.db` | | Control Room | `http://76.13.253.14:8097` | | Accumulation | tmux `blob-desk-accum` with `--enable-shadow-decisions` | | Mode | `EVIDENCE_ONLY` | | Canonical roadmap | `ROADMAP.md` (this report is the detailed companion) | | Latest prior phase | **Phase 1N** implemented and verified | | Classification | **`SHADOW_VERTICAL_SLICE_DELIVERED`** | --- ## 1. Executive summary and honest current status Blob Desk is **not** a finished opportunity-intelligence product. It **is** a working EVIDENCE_ONLY research system with: - Live E1 discovery/admission into `PRIMARY_PROSPECTIVE` - Live market observation for frozen horizons T0 / T+1H / T+24H / T+48H - Live campaign + social/Grok research pathways (social linkage to primary remains sparse) - Gated Skeptic / JEV / Policy / Paper / Live (correctly dormant) - Control Room V4 with a frozen-science funnel (T+6H removed in Phase 1N) **What this recovery slice added:** a **Track B** prospective shadow-intelligence path that freezes EvidenceState at an explicit decision cutoff and records immutable hypothetical decisions **without waiting for T+24H**, without activating trading, and without contaminating H1. **Honest live finding:** under policy `shadow-eligibility-t0-liq-v1` (T0 SUCCESS + liquidity ≥ $30k), **all current PRIMARY events ABSTAIN**, overwhelmingly because observed T0 liquidity is far below $30k (typical $3–$120). That is a real market/population fact, not a broken pipeline. `HYPOTHETICAL_ELIGIBLE` will appear when a qualifying high-liquidity event is observed. | Live metric (post-slice) | Value | | --- | --- | | PRIMARY | 121 | | T0 SUCCESS / SOURCE_FAIL / MISSED | ~77 / 38 / 6 | | T24H SUCCESS | 0 (max age ~22h) | | EvidenceStates | ~243 | | Shadow decisions (current policy) | 121, all ABSTAIN | | Outcome complete | 0 | | Skeptic/JEV/Paper/Live | GATED | | Tests | **408 passed** | --- ## 2. Actual architecture and verified end-to-end capabilities ### 2.1 Control / data flow (as implemented) ```text RPC / E1 collector → verified_events (PRIMARY_PROSPECTIVE) → ensure_schedule(HORIZON_OFFSETS_SEC) → observe_due / DexScreener (UA + retries) → campaign + social search + Grok scout (parallel, non-blocking) → freeze_evidence_state(cutoff) ← NOW continuous via shadow → shadow_decisions (ABSTAIN | HYPOTHETICAL_ELIGIBLE) → [GATED] Skeptic → JEV → Policy → Paper fills → Live → Scientific path: T24H outcomes → H1 / EXP-SKEPTIC-V1 readiness ``` ### 2.2 Answers to the required capability questions | Question | Answer | | --- | --- | | Discover event + assemble evidence quickly enough for a prospective decision? | **Partially yes.** E1+observe+campaign run continuously; T0 window is tight (120s) but force-observe + urgent poll help. Shadow now freezes at decision time after T0 terminal. | | Discover pre-migration without contaminating migration cohort? | **Not yet.** Only PRIMARY migration cohort exists. Pre-migration must be a separate cohort (roadmap N3). | | Immutable snapshot of what was known at decision time? | **Yes now.** `freeze_evidence_state` + post-cutoff obs/evidence exclusion; `shadow_decisions.state_id` links the freeze. | | Social evidence real-time or retrospective? | **Mixed.** Mastodon/search runs live but primary social linkage is near-zero; much Grok/web evidence is research-oriented with variable timestamp quality. | | Distinguish unavailable vs verified absence? | **Mostly yes** in observation statuses (SOURCE_FAIL ≠ MISSED ≠ empty SUCCESS). Social still needs clearer per-event `NONE_OBSERVED` vs provider failure in the shadow summary (partial). | | Hypothetical decision without waiting for T+24H/T+48H? | **Yes now** (shadow path). Paper pipeline remains GATE_CLOSED and is not the shadow path. | | Evaluate that decision without look-ahead? | **Structure ready; evaluation not yet run** (no T24H SUCCESS yet). `look_ahead_safe` flag recorded. | | Model liquidity/slippage/execution delay/exits? | **No.** Shadow records eligibility only; no fills. Paper venue exists but gated. | | What works in production vs tests vs dormant? | **Prod:** E1, observe, campaign, social search, CR, shadow. **Tests+fixtures:** Skeptic harness, many phase1i/j paths. **Dormant/gated:** Skeptic activation, JEV, Policy, Paper fills, Live. | ### 2.3 Phase 1N confirmation Phase 1N is implemented: funnel excludes T+6H; observation reliability hardened; report on disk. This recovery work builds on it. --- ## 3. Critical gaps and impact (ranked by shadow-pipeline value) | Rank | Gap | Impact | | --- | --- | --- | | 1 | No continuous decision-time freeze before this slice | Could not claim prospective decisions — **addressed** | | 2 | Paper/Skeptic path waits on GATE3 / outcomes | Misleading if treated as “the” decision path — **shadow bypasses correctly** | | 3 | Full G1 top1 unavailable from DexScreener | Would force perpetual ABSTAIN if used as shadow gate — **shadow uses T0+liq; G1 diagnostic** | | 4 | Population liquidity ≪ $30k | Shadow ELIGIBLE rate = 0 today — **honest; not relaxed** | | 5 | Social not reliably in decision cutoff per event | Limits market+social experiments — **next** | | 6 | No pre-migration cohort | Cannot study earlier discovery without contamination — **later** | | 7 | No shadow-vs-outcome evaluation yet | Cannot prove economic value — **blocked on T24H age** | | 8 | CR previously conflated T+6H placeholder with ops | Fixed in 1N; shadow panel added | --- ## 4. Changes made (exact files) ### New | Path | Purpose | | --- | --- | | `phase1/shadow/__init__.py` | Schema `shadow_decisions`, freeze+decide, batch processor, CR summary | | `tests/test_shadow_intelligence.py` | Defer/ABSTAIN/ELIGIBLE/idempotency/cutoff leakage/batch | | `ROADMAP.md` | Canonical integrated roadmap | | `PROJECT-RECOVERY-AND-INTEGRATED-ROADMAP-REPORT.md` | This report | ### Modified | Path | Change | | --- | --- | | `phase1/evidence_state.py` | Exclude post-cutoff `observation_time` from freezes | | `phase1/loop.py` | `--enable-shadow-decisions` phase (non-blocking) | | `phase1/cli.py` | CLI flags for shadow | | `phase1/control_room/services.py` | `shadow_intelligence` panel | | `phase1/control_room/templates/dashboard.html` | Shadow section | | `phase1/control_room/static/control-room.js` | `renderShadow` | | `phase1/control_room/reports.py` | Catalog recovery report as primary | ### Schema ```sql CREATE TABLE shadow_decisions ( decision_id TEXT PRIMARY KEY, event_id TEXT NOT NULL, ... action TEXT NOT NULL, -- ABSTAIN | HYPOTHETICAL_ELIGIBLE state_id TEXT NOT NULL, cutoff_at TEXT NOT NULL, look_ahead_safe INTEGER, live_trading INTEGER DEFAULT 0, UNIQUE (event_id, policy_version) ); ``` No changes to H1, G1 constants, holdout, Outcome-Spec horizons, or promotion gates. --- ## 5. Tests **Baseline (Phase 1N):** 402 passed **After this slice:** **408 passed** (+6 shadow tests) ```text 408 passed in 46.01s ``` Coverage includes cutoff leakage rejection, no T24H wait, SOURCE_FAIL→ABSTAIN, liquidity gate ELIGIBLE in fixtures, idempotency, loop-independent batch processor. --- ## 6. Deployment and runtime verification | Step | Result | | --- | --- | | Control Room restart | pid active; `/health` ok | | Accum loop restart | `--enable-shadow-decisions` confirmed; `SHADOW: scanned=121 captured=0` (already decided) | | Live freeze+decide | 121 decisions under `shadow-eligibility-t0-liq-v1`; EvidenceStates populated | | CR API | `shadow_intelligence.available=true`; funnel without T6H; `live_trading=false` | | Mode | Still `EVIDENCE_ONLY` | Secrets: none exposed in reports. --- ## 7. Live data vs fixtures (separated) ### Live - PRIMARY 121; ages < 24h → T24H SUCCESS = 0 - T0 SUCCESS events have liquidity typically $2–$120 (none ≥ $30k observed) - Shadow current-policy: **121 ABSTAIN** (liquidity / SOURCE_FAIL / MISSED) - Historical SOURCE_FAIL remain `http:403` from pre-UA era (not rewritten) - Social events exist globally but linkage to primary remains weak ### Fixtures / tests only - `HYPOTHETICAL_ELIGIBLE` proven with synthetic liquidity > $30k + top1 meta - Skeptic/JEV evaluation harnesses remain fixture-driven and gated from prod activation --- ## 8. Current blockers | Blocker | Why it matters | Smallest next action | | --- | --- | --- | | No T24H SUCCESS yet | Cannot evaluate shadow or H1 outcomes | Wait for population age; keep observe healthy | | DexScreener lacks top1 | Full G1 cannot pass in prod | Keep G1 for science; shadow liq gate; optional future holder provider | | Liquidity < $30k on all current SUCCESS T0 | No ELIGIBLE shadows | Do **not** lower gate; surface rate in CR (done) | | Sparse primary social linkage | Market+social arm underpowered | Improve per-event social capture at cutoff (N1) | | GATE3 CLOSED / IV insufficient | Skeptic experiment not executable | Correct; do not force | --- ## 9. Single integrated roadmap See **`ROADMAP.md`** for the authoritative short form. ### Final product capability Real-time opportunity intelligence with prospective shadow decisions and separate scientific validation — no live trading until explicitly authorised. ### Critical path Reliability → decision snapshots → shadow decisions → social-at-cutoff → evaluate vs T24H → pre-migration cohort → gated paper → (much later) live. ### Next deliverable (N1) Per-event social presence at cutoff (`NONE_OBSERVED` vs `SOURCE_FAIL` vs linked), continuous new-admission shadow capture (already looped), CR clarity for liquidity abstain rate. ### Acceptance for “shadow track useful” 1. New events get EvidenceState + shadow decision after T0 terminal. 2. Reasons are explicit and non-fabricated. 3. No post-cutoff leakage. 4. Evaluation path defined for when T24H exists. ### Do not build yet Live trading, auto Skeptic/JEV/Paper, T+6H outcomes, SOCIAL_SCORE gates, PRIMARY contamination, threshold gaming. --- ## 10. Next recommended engineering action **Implement N1: decision-cutoff social evidence clarity.** For each shadow capture, attach a structured `social_at_cutoff` block: - `status`: `LINKED` | `NONE_OBSERVED` | `PROVIDER_FAIL` | `NOT_QUERIED` - retrieval timestamps vs cutoff - zero linked rows must not be conflated with provider failure Do **not** add SOCIAL_SCORE. Do **not** lower `$30k` liquidity. Do **not** activate Skeptic. --- ## Appendix A — Operating model tracks | Track | Live posture | | --- | --- | | A Discovery | E1 migration LIVE; pre-migration NOT built | | B Shadow | LIVE behind `--enable-shadow-decisions` | | C Science | Observing toward T24H; EXP-SKEPTIC-V1 REGISTERED not executed | ## Appendix B — Relationship of documents | Document | Role | | --- | --- | | `ROADMAP.md` | Canonical priorities / exit criteria | | This report | Audit + implementation evidence | | `PHASE1*.md` | Historical phase reports (do not fork new roadmaps) | --- *End of recovery report.*