@plasius/learning-road-hopper-rally
v1.1.7
Published
Immutable Road Hopper Rally curriculum, deterministic runtime, assets, and assessment contracts.
Maintainers
Readme
@plasius/learning-road-hopper-rally
Immutable curriculum, deterministic game contracts, original assets, and bounded JavaScript evaluation for the Junior Coder Road Hopper Rally reference module.
The package owns content and portable runtime behavior. React, HTTP, authentication, persistence, entitlement evaluation, and cloud infrastructure remain adapter responsibilities.
Public entry points
@plasius/learning-road-hopper-rally: trusted authoring manifest (including facilitator metadata), starter project, validators, deterministic engine, renderer/input/audio contracts, and evaluator factory.@plasius/learning-road-hopper-rally/browser: learner-bundle-safe contracts, runtime limits, starter project, assets, transport validators, and evaluator factory; it contains no facilitator or protected assessment content.@plasius/learning-road-hopper-rally/browser-worker: bounded worker request handler for preview adapters.@plasius/learning-road-hopper-rally/server: deterministic mission and final assessment. Never bundle this entry point into a learner client.
Course shape
Road Hopper Rally 2.0 contains six 75-minute missions. Every mission follows Learn, Predict, Build, Run, Assess, Inspect, Fix, Explain, and Reward, for exactly 54 stages. The editable project always contains board.js, hopper.js, traffic.js, river.js, rules.js, and game.js.
Road Hopper Rally 2.1 is the additive evidence-led revision exported as
ROAD_HOPPER_RALLY_COURSE_V3. It retains the open 6×9 map but gives every
stage a mission-specific activity contract. Choice stages contain authored
feedback, code stages declare observable evidence, assessment errors fail
closed, reflections remain client-only, and rewards require the preceding
mission evidence. The immutable 2.0 export remains available for rollback.
Runtime boundary
Learner code runs in a fresh QuickJS realm with no DOM, network, cookies, storage, dynamic imports, or Plasius account APIs. Source, memory, stack, input, entity, draw-command, audio-cue, callback, and session limits are exported in the immutable course manifest.
import {
ROAD_HOPPER_RALLY_COURSE_V3,
ROAD_HOPPER_RALLY_STARTER_PROJECT_V2,
createRoadHopperProgramSession,
} from "@plasius/learning-road-hopper-rally";
const session = await createRoadHopperProgramSession(
ROAD_HOPPER_RALLY_STARTER_PROJECT_V2,
);
const frame = await session.step({
sequence: 1,
action: "up",
phase: "pressed",
source: "keyboard",
atTick: 1,
});
session.dispose();
console.log(ROAD_HOPPER_RALLY_COURSE_V3.missions.length, frame.semanticState);Browser adapters must import their runtime and transport contracts from the
/browser entry point and obtain the learner course projection from their
authenticated server API. The package verifier scans both browser artifacts
and the worker artifacts for protected-content markers before publication.
Development
Use Node.js 24 and npm.
npm ci
npm run typecheck
npm run lint
npm test
npm run test:coverage
npm run build
npm run pack:checkTasks: initial reference module #1, evidence-led revision #6.
