For reviewers β be the learner, then the researcher
From your first click to real data β the whole system, live
Three steps: be a brand-new learner with zero history, watch the real running system turn your clicks into events, then become the researcher who reads the data. The middle panel is live from the actual containers.
β Be the learner β start from nothing
β‘ Watch the real system process it
β snapshot (log in for live)Event-sourcing pipeline β every interaction travels this path, auditable end-to-end:
Your answer
API
/v3/learner/attempt
βKafka / Redpanda
CDC
durable log
βConsumers Γ7
fan-out
learning Β· trajectory Β· projection Β· adaptation
βTrajectory
1.04M
rows (the science DB)
βProjections
61.1k
read-models (your view)
Events emitted (lifetime):
AdaptationGenerated
602.3k
RecommendationGenerated
1.4k
Governance live (ADC)
Which governance dimensions carry signal (std/mean β₯ 0.08):
The real containers behind those numbers (~37 services)
Serving
api (FastAPI)
gateway (nginx)
frontend (Next.js)
Event bus
redpanda / Kafka
outbox β CDC
Consumers
learning
trajectory-recorder
projection
adaptation
exploration
transfer-measurement
dlq-replay
Observability
prometheus
grafana
kafka-ui
cadvisor
dozzle
alertmanager
Live monitoring tools (open for review): The panels above are rendered from the live
/v3 metrics. The raw observability tools are also open:
Grafana β Β·
Prometheus β Β·
Kafka-UI β. Grafana is anonymous read-only; all three are reachable through the public tunnel for the review window (disable the Funnel afterward).
β’ Be the researcher β read the data
Your interactions are now rows in the trajectory DB above. Read them β yours and the aggregate science:
What you just saw A real learner's click β event-sourced through outbox β Kafka β 7 consumers β the trajectory DB the researcher reads β on the same running system, with governance and reproducibility built in. That auditable round-trip, not the AUC, is the contribution.