@plasius/learning 0.2.22 → 0.2.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -29
- package/dist/index.cjs +42 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +39 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,11 +9,11 @@ The package does **not** provide HTTP handlers, persistence, authentication, Tok
|
|
|
9
9
|
The initial immutable catalog is exported as
|
|
10
10
|
`JUNIOR_CODER_ROBOT_RESCUE_PATH_V1`, and its uniformly priced successor remains
|
|
11
11
|
available as `JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1`. Path `1.2.0` upgrades Road
|
|
12
|
-
Hopper Rally
|
|
13
|
-
`
|
|
14
|
-
`JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT`. It
|
|
15
|
-
module `2.
|
|
16
|
-
versions. Each path
|
|
12
|
+
Hopper Rally, path `1.3.0` adds Paddle Pulse `2.0.0`, and path `1.4.0` is
|
|
13
|
+
exported as `JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4` and selected by
|
|
14
|
+
`JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT`. It advances Road Hopper Rally to the
|
|
15
|
+
evidence-led module `2.1.0`; the other eighteen module records retain their
|
|
16
|
+
prior immutable versions. Each path
|
|
17
17
|
contains 19 independently sellable, self-contained project modules:
|
|
18
18
|
|
|
19
19
|
- 8 original arcade game modules;
|
|
@@ -22,16 +22,18 @@ contains 19 independently sellable, self-contained project modules:
|
|
|
22
22
|
- 3 web application modules.
|
|
23
23
|
|
|
24
24
|
All catalogs remain in `pilot-grant-only` commercial state. The immutable
|
|
25
|
-
`1.1.0` modules, Road Hopper Rally `2.
|
|
25
|
+
`1.1.0` modules, Road Hopper Rally `2.1.0` and Paddle Pulse `2.0.0` each cost 50 Tokens (50,000 subunits), carrying a
|
|
26
26
|
non-redeemable £5 reference value. Price metadata is not authorization to
|
|
27
27
|
enable public checkout.
|
|
28
28
|
|
|
29
|
-
Road Hopper Rally `2.
|
|
30
|
-
54-
|
|
31
|
-
assessment definitions live in
|
|
32
|
-
The catalog pins the exact
|
|
33
|
-
|
|
34
|
-
or bundle the
|
|
29
|
+
Road Hopper Rally `2.1.0` is a 450-minute, six-mission catalog record whose
|
|
30
|
+
54 evidence-led activities, starter project, deterministic runtime, original
|
|
31
|
+
assets and assessment definitions live in
|
|
32
|
+
`@plasius/learning-road-hopper-rally@1.1.0`. The catalog pins the exact
|
|
33
|
+
`ROAD_HOPPER_RALLY_COURSE_V3` export, schema `3` and its canonical SHA-256 digest
|
|
34
|
+
through `ExternalLearningContentReferenceV1`; it does not import or bundle the
|
|
35
|
+
executable content package. Road Hopper `2.0.0` and its package `1.0.0`
|
|
36
|
+
reference remain available unchanged for rollback and existing consumers.
|
|
35
37
|
|
|
36
38
|
Paddle Pulse `2.0.0` is a 360-minute, six-mission catalog record whose 54-stage
|
|
37
39
|
course, declarative program contracts, deterministic 60 Hz engine and protected
|
|
@@ -62,11 +64,11 @@ fields before use:
|
|
|
62
64
|
|
|
63
65
|
```ts
|
|
64
66
|
import {
|
|
65
|
-
|
|
67
|
+
ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2,
|
|
66
68
|
isExternalLearningContentReferenceV1,
|
|
67
69
|
} from "@plasius/learning";
|
|
68
70
|
|
|
69
|
-
if (!isExternalLearningContentReferenceV1(
|
|
71
|
+
if (!isExternalLearningContentReferenceV1(ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2)) {
|
|
70
72
|
throw new Error("Invalid external learning content reference");
|
|
71
73
|
}
|
|
72
74
|
```
|
|
@@ -424,18 +426,27 @@ npm run build
|
|
|
424
426
|
npm run pack:check
|
|
425
427
|
```
|
|
426
428
|
|
|
427
|
-
Node.js 24 is required. Public pull-request code is validated
|
|
428
|
-
GitHub-hosted Linux
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
`
|
|
429
|
+
Node.js 24 is required. Public pull-request and main-branch code is validated
|
|
430
|
+
on isolated GitHub-hosted Linux runners with read-only workflow permissions.
|
|
431
|
+
Final npm
|
|
432
|
+
publication runs only on a GitHub-hosted runner from the protected `production`
|
|
433
|
+
environment so npm can validate its short-lived OIDC identity and record
|
|
434
|
+
provenance; it has no long-lived npm write-token fallback. Release coverage and
|
|
435
|
+
the CycloneDX SBOM are retained even when an external coverage service is
|
|
436
|
+
unavailable. Release tags and GitHub Releases use a current-repository GitHub
|
|
437
|
+
App token with explicit Contents and Workflows write permissions. Publication
|
|
438
|
+
checks out the verified current release-branch HEAD, including the workflow
|
|
439
|
+
tooling used by a `bump=none` recovery.
|
|
440
|
+
<!-- BEGIN PLASIUS RELEASE INTEGRITY -->
|
|
441
|
+
## Release integrity
|
|
442
|
+
|
|
443
|
+
Production package publication runs only from `.github/workflows/cd.yml` on
|
|
444
|
+
protected `main`. The job verifies that the prepared commit is still the
|
|
445
|
+
current main commit and has an exact successful `ci.yml` push result before it
|
|
446
|
+
mutates release state. Public package CI runs on GitHub-hosted capacity so it
|
|
447
|
+
cannot execute on company-managed runners. npm publication runs on
|
|
448
|
+
GitHub-hosted Node.js 24 with
|
|
449
|
+
npm 11.5.1 or newer, uses the protected `production` environment and
|
|
450
|
+
short-lived npm OIDC with provenance, and has no long-lived npm write-token
|
|
451
|
+
fallback. Rollback disables CD; it never rewrites published package history.
|
|
452
|
+
<!-- END PLASIUS RELEASE INTEGRITY -->
|
package/dist/index.cjs
CHANGED
|
@@ -33,11 +33,13 @@ __export(index_exports, {
|
|
|
33
33
|
JUNIOR_CODER_MODULE_PRICE_V1_1: () => JUNIOR_CODER_MODULE_PRICE_V1_1,
|
|
34
34
|
JUNIOR_CODER_PADDLE_PULSE_V2: () => JUNIOR_CODER_PADDLE_PULSE_V2,
|
|
35
35
|
JUNIOR_CODER_ROAD_HOPPER_RALLY_V2: () => JUNIOR_CODER_ROAD_HOPPER_RALLY_V2,
|
|
36
|
+
JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1: () => JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1,
|
|
36
37
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
|
|
37
38
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
|
|
38
39
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
39
40
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_2: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_2,
|
|
40
41
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3,
|
|
42
|
+
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4,
|
|
41
43
|
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1: () => METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
42
44
|
MISSION_AUTHORING_CONTRACT_VERSION_V1: () => MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
43
45
|
OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1: () => OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1,
|
|
@@ -47,6 +49,7 @@ __export(index_exports, {
|
|
|
47
49
|
RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1: () => RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1,
|
|
48
50
|
RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1: () => RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1,
|
|
49
51
|
ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V1: () => ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V1,
|
|
52
|
+
ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2: () => ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2,
|
|
50
53
|
ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1: () => ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
|
|
51
54
|
ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1: () => ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
|
|
52
55
|
ROBOT_MISSION_CONTROL_MISSION_ONE_AUTHORING_V1: () => ROBOT_MISSION_CONTROL_MISSION_ONE_AUTHORING_V1,
|
|
@@ -659,6 +662,13 @@ var ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V1 = Object.freeze({
|
|
|
659
662
|
schemaVersion: "2",
|
|
660
663
|
sha256: "1a20741beba028004e0be527d05aae2b2881082d3b578e0d62308a59bf1323f0"
|
|
661
664
|
});
|
|
665
|
+
var ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2 = Object.freeze({
|
|
666
|
+
packageName: "@plasius/learning-road-hopper-rally",
|
|
667
|
+
packageVersion: "1.1.0",
|
|
668
|
+
exportName: "ROAD_HOPPER_RALLY_COURSE_V3",
|
|
669
|
+
schemaVersion: "3",
|
|
670
|
+
sha256: "f73b90f5f0e483b96724f978f2977435a5e6a1333f5f45fd0fc803b55ad21187"
|
|
671
|
+
});
|
|
662
672
|
var roadHopperV1_1 = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
|
|
663
673
|
(entry) => entry.id === "junior-coder.road-hopper-rally"
|
|
664
674
|
);
|
|
@@ -769,6 +779,29 @@ var JUNIOR_CODER_ROAD_HOPPER_RALLY_V2 = {
|
|
|
769
779
|
],
|
|
770
780
|
externalContent: ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V1
|
|
771
781
|
};
|
|
782
|
+
var ROAD_HOPPER_RALLY_V2_1_MISSION_TITLES = [
|
|
783
|
+
"Map the Rally Route",
|
|
784
|
+
"Move the Hopper",
|
|
785
|
+
"Build the Traffic Rally",
|
|
786
|
+
"Ride the Rescue River",
|
|
787
|
+
"Score the Rescue",
|
|
788
|
+
"Road Hopper Rally Challenge"
|
|
789
|
+
];
|
|
790
|
+
var JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1 = {
|
|
791
|
+
...JUNIOR_CODER_ROAD_HOPPER_RALLY_V2,
|
|
792
|
+
version: "2.1.0",
|
|
793
|
+
contentRevision: "2026-08-24.1",
|
|
794
|
+
summary: "Build Road Hopper Rally through 54 evidence-led activities: predict, edit, run, inspect, repair, explain and prove each deterministic game system.",
|
|
795
|
+
missions: JUNIOR_CODER_ROAD_HOPPER_RALLY_V2.missions.map((mission2, index) => ({
|
|
796
|
+
...mission2,
|
|
797
|
+
title: ROAD_HOPPER_RALLY_V2_1_MISSION_TITLES[index]
|
|
798
|
+
})),
|
|
799
|
+
assessment: {
|
|
800
|
+
...JUNIOR_CODER_ROAD_HOPPER_RALLY_V2.assessment,
|
|
801
|
+
version: "2.1.0"
|
|
802
|
+
},
|
|
803
|
+
externalContent: ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2
|
|
804
|
+
};
|
|
772
805
|
var JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_2 = {
|
|
773
806
|
...JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
774
807
|
version: "1.2.0",
|
|
@@ -892,7 +925,12 @@ var JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3 = {
|
|
|
892
925
|
version: "1.3.0",
|
|
893
926
|
modules: JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_2.modules.map((entry) => entry.id === JUNIOR_CODER_PADDLE_PULSE_V2.id ? JUNIOR_CODER_PADDLE_PULSE_V2 : entry)
|
|
894
927
|
};
|
|
895
|
-
var
|
|
928
|
+
var JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4 = {
|
|
929
|
+
...JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3,
|
|
930
|
+
version: "1.4.0",
|
|
931
|
+
modules: JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3.modules.map((entry) => entry.id === JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1.id ? JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1 : entry)
|
|
932
|
+
};
|
|
933
|
+
var JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4;
|
|
896
934
|
|
|
897
935
|
// src/contracts.ts
|
|
898
936
|
var EXTERNAL_LEARNING_CONTENT_REFERENCE_VERSION_V1 = "1";
|
|
@@ -7277,11 +7315,13 @@ ${summary}`);
|
|
|
7277
7315
|
JUNIOR_CODER_MODULE_PRICE_V1_1,
|
|
7278
7316
|
JUNIOR_CODER_PADDLE_PULSE_V2,
|
|
7279
7317
|
JUNIOR_CODER_ROAD_HOPPER_RALLY_V2,
|
|
7318
|
+
JUNIOR_CODER_ROAD_HOPPER_RALLY_V2_1,
|
|
7280
7319
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
|
|
7281
7320
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
|
|
7282
7321
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
|
|
7283
7322
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_2,
|
|
7284
7323
|
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_3,
|
|
7324
|
+
JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_4,
|
|
7285
7325
|
METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
|
|
7286
7326
|
MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
7287
7327
|
OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1,
|
|
@@ -7291,6 +7331,7 @@ ${summary}`);
|
|
|
7291
7331
|
RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1,
|
|
7292
7332
|
RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1,
|
|
7293
7333
|
ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V1,
|
|
7334
|
+
ROAD_HOPPER_RALLY_EXTERNAL_CONTENT_V2,
|
|
7294
7335
|
ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
|
|
7295
7336
|
ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
|
|
7296
7337
|
ROBOT_MISSION_CONTROL_MISSION_ONE_AUTHORING_V1,
|