Skip to content

Latest commit

 

History

History
75 lines (58 loc) · 4.36 KB

File metadata and controls

75 lines (58 loc) · 4.36 KB

Requirements for the MVP

Source: course slides (Klyuchev A.O., ITMO, 2026). Each row names the repository that satisfies it, so nothing on the slides is left unowned.

Task

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.

Tooling (slide "Инструментальные средства")

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

Environment (slide "Внешняя среда")

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

Problems (slide "Имитация проблем")

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

Settlement state (slide "Состояние виртуального поселка")

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

Acceptance scenario

The MVP is done when this chain runs end to end from infra/scenarios/snowstorm.yaml with nobody touching anything:

  1. Outdoor temperature drops to -30, wind rises.
  2. Wind damages a power line, ten houses lose grid power.
  3. House programs switch on UPS. Houses without a UPS rule start cooling immediately.
  4. UPS batteries deplete, heaters stop, indoor temperature falls.
  5. Pipes freeze, then burst. Issues appear with status open.
  6. Repair crew resolves the issues after the repair time.
  7. Costs are charged: pipe repair to the owner, power line repair to the common budget.
  8. The dashboard shows the issues and the monthly report shows the money.

Out of scope for the MVP

Recursion, user-defined functions, arrays and strings beyond log() in the language. Per-room physics. Owner behaviour. Kubernetes. A custom frontend.