Source: course slides (Klyuchev A.O., ITMO, 2026). Each row names the repository that satisfies it, so nothing on the slides is left unowned.
Build a minimum viable simulation of a mining settlement on LV-426: 300 smart houses, a simulated environment, and the tooling to program the houses.
| Slide item | Owner | Done when |
|---|---|---|
| own programming language for smart homes | spec/language, houses |
language/ is written and at least three house programs exist |
| compiler (ANTLR4 + Kotlin) | compiler |
hopec house.hope -o house.hbc produces a file the VM loads |
| virtual machine for bytecode (C/C++) | vm |
hope-vm run executes every instruction in bytecode/isa.md |
| VM execution environment (any language) | runtime |
300 VM instances run in one process, driven by hh/clock |
| monitoring and debugging tools (any language) | monitoring, vm |
Grafana dashboard, issue list, hope-vm dump, --trace |
| Slide item | MVP | Later |
|---|---|---|
| atmosphere: temperature, humidity, pressure, wind, rain, snow, day/night | temperature, wind, precipitation, day/night | humidity, pressure, composition |
| people: owners, guests, thieves, vandals; wild animals | vandals and animals as incident sources | owners and guests with schedules |
| house: walls and windows with thickness and thermal conductivity | one U-value per house type | per-wall values |
| appliances, heating, water supply | heater, one fixed appliance load, water pressure flag | fridge, kettle, TV as separate loads |
| roads, barriers, garbage, road repair, street lighting | barriers and street lights as infra objects that can break | garbage collection, road repair |
| wired internet on power poles | internet follows the same pole graph as power | traffic |
| sewage: aeration station per house | one device per house that can break and cost money | |
| power: solar plant, UPS, grid | all three | |
| nuclear reactor on lower levels | a constant power source with a health value | fuel, maintenance |
All of these are rows in world/incidents.md. Each has a probability,
a target, a damage value, a repair time and a cost.
| Slide item | Incident kind |
|---|---|
| snow, wind, xenomorphs, rain tear wires and damage equipment | weather_damage, xenomorph_attack |
| marines shoot equipment | stray_fire |
| no light: rover knocks down poles and fences | rover_collision (only when street lights are off) |
| no electricity: houses freeze, pipes burst | consequence chain in world/physics.md, not an incident |
| vandals break everything | vandalism |
| wild animals break everything | animal_damage |
| Slide item | Owner | Done when |
|---|---|---|
| everything costs money: repairs, electricity, water | world (economy module) |
every consumption and repair becomes a transaction |
| monthly financial report per common property and per owner | world publishes, monitoring renders |
hh/billing/house/{id} and hh/billing/common appear once per simulated month |
| dashboard of problems for the settlement and per house | monitoring |
Grafana panel listing open issues, filterable by house |
| logs and metrics | runtime (logs), world (metrics), monitoring (storage) |
hh/house/{id}/log and a database with all sensor history |
The MVP is done when this chain runs end to end from infra/scenarios/snowstorm.yaml
with nobody touching anything:
- Outdoor temperature drops to -30, wind rises.
- Wind damages a power line, ten houses lose grid power.
- House programs switch on UPS. Houses without a UPS rule start cooling immediately.
- UPS batteries deplete, heaters stop, indoor temperature falls.
- Pipes freeze, then burst. Issues appear with status
open. - Repair crew resolves the issues after the repair time.
- Costs are charged: pipe repair to the owner, power line repair to the common budget.
- The dashboard shows the issues and the monthly report shows the money.
Recursion, user-defined functions, arrays and strings beyond log() in the
language. Per-room physics. Owner behaviour. Kubernetes. A custom frontend.