Execute descriptor 3 as territory access rights
This commit is contained in:
parent
e481274243
commit
e9c8bfbb9c
20 changed files with 1226 additions and 89 deletions
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-territory-access-false-save-slice-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture keeping the unsupported FALSE Territory - Allow All variant explicit."
|
||||
},
|
||||
"state_save_slice_path": "packed-event-territory-access-false-save-slice.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 6
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"packed_event_collection_present": true,
|
||||
"packed_event_record_count": 1,
|
||||
"packed_event_decoded_record_count": 1,
|
||||
"packed_event_imported_runtime_record_count": 0,
|
||||
"event_runtime_record_count": 0,
|
||||
"packed_event_blocked_territory_access_variant_count": 1
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "blocked_territory_access_variant"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-territory-policy-save-slice",
|
||||
"save_slice_id": "packed-event-territory-access-false-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real Territory - Allow All row that stays parity-only.",
|
||||
"original_save_filename": "captured-territory-policy.gms",
|
||||
"original_save_sha256": "territory-policy-sample-sha256",
|
||||
"description": "Tracked save-slice document with an unsupported FALSE Territory - Allow All row.",
|
||||
"original_save_filename": "captured-territory-access-false.gms",
|
||||
"original_save_sha256": "territory-access-false-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"keeps descriptor 3 explicit without guessing territory policy mutation semantics"
|
||||
"keeps the unsupported descriptor 3 FALSE variant explicit"
|
||||
]
|
||||
},
|
||||
"save_slice": {
|
||||
|
|
@ -30,16 +30,16 @@
|
|||
"close_tag_offset": 29696,
|
||||
"packed_state_version": 1001,
|
||||
"packed_state_version_hex": "0x000003e9",
|
||||
"live_id_bound": 48,
|
||||
"live_id_bound": 49,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [48],
|
||||
"live_entry_ids": [49],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 0,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 48,
|
||||
"payload_offset": 29320,
|
||||
"live_entry_id": 49,
|
||||
"payload_offset": 29360,
|
||||
"payload_len": 132,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
"target_mask_bits": 5,
|
||||
"parameter_family": "territory_access_toggle",
|
||||
"opcode": 1,
|
||||
"raw_scalar_value": 1,
|
||||
"raw_scalar_value": 0,
|
||||
"value_byte_0x09": 0,
|
||||
"value_dword_0x0d": 0,
|
||||
"value_byte_0x11": 0,
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
"value_word_0x16": 0,
|
||||
"row_shape": "bool_toggle",
|
||||
"semantic_family": "bool_toggle",
|
||||
"semantic_preview": "Set Territory - Allow All to TRUE",
|
||||
"semantic_preview": "Set Territory - Allow All to FALSE",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
|
|
@ -89,14 +89,13 @@
|
|||
"decoded_actions": [],
|
||||
"executable_import_ready": false,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"territory policy mutation remains parity-only in this slice"
|
||||
"decoded from grounded real 0x4e9a row framing"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real territory policy descriptor sample"
|
||||
"unsupported real territory-access FALSE variant sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-territory-access-missing-scope-save-slice-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture keeping the missing-scope Territory - Allow All variant explicit."
|
||||
},
|
||||
"state_save_slice_path": "packed-event-territory-access-missing-scope-save-slice.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 6
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"packed_event_collection_present": true,
|
||||
"packed_event_record_count": 1,
|
||||
"packed_event_decoded_record_count": 1,
|
||||
"packed_event_imported_runtime_record_count": 0,
|
||||
"event_runtime_record_count": 0,
|
||||
"packed_event_blocked_territory_access_scope_count": 1
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "blocked_territory_access_scope"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-territory-access-missing-scope-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a TRUE Territory - Allow All row missing company or territory scope.",
|
||||
"original_save_filename": "captured-territory-access-missing-scope.gms",
|
||||
"original_save_sha256": "territory-access-missing-scope-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"keeps the descriptor 3 missing-scope boundary explicit"
|
||||
]
|
||||
},
|
||||
"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": 50,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [50],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 0,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 50,
|
||||
"payload_offset": 29400,
|
||||
"payload_len": 132,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 6,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 6,
|
||||
"primary_selector_0x7f0": 12,
|
||||
"grouped_mode_0x7f4": 2,
|
||||
"one_shot_header_0x7f5": 0,
|
||||
"modifier_flag_0x7f9": 0,
|
||||
"modifier_flag_0x7fa": 0,
|
||||
"grouped_target_scope_ordinals_0x7fb": [9, 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": 0,
|
||||
"standalone_condition_rows": [],
|
||||
"negative_sentinel_scope": null,
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 3,
|
||||
"descriptor_label": "Territory - Allow All",
|
||||
"target_mask_bits": 5,
|
||||
"parameter_family": "territory_access_toggle",
|
||||
"opcode": 1,
|
||||
"raw_scalar_value": 1,
|
||||
"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": "bool_toggle",
|
||||
"semantic_family": "bool_toggle",
|
||||
"semantic_preview": "Set Territory - Allow All to TRUE",
|
||||
"locomotive_name": null,
|
||||
"notes": [
|
||||
"territory access row is missing company or territory scope"
|
||||
]
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [],
|
||||
"decoded_actions": [],
|
||||
"executable_import_ready": false,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"descriptor 3 remains parity-only when company or territory scope is absent"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"unsupported real territory-access missing-scope sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-territory-access-overlay-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving descriptor 3 Territory - Allow All imports as company territory-access rights and executes through the ordinary runtime path."
|
||||
},
|
||||
"state_import_path": "packed-event-territory-access-overlay.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "service_trigger_kind",
|
||||
"trigger_kind": 6
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_source": "base-snapshot-preserved",
|
||||
"calendar_projection_is_placeholder": false,
|
||||
"company_count": 3,
|
||||
"active_company_count": 3,
|
||||
"player_count": 2,
|
||||
"territory_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,
|
||||
"event_runtime_record_count": 1,
|
||||
"total_event_record_service_count": 1,
|
||||
"total_trigger_dispatch_count": 1
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"company_territory_access": [
|
||||
{
|
||||
"company_id": 1,
|
||||
"territory_id": 7
|
||||
}
|
||||
],
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "imported",
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_territory_access",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"territory": {
|
||||
"kind": "ids",
|
||||
"ids": [7]
|
||||
},
|
||||
"value": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"event_runtime_records": [
|
||||
{
|
||||
"record_id": 48,
|
||||
"service_count": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"import_id": "packed-event-territory-access-overlay",
|
||||
"source": {
|
||||
"description": "Overlay import combining company and territory runtime context with the real Territory - Allow All descriptor sample."
|
||||
},
|
||||
"base_snapshot_path": "packed-event-territory-player-overlay-base-snapshot.json",
|
||||
"save_slice_path": "packed-event-territory-access-save-slice.json"
|
||||
}
|
||||
114
fixtures/runtime/packed-event-territory-access-save-slice.json
Normal file
114
fixtures/runtime/packed-event-territory-access-save-slice.json
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"save_slice_id": "packed-event-territory-access-save-slice",
|
||||
"source": {
|
||||
"description": "Tracked save-slice document with a real Territory - Allow All row interpreted as company territory-access rights.",
|
||||
"original_save_filename": "captured-territory-access.gms",
|
||||
"original_save_sha256": "territory-access-sample-sha256",
|
||||
"notes": [
|
||||
"tracked as JSON save-slice document rather than raw .smp",
|
||||
"locks descriptor 3 import as company-to-territory access rights instead of a territory-owned policy bit"
|
||||
]
|
||||
},
|
||||
"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": 48,
|
||||
"live_record_count": 1,
|
||||
"live_entry_ids": [48],
|
||||
"decoded_record_count": 1,
|
||||
"imported_runtime_record_count": 1,
|
||||
"records": [
|
||||
{
|
||||
"record_index": 0,
|
||||
"live_entry_id": 48,
|
||||
"payload_offset": 29320,
|
||||
"payload_len": 132,
|
||||
"decode_status": "parity_only",
|
||||
"payload_family": "real_packed_v1",
|
||||
"trigger_kind": 6,
|
||||
"one_shot": false,
|
||||
"compact_control": {
|
||||
"mode_byte_0x7ef": 6,
|
||||
"primary_selector_0x7f0": 12,
|
||||
"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": [7, -1, -1, -1]
|
||||
},
|
||||
"text_bands": [],
|
||||
"standalone_condition_row_count": 0,
|
||||
"standalone_condition_rows": [],
|
||||
"negative_sentinel_scope": null,
|
||||
"grouped_effect_row_counts": [1, 0, 0, 0],
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"group_index": 0,
|
||||
"row_index": 0,
|
||||
"descriptor_id": 3,
|
||||
"descriptor_label": "Territory - Allow All",
|
||||
"target_mask_bits": 5,
|
||||
"parameter_family": "territory_access_toggle",
|
||||
"opcode": 1,
|
||||
"raw_scalar_value": 1,
|
||||
"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": "bool_toggle",
|
||||
"semantic_family": "bool_toggle",
|
||||
"semantic_preview": "Set Territory - Allow All to TRUE",
|
||||
"locomotive_name": null,
|
||||
"notes": []
|
||||
}
|
||||
],
|
||||
"decoded_conditions": [],
|
||||
"decoded_actions": [
|
||||
{
|
||||
"kind": "set_company_territory_access",
|
||||
"target": {
|
||||
"kind": "selected_company"
|
||||
},
|
||||
"territory": {
|
||||
"kind": "ids",
|
||||
"ids": [7]
|
||||
},
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"executable_import_ready": true,
|
||||
"notes": [
|
||||
"decoded from grounded real 0x4e9a row framing",
|
||||
"descriptor 3 now lowers to company territory-access grants when company and territory scope are both explicit"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"notes": [
|
||||
"real territory-access descriptor sample"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
{
|
||||
"format_version": 1,
|
||||
"fixture_id": "packed-event-territory-policy-save-slice-fixture",
|
||||
"source": {
|
||||
"kind": "captured-runtime",
|
||||
"description": "Fixture proving descriptor 3 Territory - Allow All stays parity-only with an explicit blocker."
|
||||
},
|
||||
"state_save_slice_path": "packed-event-territory-policy-save-slice.json",
|
||||
"commands": [
|
||||
{
|
||||
"kind": "step_count",
|
||||
"steps": 1
|
||||
}
|
||||
],
|
||||
"expected_summary": {
|
||||
"calendar_projection_is_placeholder": true,
|
||||
"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_territory_policy_descriptor_count": 1,
|
||||
"event_runtime_record_count": 0
|
||||
},
|
||||
"expected_state_fragment": {
|
||||
"packed_event_collection": {
|
||||
"records": [
|
||||
{
|
||||
"import_outcome": "blocked_territory_policy_descriptor",
|
||||
"grouped_effect_rows": [
|
||||
{
|
||||
"descriptor_label": "Territory - Allow All"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue