You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,18 @@
2
2
3
3
This changelog records source milestones. A listed feature is not production approval; release evidence and the Paper/live-data acceptance result belong in [checklist-walktheplank.md](checklist-walktheplank.md).
- Replaced “glowing platform” with the literal `{{platformBlock}}` GUI token. The tutorial now names the configured parkour material, such as “jack o'lantern” or “emerald block,” instead of assuming that every target glows.
12
+
- One to three distinct configured materials receive a bounded natural-language label; longer lists use “configured platform” so an operator cannot create an excessively wide tooltip.
13
+
- The material label is inserted after trusted MiniMessage parsing, retaining the plugin's formatting-injection boundary and recursive non-italic styling.
14
+
- Translation validation explicitly allows only `{{platformBlock}}` in tutorial lore and continues to reject unsupported or malformed tokens.
15
+
- The exact build-014/015 bundled tutorial is upgraded in memory to the dynamic text, alongside the original historical live translation. Genuinely customized operator lore remains authoritative and no translation file is rewritten.
Copy file name to clipboardExpand all lines: checklist-walktheplank.md
+19-18Lines changed: 19 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
# WalkThePlank v2.4.6-015 beta and event checklist
1
+
# WalkThePlank v2.4.7-016 beta and event checklist
2
2
3
-
This is the mandatory human/server acceptance plan for `1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar`.
3
+
This is the mandatory human/server acceptance plan for `1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar`.
4
4
5
5
Do not treat implemented code, a successful Gradle build, or a previous release's smoke test as production approval. The candidate is approved only after this checklist is completed against the exact frozen JAR, a production-like Paper 26.2 server, a disposable copy of the live data, and the intended external reward providers.
6
6
@@ -12,27 +12,27 @@ Fill this table from the final clean build. Do not copy values from any prior ca
| Paper version/build | Require Paper 26.2 build 62 beta or newer; API `26.2.build.62-beta`|
23
23
| Automated test result/count | Record from the final clean-commit build |
24
24
|`verifyReleaseJar` result | Require PASS on two clean builds with byte-identical outputs |
25
-
| Test-server sync result | Require staged SHA-256 to match and only build 015 to be active |
25
+
| Test-server sync result | Require staged SHA-256 to match and only build 016 to be active |
26
26
27
-
Build 010 completed its controlled scenarios, reproducibility/freeze, standalone/full-stack Paper smoke, live-copy schema-v3 preservation, and test-server synchronization and is tagged `v2.4.1-010-rc.1`. Builds 011–013 corrected the Paper 26.2 movement baseline, durable activation ownership, within-block forward activation, and velocity cancellation loop. The build-013 real-client pass completed five consecutive forward/backward/sprinting/jumping starts and exposed an idempotency gap in late block-cleanup callbacks. Build 014 preserved newer exact ownership and introduced recursively non-italic pastel GUI tooltips. Its follow-up client rehearsal completed six rapid same-arena runs with only the expected bounded reservation/settled messages and no lifecycle failure, quarantine, or blocked next run; the operator also approved the visual treatment of all three menu icons. Build 015 finishes the Play-tooltip proofreading with concise run, automatic-queue, ready-confirmation, and `/walk leave` instructions. Repeat the automated candidate gates and Paper startup/reload/shutdown checks against the final clean build-015 artifact.
27
+
Build 010 completed its controlled scenarios, reproducibility/freeze, standalone/full-stack Paper smoke, live-copy schema-v3 preservation, and test-server synchronization and is tagged `v2.4.1-010-rc.1`. Builds 011–013 corrected the Paper 26.2 movement baseline, durable activation ownership, within-block forward activation, and velocity cancellation loop. The build-013 real-client pass completed five consecutive forward/backward/sprinting/jumping starts and exposed an idempotency gap in late block-cleanup callbacks. Build 014 preserved newer exact ownership and introduced recursively non-italic pastel GUI tooltips. Its follow-up client rehearsal completed six rapid same-arena runs with only the expected bounded reservation/settled messages and no lifecycle failure, quarantine, or blocked next run; the operator also approved the visual treatment of all three menu icons. Build 015 finished the Play-tooltip proofreading. Build 016 replaces the assumed “glowing platform” description with a bounded label derived from `parkourBlocks`. Repeat the automated candidate gates and Paper startup/reload/shutdown checks against the final clean build-016 artifact.
28
28
29
29
## Known build-003 migration evidence
30
30
31
-
Build 010's persistent live-copy smoke preserved 100 rows, 100 UUIDs, score sum 4256, maximum score 149, the unchanged Classic top ten, and `PRAGMA quick_check = ok`. Build 015 has no database-schema change, but repeat every preservation check below against its frozen candidate. Historical evidence is not a sign-off.
31
+
Build 010's persistent live-copy smoke preserved 100 rows, 100 UUIDs, score sum 4256, maximum score 149, the unchanged Classic top ten, and `PRAGMA quick_check = ok`. Build 016 has no database-schema change, but repeat every preservation check below against its frozen candidate. Historical evidence is not a sign-off.
32
32
33
33
## 1. Source and release integrity
34
34
35
-
-[x] Confirm `gradle.properties` says version `2.4.6`, build `015`, Java `25`, Paper `26.2`, and exact Paper API `26.2.build.62-beta`.
35
+
-[x] Confirm `gradle.properties` says version `2.4.7`, build `016`, Java `25`, Paper `26.2`, and exact Paper API `26.2.build.62-beta`.
36
36
-[x] Confirm the wrapper/build dependencies remain Gradle 9.6.1, Shadow 9.5.1, PlaceholderAPI 2.12.3, SQLite JDBC 3.53.2.0, and JUnit 6.1.2 unless a newer version has been deliberately reviewed and recorded.
37
37
-[x] Confirm `plugin.yml` retains Bukkit name `InfinityParkour`, `api-version: 26.2`, and main class `com.mrfdev.walktheplank.WalkThePlankPlugin`.
38
38
-[x] Confirm the production plugin uses `JavaPlugin#getLifecycleManager` with `LifecycleEvents.COMMANDS`, keeps `plugin.yml` rather than adding `paper-plugin.yml`, and contains no legacy `PluginCommand` executor/tab-completer registration.
-[ ] Confirm the shaded JAR includes `org/sqlite/JDBC.class` and `META-INF/services/java.sql.Driver`.
48
48
-[ ] Confirm the shaded JAR contains no `com/mysql/`, `org/mariadb/`, `org/bukkit/`, `io/papermc/paper/`, or `me/clip/placeholderapi/` classes.
49
49
-[ ] Confirm the JAR contains no `.db` or `.sqlite` file and no `_resources` or server directory.
50
-
-[ ] Confirm embedded `plugin.yml`, `build-info.properties`, and manifest all identify v2.4.6 build 015, Java 25, Paper 26.2 build 62 minimum, and the exact artifact name.
50
+
-[ ] Confirm embedded `plugin.yml`, `build-info.properties`, and manifest all identify v2.4.7 build 016, Java 25, Paper 26.2 build 62 minimum, and the exact artifact name.
51
51
-[ ] Record final size, SHA-256, source commit, runtime, test result, and smoke evidence in the annotated RC tag and operator archive.
52
52
-[ ] Copy the JAR by checksum and prove the staged copy is byte-identical.
53
53
-[ ] Confirm only one InfinityParkour/WalkThePlank JAR is active. Move every prior build to `plugins-disabled/walktheplank/`.
@@ -62,11 +62,11 @@ The scenario system is release tooling, not a production feature. Never copy eit
62
62
-[ ] Require these two test-only files beneath `build/scenario-artifacts/`:
-[ ] Require the production file to remain `build/libs/1MB-WalkThePlank-v2.4.6-015-j25-26.2.jar`; prove the instrumented file has a different path and checksum and did not replace it.
69
+
-[ ] Require the production file to remain `build/libs/1MB-WalkThePlank-v2.4.7-016-j25-26.2.jar`; prove the instrumented file has a different path and checksum and did not replace it.
70
70
-[ ] Run `./gradlew verifyReleaseJar` separately and require the production JAR to contain no `com/mrfdev/walktheplank/scenario/` class, `WalkThePlank-Test-Artifact`/`WalkThePlank-Test-Canary` manifest attribute, scenario command, failpoint system-property prefix, scenario canary, Java agent entry point, or any of the 24 failpoint identifiers.
71
71
-[ ] Require positive controls: the harness must be detected as test-only, the instrumented copy must contain the injected bridge/canary and all 24 identifiers, and the isolation task must reject a deliberately scanned test artifact as production-safe.
72
72
-[ ] Inspect the scenario harness archive. Require an independent `plugin.yml` named `WalkThePlank-ScenarioHarness`, hard dependency on `InfinityParkour`, classes only under `com/mrfdev/walktheplank/scenario/harness/`, and no shaded WalkThePlank, SQLite, Paper/Bukkit, or PlaceholderAPI classes.
@@ -211,7 +211,7 @@ LIMIT 10;
211
211
## 5. Paper startup and dependency matrix
212
212
213
213
-[ ] Start with Java 25 and Paper 26.2 build 62 beta or newer.
214
-
-[ ] Require `InfinityParkour v2.4.6-015` to enable once with 100 preserved scores.
214
+
-[ ] Require `InfinityParkour v2.4.7-016` to enable once with 100 preserved scores.
215
215
-[ ] Attempt startup on Paper 26.2 build 61 and on a 26.1.x runtime in disposable profiles. Require WalkThePlank to refuse enable before opening its data directory, with one bounded target-versus-runtime diagnostic.
216
216
-[ ] Require no WalkThePlank exception, deprecated-method warning, task rejection, linkage error, or unexpected startup/shutdown warning. The JVM's JOML `sun.misc.Unsafe` warning is emitted by Paper's `joml-1.10.8.jar`, not this plugin.
217
217
-[ ] Break configuration or journal initialization in a disposable profile and require startup to abort. The disable audit says `startup_completed:false` and `clean:false`; the log explicitly refuses a clean-restoration claim.
@@ -268,6 +268,7 @@ LIMIT 10;
268
268
269
269
-[ ] Open the real GUI and confirm all 54 slots: readable near-black `#111827` title text, light-blue stained-glass panes only on the 26 outer-frame slots, centered tutorial/play/stats actions at 20/22/24, and 25 unused inner slots left empty.
270
270
-[x] Inspect tutorial, play, and Top 10 tooltips. The operator approved the visual treatment of all three icons on 2026-07-20: proofread wording, pale-blue names, readable white/soft-gray body text, pink warning/label text, gold click actions, and no italic text.
271
+
-[ ] With the live `JACK_O_LANTERN` setting, require the tutorial to say “jack o'lantern” rather than “glowing platform.” In a disposable reload, change the sole `parkourBlocks` entry to `EMERALD_BLOCK` and require “emerald block”; then restore the live setting.
271
272
-[ ] Put nested `<italic>` tags in a disposable custom GUI title/lore and reload. Require every plugin item component to remain explicitly non-italic while its other safe MiniMessage styling remains intact.
272
273
-[ ] Load the exact historical live tutorial/play/scoreboard definitions. Require the bundled modern text to replace them only in memory without rewriting the file. Change one item definition deliberately and require that genuinely customized item to remain byte-for-byte authoritative.
273
274
-[ ] Confirm legacy `{{index}}` lore renders positions 1 through 10 while `{{rank}}` retains competition rank.
@@ -518,7 +519,7 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
518
519
-[ ] Invoke doctor immediately before reload/disable and force a probe failure on a disposable database. Require a bounded privacy-safe result or contained cancellation, with no raw exception, rejected-task leak, shutdown hang, repair attempt, or database replacement.
519
520
-[ ] Start and stop with no players, active runs, pending starts, queued/ready players, and quarantined records.
520
521
-[ ] Clean shutdown must close menus, cancel starts, drain queue, restore sessions, retry quarantine, unregister API/PlaceholderAPI, and drain accepted database work for up to 15 seconds.
521
-
-[ ] Require `WalkThePlank disabled; arena blocks and player state were restored` and no pending recovery/operations/database-write timeout in both build-015 controlled/console-smoke profiles.
522
+
-[ ] Require `WalkThePlank disabled; arena blocks and player state were restored` and no pending recovery/operations/database-write timeout in both build-016 controlled/console-smoke profiles.
522
523
-[ ] End an ordinary zero-score run by falling. If asynchronous cleanup briefly retains the arena, require only the bounded informational reservation/settled messages—never a false `SEVERE` quarantine message—and require the arena to become available once.
523
524
-[x] Start and end at least five rapid consecutive runs in the same arena. Six build-014 client runs completed on 2026-07-20 with only the expected reservation/settled information, no lifecycle failure, no quarantine, and no blocked next run. `BlockLeaseRegistryTest` separately locks the delayed stale-completion case and proves that it preserves a newer exact owner without world mutation or duplicate release.
524
525
-[ ] Repeat the rapid-run cleanup rehearsal with at least one scored run against the final frozen candidate.
@@ -531,11 +532,11 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
531
532
## 17. Test-server synchronization and regression pass
532
533
533
534
-[ ] Run `./gradlew syncTestServer` only after source/build/migration gates pass.
534
-
-[ ] Confirm build 015 is active and all older WalkThePlank/InfinityParkour JARs—including both `TEST-ONLY-` artifacts—are disabled/absent.
535
+
-[ ] Confirm build 016 is active and all older WalkThePlank/InfinityParkour JARs—including both `TEST-ONLY-` artifacts—are disabled/absent.
535
536
-[ ] Confirm copied live data belongs to the test server, not `_resources`.
536
537
-[ ] Restart the synchronized server from a clean stop and repeat startup/info/validate/health/doctor/top/GUI/gameplay/queue/season/export/reward/recovery/disable smoke.
537
538
-[ ] Search the full `latest.log` for `InfinityParkour`, `WalkThePlank`, `WARN`, `ERROR`, `SEVERE`, `Exception`, `deprecated`, and task rejection; classify every match.
538
-
-[ ] Re-run `PRAGMA quick_check` and the 100-row/top-ten comparison after build-015 console smoke: 100 UUID rows, score sum 4256, maximum 149, unchanged top ten, `quick_check=ok`.
539
+
-[ ] Re-run `PRAGMA quick_check` and the 100-row/top-ten comparison after build-016 console smoke: 100 UUID rows, score sum 4256, maximum 149, unchanged top ten, `quick_check=ok`.
539
540
-[ ] Re-hash the staged JAR and compare it with the candidate record.
540
541
541
542
## 18. Rollback rehearsal
@@ -544,7 +545,7 @@ Use a disposable world and keep exact before/after structure or NBT/PDC evidence
544
545
-[ ] Restore the exact previous JAR and matched pre-deployment data folder together.
545
546
-[ ] Start the previous supported environment and verify the all-time leaderboard/top ten.
546
547
-[ ] Confirm the production runbook warns that database rollback discards later event scores and never reconciles by username.
547
-
-[ ] Confirm pending build-015 restoration/player-recovery records are resolved or preserved before starting an older plugin that cannot read them.
548
+
-[ ] Confirm pending build-016 restoration/player-recovery records are resolved or preserved before starting an older plugin that cannot read them.
548
549
-[ ] Record rollback duration, responsible operator, file locations, and communication plan.
0 commit comments