BLOB DESK

CONTROL ROOM

Report · MD — —

CLICKABLE MARKDOWN · COPY READY

Project Recovery & Integrated Roadmap

PROJECT-RECOVERY-AND-INTEGRATED-ROADMAP-REPORT.md

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.*