- Remove src/data/synthetic.ts + its test (AR refund, HCM onboarding,
GL close, Service Ops blueprints were hand-modelled fakes).
- Remove DataMode='snapshot'; the store now boots straight into live
EA2 with no fallback. EA2 errors surface as toasts, not fake data.
- Topbar / Settings / CommandBar wording: 'SNAPSHOT'/'LIVE' becomes
the unambiguous 'EA2' badge. No more user-facing mode switch.
- package.json name flowmaster-mission-control-demo → flowmaster-canvas.
- README rewritten — no longer calls the product a demo.
- store.test: drop the two tests that relied on synthetic scenarios
always being present; add one asserting an EA2-empty response leaves
the store cleanly empty (no error-stuck state).
All 23 vitest tests pass. tsc + vite build green. Bundle dropped
from ~238 kB gz → ~234 kB gz.
Polished command-center for FlowMaster with two data modes:
- SNAPSHOT: bundled src/scenarios.json from demo.flow-master.ai
- LIVE: in-browser fetch via src/lib/api.ts (dev-login + bearer)
Scenarios:
- procurement, extra-1, extra-2 (live from EA2)
- ar, hcm, gl, service (industry blueprints, same typed shell)
Honesty pass after Oracle review:
- No invented numbers (Telemetry derives SLA + agent acceptance from real data)
- Preview-only actions fire toasts naming the endpoint to wire them
- Blueprint tours framed as 'industry blueprint', not 'we don't have this yet'
- Mode pill + last-fetch age + refresh in topbar
- Dev CORS dodged via vite proxy; production deploys same-origin
18 vitest tests + 26 playwright smoke assertions + DOM layout audit.
Constraint: cross-origin live mode rejected by browser → fall back to snapshot
Rejected: hardcoded SLA % | dishonest demo metrics
Directive: wire preview-only action handlers to /api/runtime/transactions/{id}/actions to ship them for real
Confidence: high
Scope-risk: narrow
Not-tested: production deployment via flowmaster-ops overlay