feat: version campaigns and document original puzzle design
Restore v0.1 and v0.2 archives with separate progress, publish the curved v0.3 campaign, and document the original 24-level design with reproducible evidence. Refine board presentation and movement, and keep video lab tooling within its own directory.
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"note": "Exact historical campaign JSON bytes archived from Git. Layouts, names and original moveLimit values are unchanged. Validation uses the current shared game rules: rotations and failed probes are free; only successful removals consume budget. These are historical level layouts, not complete reproductions of historical application code or scoring rules.",
|
||||
"versions": [
|
||||
{
|
||||
"version": "v0.1",
|
||||
"sourceCommit": "ef2724bb2e6582c92ac26b3a45fcc18c406d6c21",
|
||||
"sourceRef": "ef2724b",
|
||||
"sourcePath": "levels/campaign.json",
|
||||
"sourceBlob": "bb7b2886092acc599c85034224348ff239209887",
|
||||
"archivePath": "levels/versions/v0.1.json",
|
||||
"sha256": "07f1ccdb985d37f6d1fc6e132aeab63423045427f00af2a7bf8bdcf6ecefc9d1",
|
||||
"bytes": 170975,
|
||||
"levelCount": 24,
|
||||
"firstLevelName": "转一转,路就通了",
|
||||
"lastLevelName": "六角大满贯",
|
||||
"legacyStorageKeys": [
|
||||
"hex-trails-v2"
|
||||
],
|
||||
"legacyDraftStorageKey": "hex-trails-draft",
|
||||
"historicalMoveLimit": {
|
||||
"preserved": true,
|
||||
"min": 8,
|
||||
"max": 32
|
||||
},
|
||||
"validation": {
|
||||
"engine": "current shared src/core.js",
|
||||
"validLevels": 24,
|
||||
"solvableLevels": 24,
|
||||
"replayedWins": 24,
|
||||
"failedReplayActions": 0,
|
||||
"minimumRotations": 1,
|
||||
"maximumRotations": 3,
|
||||
"minimumBudgetAfterWin": 3,
|
||||
"maximumBudgetAfterWin": 9,
|
||||
"initialIndependentLoopPieces": 6,
|
||||
"levelsWithInitialIndependentLoops": [
|
||||
1,
|
||||
6,
|
||||
7,
|
||||
16,
|
||||
20,
|
||||
21
|
||||
],
|
||||
"initialSweptOnlyBlockedPieces": 119,
|
||||
"levelsWithInitialSweptOnlyBlocks": [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24
|
||||
],
|
||||
"note": "Historical loops and swept collisions are intentionally preserved. Audited independently against the historical git blob."
|
||||
}
|
||||
},
|
||||
{
|
||||
"version": "v0.2",
|
||||
"sourceCommit": "70b021d4cc2fecc832bb3a601452953ed0bd6dd5",
|
||||
"sourceRef": "70b021d",
|
||||
"sourcePath": "levels/campaign.json",
|
||||
"sourceBlob": "601b4ae192935bd3e27ad4eb2bd33770988596a8",
|
||||
"archivePath": "levels/versions/v0.2.json",
|
||||
"sha256": "becf6422b9e49bda72a7b4c5f6ecd55e40a3bf2f90dd244f9e80a25a1a8589da",
|
||||
"bytes": 434460,
|
||||
"levelCount": 48,
|
||||
"firstLevelName": "一眼看见出口",
|
||||
"lastLevelName": "自在回响",
|
||||
"legacyStorageKeys": [
|
||||
"hex-trails-observe-v3"
|
||||
],
|
||||
"legacyDraftStorageKey": "hex-trails-draft",
|
||||
"historicalMoveLimit": {
|
||||
"preserved": true,
|
||||
"min": 4,
|
||||
"max": 33
|
||||
},
|
||||
"validation": {
|
||||
"engine": "current shared src/core.js",
|
||||
"validLevels": 48,
|
||||
"solvableLevels": 48,
|
||||
"replayedWins": 48,
|
||||
"failedReplayActions": 0,
|
||||
"initialIndependentLoopPieces": 0,
|
||||
"levelsWithInitialIndependentLoops": [],
|
||||
"initialSweptOnlyBlockedPieces": 0,
|
||||
"levelsWithInitialSweptOnlyBlocks": [],
|
||||
"referenceSweptOnlyBlockedStates": 0,
|
||||
"minimumRotations": 0,
|
||||
"maximumRotations": 1,
|
||||
"minimumBudgetAfterWin": 0,
|
||||
"maximumBudgetAfterWin": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user