Implement ordinary packed event conditions
This commit is contained in:
parent
087ebf1097
commit
f73234cb99
28 changed files with 2624 additions and 86 deletions
|
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-ordinary-company-finance-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving real ordinary Current Cash conditions gate Company Cash through the normal runtime path."
|
||||
},
|
||||
"state_import_path": "packed-event-ordinary-company-finance-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 7
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"territory_count": 1,
|
||||
"company_territory_track_count": 3,
|
||||
"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,
|
||||
"packed_event_blocked_unmapped_ordinary_condition_count": 0,
|
||||
"event_runtime_record_count": 1,
|
||||
"total_event_record_service_count": 1,
|
||||
"total_trigger_dispatch_count": 1,
|
||||
"total_company_cash": 623
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"current_cash": 333
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"current_cash": 90
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"current_cash": 200
|
||||
}
|
||||
],
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "imported",
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "company_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"metric": "current_cash",
|
||||
"comparator": "ge",
|
||||
"value": 100
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"event_runtime_records": [
|
||||
{
|
||||
"record_id": 41,
|
||||
"service_count": 1,
|
||||
"conditions": [
|
||||
{
|
||||
"kind": "company_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"metric": "current_cash",
|
||||
"comparator": "ge",
|
||||
"value": 100
|
||||
}
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"kind": "set_company_cash",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"value": 333
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-ordinary-company-finance-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining captured company context with the real ordinary company-finance threshold sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-ordinary-condition-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-ordinary-company-finance-save-slice.json"
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-ordinary-company-finance-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real ordinary company-finance threshold row gating Company Cash.",
|
||||
"original_save_filename": "captured-ordinary-company-finance.gms",
|
||||
"original_save_sha256": "ordinary-company-finance-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"proves ordinary Current Cash threshold import through the real packed-event path"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
"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": 28928,
|
||||
"records_tag_offset": 29184,
|
||||
"close_tag_offset": 29696,
|
||||
"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": 29200,
|
||||
"payload_len": 176,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 7,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 7,
|
||||
"primary_selector_0x7f0": 42,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 2,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [0, 1, 1, 1],
|
||||
"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": 1,
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"row_index": 0,
|
||||
"raw_condition_id": 1802,
|
||||
"subtype": 0,
|
||||
"flag_bytes": [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"candidate_name": null,
|
||||
"comparator": "ge",
|
||||
"metric": "Current Cash",
|
||||
"semantic_family": "numeric_threshold",
|
||||
"semantic_preview": "Test Current Cash >= 100",
|
||||
"requires_candidate_name_binding": false,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"negative_sentinel_scope": {
|
||||
"company_test_scope": "selected_company_only",
|
||||
"player_test_scope": "disabled",
|
||||
"territory_scope_selector_is_0x63": false,
|
||||
"source_row_indexes": [0]
|
||||
},
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 2,
|
||||
"descriptor_label": "Company Cash",
|
||||
"target_mask_bits": 1,
|
||||
"parameter_family": "company_finance_scalar",
|
||||
"opcode": 8,
|
||||
"raw_scalar_value": 333,
|
||||
"value_byte_0x09": 1,
|
||||
"value_dword_0x0d": 12,
|
||||
"value_byte_0x11": 2,
|
||||
"value_byte_0x12": 3,
|
||||
"value_word_0x14": 24,
|
||||
"value_word_0x16": 36,
|
||||
"row_shape": "multivalue_scalar",
|
||||
"semantic_family": "multivalue_scalar",
|
||||
"semantic_preview": "Set Company Cash to 333 with aux [2, 3, 24, 36]",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "company_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"metric": "current_cash",
|
||||
"comparator": "ge",
|
||||
"value": 100
|
||||
}
|
||||
],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_cash",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"value": 333
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"ordinary Current Cash threshold lowers condition-relative company scope at import time"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real ordinary company-finance threshold sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-ordinary-company-territory-track-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving real ordinary company-territory thresholds gate Company Cash through the normal runtime path."
|
||||
},
|
||||
"state_import_path": "packed-event-ordinary-company-territory-track-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 7
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"territory_count": 1,
|
||||
"company_territory_track_count": 3,
|
||||
"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,
|
||||
"packed_event_blocked_missing_territory_context_count": 0,
|
||||
"event_runtime_record_count": 1,
|
||||
"total_event_record_service_count": 1,
|
||||
"total_trigger_dispatch_count": 1,
|
||||
"total_company_cash": 845
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"current_cash": 555
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"current_cash": 90
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"current_cash": 200
|
||||
}
|
||||
],
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "imported",
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "company_territory_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"metric": "total",
|
||||
"comparator": "ge",
|
||||
"value": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-ordinary-company-territory-track-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining company and territory context with the real ordinary company-territory threshold sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-ordinary-condition-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-ordinary-company-territory-track-save-slice.json"
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-ordinary-company-territory-track-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real ordinary company-territory threshold row gating Company Cash.",
|
||||
"original_save_filename": "captured-ordinary-company-territory-track.gms",
|
||||
"original_save_sha256": "ordinary-company-territory-track-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"proves company-territory thresholds import when both company and territory overlay context exist"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
"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": 28928,
|
||||
"records_tag_offset": 29184,
|
||||
"close_tag_offset": 29696,
|
||||
"packed_state_version": 1001,
|
||||
"packed_state_version_hex": "0x000003e9",
|
||||
"live_id_bound": 44,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [44],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 1,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 44,
|
||||
"payload_offset": 29296,
|
||||
"payload_len": 176,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 7,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 7,
|
||||
"primary_selector_0x7f0": 99,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 2,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [0, 1, 1, 1],
|
||||
"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": 1,
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"row_index": 0,
|
||||
"raw_condition_id": 2323,
|
||||
"subtype": 0,
|
||||
"flag_bytes": [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"candidate_name": null,
|
||||
"comparator": "ge",
|
||||
"metric": "Company-Territory Track Pieces",
|
||||
"semantic_family": "numeric_threshold",
|
||||
"semantic_preview": "Test Company-Territory Track Pieces >= 10",
|
||||
"requires_candidate_name_binding": false,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"negative_sentinel_scope": {
|
||||
"company_test_scope": "selected_company_only",
|
||||
"player_test_scope": "disabled",
|
||||
"territory_scope_selector_is_0x63": true,
|
||||
"source_row_indexes": [0]
|
||||
},
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 2,
|
||||
"descriptor_label": "Company Cash",
|
||||
"target_mask_bits": 1,
|
||||
"parameter_family": "company_finance_scalar",
|
||||
"opcode": 8,
|
||||
"raw_scalar_value": 555,
|
||||
"value_byte_0x09": 1,
|
||||
"value_dword_0x0d": 12,
|
||||
"value_byte_0x11": 2,
|
||||
"value_byte_0x12": 3,
|
||||
"value_word_0x14": 24,
|
||||
"value_word_0x16": 36,
|
||||
"row_shape": "multivalue_scalar",
|
||||
"semantic_family": "multivalue_scalar",
|
||||
"semantic_preview": "Set Company Cash to 555 with aux [2, 3, 24, 36]",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "company_territory_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"metric": "total",
|
||||
"comparator": "ge",
|
||||
"value": 10
|
||||
}
|
||||
],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_cash",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"value": 555
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"company-territory thresholds lower condition-relative company scope when overlay territory context is available"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real ordinary company-territory threshold sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-ordinary-company-track-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving real ordinary company-track thresholds gate Company Track Pieces Buildable through the normal runtime path."
|
||||
},
|
||||
"state_import_path": "packed-event-ordinary-company-track-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 7
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"territory_count": 1,
|
||||
"company_territory_track_count": 3,
|
||||
"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,
|
||||
"total_event_record_service_count": 1,
|
||||
"total_trigger_dispatch_count": 1,
|
||||
"total_company_cash": 440
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"available_track_laying_capacity": 12
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"available_track_laying_capacity": null
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"available_track_laying_capacity": null
|
||||
}
|
||||
],
|
||||
"event_runtime_records": [
|
||||
{
|
||||
"record_id": 42,
|
||||
"service_count": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-ordinary-company-track-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining captured company context with the real ordinary company-track threshold sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-ordinary-condition-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-ordinary-company-track-save-slice.json"
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-ordinary-company-track-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real ordinary company-track threshold row gating Company Track Pieces Buildable.",
|
||||
"original_save_filename": "captured-ordinary-company-track.gms",
|
||||
"original_save_sha256": "ordinary-company-track-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"proves ordinary Company Track Pieces threshold import through the real packed-event path"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
"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": 28928,
|
||||
"records_tag_offset": 29184,
|
||||
"close_tag_offset": 29696,
|
||||
"packed_state_version": 1001,
|
||||
"packed_state_version_hex": "0x000003e9",
|
||||
"live_id_bound": 42,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [42],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 1,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 42,
|
||||
"payload_offset": 29232,
|
||||
"payload_len": 176,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 7,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 7,
|
||||
"primary_selector_0x7f0": 42,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 2,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [0, 1, 1, 1],
|
||||
"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": 1,
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"row_index": 0,
|
||||
"raw_condition_id": 2293,
|
||||
"subtype": 0,
|
||||
"flag_bytes": [20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"candidate_name": null,
|
||||
"comparator": "ge",
|
||||
"metric": "Company Track Pieces",
|
||||
"semantic_family": "numeric_threshold",
|
||||
"semantic_preview": "Test Company Track Pieces >= 20",
|
||||
"requires_candidate_name_binding": false,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"negative_sentinel_scope": {
|
||||
"company_test_scope": "selected_company_only",
|
||||
"player_test_scope": "disabled",
|
||||
"territory_scope_selector_is_0x63": false,
|
||||
"source_row_indexes": [0]
|
||||
},
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 16,
|
||||
"descriptor_label": "Company Track Pieces Buildable",
|
||||
"target_mask_bits": 1,
|
||||
"parameter_family": "company_build_limit_scalar",
|
||||
"opcode": 3,
|
||||
"raw_scalar_value": 12,
|
||||
"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 Company Track Pieces Buildable to 12",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "company_numeric_threshold",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"metric": "track_pieces_total",
|
||||
"comparator": "ge",
|
||||
"value": 20
|
||||
}
|
||||
],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_track_laying_capacity",
|
||||
"target": {
|
||||
"kind": "condition_true_company"
|
||||
},
|
||||
"value": 12
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"ordinary Company Track Pieces threshold lowers condition-relative company scope at import time"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real ordinary company-track threshold sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"snapshot_id": "packed-event-ordinary-condition-overlay-base-snapshot",
|
||||
"source": {
|
||||
"description": "Base runtime snapshot supplying company, selection, and aggregate territory context for ordinary-condition packed-event overlays."
|
||||
},
|
||||
"state": {
|
||||
"calendar": {
|
||||
"year": 1840,
|
||||
"month_slot": 1,
|
||||
"phase_slot": 2,
|
||||
"tick_slot": 3
|
||||
},
|
||||
"world_flags": {
|
||||
"base.only": true
|
||||
},
|
||||
"metadata": {
|
||||
"base.note": "preserve ordinary-condition overlay context"
|
||||
},
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"current_cash": 150,
|
||||
"debt": 80,
|
||||
"credit_rating_score": 650,
|
||||
"prime_rate": 5,
|
||||
"controller_kind": "human",
|
||||
"track_piece_counts": {
|
||||
"total": 20,
|
||||
"single": 5,
|
||||
"double": 8,
|
||||
"transition": 1,
|
||||
"electric": 3,
|
||||
"non_electric": 17
|
||||
}
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"current_cash": 90,
|
||||
"debt": 40,
|
||||
"credit_rating_score": 480,
|
||||
"prime_rate": 6,
|
||||
"controller_kind": "ai",
|
||||
"track_piece_counts": {
|
||||
"total": 8,
|
||||
"single": 2,
|
||||
"double": 2,
|
||||
"transition": 0,
|
||||
"electric": 1,
|
||||
"non_electric": 7
|
||||
}
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"current_cash": 200,
|
||||
"debt": 10,
|
||||
"credit_rating_score": 720,
|
||||
"prime_rate": 4,
|
||||
"controller_kind": "human",
|
||||
"track_piece_counts": {
|
||||
"total": 30,
|
||||
"single": 10,
|
||||
"double": 12,
|
||||
"transition": 2,
|
||||
"electric": 8,
|
||||
"non_electric": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"selected_company_id": 1,
|
||||
"territories": [
|
||||
{
|
||||
"territory_id": 7,
|
||||
"track_piece_counts": {
|
||||
"total": 50,
|
||||
"single": 10,
|
||||
"double": 20,
|
||||
"transition": 5,
|
||||
"electric": 15,
|
||||
"non_electric": 35
|
||||
}
|
||||
}
|
||||
],
|
||||
"company_territory_track_piece_counts": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"territory_id": 7,
|
||||
"track_piece_counts": {
|
||||
"total": 12,
|
||||
"single": 3,
|
||||
"double": 5,
|
||||
"transition": 1,
|
||||
"electric": 4,
|
||||
"non_electric": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"territory_id": 7,
|
||||
"track_piece_counts": {
|
||||
"total": 7,
|
||||
"single": 2,
|
||||
"double": 2,
|
||||
"transition": 0,
|
||||
"electric": 1,
|
||||
"non_electric": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"territory_id": 7,
|
||||
"track_piece_counts": {
|
||||
"total": 15,
|
||||
"single": 5,
|
||||
"double": 6,
|
||||
"transition": 2,
|
||||
"electric": 5,
|
||||
"non_electric": 10
|
||||
}
|
||||
}
|
||||
],
|
||||
"event_runtime_records": [],
|
||||
"candidate_availability": {},
|
||||
"special_conditions": {},
|
||||
"service_state": {
|
||||
"periodic_boundary_calls": 0,
|
||||
"trigger_dispatch_counts": {},
|
||||
"total_event_record_services": 0,
|
||||
"dirty_rerun_count": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-ordinary-named-territory-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving named-territory ordinary conditions stay parity-only with an explicit blocker."
|
||||
},
|
||||
"state_import_path": "packed-event-ordinary-named-territory-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 7
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"territory_count": 1,
|
||||
"company_territory_track_count": 3,
|
||||
"packed_event_collection_present": true,
|
||||
"packed_event_record_count": 1,
|
||||
"packed_event_decoded_record_count": 1,
|
||||
"packed_event_imported_runtime_record_count": 0,
|
||||
"packed_event_parity_only_record_count": 1,
|
||||
"packed_event_blocked_named_territory_binding_count": 1,
|
||||
"event_runtime_record_count": 0,
|
||||
"total_event_record_service_count": 0,
|
||||
"total_trigger_dispatch_count": 1,
|
||||
"total_company_cash": 440
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"current_cash": 150
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"current_cash": 90
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"current_cash": 200
|
||||
}
|
||||
],
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "blocked_named_territory_binding",
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"candidate_name": "Appalachia",
|
||||
"requires_candidate_name_binding": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"event_runtime_records": []
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-ordinary-named-territory-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining aggregate territory context with the real named-territory threshold sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-ordinary-condition-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-ordinary-named-territory-save-slice.json"
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-ordinary-named-territory-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real ordinary named-territory threshold row that stays parity-only.",
|
||||
"original_save_filename": "captured-ordinary-named-territory.gms",
|
||||
"original_save_sha256": "ordinary-named-territory-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"locks the named-territory binding blocker for ordinary condition rows"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
"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": 28928,
|
||||
"records_tag_offset": 29184,
|
||||
"close_tag_offset": 29696,
|
||||
"packed_state_version": 1001,
|
||||
"packed_state_version_hex": "0x000003e9",
|
||||
"live_id_bound": 45,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [45],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 0,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 45,
|
||||
"payload_offset": 29328,
|
||||
"payload_len": 186,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 7,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 7,
|
||||
"primary_selector_0x7f0": 99,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 0,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [1, 1, 1, 1],
|
||||
"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": 1,
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"row_index": 0,
|
||||
"raw_condition_id": 2313,
|
||||
"subtype": 0,
|
||||
"flag_bytes": [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"candidate_name": "Appalachia",
|
||||
"comparator": "ge",
|
||||
"metric": "Territory Track Pieces",
|
||||
"semantic_family": "numeric_threshold",
|
||||
"semantic_preview": "Test Territory Track Pieces >= 10",
|
||||
"requires_candidate_name_binding": true,
|
||||
"notes": [
|
||||
"condition row carries candidate-name side string"
|
||||
]
|
||||
}
|
||||
],
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 2,
|
||||
"descriptor_label": "Company Cash",
|
||||
"target_mask_bits": 1,
|
||||
"parameter_family": "company_finance_scalar",
|
||||
"opcode": 8,
|
||||
"raw_scalar_value": 777,
|
||||
"value_byte_0x09": 1,
|
||||
"value_dword_0x0d": 12,
|
||||
"value_byte_0x11": 2,
|
||||
"value_byte_0x12": 3,
|
||||
"value_word_0x14": 24,
|
||||
"value_word_0x16": 36,
|
||||
"row_shape": "multivalue_scalar",
|
||||
"semantic_family": "multivalue_scalar",
|
||||
"semantic_preview": "Set Company Cash to 777 with aux [2, 3, 24, 36]",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "territory_numeric_threshold",
|
||||
"metric": "track_pieces_total",
|
||||
"comparator": "ge",
|
||||
"value": 10
|
||||
}
|
||||
],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_cash",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"value": 777
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"candidate-name territory binding remains parity-only in this slice"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real ordinary named-territory threshold parity sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-ordinary-territory-track-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving aggregate territory thresholds can gate real packed-event execution when overlay territory context is present."
|
||||
},
|
||||
"state_import_path": "packed-event-ordinary-territory-track-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 7
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"territory_count": 1,
|
||||
"company_territory_track_count": 3,
|
||||
"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,
|
||||
"packed_event_blocked_missing_territory_context_count": 0,
|
||||
"event_runtime_record_count": 1,
|
||||
"total_event_record_service_count": 1,
|
||||
"total_trigger_dispatch_count": 1,
|
||||
"total_company_cash": 734
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"companies": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"current_cash": 444
|
||||
},
|
||||
{
|
||||
"company_id": 2,
|
||||
"current_cash": 90
|
||||
},
|
||||
{
|
||||
"company_id": 3,
|
||||
"current_cash": 200
|
||||
}
|
||||
],
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "imported",
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "territory_numeric_threshold",
|
||||
"metric": "track_pieces_total",
|
||||
"comparator": "ge",
|
||||
"value": 40
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-ordinary-territory-track-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining aggregate territory context with the real ordinary territory-track threshold sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-ordinary-condition-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-ordinary-territory-track-save-slice.json"
|
||||
}
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-ordinary-territory-track-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real ordinary territory-track threshold row gating Company Cash.",
|
||||
"original_save_filename": "captured-ordinary-territory-track.gms",
|
||||
"original_save_sha256": "ordinary-territory-track-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"proves aggregate territory thresholds import when overlay territory context exists"
|
||||
]
|
||||
},
|
||||
"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,
|
||||
"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": 28928,
|
||||
"records_tag_offset": 29184,
|
||||
"close_tag_offset": 29696,
|
||||
"packed_state_version": 1001,
|
||||
"packed_state_version_hex": "0x000003e9",
|
||||
"live_id_bound": 43,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [43],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 1,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 43,
|
||||
"payload_offset": 29264,
|
||||
"payload_len": 176,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 7,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 7,
|
||||
"primary_selector_0x7f0": 99,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 0,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [1, 1, 1, 1],
|
||||
"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": 1,
|
||||
"standalone_condition_rows": [
|
||||
{
|
||||
"row_index": 0,
|
||||
"raw_condition_id": 2313,
|
||||
"subtype": 0,
|
||||
"flag_bytes": [40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"candidate_name": null,
|
||||
"comparator": "ge",
|
||||
"metric": "Territory Track Pieces",
|
||||
"semantic_family": "numeric_threshold",
|
||||
"semantic_preview": "Test Territory Track Pieces >= 40",
|
||||
"requires_candidate_name_binding": false,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 2,
|
||||
"descriptor_label": "Company Cash",
|
||||
"target_mask_bits": 1,
|
||||
"parameter_family": "company_finance_scalar",
|
||||
"opcode": 8,
|
||||
"raw_scalar_value": 444,
|
||||
"value_byte_0x09": 1,
|
||||
"value_dword_0x0d": 12,
|
||||
"value_byte_0x11": 2,
|
||||
"value_byte_0x12": 3,
|
||||
"value_word_0x14": 24,
|
||||
"value_word_0x16": 36,
|
||||
"row_shape": "multivalue_scalar",
|
||||
"semantic_family": "multivalue_scalar",
|
||||
"semantic_preview": "Set Company Cash to 444 with aux [2, 3, 24, 36]",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [
|
||||
{
|
||||
"kind": "territory_numeric_threshold",
|
||||
"metric": "track_pieces_total",
|
||||
"comparator": "ge",
|
||||
"value": 40
|
||||
}
|
||||
],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_cash",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"value": 444
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"aggregate territory thresholds execute only when overlay territory context is available"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real ordinary aggregate territory-track threshold sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue