2356 lines
73 KiB
JSON
2356 lines
73 KiB
JSON
{
|
|
"id": "MP-01",
|
|
"linked_original_delivery": "P06-01",
|
|
"status": "proposed_unapproved",
|
|
"applied_to_product": false,
|
|
"counting_scope": "approval artifact only; excluded from original 88; not acceptance of P06-01",
|
|
"base_commit": "0bdc4886cf631879792e0c0a873ecf97b98a64ea",
|
|
"recommended": {
|
|
"initial_amount": 100,
|
|
"storage_capacity": 300,
|
|
"world_tree_generation_per_interval": 20,
|
|
"interval_minutes": 10,
|
|
"provenance": "candidate_unapproved",
|
|
"unit": "integer Mana per 10 game minutes; stock in Mana",
|
|
"demand_conversion": "D=sum(instance_count * observed_maintenance_mana); candidate conversion of allocation demand to interval energy, not existing consumption",
|
|
"demand_policy": "completed retained facilities including closed/unpowered facilities; no depletion waiver; destroyed/demolished excluded",
|
|
"furnace": {
|
|
"input_quantity": 1,
|
|
"input_unit": "eligible generic slave actor",
|
|
"output_quantity": 100,
|
|
"output_unit": "Mana",
|
|
"eligibility": "owned generic nonunique slave only; exclude heroes, rivals, unique/irreplaceable/protected/not-sellable actors, visitors, employees, detained unclassified actors; uncertain classification rejects",
|
|
"footprint": "6x3 BACK underground",
|
|
"timing": "one explicitly confirmed queued transaction per furnace at next 10-minute boundary; no automatic input",
|
|
"atomicity": "After natural generation and standing demand, compute base_after=min(C,max(0,B+G-D)); revalidate eligibility, ownership, furnace readiness and C-base_after>=100. Person removal, Mana credit and immutable receipt commit atomically or none; any rejection consumes nothing; replay never applies twice.",
|
|
"history": "persist transaction id, actor id and eligibility evidence, furnace id, boundary, before/after Mana, input/output and committed status in same save",
|
|
"interruption": "before commit cancel without removal; after commit restore receipt and never repeat; conflicting retry rejected; depleted furnace cannot initiate until natural generation restores power",
|
|
"actual_actor_consumption": false,
|
|
"eligibility_approval": "pending; eligibility predicate is a candidate, not an approved person classification",
|
|
"headroom_policy": "candidate: check after natural generation and demand; choice against before-demand alternative remains unapproved"
|
|
}
|
|
},
|
|
"alternatives": [
|
|
{
|
|
"id": "conservative",
|
|
"initial_amount": 100,
|
|
"storage_capacity": 200,
|
|
"world_tree_generation_per_interval": 10,
|
|
"interval_minutes": 10
|
|
},
|
|
{
|
|
"id": "generous",
|
|
"initial_amount": 200,
|
|
"storage_capacity": 600,
|
|
"world_tree_generation_per_interval": 40,
|
|
"interval_minutes": 10
|
|
}
|
|
],
|
|
"demand_catalog": [
|
|
{
|
|
"definition_id": "adult_private_room",
|
|
"path": "data/facilities/adult_private_room.tres",
|
|
"observed_maintenance_mana": 3,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "cafeteria",
|
|
"path": "data/facilities/cafeteria.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "black_market",
|
|
"path": "data/facilities/expansion/black_market.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "chapel",
|
|
"path": "data/facilities/expansion/chapel.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "omitted; FacilityDefinition default 0",
|
|
"provenance": "current_implementation",
|
|
"default_basis": "scripts/data/facility_definition.gd: FacilityDefinition maintenance_mana default = 0"
|
|
},
|
|
{
|
|
"definition_id": "cleaning_room",
|
|
"path": "data/facilities/expansion/cleaning_room.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "omitted; FacilityDefinition default 0",
|
|
"provenance": "current_implementation",
|
|
"default_basis": "scripts/data/facility_definition.gd: FacilityDefinition maintenance_mana default = 0"
|
|
},
|
|
{
|
|
"definition_id": "clinic",
|
|
"path": "data/facilities/expansion/clinic.tres",
|
|
"observed_maintenance_mana": 3,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "cold_storage",
|
|
"path": "data/facilities/expansion/cold_storage.tres",
|
|
"observed_maintenance_mana": 4,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "general_store",
|
|
"path": "data/facilities/expansion/general_store.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "omitted; FacilityDefinition default 0",
|
|
"provenance": "current_implementation",
|
|
"default_basis": "scripts/data/facility_definition.gd: FacilityDefinition maintenance_mana default = 0"
|
|
},
|
|
{
|
|
"definition_id": "guild_counter",
|
|
"path": "data/facilities/expansion/guild_counter.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "laundry",
|
|
"path": "data/facilities/expansion/laundry.tres",
|
|
"observed_maintenance_mana": 3,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "maintenance_workshop",
|
|
"path": "data/facilities/expansion/maintenance_workshop.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "mana_control_room",
|
|
"path": "data/facilities/expansion/mana_control_room.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "premium_room",
|
|
"path": "data/facilities/expansion/premium_room.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "private_bath",
|
|
"path": "data/facilities/expansion/private_bath.tres",
|
|
"observed_maintenance_mana": 4,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "secret_tavern",
|
|
"path": "data/facilities/expansion/secret_tavern.tres",
|
|
"observed_maintenance_mana": 3,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "staff_dormitory",
|
|
"path": "data/facilities/expansion/staff_dormitory.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "tea_lounge",
|
|
"path": "data/facilities/expansion/tea_lounge.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "underground_guest_room",
|
|
"path": "data/facilities/expansion/underground_guest_room.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "vip_private_salon",
|
|
"path": "data/facilities/expansion/vip_private_salon.tres",
|
|
"observed_maintenance_mana": 5,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "waste_processing",
|
|
"path": "data/facilities/expansion/waste_processing.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "guest_corridor",
|
|
"path": "data/facilities/guest_corridor.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "guest_elevator",
|
|
"path": "data/facilities/guest_elevator.tres",
|
|
"observed_maintenance_mana": 5,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "guest_stairs",
|
|
"path": "data/facilities/infrastructure/guest_stairs.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "service_stairs",
|
|
"path": "data/facilities/infrastructure/service_stairs.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "kitchen",
|
|
"path": "data/facilities/kitchen.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "massage_room",
|
|
"path": "data/facilities/massage_room.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "public_bath",
|
|
"path": "data/facilities/public_bath.tres",
|
|
"observed_maintenance_mana": 4,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "reception",
|
|
"path": "data/facilities/reception.tres",
|
|
"observed_maintenance_mana": 1,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "infirmary",
|
|
"path": "data/facilities/rescue/infirmary.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "omitted; FacilityDefinition default 0",
|
|
"provenance": "current_implementation",
|
|
"default_basis": "scripts/data/facility_definition.gd: FacilityDefinition maintenance_mana default = 0"
|
|
},
|
|
{
|
|
"definition_id": "security_station",
|
|
"path": "data/facilities/security_station.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "service_corridor",
|
|
"path": "data/facilities/service_corridor.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "service_elevator",
|
|
"path": "data/facilities/service_elevator.tres",
|
|
"observed_maintenance_mana": 6,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "staff_door",
|
|
"path": "data/facilities/staff_door.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "staff_waiting_room",
|
|
"path": "data/facilities/staff_waiting_room.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "standard_room",
|
|
"path": "data/facilities/standard_room.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "tavern",
|
|
"path": "data/facilities/tavern.tres",
|
|
"observed_maintenance_mana": 2,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
},
|
|
{
|
|
"definition_id": "warehouse",
|
|
"path": "data/facilities/warehouse.tres",
|
|
"observed_maintenance_mana": 0,
|
|
"observation": "explicit",
|
|
"provenance": "current_implementation"
|
|
}
|
|
],
|
|
"demand_catalog_scope": {
|
|
"resource_count": 37,
|
|
"one_each_sum": 63,
|
|
"registration_and_operation_not_assumed": true,
|
|
"unknown_original_facilities": [
|
|
"VIPスイート",
|
|
"ドミトリー",
|
|
"レストラン",
|
|
"屋台",
|
|
"カジノ",
|
|
"闘技場",
|
|
"高級ソープ",
|
|
"SM拷問室",
|
|
"覗き部屋",
|
|
"地下牢",
|
|
"マナ炉",
|
|
"ワープ",
|
|
"魔法砲台"
|
|
],
|
|
"unknown_demand": "unknown, never zero; not a full-game prediction; mana_control_room is not the original furnace"
|
|
},
|
|
"ordering": {
|
|
"approval": "D05 pending",
|
|
"observed": "APPLY_COMMANDS -> TIME_BOUNDARIES -> MANA -> CONSTRUCTION -> LOGISTICS -> FACILITY_COMPLETION -> VITALS_AND_ENVIRONMENT -> INCIDENTS_AND_EVENTS -> FACILITY_QUEUES -> AI_DECISIONS -> PUBLISH_SNAPSHOT",
|
|
"recommended": "retain existing phases; at MANA boundary snapshot inputs, stage natural generation, pay standing demand, check furnace headroom on base_after, stage eligible furnace transaction, calculate final reserve once, allocate network once, project global zero gate, commit person/Mana/receipt atomically before dependent phases; D05 and headroom-policy choice remain unapproved",
|
|
"boundaries": "00:00 existing ownership-based Gold upkeep and settlement timing retained; 06:00/18:00 shift boundary retained. Power change affects subsequent logistics/service completion/queues; no charges or actor departure for uncompleted service. EV/cargo pause in place, retain ids/load/route; resume after restored power without duplicate delivery. Cross-boundary in-flight disposition requires D05 approval.",
|
|
"zero": "after==0 stops all facilities including zero-demand ones; world tree natural recovery is external to stopped facilities; next boundary generation pays standing demand first; resume only after>0 and local supply valid",
|
|
"replay": "persist minute, input snapshot/hash, full flow, network projection and furnace receipts; identical replay no second mutation/events; conflicting or backwards replay reject; catch up every 10-minute boundary, never one aggregate period"
|
|
},
|
|
"legacy_zero": {
|
|
"observed": "GameState restore accepts nonnegative resource values including 0; Runtime projects reserve>0 gate; missing mana get_resource returns 0. No approved stock capacity or energy rate migration implied by network snapshot version 1 or save format versions 1/2.",
|
|
"recommended": "explicit versioned domain migration preview and verified backup; explicit old mana=0 stays 0 and stopped, never full or unlimited; positive stock preserved only if <= approved capacity; missing/ambiguous/noninteger/negative/overcapacity reject without changing original or live state",
|
|
"new_save": "approved new stock schema must persist capacity, amount, last boundary/flow and receipts; numeric domain version and source-version applicability need separate approval",
|
|
"recovery": "0 with restored world supply resumes only when boundary after>0; no offline generation unless separately approved"
|
|
},
|
|
"open_decisions": [
|
|
"D04: approve candidate initial/capacity/rate/period and maintenance conversion; no original numeric mandate",
|
|
"D05: boundary completion/cost, EV/cargo pause/resume and cross-midnight order remain unapproved",
|
|
"Approve furnace eligibility predicate, one actor ->100 Mana, timing/headroom rejection, atomic save receipts; actor classifications must be explicit before implementation",
|
|
"Approve legacy domain schema/version/applicability and missing/overcapacity rejection",
|
|
"Unknown 13 original facilities demand and runtime instance counts; no whole-game forecast",
|
|
"Separate network output/flow capacities from energy accounting; do not count reserve/network storage twice",
|
|
"Choose after-generation-and-demand headroom candidate versus before-demand headroom alternative; neither is approved"
|
|
],
|
|
"source_pins": {
|
|
"autoload/game_state.gd": "cf0e884910220e54c56b5875983e53de439af9d893be1e1b65c2121d2a30722f",
|
|
"autoload/simulation_runtime.gd": "d52a995ae715542bbc550f68d35889540658275d12e04ae0b21ac276f5843f39",
|
|
"data/facilities/adult_private_room.tres": "d8501586416b5c57a8b3b3b2afd1c0143428d8a4fa1df7112e995bd36649df6d",
|
|
"data/facilities/cafeteria.tres": "86d540fe2d78b9dcdbe5a0af6e4a001f4cec54934636ed01deb25a943c79128a",
|
|
"data/facilities/expansion/black_market.tres": "c209d734c82487f6df4c03714618865d6a5f1d2cf991dc0056fe4bbad8f03a42",
|
|
"data/facilities/expansion/chapel.tres": "9b30a7c51712e7bb99c17870d1f03e3429ea9279851d88284545bb2eb5042fcb",
|
|
"data/facilities/expansion/cleaning_room.tres": "ae366cf67cbf117db7989c6b76092eb5a65229b93d35999a40d19b8260f95ad8",
|
|
"data/facilities/expansion/clinic.tres": "339cf22c68d7ab3cb1514b9e8d2ea63dc0772fe93918d70767c11cf7b6ee0e16",
|
|
"data/facilities/expansion/cold_storage.tres": "1aac824147b52b41e124d2ab2ce63c3bac58de2ec7fc447a5806a1cf9fa9ad99",
|
|
"data/facilities/expansion/general_store.tres": "76872e0375648b43f05fdc5581ccabe4aa6a166674c3b523980dd1cf0b6e6dc1",
|
|
"data/facilities/expansion/guild_counter.tres": "93e8736da4aab8a17b1c8e7831c9a7b8de7f32d0ec251aa9aa5c8cf859c8fd7b",
|
|
"data/facilities/expansion/laundry.tres": "2518ea2e5da12cf4f2997502bf50f00dd8145caca153fb3486b44b99881fdab4",
|
|
"data/facilities/expansion/maintenance_workshop.tres": "8bd10332a9f45a252febdc626f22f90507317fb4cff5b18b2526aacd1f1a176b",
|
|
"data/facilities/expansion/mana_control_room.tres": "55e4c52a049ff61ddf3d081ccb990a8572b64bc7cf37d3a0d52ca5a08cc32f25",
|
|
"data/facilities/expansion/premium_room.tres": "6665090e041f36df5809314cd171be228a94bf77d7e93f5b70be648db4705d98",
|
|
"data/facilities/expansion/private_bath.tres": "241b807e7fa3a1b9dc4bda0d2495e637155cdaea89a4234e37a121f00098499c",
|
|
"data/facilities/expansion/secret_tavern.tres": "f0a1372931078fa0f93dd5b9cec6df6b137975479aa706633fdf6a9be4cf1f62",
|
|
"data/facilities/expansion/staff_dormitory.tres": "8d7c7cd6dfe98d137f7fef62e35eb31f82f1ca282216a40df54ac81728101271",
|
|
"data/facilities/expansion/tea_lounge.tres": "77d1ace36c5e84f80c0e6d563ae973c7ff1cd12b56956afd4895cdcdd5771a67",
|
|
"data/facilities/expansion/underground_guest_room.tres": "cdfd0f8cd21812a9972485926dff27daaa6718af16aac1651894728b087bef9e",
|
|
"data/facilities/expansion/vip_private_salon.tres": "1c94a7a70393262fba82112c3f4a0cb67ad22728664f5ca408f450049d3657a7",
|
|
"data/facilities/expansion/waste_processing.tres": "9954855c7a07e425376a220c589989beb6ec95da3c5331316ef3615a60b45f1d",
|
|
"data/facilities/guest_corridor.tres": "d77ccf267e20a26ed70527d29e8d54e6fcab1df213f02d5a4e28ead4f705276b",
|
|
"data/facilities/guest_elevator.tres": "ad4fb3c439ac4ed90fe52f07e29ed7b4ff654c54d1c400c7c8e226da77127af7",
|
|
"data/facilities/infrastructure/guest_stairs.tres": "757c687b1ebe2a3f237fb28092cd5f01591f15b2bcd1b4e639042a24635a92c6",
|
|
"data/facilities/infrastructure/service_stairs.tres": "637217d867bcc99669d27c54b6d2c391c82a4a17356ab9a80c897ccaee38622c",
|
|
"data/facilities/kitchen.tres": "38197aa8a3e90c03a82e9ccdc88bb444af4eeb0349c41a39e0bdd7b188e7d5d3",
|
|
"data/facilities/massage_room.tres": "75ecf845fb3cfa8d3150f6b0dc90e901953469af512611384b70cc4878d21e85",
|
|
"data/facilities/public_bath.tres": "8ec259f48ed75c8ab2e5154a1caccf19f6be04331adbe774b877f0a2d8b2f778",
|
|
"data/facilities/reception.tres": "bed3de120a0e98c539771d1bb189111d095712f8ae25dfdf7cb2983efc0dee9f",
|
|
"data/facilities/rescue/infirmary.tres": "c3e861533971e369068ae9e42f71b660fa4ab3893c7c1f798fc367893befd943",
|
|
"data/facilities/security_station.tres": "69f3f518df7714d00c8e954e9c7405aa44b683dd274181cc3da832cc956815b3",
|
|
"data/facilities/service_corridor.tres": "5d79fbde201d657740efcba924f595bd7075e069b344d708e424dbebbdc2f254",
|
|
"data/facilities/service_elevator.tres": "35d552d5b96065413feccb50847e3cd7173e673896ce65afba238f90abc25132",
|
|
"data/facilities/staff_door.tres": "a993058bfd809ccdbbb9a61b9850259d7bf6e60003e57ccfa3972f6c29170752",
|
|
"data/facilities/staff_waiting_room.tres": "5c7a2f7f7c508102c4ee89401ad6348191b57d1ff65538acb9d450e464a3a46f",
|
|
"data/facilities/standard_room.tres": "89f0a3a861d66afa4c1338ff1ec919685cf338b93b8da9a2387ce85e7e5bc336",
|
|
"data/facilities/tavern.tres": "eb494ae6ab0d1b9e88ae0a38944609702e43c81a370a29cfb030af9ae46f523c",
|
|
"data/facilities/warehouse.tres": "d0fcf0528da66da7b354ab5efaafe2483a7a76e05b324db255700ef73cdfc791",
|
|
"docs/plans/original-completion-2026-09-29/execution/CURRENT_FACILITY_AUDIT.md": "cb0fedecc8006bfdb4aed97eb75dfdbae54e44dee4cf36c9149f8c99246008b8",
|
|
"docs/plans/original-completion-2026-10-02/decisions.json": "ad0673051b0fa601e525f05128e0b11e2dddd9d4bae6a3e0170bbf47da35efe9",
|
|
"docs/spec/acceptance/P06-01.json": "823db2a3b74f1582b1c23b2273e3b8262f679f4d5e6c18ad93757375df1d19ca",
|
|
"docs/spec/acceptance/P06-mana-proposal.json": "7bc73267db99c06dba7a897d3d6377919c0572acba1057a894accd0afcf1adc4",
|
|
"docs/traceability/original/BASELINE.txt": "75e4bdbdeb379c9269553f0c776bdb9cc96e01f2d6aa5ca650d132c63a8aeb1a",
|
|
"scripts/core/definition_registry.gd": "e2ce5e0512a92fec6989e1bb5f0e7da1dbb50bd9ee67a07b4624fdc8bc65814f",
|
|
"scripts/core/save_migration_registry.gd": "22ac2cce07a02d1a2a9ac2109e7a0ecf9a0fbe675df4dc9d5249aa9ab3583f98",
|
|
"scripts/core/save_service.gd": "0c158d3e6ee693b89814bf232c954e4757c5ff91dc9df03bb322c3e593e73617",
|
|
"scripts/core/simulation_kernel.gd": "341c0c878c4894adbac628d0db6362ff69fc3347bdd9e61e50936e15dc2d1edb",
|
|
"scripts/data/facility_definition.gd": "e90d56f7eab69c2a75238de465925c1c6df57ee6d44b3b81e7f6fcfd069af0a1",
|
|
"scripts/mana/mana_network_service.gd": "96f195cf2a28b0966d12cd7c6fab86d13eae97c8342d07d70f52e598fbf49af9",
|
|
"scripts/mana/mana_power_projection.gd": "2026467960e857349bcb18fb97b7753189be5f2de2be91a17e73e90146eba69e",
|
|
"scripts/mana/mana_reserve_balance.gd": "cd462c279d37cc297466b64d9cf3fd71870df9508c1ff5f7189e22ddbdbef4b3",
|
|
"tests/s2/test_mana_reserve_balance.gd": "07fe5f10e665cac3c8aa1b12e0c71878ffccc6d4b409250b317135345e3c8a05"
|
|
},
|
|
"comparisons": [
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "low",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 118,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 118,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 136,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 136,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 154,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 154,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 172,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 172,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 190,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 190,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 208,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 208,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 226,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 226,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 244,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 244,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 262,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 262,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 280,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 280,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 298,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 298,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 16,
|
|
"after": 300,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 300,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "normal",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 104,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 104,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 108,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 108,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 112,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 112,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 116,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 116,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 120,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 120,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 124,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 124,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 128,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 128,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 132,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 132,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 136,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 136,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 140,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 140,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 144,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 144,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 148,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 148,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "excess",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 63,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 57,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 57,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 14,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 14,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 34,
|
|
"shortage": 29,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 63,
|
|
"consumed": 20,
|
|
"shortage": 43,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
}
|
|
],
|
|
"result_amount": 0,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "zero",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 0,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 4,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 4,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "capacity",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 300,
|
|
"generation": 20,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 18,
|
|
"after": 300,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 300,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "loss_and_return",
|
|
"period_minutes": 30,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 84,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 84,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 68,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 68,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 72,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 72,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "recommended",
|
|
"scenario": "same_minute_replay",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 20,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 104,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 104,
|
|
"replay": "same boundary and identical inputs: return stored receipt without changes; conflicting inputs: reject atomically"
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "low",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 108,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 108,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 116,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 116,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 124,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 124,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 132,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 132,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 140,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 140,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 148,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 148,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 156,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 156,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 164,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 164,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 172,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 172,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 180,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 180,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 188,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 188,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 196,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 196,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "normal",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 94,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 94,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 88,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 88,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 82,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 82,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 76,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 76,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 70,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 70,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 64,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 64,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 58,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 58,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 52,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 52,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 46,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 46,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 40,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 40,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 34,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 34,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 28,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 28,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "excess",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 63,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 47,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 47,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 57,
|
|
"shortage": 6,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 63,
|
|
"consumed": 10,
|
|
"shortage": 53,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
}
|
|
],
|
|
"result_amount": 0,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "zero",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 0,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 10,
|
|
"shortage": 6,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
}
|
|
],
|
|
"result_amount": 0,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "capacity",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 10,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 8,
|
|
"after": 200,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 200,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "loss_and_return",
|
|
"period_minutes": 30,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 84,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 84,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 68,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 68,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 62,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 62,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "conservative",
|
|
"scenario": "same_minute_replay",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 100,
|
|
"generation": 10,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 94,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 94,
|
|
"replay": "same boundary and identical inputs: return stored receipt without changes; conflicting inputs: reject atomically"
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "low",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 238,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 238,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 276,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 276,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 314,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 314,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 352,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 352,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 390,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 390,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 428,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 428,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 466,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 466,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 504,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 504,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 542,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 542,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 580,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 580,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 18,
|
|
"after": 600,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 600,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 38,
|
|
"after": 600,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 600,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "normal",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 224,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 224,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 248,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 248,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 272,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 272,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 296,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 296,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 320,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 320,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 344,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 344,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 368,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 368,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 392,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 392,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 416,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 416,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 440,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 440,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 464,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 464,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 488,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 488,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "excess",
|
|
"period_minutes": 120,
|
|
"inputs": {
|
|
"demand_per_interval": 63,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 177,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 177,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 154,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 154,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 131,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 390,
|
|
"to_minute": 400,
|
|
"before": 131,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 108,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 400,
|
|
"to_minute": 410,
|
|
"before": 108,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 85,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 410,
|
|
"to_minute": 420,
|
|
"before": 85,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 62,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 420,
|
|
"to_minute": 430,
|
|
"before": 62,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 39,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 430,
|
|
"to_minute": 440,
|
|
"before": 39,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 63,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 16,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 440,
|
|
"to_minute": 450,
|
|
"before": 16,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 56,
|
|
"shortage": 7,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 450,
|
|
"to_minute": 460,
|
|
"before": 0,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 40,
|
|
"shortage": 23,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 460,
|
|
"to_minute": 470,
|
|
"before": 0,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 40,
|
|
"shortage": 23,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
},
|
|
{
|
|
"from_minute": 470,
|
|
"to_minute": 480,
|
|
"before": 0,
|
|
"generation": 40,
|
|
"demand": 63,
|
|
"consumed": 40,
|
|
"shortage": 23,
|
|
"overflow": 0,
|
|
"after": 0,
|
|
"global_stop": true
|
|
}
|
|
],
|
|
"result_amount": 0,
|
|
"replay": null,
|
|
"depletion_summary": {
|
|
"after_interval_8": 16,
|
|
"first_zero_interval": 9,
|
|
"first_zero_minute": 450,
|
|
"basis": "200-8*(63-40)=16; interval 9 available=56, shortage=7, after=0"
|
|
}
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "zero",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 0,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 24,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 24,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "capacity",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 2,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 600,
|
|
"generation": 40,
|
|
"demand": 2,
|
|
"consumed": 2,
|
|
"shortage": 0,
|
|
"overflow": 38,
|
|
"after": 600,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 600,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "loss_and_return",
|
|
"period_minutes": 30,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 184,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 370,
|
|
"to_minute": 380,
|
|
"before": 184,
|
|
"generation": 0,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 168,
|
|
"global_stop": false
|
|
},
|
|
{
|
|
"from_minute": 380,
|
|
"to_minute": 390,
|
|
"before": 168,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 192,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 192,
|
|
"replay": null
|
|
},
|
|
{
|
|
"model": "generous",
|
|
"scenario": "same_minute_replay",
|
|
"period_minutes": 10,
|
|
"inputs": {
|
|
"demand_per_interval": 16,
|
|
"instance_mix": "low: cafeteria x1; normal: cafeteria,kitchen,public_bath,guest_elevator,reception,security_station x1 each; excess: all 37 definitions x1 including definition-only resources"
|
|
},
|
|
"flows": [
|
|
{
|
|
"from_minute": 360,
|
|
"to_minute": 370,
|
|
"before": 200,
|
|
"generation": 40,
|
|
"demand": 16,
|
|
"consumed": 16,
|
|
"shortage": 0,
|
|
"overflow": 0,
|
|
"after": 224,
|
|
"global_stop": false
|
|
}
|
|
],
|
|
"result_amount": 224,
|
|
"replay": "same boundary and identical inputs: return stored receipt without changes; conflicting inputs: reject atomically"
|
|
}
|
|
],
|
|
"formula": {
|
|
"available": "B+G+F",
|
|
"consumed": "min(B+G+F,D)",
|
|
"shortage": "D-consumed",
|
|
"overflow": "max(0,B+G+F-consumed-C)",
|
|
"after": "min(C,B+G+F-consumed)",
|
|
"period": "10 game minutes; 120-minute samples have 12 sequential boundaries; F=0 in comparisons",
|
|
"network": "local allocation still independently required; stock is accounted once globally, not summed with network stores"
|
|
},
|
|
"provenance": {
|
|
"original": "BASELINE 9.1 depletion; 10.6 furnace; 6.1/6.5 unique protection; no numerical balance",
|
|
"implementation": "GameState stock100; Runtime network source100; maintenance_mana allocation demand every10 game minutes, not reserve debit; reserve helper is caller-driven and not wired into periodic Runtime stock",
|
|
"fixture": "test_mana_reserve_balance: initial7/capacity10 at360, generation5/demand8 at370 ->4; purely test inputs",
|
|
"candidate": "recommended and alternatives are new unapproved design values; no product writes"
|
|
},
|
|
"validation": "static source reading and arithmetic only; formal proposal-consistency and independent review reserved for Runner",
|
|
"source_provenance": {
|
|
"autoload/game_state.gd": "current_implementation",
|
|
"autoload/simulation_runtime.gd": "current_implementation",
|
|
"data/facilities/adult_private_room.tres": "current_implementation",
|
|
"data/facilities/cafeteria.tres": "current_implementation",
|
|
"data/facilities/expansion/black_market.tres": "current_implementation",
|
|
"data/facilities/expansion/chapel.tres": "current_implementation",
|
|
"data/facilities/expansion/cleaning_room.tres": "current_implementation",
|
|
"data/facilities/expansion/clinic.tres": "current_implementation",
|
|
"data/facilities/expansion/cold_storage.tres": "current_implementation",
|
|
"data/facilities/expansion/general_store.tres": "current_implementation",
|
|
"data/facilities/expansion/guild_counter.tres": "current_implementation",
|
|
"data/facilities/expansion/laundry.tres": "current_implementation",
|
|
"data/facilities/expansion/maintenance_workshop.tres": "current_implementation",
|
|
"data/facilities/expansion/mana_control_room.tres": "current_implementation",
|
|
"data/facilities/expansion/premium_room.tres": "current_implementation",
|
|
"data/facilities/expansion/private_bath.tres": "current_implementation",
|
|
"data/facilities/expansion/secret_tavern.tres": "current_implementation",
|
|
"data/facilities/expansion/staff_dormitory.tres": "current_implementation",
|
|
"data/facilities/expansion/tea_lounge.tres": "current_implementation",
|
|
"data/facilities/expansion/underground_guest_room.tres": "current_implementation",
|
|
"data/facilities/expansion/vip_private_salon.tres": "current_implementation",
|
|
"data/facilities/expansion/waste_processing.tres": "current_implementation",
|
|
"data/facilities/guest_corridor.tres": "current_implementation",
|
|
"data/facilities/guest_elevator.tres": "current_implementation",
|
|
"data/facilities/infrastructure/guest_stairs.tres": "current_implementation",
|
|
"data/facilities/infrastructure/service_stairs.tres": "current_implementation",
|
|
"data/facilities/kitchen.tres": "current_implementation",
|
|
"data/facilities/massage_room.tres": "current_implementation",
|
|
"data/facilities/public_bath.tres": "current_implementation",
|
|
"data/facilities/reception.tres": "current_implementation",
|
|
"data/facilities/rescue/infirmary.tres": "current_implementation",
|
|
"data/facilities/security_station.tres": "current_implementation",
|
|
"data/facilities/service_corridor.tres": "current_implementation",
|
|
"data/facilities/service_elevator.tres": "current_implementation",
|
|
"data/facilities/staff_door.tres": "current_implementation",
|
|
"data/facilities/staff_waiting_room.tres": "current_implementation",
|
|
"data/facilities/standard_room.tres": "current_implementation",
|
|
"data/facilities/tavern.tres": "current_implementation",
|
|
"data/facilities/warehouse.tres": "current_implementation",
|
|
"docs/plans/original-completion-2026-09-29/execution/CURRENT_FACILITY_AUDIT.md": "historical_audit_not_current_acceptance",
|
|
"docs/plans/original-completion-2026-10-02/decisions.json": "decision_register",
|
|
"docs/spec/acceptance/P06-01.json": "original_or_task_contract",
|
|
"docs/spec/acceptance/P06-mana-proposal.json": "original_or_task_contract",
|
|
"docs/traceability/original/BASELINE.txt": "original_or_task_contract",
|
|
"scripts/core/definition_registry.gd": "current_implementation",
|
|
"scripts/core/save_migration_registry.gd": "current_implementation",
|
|
"scripts/core/save_service.gd": "current_implementation",
|
|
"scripts/core/simulation_kernel.gd": "current_implementation",
|
|
"scripts/data/facility_definition.gd": "current_implementation",
|
|
"scripts/mana/mana_network_service.gd": "current_implementation",
|
|
"scripts/mana/mana_power_projection.gd": "current_implementation",
|
|
"scripts/mana/mana_reserve_balance.gd": "current_implementation",
|
|
"tests/s2/test_mana_reserve_balance.gd": "fixture_not_approved_balance"
|
|
},
|
|
"furnace_comparisons": {
|
|
"provenance": "candidate_unapproved",
|
|
"inputs": {
|
|
"C": 300,
|
|
"G": 20,
|
|
"D": 16,
|
|
"F": 100
|
|
},
|
|
"arithmetic_formula": "available=B+G+F; consumed=min(available,D); overflow=max(0,available-consumed-C); after=min(C,available-consumed)",
|
|
"arithmetic_cases": [
|
|
{
|
|
"B": 200,
|
|
"before_cap": 304,
|
|
"overflow": 4,
|
|
"after": 300
|
|
},
|
|
{
|
|
"B": 196,
|
|
"before_cap": 300,
|
|
"overflow": 0,
|
|
"after": 300
|
|
},
|
|
{
|
|
"B": 300,
|
|
"before_cap": 404,
|
|
"overflow": 104,
|
|
"after": 300
|
|
}
|
|
],
|
|
"distinction": "Arithmetic overflow examples assume F=100; rejected furnace transactions actually use F=0 and consume no person or resource.",
|
|
"headroom_candidate": {
|
|
"check": "after generation and demand: base_after=min(C,max(0,B+G-D)); require C-base_after>=F",
|
|
"cases": [
|
|
{
|
|
"B": 200,
|
|
"base_after": 204,
|
|
"headroom": 96,
|
|
"accepted": false,
|
|
"actual_after": 204
|
|
},
|
|
{
|
|
"B": 196,
|
|
"base_after": 200,
|
|
"headroom": 100,
|
|
"accepted": true,
|
|
"actual_after": 300
|
|
},
|
|
{
|
|
"B": 300,
|
|
"base_after": 300,
|
|
"headroom": 0,
|
|
"accepted": false,
|
|
"actual_after": 300
|
|
}
|
|
]
|
|
},
|
|
"before_demand_alternative": {
|
|
"check": "after generation but before demand: generated=min(C,B+G); require C-generated>=F",
|
|
"cases": [
|
|
{
|
|
"B": 200,
|
|
"headroom": 80,
|
|
"accepted": false
|
|
},
|
|
{
|
|
"B": 196,
|
|
"headroom": 84,
|
|
"accepted": false
|
|
},
|
|
{
|
|
"B": 300,
|
|
"headroom": 0,
|
|
"accepted": false
|
|
}
|
|
]
|
|
},
|
|
"approval": "choice between policies pending; no actor consumption or product implementation"
|
|
}
|
|
}
|