Skip to content

About

Mission Console: a bespoke simulation where learners program a robot on an XY grid to learn coordinates

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Mission Console (mission-console)

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.

Spec

  • 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 PASS or FAIL per 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.json from 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.

Task types

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/.

Running locally

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 task

Production 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:3000

The 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.json

Release channels

CI 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 --latest

Sessions download a release; they never run npm install. Try packing locally with npm run release:local.

About

Mission Console: a bespoke simulation where learners program a robot on an XY grid to learn coordinates

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages