A bespoke simulation for CodeSignal Learn. A learner programs a robot on an XY grid with short
text commands such as move(3, -2), moveTo(4, 1), pickUp() and open(door), and works
out coordinates, distances and relative positions to finish missions.
- Learner: a beginner to pre-intermediate math learner writes short command programs to move a robot on an XY grid and finish missions. This practises how coordinates give position, how changing them moves the robot, how distance is measured, and how objects relate in position.
- Kind: builder, with some explorer elements (live coordinate readout, replay).
- Surfaces: Learn only.
- Reuse: a single course path. Its tasks are created directly on one base task; no shared catalogue entry is needed.
- Grading: deterministic checks. The simulation replays the saved work and the Run report prints
PASSorFAILper check. Check types: final position, item collected, door opened, no errors, command budget, step budget, correct prediction, correct answer. - Varies per task (
config.json): grid range, start position, objects (key, door, item, wall, marker), allowed commands, starter code, prediction and question lists, prompt text and checks. - Task generation: open. Writing
config.jsonfrom a lesson with a template is optional. - Runtime: release tarball. Commands are parsed and replayed by the simulation itself; there is no learner code execution, sandbox, LLM or sidecar.
- Views and feedback: the grid with axes, a live robot and pointer readout, a command palette and text editor, an animated replay with a trail and step log, a goals checklist, and a help modal. Failed checks never give the answer away.
A task is a config.json. These sections combine freely:
| Section | What the learner does |
|---|---|
questions |
reads coordinates off the grid and types them (Locate) |
predict |
predicts where the robot ends after a shown program, then replays it (Predict) |
editor |
writes a program to complete a mission (Program), with optional command and step budgets |
See docs/authoring.md and config.example.jsonc. Working examples are in examples/.
npm install
git submodule update --init --recursive # the design system
npm run start:dev # Vite on :3000, API on :3001, example task examples/key-to-the-door
MC_CONFIG=examples/full-demo/config.json npm run start:dev # every feature in one task
MC_CONFIG=examples/through-the-gate/config.json npm run start:dev # another taskProduction mode, like a session:
npm run build
cp examples/key-to-the-door/config.json config.json # a session provides its own config.json
npm run start:prod # http://localhost:3000The server reads config.json from its working directory and writes the learner's raw work to
solution.json and an activity.log beside it. All three are git-ignored.
npm test # unit, server and Run-report tests
npm run experiment # grading experiment over examples/
npm run validate examples/key-to-the-door # validate a task (and its reference solution)
npm run report -- --dir . # the Run report for ./config.json and ./solution.jsonCI builds every push to main: it runs the tests, the grading experiment and the validator over
the examples, packs a lean release (release.tar.gz, no node_modules), boots it like a session
and drives a run, then publishes it.
| Channel | URL |
|---|---|
| Staging (newest build) | https://github.com/CodeSignal/learn_mission-console/releases/download/prerelease/release.tar.gz |
| Production | https://github.com/CodeSignal/learn_mission-console/releases/latest/download/release.tar.gz |
Each merge publishes a pre-release vN and moves the floating prerelease release to it.
Production (latest) changes only when a pre-release is promoted after a staging test:
gh release edit vN -R CodeSignal/learn_mission-console --prerelease=false --latestSessions download a release; they never run npm install. Try packing locally with
npm run release:local.