Decode remaining parity sample framing

This commit is contained in:
Jan Petykiewicz 2026-04-16 09:27:47 -07:00
commit 1e36e6c929
5 changed files with 75 additions and 17 deletions

View file

@ -45,11 +45,13 @@ strong: `Use Bio-Accelerator Cars`, `Disable Cargo Economy`, `Disable Train Cras
Train Crashes AND Breakdowns`, and `AI Ignore Territories At Startup`. Whole-game condition decode Train Crashes AND Breakdowns`, and `AI Ignore Territories At Startup`. Whole-game condition decode
is broader now too: checked-in world-flag condition ids can lower into `world_flag_equals` gates is broader now too: checked-in world-flag condition ids can lower into `world_flag_equals` gates
for boolean equality/inequality forms, so real packed records can gate whole-game effects on for boolean equality/inequality forms, so real packed records can gate whole-game effects on
existing `world_flags` without fixture-authored placeholder ids. Explicit unmapped world-condition existing `world_flags` without fixture-authored placeholder ids. The tracked parity save-slice no
and world-descriptor frontier buckets still remain where current checked-in metadata stops. Shell longer depends on a raw `unsupported_framing` placeholder either: its remaining residue is now one
purchase-flow and selected-profile parity remain out of scope. Mixed supported/unsupported real structured `real_packed_v1` record that lands in the explicit `blocked_unmapped_real_descriptor`
rows still stay parity-only. The PE32 hook remains useful as capture and integration tooling, but bucket. Explicit unmapped world-condition and world-descriptor frontier buckets still remain where
it is no longer the main execution milestone. current checked-in metadata stops. Shell purchase-flow and selected-profile parity remain out of
scope. Mixed supported/unsupported real rows still stay parity-only. The PE32 hook remains useful
as capture and integration tooling, but it is no longer the main execution milestone.
## Project Docs ## Project Docs

View file

@ -119,6 +119,9 @@ The highest-value next passes are now:
- whole-game ordinary-condition coverage is broader now too: checked-in world-flag condition ids - whole-game ordinary-condition coverage is broader now too: checked-in world-flag condition ids
can lower into `world_flag_equals` gates for boolean equality/inequality forms, so real packed can lower into `world_flag_equals` gates for boolean equality/inequality forms, so real packed
rows can gate whole-game effects on existing `world_flags` rows can gate whole-game effects on existing `world_flags`
- the tracked parity save-slice now keeps its remaining non-imported residue as structured
`real_packed_v1` parity records, with the first captured leftover moved out of
`unsupported_framing` and into the explicit `blocked_unmapped_real_descriptor` frontier
- keep in mind that the current local `.gms` corpus still exports with no packed event collection, - keep in mind that the current local `.gms` corpus still exports with no packed event collection,
so real descriptor mapping needs to stay plumbing-first until better captures exist so real descriptor mapping needs to stay plumbing-first until better captures exist
- use `rrt-hook` primarily as optional capture or integration tooling, not as the first execution - use `rrt-hook` primarily as optional capture or integration tooling, not as the first execution

View file

@ -74,6 +74,9 @@ Implemented today:
- whole-game ordinary-condition decode now covers checked-in world-flag condition ids too for - whole-game ordinary-condition decode now covers checked-in world-flag condition ids too for
boolean equality/inequality forms, so real packed rows can gate whole-game effects on existing boolean equality/inequality forms, so real packed rows can gate whole-game effects on existing
`world_flags` through `world_flag_equals` without fixture-authored placeholder ids `world_flags` through `world_flag_equals` without fixture-authored placeholder ids
- the tracked parity save-slice no longer preserves an opaque `unsupported_framing` record; its
remaining captured residue is now structurally decoded `real_packed_v1` parity state that lands
in existing explicit blocker buckets
That means the next implementation work is breadth, not bootstrap. The recommended next slice is That means the next implementation work is breadth, not bootstrap. The recommended next slice is
broader real grouped-descriptor and ordinary condition-id coverage beyond the current access, broader real grouped-descriptor and ordinary condition-id coverage beyond the current access,

View file

@ -22,14 +22,14 @@
"calendar_projection_is_placeholder": true, "calendar_projection_is_placeholder": true,
"packed_event_collection_present": true, "packed_event_collection_present": true,
"packed_event_record_count": 2, "packed_event_record_count": 2,
"packed_event_decoded_record_count": 1, "packed_event_decoded_record_count": 2,
"packed_event_imported_runtime_record_count": 1, "packed_event_imported_runtime_record_count": 1,
"packed_event_parity_only_record_count": 1, "packed_event_parity_only_record_count": 2,
"packed_event_unsupported_record_count": 1, "packed_event_unsupported_record_count": 0,
"packed_event_blocked_missing_condition_context_count": 0, "packed_event_blocked_missing_condition_context_count": 0,
"packed_event_blocked_territory_condition_scope_count": 0, "packed_event_blocked_territory_condition_scope_count": 0,
"packed_event_blocked_missing_compact_control_count": 0, "packed_event_blocked_missing_compact_control_count": 0,
"packed_event_blocked_unmapped_real_descriptor_count": 0, "packed_event_blocked_unmapped_real_descriptor_count": 1,
"packed_event_blocked_structural_only_count": 0, "packed_event_blocked_structural_only_count": 0,
"event_runtime_record_count": 1, "event_runtime_record_count": 1,
"total_company_cash": 0 "total_company_cash": 0
@ -45,8 +45,15 @@
"live_entry_ids": [3, 5], "live_entry_ids": [3, 5],
"records": [ "records": [
{ {
"decode_status": "unsupported_framing", "decode_status": "parity_only",
"payload_family": "unsupported_framing" "payload_family": "real_packed_v1",
"import_outcome": "blocked_unmapped_real_descriptor",
"grouped_effect_rows": [
{
"descriptor_id": 250,
"row_shape": "scalar_assignment"
}
]
}, },
{ {
"decode_status": "parity_only", "decode_status": "parity_only",

View file

@ -7,7 +7,7 @@
"original_save_sha256": "parity-sample-sha256", "original_save_sha256": "parity-sample-sha256",
"notes": [ "notes": [
"tracked as JSON save-slice document rather than raw .smp", "tracked as JSON save-slice document rather than raw .smp",
"preserves one unsupported row and one semantically decoded-but-parity-only row" "preserves one structured-but-unmapped row and one semantically decoded-but-parity-only row"
] ]
}, },
"save_slice": { "save_slice": {
@ -33,7 +33,7 @@
"live_id_bound": 5, "live_id_bound": 5,
"live_record_count": 2, "live_record_count": 2,
"live_entry_ids": [3, 5], "live_entry_ids": [3, 5],
"decoded_record_count": 1, "decoded_record_count": 2,
"imported_runtime_record_count": 1, "imported_runtime_record_count": 1,
"records": [ "records": [
{ {
@ -41,13 +41,56 @@
"live_entry_id": 3, "live_entry_id": 3,
"payload_offset": 29186, "payload_offset": 29186,
"payload_len": 96, "payload_len": 96,
"decode_status": "unsupported_framing", "decode_status": "parity_only",
"payload_family": "unsupported_framing", "payload_family": "real_packed_v1",
"grouped_effect_row_counts": [0, 0, 0, 0], "trigger_kind": 6,
"one_shot": false,
"compact_control": {
"mode_byte_0x7ef": 6,
"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": [],
"grouped_effect_row_counts": [1, 0, 0, 0],
"grouped_effect_rows": [
{
"group_index": 0,
"row_index": 0,
"descriptor_id": 250,
"descriptor_label": null,
"target_mask_bits": null,
"parameter_family": null,
"opcode": 3,
"raw_scalar_value": 42,
"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": null,
"semantic_preview": null,
"locomotive_name": null,
"notes": [
"real grouped-effect row preserved structurally; descriptor identity not yet recovered"
]
}
],
"decoded_actions": [], "decoded_actions": [],
"executable_import_ready": false, "executable_import_ready": false,
"notes": [ "notes": [
"real payload framing not yet decoded" "decoded from grounded real 0x4e9a row framing",
"grouped row preserved structurally but still unmapped in the checked-in descriptor table"
] ]
}, },
{ {