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:
cabinw
2026-09-09 13:17:30 +08:00
parent 70b021d4cc
commit e92cccba82
52 changed files with 76449 additions and 15076 deletions
+7497 -3366
View File
File diff suppressed because it is too large Load Diff
+648
View File
@@ -0,0 +1,648 @@
{
"revision": 2,
"note": "Curated by actual curved removal paths, with challenge/release rhythm. Run npm run levels after changing a seed or its options.",
"seeds": [
{
"level": 1,
"seed": 217021,
"options": {
"radius": 3,
"target": 8,
"allFree": true,
"minBaseTurns": 1,
"maxBaseTurns": 1,
"maxTurns": 3,
"bendRate": 0.35,
"clearBlockers": true
}
},
{
"level": 2,
"seed": 160112,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.4,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 3
}
},
{
"level": 3,
"seed": 251063,
"options": {
"radius": 3,
"target": 12,
"minBaseTurns": 1,
"maxBaseTurns": 2,
"maxTurns": 4,
"curvePreference": 3,
"bendRate": 0.55,
"clearBlockers": true
}
},
{
"level": 4,
"seed": 160019,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.4,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 5,
"seed": 2400258,
"options": {
"radius": 4,
"target": 12,
"bendRate": 0.24,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 6,
"seed": 2440508,
"options": {
"radius": 4,
"target": 16,
"bendRate": 0.36,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 7,
"seed": 2420276,
"options": {
"radius": 4,
"target": 14,
"bendRate": 0.24,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 8,
"seed": 160589,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.4,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 9,
"seed": 2420811,
"options": {
"radius": 4,
"target": 14,
"bendRate": 0.18,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 10,
"seed": 170073,
"options": {
"radius": 2,
"target": 7,
"bendRate": 0.5,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 4
}
},
{
"level": 11,
"seed": 2440615,
"options": {
"radius": 4,
"target": 16,
"bendRate": 0.42,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 12,
"seed": 2460740,
"options": {
"radius": 4,
"target": 18,
"bendRate": 0.48,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 13,
"seed": 2440401,
"options": {
"radius": 4,
"target": 16,
"bendRate": 0.3,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 14,
"seed": 181169,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.4,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 15,
"seed": 881321,
"options": {
"radius": 4,
"target": 16,
"bendRate": 0.32,
"maxTurns": 4,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 16,
"seed": 170376,
"options": {
"radius": 2,
"target": 7,
"bendRate": 0.5,
"maxTurns": 5,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 2
}
},
{
"level": 17,
"seed": 2460847,
"options": {
"radius": 4,
"target": 18,
"bendRate": 0.18,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 18,
"seed": 2481400,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.48,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 19,
"seed": 901335,
"options": {
"radius": 4,
"target": 18,
"bendRate": 0.32,
"maxTurns": 4,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 20,
"seed": 187104,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.7,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 21,
"seed": 2461275,
"options": {
"radius": 4,
"target": 18,
"bendRate": 0.42,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 22,
"seed": 172109,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.6,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 23,
"seed": 2481721,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.3,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 8,
"clearBlockers": true
}
},
{
"level": 24,
"seed": 2504521,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.42,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 25,
"seed": 2460526,
"options": {
"radius": 4,
"target": 18,
"bendRate": 0.36,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 26,
"seed": 160798,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.5,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 4
}
},
{
"level": 27,
"seed": 921246,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.25,
"maxTurns": 4,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 28,
"seed": 172099,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.6,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 29,
"seed": 2482149,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.18,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 30,
"seed": 2500990,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.24,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 31,
"seed": 2482577,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.42,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 32,
"seed": 160759,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.6,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 33,
"seed": 921452,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.4,
"maxTurns": 4,
"maxBaseTurns": 2,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 34,
"seed": 172309,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.6,
"maxTurns": 5,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 5
}
},
{
"level": 35,
"seed": 2508052,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.24,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 36,
"seed": 974458,
"options": {
"radius": 4,
"target": 24,
"bendRate": 0.48,
"maxTurns": 4,
"maxBaseTurns": 1,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 37,
"seed": 2513188,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.24,
"maxTurns": 6,
"maxBaseTurns": 1,
"curvePreference": 8,
"clearBlockers": true
}
},
{
"level": 38,
"seed": 190148,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.45,
"maxTurns": 4,
"curvePreference": 2,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 4
}
},
{
"level": 39,
"seed": 2505336,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.35,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 8,
"clearBlockers": true
}
},
{
"level": 40,
"seed": 172561,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.7,
"maxTurns": 4,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 2
}
},
{
"level": 41,
"seed": 967660,
"options": {
"radius": 4,
"target": 24,
"bendRate": 0.4,
"maxTurns": 4,
"maxBaseTurns": 2,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 42,
"seed": 1821618,
"options": {
"radius": 4,
"target": 25,
"bendRate": 0.3,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 43,
"seed": 2481813,
"options": {
"radius": 4,
"target": 20,
"bendRate": 0.25,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 44,
"seed": 188016,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.35,
"maxTurns": 4,
"curvePreference": 2,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 2
}
},
{
"level": 45,
"seed": 2514582,
"options": {
"radius": 4,
"target": 22,
"bendRate": 0.3,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 3,
"clearBlockers": true
}
},
{
"level": 46,
"seed": 172752,
"options": {
"radius": 2,
"target": 6,
"bendRate": 0.7,
"maxTurns": 5,
"curvePreference": 3,
"minBaseTurns": 0,
"clearBlockers": true,
"startRotation": 3
}
},
{
"level": 47,
"seed": 981973,
"options": {
"radius": 4,
"target": 24,
"bendRate": 0.35,
"maxTurns": 6,
"maxBaseTurns": 2,
"curvePreference": 5,
"clearBlockers": true
}
},
{
"level": 48,
"seed": 1833086,
"options": {
"radius": 4,
"target": 25,
"bendRate": 0.25,
"maxTurns": 6,
"maxBaseTurns": 3,
"curvePreference": 5,
"clearBlockers": true
}
}
]
}
+13002 -11520
View File
File diff suppressed because it is too large Load Diff
+114
View File
@@ -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