@plasius/learning 0.1.0 → 0.2.1

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 CHANGED
@@ -6,14 +6,22 @@ The package does **not** provide HTTP handlers, persistence, authentication, Tok
6
6
 
7
7
  ## Junior Coder catalog
8
8
 
9
- The initial catalog is exported as `JUNIOR_CODER_ROBOT_RESCUE_PATH_V1`. It contains 19 independently sellable, self-contained project modules:
9
+ The initial immutable catalog is exported as
10
+ `JUNIOR_CODER_ROBOT_RESCUE_PATH_V1`. The current uniformly priced pilot
11
+ catalog is exported as `JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1`, with
12
+ `JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT` available to adapters that
13
+ intentionally follow published successors. Each contains 19 independently
14
+ sellable, self-contained project modules:
10
15
 
11
16
  - 8 original arcade game modules;
12
17
  - 5 simulator-backed robotics modules;
13
18
  - 3 constrained Vibe Coding modules;
14
19
  - 3 web application modules.
15
20
 
16
- The catalog is in `pilot-grant-only` commercial state. Its prices are shadow prices for pilot measurement and are not authorization to enable public checkout.
21
+ Both catalogs remain in `pilot-grant-only` commercial state. The immutable
22
+ `1.1.0` modules each cost 50 Tokens (50,000 subunits), carrying a
23
+ non-redeemable £5 reference value. Price metadata is not authorization to
24
+ enable public checkout.
17
25
 
18
26
  ## Install
19
27
 
@@ -25,11 +33,11 @@ npm install @plasius/learning
25
33
 
26
34
  ```ts
27
35
  import {
28
- JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
36
+ JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
29
37
  assertValidLearningPath,
30
38
  } from "@plasius/learning";
31
39
 
32
- assertValidLearningPath(JUNIOR_CODER_ROBOT_RESCUE_PATH_V1);
40
+ assertValidLearningPath(JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT);
33
41
  ```
34
42
 
35
43
  ## Calculate an assessment
@@ -46,17 +54,55 @@ const result = calculateAssessment(rubric, [
46
54
  console.log(result.score, result.completed);
47
55
  ```
48
56
 
57
+ ## Validate mission authoring
58
+
59
+ Mission authoring is additive to the immutable catalog. A bundle contains
60
+ physically separate learner and facilitator projections and is checked against
61
+ the exact catalog module that owns its rubric, mission and badges.
62
+
63
+ ```ts
64
+ import {
65
+ JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
66
+ ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
67
+ assertValidMissionAuthoringBundle,
68
+ } from "@plasius/learning";
69
+
70
+ const roadHopper = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
71
+ (module) => module.slug === "road-hopper-rally",
72
+ );
73
+
74
+ if (!roadHopper) throw new Error("Road Hopper Rally is missing");
75
+
76
+ assertValidMissionAuthoringBundle(
77
+ ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
78
+ roadHopper,
79
+ );
80
+ ```
81
+
49
82
  ## Contract rules
50
83
 
51
84
  - Published IDs and versions are immutable.
85
+ - Reference prices are product-copy metadata and never create cash redemption
86
+ rights.
52
87
  - A module entitlement must bind to an exact module version.
88
+ - `admin-test-grant` is distinct from pilot, support and paid purchase sources;
89
+ consuming services must not attach an economy transaction to it.
53
90
  - Learner material never contains facilitator-only solutions or protected tests.
91
+ - Mission stages follow `learn → predict → build → run → assess → inspect → fix
92
+ → explain → reward`, and readiness checks never affect the score.
93
+ - Learner evidence and rewards can bind only to visible goals; protected goal
94
+ IDs stay in the facilitator projection.
54
95
  - Rubric criteria total exactly 100 points.
55
96
  - Completion requires a score of at least 80 and every mandatory criterion.
56
97
  - Module agents may explain evidence and propose a bounded next step, but cannot assign scores or rewards.
57
98
  - Physical requirements are disclosed by a versioned manifest before purchase.
58
99
 
59
- See [the foundation design](docs/design/junior-coder-catalog-foundation.md) and [ADR 0001](docs/adrs/adr-0001-learning-domain-and-catalog-boundary.md).
100
+ See [the foundation design](docs/design/junior-coder-catalog-foundation.md),
101
+ [the uniform pricing design](docs/design/junior-coder-uniform-pricing.md),
102
+ [the mission authoring design](docs/design/junior-coder-mission-authoring.md),
103
+ [ADR 0001](docs/adrs/adr-0001-learning-domain-and-catalog-boundary.md), and
104
+ [ADR 0002](docs/adrs/adr-0002-immutable-module-repricing-and-admin-test-source.md),
105
+ and [ADR 0003](docs/adrs/adr-0003-mission-authoring-manifests-are-additive-and-separated.md).
60
106
 
61
107
  ## Development
62
108
 
@@ -69,8 +115,13 @@ npm run build
69
115
  npm run pack:check
70
116
  ```
71
117
 
72
- Node.js 24 is required. Releases are published only through the approved GitHub
73
- CD workflow on configurable trusted self-hosted runners. Release coverage and
118
+ Node.js 24 is required. Public pull-request code is validated on an isolated
119
+ GitHub-hosted Linux runner with read-only workflow permissions. Main-branch CI
120
+ and both release jobs explicitly select the approved
121
+ `Public CI - Quarantined` self-hosted runner group. `CI_RUNNER_GROUP` /
122
+ `CI_RUNNER_LABELS` and `CD_RUNNER_GROUP` / `CD_RUNNER_LABELS` are reserved for
123
+ governed operator configuration. The organisation group remains restricted to
124
+ allowlisted `main` workflows and selected repositories. Release coverage and
74
125
  the CycloneDX SBOM are retained even when an external coverage or provenance
75
126
  service is unavailable. Release tags and GitHub Releases use a current-repository
76
127
  GitHub App token with explicit Contents and Workflows write permissions; npm