diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl
index 4578ac3..b9c58fe 100644
--- a/.beads/issues.jsonl
+++ b/.beads/issues.jsonl
@@ -6,8 +6,8 @@
{"_type":"issue","id":"islandflow-259.2","title":"Synthetic market-data phase 02: manifests, fixtures, and CLI","description":"Implement manifest, fixture, and CLI support for deterministic synthetic runs as described in docs/implementation/synthetic-market-data/02-manifests-fixtures-cli.md. The phase turns the deterministic engine into reusable test/demo artifacts.","acceptance_criteria":"CLI can generate fixtures and expected-output-ready manifests from seed bundles and profiles; manifests pin generator version, seed, parameter hash, event hashes, and replay ordering; fixture helpers support infra-free Bun tests; generated artifacts avoid embedding hidden labels in market events.","spec_id":"docs/implementation/synthetic-market-data/02-manifests-fixtures-cli.md","status":"open","priority":1,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:37Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:38:37Z","labels":["phase","planning","synthetic-market-data"],"dependencies":[{"issue_id":"islandflow-259.2","depends_on_id":"islandflow-259","type":"parent-child","created_at":"2026-06-16T13:38:37Z","created_by":"dirtydishes","metadata":"{}"},{"issue_id":"islandflow-259.2","depends_on_id":"islandflow-zxh.1","type":"blocks","created_at":"2026-06-16T13:39:04Z","created_by":"dirtydishes","metadata":"{}"}],"dependency_count":1,"dependent_count":2,"comment_count":0}
{"_type":"issue","id":"islandflow-zxh.1","title":"Smart-flow phase 01: contracts and vocabulary","description":"Implement the contract and naming foundation described in docs/implementation/smart-money/01-contracts-vocabulary.md. The phase separates facts, evidence, hypotheses, confidence, abstention, and user-facing insight projections before classifier behavior is expanded.","acceptance_criteria":"Canonical contracts distinguish observations, evidence clusters, hypotheses, confidence vectors, abstention reasons, and insight projections; legacy smart-money naming is compatibility-only where needed; version fields are present; migration risks and aliases are documented.","spec_id":"docs/implementation/smart-money/01-contracts-vocabulary.md","status":"open","priority":1,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:36Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:38:36Z","labels":["phase","planning","smart-flow","smart-money"],"dependencies":[{"issue_id":"islandflow-zxh.1","depends_on_id":"islandflow-259.1","type":"blocks","created_at":"2026-06-16T13:39:03Z","created_by":"dirtydishes","metadata":"{}"},{"issue_id":"islandflow-zxh.1","depends_on_id":"islandflow-zxh","type":"parent-child","created_at":"2026-06-16T13:38:35Z","created_by":"dirtydishes","metadata":"{}"}],"dependency_count":1,"dependent_count":1,"comment_count":0}
{"_type":"issue","id":"islandflow-259.1","title":"Synthetic market-data phase 01: deterministic spine","description":"Implement the deterministic synthetic market-data foundation described in docs/implementation/synthetic-market-data/01-deterministic-spine.md. The phase extracts generation into a seeded package/API that emits canonical market events with provenance while keeping labels separate.","acceptance_criteria":"Seeded generation is byte/hash stable for fixed inputs; emitted events use canonical OptionPrint, OptionNBBO, EquityPrint, and EquityQuote contracts; provenance metadata includes run/seed/parameter context; hidden labels are not embedded in market events; early tests run without Docker, ClickHouse, NATS, or Redis.","spec_id":"docs/implementation/synthetic-market-data/01-deterministic-spine.md","status":"open","priority":1,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:34Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:38:34Z","labels":["phase","planning","synthetic-market-data"],"dependencies":[{"issue_id":"islandflow-259.1","depends_on_id":"islandflow-259","type":"parent-child","created_at":"2026-06-16T13:38:33Z","created_by":"dirtydishes","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0}
-{"_type":"issue","id":"islandflow-zxh","title":"Plan smart-money to smart-flow implementation phases","description":"Track the phase-by-phase implementation plan split from docs/plans/smart-flow-architecture-review.md. Durable roadmap: docs/implementation/smart-money/00-roadmap.md. This epic covers evidence-backed smart-flow contracts, clustering, hypothesis scoring, replay evaluation, API/UI explainability, and future calibration.","acceptance_criteria":"Phase docs exist under docs/implementation/smart-money; child phase issues link to their docs; blocker dependencies reflect the planned implementation order; no application code is implemented as part of this planning epic.","notes":"2026-06-16 planning-doc pass: added source-document links from architecture/phase docs to research docs, added compact research basis/deferred research sections, and clarified research docs as background rather than implementation scope. No application code changed.","spec_id":"docs/implementation/smart-money/00-roadmap.md","status":"in_progress","priority":1,"issue_type":"epic","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:32Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:53:41Z","started_at":"2026-06-16T17:51:54Z","labels":["planning","smart-flow","smart-money"],"dependency_count":0,"dependent_count":0,"comment_count":0}
-{"_type":"issue","id":"islandflow-259","title":"Plan synthetic market-data implementation phases","description":"Track the phase-by-phase implementation plan split from docs/plans/synthetic-market-data-architecture-review.md. Durable roadmap: docs/implementation/synthetic-market-data/00-roadmap.md. This epic covers deterministic synthetic event generation with canonical market event types, separate labels/manifests, replay integration, demo/load profiles, and future historical calibration.","acceptance_criteria":"Phase docs exist under docs/implementation/synthetic-market-data; child phase issues link to their docs; blocker dependencies reflect the planned implementation order; no application code is implemented as part of this planning epic.","notes":"2026-06-16 planning-doc pass: added source-document links from architecture/phase docs to research docs, added compact research basis/deferred research sections, and clarified research docs as background rather than implementation scope. No application code changed.","spec_id":"docs/implementation/synthetic-market-data/00-roadmap.md","status":"in_progress","priority":1,"issue_type":"epic","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:30Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:53:40Z","started_at":"2026-06-16T17:51:54Z","labels":["planning","synthetic-market-data"],"dependency_count":0,"dependent_count":0,"comment_count":0}
+{"_type":"issue","id":"islandflow-zxh","title":"Plan smart-money to smart-flow implementation phases","description":"Track the phase-by-phase implementation plan split from docs/plans/smart-flow-architecture-review.md. Durable roadmap: docs/implementation/smart-money/00-roadmap.md. This epic covers evidence-backed smart-flow contracts, clustering, hypothesis scoring, replay evaluation, API/UI explainability, and future calibration.","acceptance_criteria":"Phase docs exist under docs/implementation/smart-money; child phase issues link to their docs; blocker dependencies reflect the planned implementation order; no application code is implemented as part of this planning epic.","notes":"2026-06-16 readable HTML pass: added docs/implementation/smart-money/index.html as a standalone, dark-mode readable companion covering the roadmap and all smart-flow phases. No application code changed.","spec_id":"docs/implementation/smart-money/00-roadmap.md","status":"in_progress","priority":1,"issue_type":"epic","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:32Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:58:37Z","started_at":"2026-06-16T17:51:54Z","labels":["planning","smart-flow","smart-money"],"dependency_count":0,"dependent_count":0,"comment_count":0}
+{"_type":"issue","id":"islandflow-259","title":"Plan synthetic market-data implementation phases","description":"Track the phase-by-phase implementation plan split from docs/plans/synthetic-market-data-architecture-review.md. Durable roadmap: docs/implementation/synthetic-market-data/00-roadmap.md. This epic covers deterministic synthetic event generation with canonical market event types, separate labels/manifests, replay integration, demo/load profiles, and future historical calibration.","acceptance_criteria":"Phase docs exist under docs/implementation/synthetic-market-data; child phase issues link to their docs; blocker dependencies reflect the planned implementation order; no application code is implemented as part of this planning epic.","notes":"2026-06-16 readable HTML pass: added docs/implementation/synthetic-market-data/index.html as a standalone, dark-mode readable companion covering the roadmap and all synthetic phases. No application code changed.","spec_id":"docs/implementation/synthetic-market-data/00-roadmap.md","status":"in_progress","priority":1,"issue_type":"epic","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-16T17:38:30Z","created_by":"dirtydishes","updated_at":"2026-06-16T17:58:36Z","started_at":"2026-06-16T17:51:54Z","labels":["planning","synthetic-market-data"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"islandflow-0e3","title":"Fix PR 23 CI failures","description":"PR 23 is failing the Forgejo CI Validate workflow. Reproduce the failing gates locally, fix the underlying formatting/lint/typecheck/test/build issues, update the PR branch, and confirm the remote check passes.","status":"closed","priority":1,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-14T19:35:07Z","created_by":"dirtydishes","updated_at":"2026-06-14T19:37:01Z","started_at":"2026-06-14T19:35:12Z","closed_at":"2026-06-14T19:37:01Z","close_reason":"Local Validate workflow passes after applying formatter output and syncing the Docker workspace snapshot.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"islandflow-9w7","title":"Allow local dev origins on hosted API","description":"Local bun run dev:web and desktop-local point at the hosted API, but browser requests from http://127.0.0.1:3000 are blocked because the API omits CORS headers and returns 404 for OPTIONS preflight. Add API-side CORS handling, validate local web/desktop browser access, and deploy the API fix.","acceptance_criteria":"API responses include Access-Control-Allow-Origin for allowed local/dev origins; OPTIONS preflight succeeds; bun run dev:web reaches hosted REST/WS endpoints from a browser; bun run dev:desktop local mode reaches the backend through the local web UI; tests/build pass; fix is deployed to api.flow.deltaisland.io.","status":"closed","priority":1,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-13T15:04:19Z","created_by":"dirtydishes","updated_at":"2026-06-13T15:29:42Z","started_at":"2026-06-13T15:04:26Z","closed_at":"2026-06-13T15:29:42Z","close_reason":"Hosted API now reflects allowed local dev origins and handles OPTIONS preflight; local web and desktop dev runners both reach https://api.flow.deltaisland.io; API tests, typecheck, and web build passed.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"islandflow-xkq","title":"Rebuild production dashboard options news around mock9 aesthetic","description":"Reconstruct the production web UI for Dashboard, Options, and News around the mock9 through mock12 dense terminal aesthetic while preserving production data subscriptions, drawers, virtualization, route helpers, redirects, and validation.","status":"closed","priority":1,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-13T14:07:34Z","created_by":"dirtydishes","updated_at":"2026-06-13T14:26:46Z","started_at":"2026-06-13T14:07:53Z","closed_at":"2026-06-13T14:26:46Z","close_reason":"Rebuilt Dashboard, Options, and News around the dense mock9 to mock12 production aesthetic; tests and build passed, and Browser visual inspection was documented as blocked by the unavailable in-app browser backend.","dependency_count":0,"dependent_count":0,"comment_count":0}
diff --git a/docs/implementation/smart-money/index.html b/docs/implementation/smart-money/index.html
new file mode 100644
index 0000000..9e5dcfc
--- /dev/null
+++ b/docs/implementation/smart-money/index.html
@@ -0,0 +1,1041 @@
+
+
+
Evidence contracts, clustering, cautious hypotheses, replay evaluation, explainability, and future calibration. Research reports remain background rationale; active scope comes from Beads and the phase Markdown.
This roadmap breaks docs/plans/smart-flow-architecture-review.md into implementation-sized phases. The recommended direction is Option B: keep the working stack, but rebuild the domain pipeline around observations, evidence clusters, cautious hypotheses, confidence, alternatives, abstention, replay evaluation, and user-facing insight projections.
Introduce the domain vocabulary and contracts that distinguish observations, evidence clusters, hypotheses, confidence, abstention, and user-facing insight projections.
+
Why this phase comes now
+
The current system has useful infrastructure but overconfident domain names. Before changing classifier behavior, the codebase needs the language to express what is observed, what is inferred, what is uncertain, and when the system should abstain.
These documents are rationale, not added scope. This phase implements only vocabulary, contracts, versioning, and compatibility notes.
+
Research basis
+
+
The research direction is direct observation to inference to hypothesis, with preserved evidence and visible uncertainty.
+
"Smart money" should not be modeled as a canonical fact; user-facing insight should be a projection from evidence-backed hypotheses.
+
Confidence, conviction, alternatives, and abstention need separate language before behavior changes.
+
+
Deferred research ideas
+
+
Participant identity claims and research-grade calibration stay outside the vocabulary foundation.
+
+
Dependencies on earlier phases
+
+
islandflow-259.1 - Synthetic deterministic spine, so contract work can align with canonical raw event and provenance assumptions.
+
+
Likely files/modules touched
+
+
packages/types/src/events.ts
+
Shared type exports in packages/types/
+
Compatibility type aliases where legacy names are still needed
+
Storage schema planning docs or migration notes
+
Tests for schema parsing or event compatibility
+
+
In-scope work
+
+
Define or prepare contracts for FlowEvidenceCluster, FlowCandidate, FlowHypothesisEvent, SmartFlowInsight, EvidenceQuality, BaselineSnapshot, and version fields.
+
Mark legacy "smart money" naming as compatibility or projection language, not canonical truth.
+
Define how facts, evidence, hypotheses, scores, confidence, and abstention differ.
+
Preserve compatibility aliases for existing API/UI paths where necessary.
+
Add concise migration notes for future phases.
+
+
Explicitly out-of-scope work
+
+
Rewriting classifier scoring.
+
Moving ingest policy.
+
Adding new API endpoints or UI drawers.
+
Building replay golden suites.
+
Historical calibration or research-grade model fitting.
Legacy naming remains only where compatibility requires it.
+
Version fields are included for policy/model evolution.
+
Future phases can refer to these contracts without redefining the vocabulary.
+
Migration risk and compatibility aliases are documented.
+
+
Test strategy
+
Use type-level checks and schema/serialization tests where practical. Add compatibility tests only for public contracts that must remain stable. Avoid broad behavior tests until evidence extraction and scoring phases exist.
+
Risks / design traps
+
+
Renaming everything without compatibility will break consumers.
+
Keeping "smart money" as canonical language will preserve the old overconfidence.
+
Mixing facts and hypotheses in one event shape will make replay evaluation weaker.
+
Adding too many future fields can make contracts noisy before behavior exists.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/smart-money/01-contracts-vocabulary.md for Beads issue islandflow-zxh.1. Focus on contracts, vocabulary, version fields, and compatibility aliases only. Do not rewrite scoring, API/UI explainability, replay tests, or calibration.
+
Matching Beads issue title/id
+
+
islandflow-zxh.1 - Smart-flow phase 01: contracts and vocabulary
+
+
+
+
+
+
+
+ Phase 02
+ smart-flow
+
+
Smart-Flow Phase 02: Evidence Clustering and Features
Make evidence extraction, eligibility, quote/context joins, clustering, and feature construction explicit and traceable before hypothesis scoring changes.
+
Why this phase comes now
+
Contracts alone do not change behavior. This phase gives the system a clean evidence layer so later scoring can reason from auditable facts instead of a generic feature bag or overconfident classifier labels.
These documents are rationale, not added scope. This phase implements only eligibility, evidence facts, clustering, and traceable features.
+
Research basis
+
+
Trade signing, quote context, sale conditions, stale quotes, wide markets, and event context all affect whether a print is usable evidence.
+
Evidence should preserve raw refs, eligibility decisions, quality signals, and negative context before any hypothesis is scored.
+
Ingest should normalize observations; signal policy belongs in explicit evidence/scoring stages.
+
+
Deferred research ideas
+
+
Full IV-surface modeling, broad news/FDA event feeds, and deep historical baselines can be added later when scoped.
+
+
Dependencies on earlier phases
+
+
islandflow-zxh.1 - Smart-flow contracts and vocabulary
+
islandflow-259.2 - Synthetic manifests, fixtures, and CLI
+
+
Likely files/modules touched
+
+
services/compute/src/
+
packages/types/src/events.ts
+
packages/storage/src/ for typed evidence storage planning or implementation
+
Tests under services/compute/tests/
+
Fixture helpers from the synthetic package
+
+
In-scope work
+
+
Represent direct observations, quote joins, execution context, and eligibility decisions as evidence facts.
+
Build deterministic evidence clusters with traceable source refs.
+
Compute feature vectors from evidence while preserving whether a value is observed, derived, or inferred.
+
Carry evidence quality, stale quote, wide spread, odd lot, complex spread, and noisy context signals.
+
Move toward ingest-as-normalization, not ingest-as-signal-policy.
+
+
Explicitly out-of-scope work
+
+
Final hypothesis score policy.
+
API and UI explainability.
+
Historical calibration.
+
Claiming participant identity.
+
Replacing all storage tables in the same PR.
+
+
Acceptance criteria
+
+
Eligibility decisions have explicit accept, reject, or down-weight reasons.
+
Evidence clusters have deterministic keys/windows and preserve raw refs.
+
Feature values trace back to evidence refs.
+
Stale, wide, noisy, or ambiguous conditions can be represented without pretending to know intent.
+
The phase is split into PR-sized children when implementation starts.
+
+
Test strategy
+
Use deterministic fixtures from synthetic phase 02 where available. Add focused tests for quote joining, eligibility rejection, cluster key stability, feature derivation, and trace refs. Keep tests infra-free unless a later optional storage integration explicitly needs services.
+
Risks / design traps
+
+
Recreating the old FlowPacket as a renamed generic feature bag.
+
Letting ingest services make signal-policy decisions.
+
Losing evidence refs during aggregation.
+
Treating cluster features as hypotheses before the scoring phase.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/smart-money/02-evidence-clustering-features.md for Beads issue islandflow-zxh.2. Use split issues islandflow-zxh.2.1 and islandflow-zxh.2.2 for PR-sized work. Focus on evidence facts, eligibility, clustering, and traceable features. Do not implement final scoring, API/UI explainability, or calibration.
+
Matching Beads issue title/id
+
+
islandflow-zxh.2 - Smart-flow phase 02: evidence clustering and features
Convert evidence clusters into cautious flow hypotheses with explicit score vectors, alternatives, penalties, confidence, conviction, and abstention reasons.
+
Why this phase comes now
+
Scoring should wait until the system can represent evidence clearly and synthetic scenarios can describe expected positive, negative, and abstention cases. This phase is where the product stops acting like every signal is a confident "smart money" claim.
These documents are rationale, not added scope. This phase implements only cautious hypothesis scoring, alternatives, penalties, and abstention.
+
Research basis
+
+
Premium concentration, sweep-like activity, IV movement, and equity confirmation support hypotheses only when evidence quality and context agree.
+
False positives from deep-ITM stock replacement, spreads/hedges, stale quotes, and event-driven flow need explicit penalties or abstention.
+
Confidence should reflect policy confidence in the evidence, not a claim of hidden participant identity.
+
+
Deferred research ideas
+
+
Empirical threshold tuning, historical calibration, and ML-based scoring stay future work until replay/golden validation exists.
+
+
Dependencies on earlier phases
+
+
islandflow-zxh.1 - Smart-flow contracts and vocabulary
+
islandflow-zxh.2 - Evidence clustering and features
+
islandflow-259.3 - Synthetic scenarios, labels, and expected outputs
+
+
Likely files/modules touched
+
+
services/compute/src/
+
packages/types/src/events.ts
+
packages/storage/src/smart-money-events.ts or successor storage modules
+
Compute tests and fixture/golden comparison helpers
+
Compatibility projection code for legacy alerts or classifier hits
+
+
In-scope work
+
+
Define score vectors for hypothesis type, direction, evidence strength, confidence, conviction, and penalties.
+
Preserve alternative explanations and negative evidence.
+
Make abstention a first-class output with reasons.
+
Add policy/model version fields.
+
Derive compatibility SmartFlowInsight or legacy projections from canonical hypothesis events.
+
+
Explicitly out-of-scope work
+
+
UI presentation overhaul.
+
API endpoint expansion.
+
Historical calibration.
+
Participant identity claims.
+
Tuning all thresholds against live historical data.
+
+
Acceptance criteria
+
+
Hypothesis scores separate evidence strength, confidence, conviction, and penalties.
+
Abstention outputs include machine-readable and user-readable reasons.
+
Alternative explanations are preserved.
+
Compatibility projections do not become the canonical domain model.
+
Score policy changes are deterministic against synthetic fixtures.
+
+
Test strategy
+
Use synthetic scenario fixtures and expected-output manifests. Cover positive hypotheses, abstentions, false-positive suppressions, alternative explanations, and noisy scenarios. Keep output comparisons stable and focused on score signatures rather than brittle full payload dumps.
+
Risks / design traps
+
+
Rebranding old classifier hits as hypotheses without changing semantics.
+
Treating confidence as probability when it is only policy confidence.
+
Hiding abstention in logs instead of output events.
Implement docs/implementation/smart-money/03-hypothesis-scoring-abstention.md for Beads issue islandflow-zxh.3. Use split issues islandflow-zxh.3.1 and islandflow-zxh.3.2 for PR-sized work. Build cautious hypothesis scoring, alternatives, and abstention from evidence clusters. Do not add API/UI explainability or historical calibration.
+
Matching Beads issue title/id
+
+
islandflow-zxh.3 - Smart-flow phase 03: hypothesis scoring and abstention
Make deterministic replay and golden output comparison the acceptance gate for smart-flow behavior changes.
+
Why this phase comes now
+
Replay evaluation should come after synthetic replay can select stable runs and after hypothesis scoring has outputs worth validating. This phase turns architecture discipline into a repeatable test path.
These documents are rationale, not added scope. This phase implements only deterministic replay evaluation and compact golden tests.
+
Research basis
+
+
Replay is the acceptance gate for derived smart-flow outputs because evidence and hypotheses must be reproducible.
+
Validation must include positive cases, false positives, noisy contexts, and abstentions.
+
Tests should avoid lookahead bias and compare stable signatures instead of brittle full-payload dumps.
+
+
Deferred research ideas
+
+
Historical backtesting windows, empirical calibration datasets, and broad benchmark reports belong in later calibration work.
+
+
Dependencies on earlier phases
+
+
islandflow-zxh.1 - Smart-flow contracts and vocabulary
+
islandflow-zxh.2 - Evidence clustering and features
+
islandflow-zxh.3 - Hypothesis scoring and abstention
+
islandflow-259.4 - Synthetic replay integration
+
+
Likely files/modules touched
+
+
services/replay/src/
+
services/compute/tests/
+
Synthetic fixture and manifest comparison helpers
+
Golden fixture directories
+
Optional service-container integration config if added later
+
+
In-scope work
+
+
Recompute derived evidence/hypothesis outputs from raw synthetic streams.
+
Compare stable output signatures with expected manifests.
+
Include positive, abstention, false-positive, and noisy scenarios.
+
Make replay/golden tests deterministic and infra-free by default.
+
Gate optional ClickHouse/NATS/Redis tests outside the default path.
+
+
Explicitly out-of-scope work
+
+
New scoring policy beyond fixes needed for deterministic evaluation.
+
UI explainability.
+
Historical calibration.
+
Large generated fixture dumps.
+
Making Docker-backed tests mandatory.
+
+
Acceptance criteria
+
+
Replay recomputes derived smart-flow outputs from raw fixtures.
+
Golden signatures cover positive, abstain, false-positive, and noisy scenarios.
+
Default tests are deterministic and infra-free.
+
Optional service-backed tests are clearly gated.
+
Failures show concise, reviewable diffs or signature mismatches.
+
+
Test strategy
+
Use fixture-backed replay and compact golden signatures first. Add a small number of representative scenarios rather than broad generated dumps. If service-backed tests are added, mark them optional and document their dependencies.
+
Risks / design traps
+
+
Golden files that are too large will become rubber-stamped.
+
Full payload comparisons may break on harmless metadata changes.
+
Optional infra tests can accidentally become required in CI.
+
Replay that starts from derived events instead of raw fixtures will miss pipeline regressions.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/smart-money/04-replay-evaluation-golden-tests.md for Beads issue islandflow-zxh.4. Build deterministic replay/golden validation from raw synthetic fixtures. Keep default tests infra-free, compare stable signatures, and do not add UI explainability or historical calibration.
+
Matching Beads issue title/id
+
+
islandflow-zxh.4 - Smart-flow phase 04: replay evaluation and golden tests
Expose evidence-backed smart-flow outputs through API, websocket, and UI surfaces that make evidence quality, confidence, conviction, alternatives, and abstention understandable.
+
Why this phase comes now
+
The presentation layer should wait until contracts, evidence, scoring, and replay evaluation are stable. Otherwise the UI will harden old overconfident language or teach users to trust unvalidated outputs.
Use API contract tests, websocket payload tests, and focused UI tests for evidence/abstention rendering. Validate with deterministic demo runs from synthetic phase 05. Manual visual review should supplement, not replace, replay/golden validation.
+
Risks / design traps
+
+
UI can accidentally reintroduce "smart money" certainty.
+
API aliases can become de facto canonical if not documented.
+
Too many fields without hierarchy will make explainability harder to scan.
+
Building UI before replay validation can make demos persuasive but untrustworthy.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/smart-money/05-api-ui-explainability.md for Beads issue islandflow-zxh.5. Use split issues islandflow-zxh.5.1 and islandflow-zxh.5.2 for PR-sized work. Expose evidence-backed API/WS/UI explainability after replay/golden validation. Do not change core scoring or add calibration.
Plan future calibration of smart-flow confidence, policy thresholds, penalties, and abstention behavior after the MVP evidence/hypothesis pipeline is working and replay-validated.
+
Why this phase comes now
+
The architecture should leave room for calibration, but calibration should not block the MVP. The system first needs clean facts, evidence, hypotheses, and replayable evaluation before tuning can be meaningful.
Future calibration tooling in services/compute/ or a research package
+
Policy/model version registry
+
Evaluation reports or benchmark datasets
+
Storage/query helpers for historical derived outputs
+
Documentation for metrics and calibration governance
+
+
In-scope work
+
+
Define calibration datasets and evaluation metrics.
+
Specify how confidence, conviction, penalties, abstention, and alternatives are tuned.
+
Preserve policy/model versioning and replayability.
+
Document what makes a calibration dataset acceptable.
+
Keep user-facing confidence semantics auditable.
+
+
Explicitly out-of-scope work
+
+
MVP contracts and scoring foundations.
+
API/UI explainability for the initial pipeline.
+
Treating historical calibration as proof of participant identity.
+
Using private or licensed data in committed fixtures without approval.
+
+
Acceptance criteria
+
+
Calibration remains outside the MVP blocker chain.
+
Dataset provenance, metrics, and policy versioning are documented before implementation.
+
Confidence and abstention semantics remain explainable after tuning.
+
Replay can compare calibrated policy versions without losing auditability.
+
+
Test strategy
+
When implemented, use replayed benchmark datasets with versioned policy outputs. Track false positives, abstentions, precision-like metrics, and scenario-specific regressions. Keep calibration tests separate from the early deterministic fixture tests.
+
Risks / design traps
+
+
Treating calibrated confidence as objective truth.
+
Tuning to demos instead of representative market regimes.
+
Losing policy version lineage.
+
Committing restricted data or large generated benchmark artifacts.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/smart-money/99-future-calibration.md for Beads issue islandflow-zxh.6 only after the MVP smart-flow phases are complete. Define calibration datasets, metrics, policy versioning, and replay comparison. Do not make calibration a prerequisite for earlier evidence, scoring, or UI work.
Deterministic generation, manifests, scenarios, replay, demos, and future calibration. Research reports remain background rationale; active scope comes from Beads and the phase Markdown.
This roadmap breaks docs/plans/synthetic-market-data-architecture-review.md into implementation-sized phases. The recommended direction is still Option B: extract deterministic synthetic generation into a first-class reusable engine while keeping the useful NATS, ClickHouse, compute, API, replay, and web stack.
The research documents are background and rationale only. Scope comes from the Beads issue and the phase document.
+
Core Constraints
+
+
Emit canonical market event types: OptionPrint, OptionNBBO, EquityPrint, and EquityQuote.
+
Do not create synthetic-only market event types for the main pipeline.
+
Keep hidden ground-truth labels separate from emitted market events.
+
Keep early quality gates infra-free: bun test should not require Docker, ClickHouse, NATS, or Redis.
+
Build deterministic foundations before demos, UI controls, or live synthetic service behavior.
+
Treat historical calibration as future work, not as a dependency for the MVP synthetic generator.
+
+
Phase Sequence
+
+
Phase
Beads issue
Depends on
Purpose
+
+
01 - Deterministic spine
islandflow-259.1
None
Create the seeded generation foundation and canonical event output contract.
+
02 - Manifests, fixtures, CLI
islandflow-259.2
islandflow-zxh.1
Turn deterministic generation into durable fixtures and manifests.
+
03 - Scenarios, labels, expected outputs
islandflow-259.3
islandflow-zxh.2
Author named scenarios, separate labels, and expected derived outputs.
+
04 - Replay integration
islandflow-259.4
islandflow-zxh.3
Make replay consume synthetic runs with stable ordering and output comparison.
+
05 - Demo and load profiles
islandflow-259.5
islandflow-zxh.4
Expose named deterministic demo/load profiles after replay validation.
+
99 - Future historical calibration
islandflow-259.6
islandflow-259.5
Calibrate parameters from historical data later, after the MVP is stable.
+
+
PR Split Notes
+
Most phases are intended to fit in one focused PR. Phase 03 is already split into PR-sized Beads children because scenario authoring and expected-output comparison can grow quickly:
+
+
islandflow-259.3.1 - Split synthetic phase 03a: scenario catalog and labels
Create the reusable deterministic foundation for synthetic market data. This phase should define the package/API shape for seeded generation, stable run identity, profile inputs, canonical event outputs, and provenance metadata.
+
Why this phase comes now
+
Everything else depends on reproducible raw events. Manifests, labels, replay, demos, and smart-flow tests are only trustworthy if the same seed/profile bundle produces the same canonical market event stream every time.
Pick and wrap a deterministic PRNG so fixed inputs produce stable output.
+
Emit canonical OptionPrint, OptionNBBO, EquityPrint, and EquityQuote events.
+
Attach provenance such as source_kind, run_id, parameter_snapshot_hash, and optional scenario_id.
+
Preserve compatibility with the existing pipeline's raw market event contracts.
+
Add fast deterministic tests that run in plain bun test.
+
+
Explicitly out-of-scope work
+
+
Scenario catalogs and ground-truth label records.
+
Manifest generation and CLI workflows.
+
Replay service integration.
+
Hosted demo controls or live synthetic emitters.
+
Historical calibration from real market data.
+
Docker, ClickHouse, NATS, or Redis integration tests.
+
+
Acceptance criteria
+
+
A fixed seed/profile bundle produces byte-stable or hash-stable event output.
+
Generated events use canonical market event contracts, not synthetic-only pipeline event types.
+
Hidden labels are not embedded in emitted market events.
+
Provenance metadata is available for downstream filtering and auditing.
+
Tests cover determinism, tick validity, quote/trade invariants, and basic profile normalization without requiring infrastructure.
+
+
Test strategy
+
Use infra-free Bun tests. Cover PRNG repeatability, profile parsing, event ordering within generated batches, option quote/print validity, equity quote/print validity, and provenance field stability. Avoid any test that needs Docker, ClickHouse, NATS, or Redis.
+
Risks / design traps
+
+
Hiding wall-clock timers or random calls inside the generator will break determinism.
+
Creating synthetic-only market event types will fork the pipeline contract.
+
Embedding labels directly on market events will leak ground truth into production-like paths.
+
Over-designing a full market simulator now will slow down the MVP.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/01-deterministic-spine.md for Beads issue islandflow-259.1. Stay inside the deterministic synthetic market-data foundation only. Do not add scenario labels, manifests, replay integration, demos, or historical calibration. Emit canonical market event types and keep early tests infra-free.
Turn the deterministic generator into reusable artifacts: fixture files, run manifests, and a CLI that can produce repeatable synthetic runs for tests, replay, demos, and later evaluation.
+
Why this phase comes now
+
The deterministic spine gives the repo stable raw events. The next step is to make those events durable and addressable so downstream phases can reference exact generated runs instead of recreating ad hoc local randomness.
These documents are rationale, not added scope. This phase implements only manifests, fixtures, and CLI support.
+
Research basis
+
+
Deterministic replay and reviewable artifacts are necessary for synthetic data to be useful as validation data, not just demo data.
+
Expected-output manifests should pin seed, profile, generator version, event hashes, and replay ordering.
+
Hidden labels must stay separate from market events so tests do not leak ground truth into production-like paths.
+
+
Deferred research ideas
+
+
Empirical residual resampling and historical-window bootstrapping are future artifact sources, not this CLI's first requirement.
+
+
Dependencies on earlier phases
+
+
islandflow-259.1 - Synthetic deterministic spine
+
islandflow-zxh.1 - Smart-flow contracts and vocabulary, so manifest expectations can align with the emerging evidence/hypothesis language
+
+
Likely files/modules touched
+
+
Future packages/synthetic-market/ CLI entrypoints
+
Fixture directories under a package or service test area
+
Manifest schemas, likely JSON or YAML
+
package.json scripts if a repo command is added
+
Tests for manifest parsing and fixture generation
+
+
In-scope work
+
+
Define ExpectedOutputManifest, ReplayPlan, and generated fixture artifact layout.
+
Add a CLI command that accepts seed bundle, profile, scenario/run name, output directory, and deterministic generation options.
+
Write manifests that pin generator version, seed bundle, parameter snapshot hash, generated event hashes, replay ordering, and run metadata.
+
Add fixture helpers for tests to load generated batches without infrastructure.
+
Keep labels as separate records or future manifest sections, not market-event fields.
+
+
Explicitly out-of-scope work
+
+
Full scenario catalog authoring.
+
Smart-flow expected output comparisons.
+
Replay service source selection.
+
ClickHouse fixture materialization.
+
UI demo selection.
+
Historical calibration.
+
+
Acceptance criteria
+
+
A CLI can generate repeatable fixtures and manifests from fixed inputs.
+
Manifests include generator version, seed/profile identity, parameter hash, event hashes, and replay ordering.
+
Fixture helpers can load generated event batches in infra-free tests.
+
Generated artifacts do not embed hidden labels into canonical market events.
+
Re-running generation with the same inputs produces stable manifests or an intentional diff.
+
+
Test strategy
+
Use plain Bun tests for CLI argument parsing, manifest schema parsing, deterministic fixture output, and fixture-loader helpers. Golden files should be small and intentionally reviewed. Do not require Docker, ClickHouse, NATS, or Redis.
+
Risks / design traps
+
+
Manifests that omit generator version or parameter hashes will become hard to audit.
+
Large generated fixtures can create noisy reviews; keep early fixtures tiny.
+
A CLI that silently uses defaults will make tests look deterministic while hiding input drift.
+
Mixing expected smart-flow outputs too early can couple this phase to unfinished classifier changes.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/02-manifests-fixtures-cli.md for Beads issue islandflow-259.2. Build manifest, fixture, and CLI support on top of the deterministic spine. Keep tests infra-free and do not implement scenario labels, replay integration, demo profiles, or historical calibration.
+
Matching Beads issue title/id
+
+
islandflow-259.2 - Synthetic market-data phase 02: manifests, fixtures, and CLI
+
+
+
+
+
+
+
+ Phase 03
+ synthetic-market-data
+
+
Synthetic Market-Data Phase 03: Scenarios, Labels, and Expected Outputs
Author named deterministic scenarios, separate ground-truth labels, and expected-output manifests that downstream smart-flow logic can use for positive, negative, abstention, and false-positive validation.
+
Why this phase comes now
+
The generator and manifest layers should exist before scenario authoring. Smart-flow evidence clustering should also define enough vocabulary for expected outputs to describe evidence requirements without leaking labels into emitted market events.
These documents are rationale, not added scope. This phase implements only named scenarios, separate labels, and expected-output contracts.
+
Research basis
+
+
Scenario injection into a realistic synthetic background is mandatory for labeled, replayable alert tests.
+
Negative, noisy, stale, wide-market, and event-context cases matter as much as positive "should detect" scenarios.
+
Labels and expected outputs need required evidence, forbidden evidence, confidence bands, and false-positive penalties.
+
+
Deferred research ideas
+
+
Empirical tuning of scenario frequencies, full historical replay-plus-mutation, and learned scenario generation belong after the MVP scenario catalog is stable.
+
+
Dependencies on earlier phases
+
+
islandflow-259.1 - Synthetic deterministic spine
+
islandflow-zxh.1 - Smart-flow contracts and vocabulary
+
islandflow-259.2 - Manifests, fixtures, and CLI
+
islandflow-zxh.2 - Evidence clustering and features
+
+
Likely files/modules touched
+
+
Future scenario catalog files under packages/synthetic-market/
+
Label schema definitions
+
Manifest expected-output sections
+
Fixture generation tests
+
Smart-flow fixture expectations in compute test areas, once available
+
+
In-scope work
+
+
Define ScenarioInjection and GroundTruthLabel records.
+
Add named scenario profiles for institutional directional flow, retail-attention flow, event/noise flow, volatility-seller behavior, hedge-reactive flow, arbitrage-like structure, and no-alert negatives.
+
Keep labels keyed by run_id, scenario_id, event IDs or trace IDs, expected class, expected direction, confidence band, required evidence, forbidden evidence, and false-positive penalties.
+
Extend manifests with expected derived events, alert/no-alert expectations, and evidence requirements.
+
Make generated scenario outputs reviewable and deterministic.
+
+
Explicitly out-of-scope work
+
+
Emitting labels on market events.
+
Building a live synthetic service.
+
Adding UI scenario controls.
+
Implementing historical calibration.
+
Rewriting smart-flow scoring behavior beyond what is needed to express expected outputs.
+
+
Acceptance criteria
+
+
Scenario fixtures are named, deterministic, and small enough for review.
+
Labels remain separate from emitted market events.
+
Expected-output manifests include positive expectations, no-alert expectations, evidence requirements, forbidden evidence, and false-positive penalties.
+
The phase can test both "should detect" and "should abstain or suppress" cases.
+
Existing issue islandflow-9dz is treated as related scenario-tuning context, not as the broad phase tracker.
+
+
Test strategy
+
Use fixture-generation and manifest-validation tests first. Add focused golden comparisons only where the smart-flow contract is ready. Keep the default test path infra-free. Optional service-backed scenario loading can wait for a later integration phase.
+
Risks / design traps
+
+
Labels leaking into canonical event payloads will invalidate evaluation.
+
Only authoring positive scenarios will make the classifier overfit demos.
+
Broad scenario catalogs can become too large for one PR.
+
Expected outputs that name legacy "smart money" certainty can undermine the new evidence/hypothesis model.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/03-scenarios-labels-expected-outputs.md for Beads issue islandflow-259.3. Split the work using islandflow-259.3.1 and islandflow-259.3.2 if needed. Keep labels separate from emitted events, include negative/no-alert expectations, and avoid demos or live service work.
Make replay consume synthetic runs deterministically, either directly from generated fixtures or from materialized storage rows, while preserving the same ordering semantics the real replay path uses.
+
Why this phase comes now
+
Replay should not be wired to synthetic data until the generator, manifests, labels, and smart-flow hypothesis pipeline have stable semantics. At this point, replay can become a serious acceptance gate instead of a demo convenience.
Derived output signatures can be compared with expected manifests.
+
Fast replay tests remain infra-free by default.
+
Optional infra-backed tests are clearly named and gated.
+
+
Test strategy
+
Start with fixture-backed replay ordering tests and manifest-signature comparisons. Add optional service-container or ClickHouse materialization tests only after the fast path is stable, and do not make those tests part of the default bun test requirement.
+
Risks / design traps
+
+
Creating a synthetic-only replay path with different ordering will hide bugs.
+
Letting optional infra tests become default will slow or destabilize CI.
+
Comparing full raw payloads everywhere may make tests brittle; use stable signatures where better.
+
Replay selectors that are not run-scoped can mix synthetic and live data.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/04-replay-integration.md for Beads issue islandflow-259.4. Add synthetic source/run replay support with stable ordering and manifest comparison. Do not add demo controls, load profiles, or historical calibration, and keep the fast test path infra-free.
Expose deterministic synthetic runs as named demo and load profiles after the generation, manifest, scenario, and replay foundations are in place.
+
Why this phase comes now
+
Demos are useful only after the underlying data can be trusted. This phase deliberately waits until replay and golden evaluation prove the event semantics, so hosted controls do not become a front door to ambient randomness.
These documents are rationale, not added scope. This phase implements only named deterministic demo and load profiles.
+
Research basis
+
+
Demo streams should use named, seeded profiles so product behavior is reproducible.
+
Load profiles should scale rate or volume without changing event semantics.
+
Realism should come from the generator and scenarios, not hidden UI knobs or wall-clock randomness.
+
+
Deferred research ideas
+
+
Historically bootstrapped demo streams, learned realism upgrades, and full LOB-style demos stay future work.
+
+
Dependencies on earlier phases
+
+
islandflow-259.1 - Synthetic deterministic spine
+
islandflow-259.2 - Manifests, fixtures, and CLI
+
islandflow-259.3 - Scenarios, labels, and expected outputs
+
islandflow-259.4 - Replay integration
+
islandflow-zxh.4 - Smart-flow replay evaluation and golden tests
+
+
Likely files/modules touched
+
+
Thin synthetic emitters in services/ingest-options/ and services/ingest-equities/
+
Demo/run selection API surfaces in services/api/
+
Web demo controls in apps/web/
+
Load profile definitions in the synthetic package
+
Tests for profile selection and rate scaling
+
+
In-scope work
+
+
Add named DemoProfile and LoadProfile definitions.
+
Make live/demo emitters thin consumers of deterministic synthetic runs.
+
Let demo controls select named runs/scenarios rather than changing hidden random behavior.
+
Ensure load profiles scale event rates without changing event semantics.
+
Document local demo usage once implemented.
+
+
Explicitly out-of-scope work
+
+
Foundation generator work.
+
New smart-flow scoring policy.
+
Replacing replay evaluation with UI-only checks.
+
Historical calibration.
+
Production provider configuration decisions.
+
+
Acceptance criteria
+
+
Demo profiles are deterministic and named.
+
Load profiles scale rate or volume without mutating scenario semantics.
+
Hosted or local controls select known runs/scenarios.
+
Live/demo emitters remain thin and do not own generator policy.
+
The UI does not expose synthetic controls before the backing deterministic runs exist.
+
+
Test strategy
+
Use unit tests for profile parsing, profile selection, and rate-scaling semantics. Add replay-driven smoke checks for named demo runs. Manual UI validation is appropriate only after automated replay/golden checks pass.
+
Risks / design traps
+
+
Demo controls can pressure the codebase back into wall-clock randomness.
+
Load profiles may accidentally change business semantics while changing only rate was intended.
+
UI-first implementation can hide missing run provenance.
+
Reusing production config for synthetic demos can make operator behavior ambiguous.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/05-demo-load-profiles.md for Beads issue islandflow-259.5. Add named deterministic demo/load profiles and thin emitter/control integration only after replay validation exists. Do not implement historical calibration or change production provider policy.
+
Matching Beads issue title/id
+
+
islandflow-259.5 - Synthetic market-data phase 05: demo and load profiles
Plan future calibration of synthetic generator parameters from historical market data without making historical data a dependency for the MVP generator.
+
Why this phase comes now
+
It is useful to name the future work now so early designs keep calibration hooks in mind. It should not come before deterministic generation, manifests, scenarios, replay, or demo profiles.
These documents are rationale, not added scope. This future phase is the place to turn research ideas into scoped calibration work after MVP.
+
Research basis
+
+
Once historical data exists, calibration should fit arrival curves, spread states, size mixtures, venue shares, and options-chain activity weights.
+
Replay-plus-mutation can improve realism while preserving deterministic test intent.
+
Calibration should layer onto the deterministic engine rather than replace it wholesale.
+
+
Deferred research ideas
+
+
Generative ML, learned LOB simulators, and agent-based models remain later research tracks unless a future Beads issue scopes them explicitly.
+
+
Dependencies on earlier phases
+
+
islandflow-259.5 - Synthetic demo and load profiles
+
+
Likely files/modules touched
+
+
Future calibration tools under the synthetic package
+
Historical data import or sampling utilities
+
Parameter fitting scripts
+
Documentation for data provenance and licensing constraints
+
Optional research notebooks or reports if the repo later adopts them
+
+
In-scope work
+
+
Define calibration datasets and constraints.
+
Specify how historical distributions map to ParameterSnapshot, liquidity, volatility, and option-chain profiles.
+
Preserve deterministic replay from calibrated parameters.
+
Document privacy, licensing, and provenance requirements for historical data.
+
+
Explicitly out-of-scope work
+
+
MVP synthetic generator requirements.
+
Early tests and fixture generation.
+
Live synthetic demos.
+
Smart-flow scoring changes.
+
Any assumption that historical data is needed to start implementation.
+
+
Acceptance criteria
+
+
Historical calibration remains outside the MVP blocker chain.
+
Calibration inputs and ownership constraints are documented before implementation.
+
Fitted parameters can still be pinned into deterministic seed/profile bundles.
+
Calibration does not require emitted synthetic events to diverge from canonical market event contracts.
+
+
Test strategy
+
When this future phase is implemented, use small public or licensed calibration samples with deterministic parameter fitting tests. Add regression checks that calibrated profiles still produce stable manifests. Do not retrofit historical data into earlier infra-free tests.
+
Risks / design traps
+
+
Treating calibration as necessary for MVP will delay foundational work.
+
Historical data licensing can constrain what can be committed or shared.
+
Overfitting synthetic profiles to a tiny period can produce misleading demos.
+
Calibration tools can accidentally leak proprietary or sensitive data into fixtures.
+
+
Suggested future Codex implementation prompt
+
Implement docs/implementation/synthetic-market-data/99-future-historical-calibration.md for Beads issue islandflow-259.6 only after MVP synthetic phases are complete. Keep calibration optional, documented, and deterministic. Do not make historical data a dependency for earlier synthetic tests or demos.