@plasius/learning 0.2.0 → 0.2.2

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
@@ -54,6 +54,39 @@ const result = calculateAssessment(rubric, [
54
54
  console.log(result.score, result.completed);
55
55
  ```
56
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
+ ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
68
+ assertValidMissionAuthoringBundle,
69
+ } from "@plasius/learning";
70
+
71
+ const roadHopper = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
72
+ (module) => module.slug === "road-hopper-rally",
73
+ );
74
+ const robotMaze = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
75
+ (module) => module.slug === "robot-maze-dash",
76
+ );
77
+
78
+ if (!roadHopper || !robotMaze) throw new Error("Junior Coder module is missing");
79
+
80
+ assertValidMissionAuthoringBundle(
81
+ ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
82
+ roadHopper,
83
+ );
84
+ assertValidMissionAuthoringBundle(
85
+ ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
86
+ robotMaze,
87
+ );
88
+ ```
89
+
57
90
  ## Contract rules
58
91
 
59
92
  - Published IDs and versions are immutable.
@@ -63,6 +96,13 @@ console.log(result.score, result.completed);
63
96
  - `admin-test-grant` is distinct from pilot, support and paid purchase sources;
64
97
  consuming services must not attach an economy transaction to it.
65
98
  - Learner material never contains facilitator-only solutions or protected tests.
99
+ - Mission stages follow `learn → predict → build → run → assess → inspect → fix
100
+ → explain → reward`, and readiness checks never affect the score.
101
+ - Learner evidence and rewards can bind only to visible goals; protected goal
102
+ IDs stay in the facilitator projection.
103
+ - Visual-programming missions must provide an equivalent labelled control for
104
+ every drag interaction so learners can complete the same work with keyboard
105
+ or pointer buttons.
66
106
  - Rubric criteria total exactly 100 points.
67
107
  - Completion requires a score of at least 80 and every mandatory criterion.
68
108
  - Module agents may explain evidence and propose a bounded next step, but cannot assign scores or rewards.
@@ -70,8 +110,10 @@ console.log(result.score, result.completed);
70
110
 
71
111
  See [the foundation design](docs/design/junior-coder-catalog-foundation.md),
72
112
  [the uniform pricing design](docs/design/junior-coder-uniform-pricing.md),
113
+ [the mission authoring design](docs/design/junior-coder-mission-authoring.md),
73
114
  [ADR 0001](docs/adrs/adr-0001-learning-domain-and-catalog-boundary.md), and
74
- [ADR 0002](docs/adrs/adr-0002-immutable-module-repricing-and-admin-test-source.md).
115
+ [ADR 0002](docs/adrs/adr-0002-immutable-module-repricing-and-admin-test-source.md),
116
+ and [ADR 0003](docs/adrs/adr-0003-mission-authoring-manifests-are-additive-and-separated.md).
75
117
 
76
118
  ## Development
77
119
 
@@ -84,12 +126,13 @@ npm run build
84
126
  npm run pack:check
85
127
  ```
86
128
 
87
- Node.js 24 is required. Releases are published only through the approved GitHub
88
- CD workflow on configurable trusted self-hosted runners. Both release jobs
89
- explicitly select the approved `Public CI - Quarantined` runner group by
90
- default, with `CD_RUNNER_GROUP` and `CD_RUNNER_LABELS` reserved for governed
91
- operator configuration. The organisation group remains restricted to
92
- allowlisted workflows and selected repositories. Release coverage and
129
+ Node.js 24 is required. Public pull-request code is validated on an isolated
130
+ GitHub-hosted Linux runner with read-only workflow permissions. Main-branch CI
131
+ and both release jobs explicitly select the approved
132
+ `Public CI - Quarantined` self-hosted runner group. `CI_RUNNER_GROUP` /
133
+ `CI_RUNNER_LABELS` and `CD_RUNNER_GROUP` / `CD_RUNNER_LABELS` are reserved for
134
+ governed operator configuration. The organisation group remains restricted to
135
+ allowlisted `main` workflows and selected repositories. Release coverage and
93
136
  the CycloneDX SBOM are retained even when an external coverage or provenance
94
137
  service is unavailable. Release tags and GitHub Releases use a current-repository
95
138
  GitHub App token with explicit Contents and Workflows write permissions; npm