Skip to content

feat: evolve Elevator Queue Lab into decision intelligence workbench - #23

Merged
oosuhada merged 7 commits into
mainfrom
feat/m8-decision-intelligence-workbench
Aug 23, 2026
Merged

oosuhada merged 7 commits into
mainfrom
feat/m8-decision-intelligence-workbench

Conversation

@oosuhada

Copy link
Copy Markdown
Owner

Summary

Evolves Elevator Queue Lab from a research simulator/dashboard into a reproducible Decision Intelligence / Operations Research workbench while preserving the simulator and committed evidence as the source of truth.

Architecture

  • Keeps ElevatorSimulation, traffic generation, controller logic, event ledger, experiment engine, and learned-policy evaluation intact.
  • Adds read-only evidence projections in app/artifacts.py and app/workbench.py for run artifacts, research objects, decision graphs, and deterministic explanations.
  • Makes frontend/ the React + TypeScript authored source and keeps web/ as the committed Vite production artifact served by the existing Python server.

Major Features

  • Product Shell: Live Operations, Runs, Dispatch Analysis, Experiments, Counterflow Criticality, Models, Explorer.
  • Preserved 18-floor / six-car live digital twin, controls, decision inspector, and deterministic replay.
  • Versioned PassengerTrace, SimulationRun, DispatchDecision, Experiment, PolicyEvaluation, Model, and TheoryEvidence artifact catalog with provenance.
  • Object Explorer and React Flow Decision Trace projected from simulator state, decision history, and event ledger; no graph database.
  • Typed semantic ChartSpec validation and registered React renderers.
  • Deterministic Ask This Run evidence queries without an LLM source of truth.
  • Canonical trace manifest/package support (trace.json, manifest.json, schema.json, validation.json).
  • Generalized PR CI, deterministic visual regression, and Playwright showcase capture.

Compatibility

  • Preserves python -m app.server --port 4173 as the production runtime.
  • Preserves existing /api/health, /api/snapshot, /api/control, /api/replay, /api/experiment, and /api/theory behavior while adding run-scoped workbench APIs.
  • Replaces the old authored vanilla browser monolith with the committed React production build without rewriting the simulator core.
  • Existing M3/M5/M6/M7 evidence files and deterministic trace identity remain intact.

Evidence Integrity

  • No fabricated metrics: analytics use simulator/API state or committed evidence.
  • CAPR remains traffic-regime dependent rather than globally superior.
  • The fixed M5 RL controller remains a negative/mixed result and is not presented as a general improvement.
  • The M7 counterflow threshold remains a fuzzy empirical threshold, not a universal critical constant.
  • Synthetic office demand is explicitly not real-building telemetry.

Testing

Local gates after rebasing onto current main:

  • TypeScript: PASS
  • Vitest: 5/5 PASS
  • Vite production build to web/: PASS
  • Python unit/contract tests: 51/51 PASS
  • Deterministic 2-seed experiment smoke: PASS
  • Artifact/trace validation: PASS
  • Release audit: PASS
  • Playwright functional + responsive + visual E2E: PASS
  • Visual suite reproduced successfully across consecutive full E2E runs
  • npm run capture:showcase: PASS
  • git diff --check origin/main...HEAD: PASS

Visual QA

Committed deterministic visual baselines cover:

  • Live Operations desktop
  • Live Operations mobile
  • Replay
  • Experiments
  • Theory
  • Models
  • Explorer / Decision Trace

Committed showcase captures are generated from the real Python backend + production frontend after browser interaction, including a CAPR reassignment and replay flow.

Deployment

The deployment contract remains the existing single Python process serving APIs and web/, compatible with the Mac mini launchd/proxy setup documented under deploy/.

This PR does not claim that the exact M8 commit is already deployed publicly. Production deployment requires the Mac mini to pull the merged commit and pass remote health/browser/release QA.

Known Limitations

  • Demand remains synthetic rather than measured building telemetry.
  • CAPR is not a global winner across traffic regimes.
  • The fixed RL checkpoint does not pass the general-superiority gate.
  • The counterflow critical threshold is fuzzy and project-specific.
  • Public M8 deployment is pending production infrastructure access/merge; local and CI validation are kept distinct from production verification.

Copy link
Copy Markdown
Owner Author

Final M8 validation update:

  • CI run #76 passed end-to-end on head e27fe00e9e323b817a85afe0b3a18ad90d61b9e1.
  • simulator: PASS (51 Python tests, deterministic experiment smoke, destination-control smoke, artifact/trace validation, release audit).
  • frontend: PASS (clean install, TypeScript, Vitest, production Vite build).
  • browser: PASS (functional E2E, replay, responsive/mobile, Explorer/Decision Trace, deterministic visual-state QA, CI screenshot artifact upload).
  • Full statistical regression is intentionally skipped on ordinary PRs and remains gated to main/schedule/explicit label.

Two CI-only issues were fixed without weakening research contracts: the trace-manifest schema was committed so clean checkouts no longer rely on a local-only file, and visual QA now keeps pixel baselines on the controlled local platform while GitHub Ubuntu captures the same seven scenes and enforces required information/geometry/no-horizontal-overflow checks to avoid false failures from OS font rasterization differences.

@oosuhada
oosuhada merged commit 735f1c1 into main Aug 23, 2026
4 checks passed
oosuhada added a commit that referenced this pull request Aug 26, 2026
…rkbench

feat: evolve Elevator Queue Lab into decision intelligence workbench
oosuhada added a commit that referenced this pull request Aug 26, 2026
…rkbench

feat: evolve Elevator Queue Lab into decision intelligence workbench
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant