Execute locomotive cost packed event descriptors

This commit is contained in:
Jan Petykiewicz 2026-04-16 11:19:53 -07:00
commit 09039d24e4
18 changed files with 785 additions and 21 deletions

View file

@ -0,0 +1,45 @@
{
"format_version": 1,
"snapshot_id": "packed-event-locomotive-cost-overlay-base-snapshot",
"source": {
"description": "Base runtime snapshot supplying locomotive catalog context for descriptor-driven named locomotive cost import."
},
"state": {
"calendar": {
"year": 1835,
"month_slot": 1,
"phase_slot": 2,
"tick_slot": 4
},
"world_flags": {
"base.only": true
},
"metadata": {
"base.note": "preserve locomotive cost catalog context"
},
"locomotive_catalog": [
{
"locomotive_id": 1,
"name": "Locomotive 1"
},
{
"locomotive_id": 101,
"name": "Locomotive 101"
}
],
"named_locomotive_cost": {
"Locomotive 1": 100000,
"Locomotive 101": 200000
},
"event_runtime_records": [],
"candidate_availability": {},
"named_locomotive_availability": {},
"special_conditions": {},
"service_state": {
"periodic_boundary_calls": 0,
"trigger_dispatch_counts": {},
"total_event_record_services": 0,
"dirty_rerun_count": 0
}
}
}

View file

@ -0,0 +1,82 @@
{
"format_version": 1,
"fixture_id": "packed-event-locomotive-cost-overlay-fixture",
"source": {
"kind": "captured-runtime",
"description": "Fixture backed by an overlay import document so recovered scalar locomotive cost descriptors execute against captured catalog context."
},
"state_import_path": "packed-event-locomotive-cost-overlay.json",
"commands": [
{
"kind": "service_trigger_kind",
"trigger_kind": 7
}
],
"expected_summary": {
"calendar": {
"year": 1835,
"month_slot": 1,
"phase_slot": 2,
"tick_slot": 4
},
"calendar_projection_is_placeholder": false,
"locomotive_catalog_count": 2,
"packed_event_collection_present": true,
"packed_event_record_count": 1,
"packed_event_decoded_record_count": 1,
"packed_event_imported_runtime_record_count": 1,
"packed_event_parity_only_record_count": 1,
"event_runtime_record_count": 1,
"named_locomotive_cost_count": 2,
"total_event_record_service_count": 1,
"total_trigger_dispatch_count": 1
},
"expected_state_fragment": {
"metadata": {
"base.note": "preserve locomotive cost catalog context",
"save_slice.import_projection": "overlay-runtime-restore-v1"
},
"named_locomotive_cost": {
"Locomotive 1": 250000,
"Locomotive 101": 325000
},
"packed_event_collection": {
"live_entry_ids": [41],
"records": [
{
"decode_status": "parity_only",
"payload_family": "real_packed_v1",
"import_outcome": "imported",
"grouped_effect_rows": [
{
"descriptor_id": 352,
"recovered_locomotive_id": 1
},
{
"descriptor_id": 475,
"recovered_locomotive_id": 101
}
]
}
]
},
"event_runtime_records": [
{
"record_id": 41,
"service_count": 1,
"effects": [
{
"kind": "set_named_locomotive_cost",
"name": "Locomotive 1",
"value": 250000
},
{
"kind": "set_named_locomotive_cost",
"name": "Locomotive 101",
"value": 325000
}
]
}
]
}
}

View file

