- All 5 walker hashes are recomputed client-side on save from the local CompartmentsDatabase + CompartmentDefinitionDto (same build => byte-identical hashes; no per-walker secret). Wiping any/all hashes loads/opens/edits fine; one in-editor save regenerates everything (+ new file UUID & UniqueId). - VERSION flag (WalkerBlueprintContainer.ValidateVersion) depends only on the structural Compartments/Connections hashes, not the Definition hashes; ERRORS is a separate structural check. Hashes = integrity/version-staleness markers, not security. Server upsert validation still untested. - Document the 5-hash table (3 top-level + 2 per-part) and offline-computability in docs/TRAMPLER.md + CLAUDE.md; include experiment artifacts + baseline.
87 lines
2.9 KiB
JSON
87 lines
2.9 KiB
JSON
{
|
|
"note": "Baseline hash state to diff against after the game loads/re-saves the test walker. Test walker 'Scientific Sentinel' has Definition* hashes wiped to ''. Watch which fields the game fills back in.",
|
|
"source_01260e82_Cranky_Third": {
|
|
"DefinitionsHash": "A94FBF71596E2E5FC3595F38C310AB68",
|
|
"CompartmentsHash": "54319EC1DDFFAF5CAE17A0FA8B0D6750",
|
|
"ConnectionsHash": "36777484B669177C2B402DC0830EF1BD",
|
|
"per_part": [
|
|
{
|
|
"EpbId": "walker_compChassis_SmallLong4_Metal_2x3_epb",
|
|
"DefinitionHash": "64677F77ED55788CA579CDC5D5EDC53C",
|
|
"CompartmentHash": "D1EBE5DDB86BD898DA22A558F5199922"
|
|
},
|
|
{
|
|
"EpbId": "walker_compSteering_Square_Open_1x1_epb",
|
|
"DefinitionHash": "8AD614A669C43EC06EC49FB2C0C9F56D",
|
|
"CompartmentHash": "93901C77B060FA462EB1C415D7304E07"
|
|
},
|
|
{
|
|
"EpbId": "walker_compReactor_Round_Open_2x1_epb",
|
|
"DefinitionHash": "5744B05118A9CF470EEB77DC2FB8C62D",
|
|
"CompartmentHash": "BDADD1B66303873E30F8D031EE1F99A1"
|
|
},
|
|
{
|
|
"EpbId": "walker_compCaptainCrew_Wood_1x1_epb",
|
|
"DefinitionHash": "37F659D0A1EDBFEF11138B059BA87630",
|
|
"CompartmentHash": "CA0A7339EC20ADAAD07B756BA3206F77"
|
|
},
|
|
{
|
|
"EpbId": "walker_compDeck_Square_Open_1x1_epb",
|
|
"DefinitionHash": "04E304846A06AF8E3209DF1054D1E784",
|
|
"CompartmentHash": "0B8CC69BD1392E6EA7EA37BE5DE6C372"
|
|
},
|
|
{
|
|
"EpbId": "walker_compDeck_Square_Open_1x1_epb",
|
|
"DefinitionHash": "04E304846A06AF8E3209DF1054D1E784",
|
|
"CompartmentHash": "0B8CC69BD1392E6EA7EA37BE5DE6C372"
|
|
},
|
|
{
|
|
"EpbId": "walker_compSpecial_Entry_Frame_1x1_epb",
|
|
"DefinitionHash": "CB2209E5C634FBC37C242DE4ED91B70C",
|
|
"CompartmentHash": "9FB555D20A1BADBBD3AD73DFC989F9B6"
|
|
}
|
|
]
|
|
},
|
|
"test_6a804acb_Scientific_Sentinel_NODEFHASH": {
|
|
"DefinitionsHash": "",
|
|
"CompartmentsHash": "B0DC03D36083E9A6A7C86DFC1E87D978",
|
|
"ConnectionsHash": "36777484B669177C2B402DC0830EF1BD",
|
|
"per_part": [
|
|
{
|
|
"EpbId": "walker_compChassis_SmallLong4_Metal_2x3_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "D1EBE5DDB86BD898DA22A558F5199922"
|
|
},
|
|
{
|
|
"EpbId": "walker_compSteering_Square_Open_1x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "93901C77B060FA462EB1C415D7304E07"
|
|
},
|
|
{
|
|
"EpbId": "walker_compReactor_Round_Open_2x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "BDADD1B66303873E30F8D031EE1F99A1"
|
|
},
|
|
{
|
|
"EpbId": "walker_compCaptainCrew_Wood_1x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "CA0A7339EC20ADAAD07B756BA3206F77"
|
|
},
|
|
{
|
|
"EpbId": "walker_compDeck_Square_Open_1x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "0B8CC69BD1392E6EA7EA37BE5DE6C372"
|
|
},
|
|
{
|
|
"EpbId": "walker_compDeck_Square_Open_1x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "0B8CC69BD1392E6EA7EA37BE5DE6C372"
|
|
},
|
|
{
|
|
"EpbId": "walker_compSpecial_Entry_Frame_1x1_epb",
|
|
"DefinitionHash": "",
|
|
"CompartmentHash": "9FB555D20A1BADBBD3AD73DFC989F9B6"
|
|
}
|
|
]
|
|
}
|
|
} |