@plasius/learning 0.2.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
@@ -54,6 +54,31 @@ 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
+ 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
+
57
82
  ## Contract rules
58
83
 
59
84
  - Published IDs and versions are immutable.
@@ -63,6 +88,10 @@ console.log(result.score, result.completed);
63
88
  - `admin-test-grant` is distinct from pilot, support and paid purchase sources;
64
89
  consuming services must not attach an economy transaction to it.
65
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.
66
95
  - Rubric criteria total exactly 100 points.
67
96
  - Completion requires a score of at least 80 and every mandatory criterion.
68
97
  - Module agents may explain evidence and propose a bounded next step, but cannot assign scores or rewards.
@@ -70,8 +99,10 @@ console.log(result.score, result.completed);
70
99
 
71
100
  See [the foundation design](docs/design/junior-coder-catalog-foundation.md),
72
101
  [the uniform pricing design](docs/design/junior-coder-uniform-pricing.md),
102
+ [the mission authoring design](docs/design/junior-coder-mission-authoring.md),
73
103
  [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).
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).
75
106
 
76
107
  ## Development
77
108
 
@@ -84,12 +115,13 @@ npm run build
84
115
  npm run pack:check
85
116
  ```
86
117
 
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
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
93
125
  the CycloneDX SBOM are retained even when an external coverage or provenance
94
126
  service is unavailable. Release tags and GitHub Releases use a current-repository
95
127
  GitHub App token with explicit Contents and Workflows write permissions; npm