@ -0,0 +1,140 @@
{
"format_version": 1,
"save_slice_id": "packed-event-locomotive-cost-overlay-save-slice",
"source": {
"description": "Tracked save-slice document proving recovered scalar locomotive cost descriptors import through overlay-backed catalog context.",
"original_save_filename": "captured-locomotive-cost-overlay.gms",
"original_save_sha256": "locomotive-cost-overlay-sample-sha256",
"notes": [
"tracked as JSON save-slice document rather than raw .smp",
"recovered locomotive cost descriptors 352 and 475 import through the ordinary runtime path when overlay catalog context resolves their ids"
]
},
"save_slice": {
"file_extension_hint": "gms",
"container_profile_family": "rt3-classic-save-container-v1",
"mechanism_family": "classic-save-rehydrate-v1",
"mechanism_confidence": "grounded",
"trailer_family": null,
"bridge_family": null,
"profile": null,
"candidate_availability_table": null,
"named_locomotive_availability_table": null,
"special_conditions_table": null,
"event_runtime_collection": {
"source_kind": "packed-event-runtime-collection",
"mechanism_family": "classic-save-rehydrate-v1",
"mechanism_confidence": "grounded",
"container_profile_family": "rt3-classic-save-container-v1",
"metadata_tag_offset": 29952,
"records_tag_offset": 30208,
"close_tag_offset": 30976,
"packed_state_version": 1001,
"packed_state_version_hex": "0x000003e9",
"live_id_bound": 41,
"live_record_count": 1,
"live_entry_ids": [41],
"decoded_record_count": 1,
"imported_runtime_record_count": 1,
"records": [
{
"record_index": 0,
"live_entry_id": 41,
"payload_offset": 30240,
"payload_len": 120,
"decode_status": "parity_only",
"payload_family": "real_packed_v1",
"trigger_kind": 7,
"one_shot": false,
"compact_control": {
"mode_byte_0x7ef": 7,
"primary_selector_0x7f0": 0,
"grouped_mode_0x7f4": 2,
"one_shot_header_0x7f5": 0,
"modifier_flag_0x7f9": 0,
"modifier_flag_0x7fa": 0,
"grouped_target_scope_ordinals_0x7fb": [0, 0, 0, 0],
"grouped_scope_checkboxes_0x7ff": [1, 0, 0, 0],
"summary_toggle_0x800": 1,
"grouped_territory_selectors_0x80f": [-1, -1, -1, -1]
},
"text_bands": [],
"standalone_condition_row_count": 0,
"standalone_condition_rows": [],
"negative_sentinel_scope": null,
"grouped_effect_row_counts": [2, 0, 0, 0],
"grouped_effect_rows": [
{
"group_index": 0,
"row_index": 0,
"descriptor_id": 352,
"descriptor_label": "Locomotive 1 Cost",
"target_mask_bits": 8,
"parameter_family": "locomotive_cost_scalar",
"opcode": 3,
"raw_scalar_value": 250000,
"value_byte_0x09": 0,
"value_dword_0x0d": 0,
"value_byte_0x11": 0,
"value_byte_0x12": 0,
"value_word_0x14": 0,
"value_word_0x16": 0,
"row_shape": "scalar_assignment",
"semantic_family": "scalar_assignment",
"semantic_preview": "Set Locomotive 1 Cost to 250000",
"recovered_locomotive_id": 1,
"locomotive_name": null,
"notes": [
"locomotive cost descriptor maps to live locomotive id 1"
]
},
{
"group_index": 0,
"row_index": 1,
"descriptor_id": 475,
"descriptor_label": "Locomotive 101 Cost",
"target_mask_bits": 8,
"parameter_family": "locomotive_cost_scalar",
"opcode": 3,
"raw_scalar_value": 325000,
"value_byte_0x09": 0,
"value_dword_0x0d": 0,
"value_byte_0x11": 0,
"value_byte_0x12": 0,
"value_word_0x14": 0,
"value_word_0x16": 0,
"row_shape": "scalar_assignment",
"semantic_family": "scalar_assignment",
"semantic_preview": "Set Locomotive 101 Cost to 325000",
"recovered_locomotive_id": 101,
"locomotive_name": null,
"notes": [
"locomotive cost descriptor maps to live locomotive id 101"
]
}
],
"decoded_conditions": [],
"decoded_actions": [
{
"kind": "set_named_locomotive_cost",
"name": "Locomotive 1",
"value": 250000
},
{
"kind": "set_named_locomotive_cost",
"name": "Locomotive 101",
"value": 325000
}
],
"executable_import_ready": false,
"notes": [
"scalar locomotive cost rows use overlay catalog context"
]
}
]
},
"notes": [
"overlay-backed locomotive cost effect sample"
]
}
}

View file

@ -0,0 +1,9 @@
{
"format_version": 1,
"import_id": "packed-event-locomotive-cost-overlay",
"source": {
"description": "Overlay import document combining a tracked base snapshot with a tracked recovered locomotive-cost save slice."
},
"base_snapshot_path": "packed-event-locomotive-cost-overlay-base-snapshot.json",
"save_slice_path": "packed-event-locomotive-cost-overlay-save-slice.json"
}

View file

@ -26,11 +26,12 @@
"packed_event_imported_runtime_record_count": 0,
"packed_event_parity_only_record_count": 3,
"packed_event_unsupported_record_count": 0,
"packed_event_blocked_missing_locomotive_catalog_context_count": 1,
"packed_event_blocked_missing_condition_context_count": 0,
"packed_event_blocked_territory_condition_scope_count": 0,
"packed_event_blocked_missing_compact_control_count": 0,
"packed_event_blocked_unmapped_real_descriptor_count": 0,
"packed_event_blocked_unmapped_world_descriptor_count": 3,
"packed_event_blocked_unmapped_world_descriptor_count": 2,
"packed_event_blocked_structural_only_count": 0,
"event_runtime_record_count": 0,
"total_company_cash": 0
@ -61,7 +62,7 @@
{
"decode_status": "parity_only",
"payload_family": "real_packed_v1",
"import_outcome": "blocked_unmapped_world_descriptor",
"import_outcome": "blocked_missing_locomotive_catalog_context",
"grouped_effect_rows": [
{
"descriptor_id": 352,

View file

@ -146,7 +146,7 @@
"decoded_actions": [],
"executable_import_ready": false,
"notes": [
"recovered locomotive cost metadata is now checked in, but execution is still deferred"
"recovered locomotive cost metadata is now checked in, but scalar rows still need overlay-backed locomotive catalog context to import"
]
},
{