safe toy "reactor" simulator + scada-ish http api.
- actors:
safety_actorgates all changes;core_actorowns mutable state - runtime: tokio (
mpsc+oneshot) - api: axum http
- logs: tracing
cd reactor-rs
cargo runserver listens on 0.0.0.0:8080.
docs/pwr-architecture.md- pwr block diagram + how it maps to the toy simdocs/plan.md- work plan / backlog
GET /health-> 200GET /status-> json statusGET /history-> json recent time seriesPOST /set_power->{ "zone": 0, "target_power_pct": 50 }POST /scram-> enter scram + force target power 0POST /reset-> idle + target power 0
- denies
target_power_pct > 80 - alarms:
temp_highif any zone temp >= 120c,scram_activewhen scram mode
- when
temp_highis active, ui enters a fire theme (body.temp-high) - zone labels are meme names (
voronezh,zhopa,muhosransk,zalupinsk,kukuevo)
- nominal thermal power is 3600 mw (
src/sim.rsNOMINAL_POWER_MW) - generator output scales with condenser vacuum; vacuum is improved by an always-on steam-jet ejector model (with a small steam bleed penalty)
- 3d secondary view includes spray ponds + condenser ejector visuals (
public/scene.js)