Repository navigation
Releases: RehmanaYounis/greenray-aio
Release list
v1.3.2
Changed
- One colour code for labs everywhere: easy green, medium yellow, hard red, in the lab list,
nextand the mock-exam menu. In the exam menu the questions entry is cyan and the two ways out are blue; a question is bold above its plain choices; what you type at an exam prompt is cyan.
v1.3.1
Fixed
- The mock exam menu can be left without grading (
x), says what it does with input it does not understand, and the questions say whats,fandqdo. Ctrl-C inside a question returns to the exam menu, and at the menu it offers to leave, instead of ending the program without a record. - A mock-exam lab that was never opened scores nothing and is reported as not attempted; before, its invariant checks ("defq is still up") counted as work.
- In the question review the whole correct and chosen lines are coloured, not only the mark, and explanations are blue rather than dim.
v1.3.0
Changed
- Merging into
mainis the release: the workflow tags the version inpyproject.tomland publishes it, with that version's changelog section as the release notes. Tags are no longer pushed by hand.
Added
- The everyday Linux tools on every node:
less,cut,uniq,tr,printf,find,mv,ln,rmdir,which,file,stat,du,basename,dirname,realpath,date,sleep,seq,xargs,test,expr,diff,cmp,history,bash script.sh,sudo,tar,gzip,jq,nproc,htop,pgrep,killall,w,who,lsof,fuser,vmstat,hostnamectl,timedatectl,modinfo,ss,netstat,ifconfig,ethtool,nslookup,dig,traceroute,curl,wgetandshutdown. They read the simulated node, soss -tlnplists the services that are running,curlreaches the API server only when it is up,lsof /dev/nvidia0names the job's processes andshutdownpowers the node off with the same audit record as a power-off from BCM.
v1.2.2
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.2.2] - 2026-10-23
Fixed
srun --pty bashinside an existing allocation opened no shell and reported "execve(): bash: No such file"; it now moves you onto the allocated node, andexitreturns to the allocation without ending it.sallocaccepted--pty, which is ansrunoption; it is rejected as the real tool does.
Added
top, as a one-shot snapshot of the node's load and processes.
[1.2.1] - 2026-10-23
Changed
- The container tools and
cmshare packages with one module per concern, like Slurm and kubectl, and the option, error and table helpers that four modules each carried are one shared toolkit. No behaviour changes; the golden-output and option suites were the check.
[1.2.0] - 2026-10-23
Added
- A test that runs every option listed on every help page and fails when one changes neither the output nor the cluster. The help pages already promised to simulate the options they list; the suite now holds the simulator to it, with the handful of genuine no-ops listed with their reasons.
- An issue template for reporting a simulated command that differs from the real tool.
mpirunhonours--map-by,--rank-by,--bind-to,--display-map,--report-bindings,--tag-output,--oversubscribe,--prefixand-wdir.sbatch,srunandsallockeep and validate the rest of a submission:--comment,--constraintagainst node features,--reservation,--hint,--distribution,--mem-bind,--mpi,--signal,--mem,--time-min,--sockets-per-node,--cpus-per-gpu,--ntasks-per-gpu,--requeueand the pyxis flags;-vprints the defined options andsalloc -Qis quiet.scontrol show jobshows the comment, features, reservation, memory, minimum time and requeue setting.srun -owrites the step's output to the file.
Fixed
kubectl scalewith no arguments crashed;-f=,-n=and the other short options with=were parsed wrongly;patch --type=jsonwith an object patch crashed; a name together with--allor a selector was accepted bydelete,wait,labelandtaint;logsandexecaccepted a container name the pod does not have;run --rmwithout-iwas accepted.helm --kube-contextwith an unknown context was ignored.sacctshowed every user's jobs without-a.unameprinted everything without-a;mkdircreated missing parents without-p;ping -cwas ignored;modprobe --remove,runuser --user,taskset --pidand--cpu-list,mlxconfig -eon ConnectX-7,munge -n,numactl -N/-m/-C/-i/-pwith a space andshowmountwithout-ewere not honoured.
[1.1.0] - 2026-10-23
Added
- Short lab codes. Every scenario has a code such as
tsh-1next to its id, shown bygreenray list,next,planand the report card, and accepted wherever an id is:greenray lab tsh-3,greenray incident --id adm-2, the menu. Codes are fixed for the life of a scenario;greenray validatechecks them. - The Labs menu starts a lab: after the list, type a code or id.
- Golden-output tests for
nvidia-smi,sinfo,squeue,sacct,kubectl get,cmsh device listandibstaton the healthy cluster, so a change to a tool's layout is a reviewed decision rather than an accident.
Fixed
nvidia-smi -i Nprinted every GPU in the status table; it now shows only the selected ones, including-i 2,5, and the MIG and process sections follow the selection.- The
nvidia-smistatus table was ragged: the per-GPU rows were shorter than the borders. Every line is now the same width, and the MIG devices table has the real tool's columns.
[1.0.1] - 2026-10-23
Fixed
- The documentation site serves the demo recording itself; the previous source only played on github.com.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a ...
v1.2.1
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.2.1] - 2026-10-23
Changed
- The container tools and
cmshare packages with one module per concern, like Slurm and kubectl, and the option, error and table helpers that four modules each carried are one shared toolkit. No behaviour changes; the golden-output and option suites were the check.
[1.2.0] - 2026-10-23
Added
- A test that runs every option listed on every help page and fails when one changes neither the output nor the cluster. The help pages already promised to simulate the options they list; the suite now holds the simulator to it, with the handful of genuine no-ops listed with their reasons.
- An issue template for reporting a simulated command that differs from the real tool.
mpirunhonours--map-by,--rank-by,--bind-to,--display-map,--report-bindings,--tag-output,--oversubscribe,--prefixand-wdir.sbatch,srunandsallockeep and validate the rest of a submission:--comment,--constraintagainst node features,--reservation,--hint,--distribution,--mem-bind,--mpi,--signal,--mem,--time-min,--sockets-per-node,--cpus-per-gpu,--ntasks-per-gpu,--requeueand the pyxis flags;-vprints the defined options andsalloc -Qis quiet.scontrol show jobshows the comment, features, reservation, memory, minimum time and requeue setting.srun -owrites the step's output to the file.
Fixed
kubectl scalewith no arguments crashed;-f=,-n=and the other short options with=were parsed wrongly;patch --type=jsonwith an object patch crashed; a name together with--allor a selector was accepted bydelete,wait,labelandtaint;logsandexecaccepted a container name the pod does not have;run --rmwithout-iwas accepted.helm --kube-contextwith an unknown context was ignored.sacctshowed every user's jobs without-a.unameprinted everything without-a;mkdircreated missing parents without-p;ping -cwas ignored;modprobe --remove,runuser --user,taskset --pidand--cpu-list,mlxconfig -eon ConnectX-7,munge -n,numactl -N/-m/-C/-i/-pwith a space andshowmountwithout-ewere not honoured.
[1.1.0] - 2026-10-23
Added
- Short lab codes. Every scenario has a code such as
tsh-1next to its id, shown bygreenray list,next,planand the report card, and accepted wherever an id is:greenray lab tsh-3,greenray incident --id adm-2, the menu. Codes are fixed for the life of a scenario;greenray validatechecks them. - The Labs menu starts a lab: after the list, type a code or id.
- Golden-output tests for
nvidia-smi,sinfo,squeue,sacct,kubectl get,cmsh device listandibstaton the healthy cluster, so a change to a tool's layout is a reviewed decision rather than an accident.
Fixed
nvidia-smi -i Nprinted every GPU in the status table; it now shows only the selected ones, including-i 2,5, and the MIG and process sections follow the selection.- The
nvidia-smistatus table was ragged: the per-GPU rows were shorter than the borders. Every line is now the same width, and the MIG devices table has the real tool's columns.
[1.0.1] - 2026-10-23
Fixed
- The documentation site serves the demo recording itself; the previous source only played on github.com.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ship...
v1.2.0
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.2.0] - 2026-10-23
Added
- A test that runs every option listed on every help page and fails when one changes neither the output nor the cluster. The help pages already promised to simulate the options they list; the suite now holds the simulator to it, with the handful of genuine no-ops listed with their reasons.
- An issue template for reporting a simulated command that differs from the real tool.
mpirunhonours--map-by,--rank-by,--bind-to,--display-map,--report-bindings,--tag-output,--oversubscribe,--prefixand-wdir.sbatch,srunandsallockeep and validate the rest of a submission:--comment,--constraintagainst node features,--reservation,--hint,--distribution,--mem-bind,--mpi,--signal,--mem,--time-min,--sockets-per-node,--cpus-per-gpu,--ntasks-per-gpu,--requeueand the pyxis flags;-vprints the defined options andsalloc -Qis quiet.scontrol show jobshows the comment, features, reservation, memory, minimum time and requeue setting.srun -owrites the step's output to the file.
Fixed
kubectl scalewith no arguments crashed;-f=,-n=and the other short options with=were parsed wrongly;patch --type=jsonwith an object patch crashed; a name together with--allor a selector was accepted bydelete,wait,labelandtaint;logsandexecaccepted a container name the pod does not have;run --rmwithout-iwas accepted.helm --kube-contextwith an unknown context was ignored.sacctshowed every user's jobs without-a.unameprinted everything without-a;mkdircreated missing parents without-p;ping -cwas ignored;modprobe --remove,runuser --user,taskset --pidand--cpu-list,mlxconfig -eon ConnectX-7,munge -n,numactl -N/-m/-C/-i/-pwith a space andshowmountwithout-ewere not honoured.
[1.1.0] - 2026-10-23
Added
- Short lab codes. Every scenario has a code such as
tsh-1next to its id, shown bygreenray list,next,planand the report card, and accepted wherever an id is:greenray lab tsh-3,greenray incident --id adm-2, the menu. Codes are fixed for the life of a scenario;greenray validatechecks them. - The Labs menu starts a lab: after the list, type a code or id.
- Golden-output tests for
nvidia-smi,sinfo,squeue,sacct,kubectl get,cmsh device listandibstaton the healthy cluster, so a change to a tool's layout is a reviewed decision rather than an accident.
Fixed
nvidia-smi -i Nprinted every GPU in the status table; it now shows only the selected ones, including-i 2,5, and the MIG and process sections follow the selection.- The
nvidia-smistatus table was ragged: the per-GPU rows were shorter than the borders. Every line is now the same width, and the MIG devices table has the real tool's columns.
[1.0.1] - 2026-10-23
Fixed
- The documentation site serves the demo recording itself; the previous source only played on github.com.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ships complete.
Added
- Reference solutions and exam answer keys ship with the package; an external solutions directory still overrides them.
- Apache-2.0 licence and a NOTICE with the NVIDIA non-affiliation statement.
- PyPI publishing through trusted publishing, and a multi-arch Docker image on GHCR, b...
v1.1.0
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.1.0] - 2026-10-23
Added
- Short lab codes. Every scenario has a code such as
tsh-1next to its id, shown bygreenray list,next,planand the report card, and accepted wherever an id is:greenray lab tsh-3,greenray incident --id adm-2, the menu. Codes are fixed for the life of a scenario;greenray validatechecks them. - The Labs menu starts a lab: after the list, type a code or id.
- Golden-output tests for
nvidia-smi,sinfo,squeue,sacct,kubectl get,cmsh device listandibstaton the healthy cluster, so a change to a tool's layout is a reviewed decision rather than an accident.
Fixed
nvidia-smi -i Nprinted every GPU in the status table; it now shows only the selected ones, including-i 2,5, and the MIG and process sections follow the selection.- The
nvidia-smistatus table was ragged: the per-GPU rows were shorter than the borders. Every line is now the same width, and the MIG devices table has the real tool's columns.
[1.0.1] - 2026-10-23
Fixed
- The documentation site serves the demo recording itself; the previous source only played on github.com.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ships complete.
Added
- Reference solutions and exam answer keys ship with the package; an external solutions directory still overrides them.
- Apache-2.0 licence and a NOTICE with the NVIDIA non-affiliation statement.
- PyPI publishing through trusted publishing, and a multi-arch Docker image on GHCR, both built by the release workflow.
greenray doctorprints the version, environment, editor and solutions source.
[0.4.0] - 2026-10-21
Feels like a real terminal.
Added
- Line editing on every OS (prompt_toolkit): persistent history, Ctrl-R search, and tab completion of commands, hosts and the simulated node's paths relative to the working directory.
- A simulated clock:
uptime,dmesg -Tand the login banner show the current date and time, and time passes as you work. watch -n N <command>refreshes on a terminal,clear, andnvidia-smi dmon/dcgmi dmonprint samples live with real delays.--no-colorflag; the mock exam shows time left, questions answered and the current lab in the prompt.ARCHITECTURE.md.
Changed
commands/slurm.pyandcommands/kubectl.pyare now packages split by concern; their public names are unchanged.- Exam answers are kept out of the persistent history.
[0.3.0] - 2026-10-21
Renamed to GreenRay AIO (formerly aiolab). Adds editors, realistic help, terminal realism and CI.
Added
greenraycommand and package (theAIOLAB_*environment variables and~/.aiolabprogress still work).- Text editors
nano,viandvim: your real editor opens on a terminal, with a line editor as fallback. - Realistic
--help,help <sub>andmanpages for 94 commands, respecting each tool's own meaning of-h. - Working
cd/pwdwith relative paths, an Ubuntu-style coloured prompt and a DGX-style login banner. - Real-tool colours on the terminal (
systemctl,grep,ls,ip -br,dmesg). - Polished screens: banner, menu, incident ticket card, results table, progress bars, debrief panels.
- CI on Linux and Windows (Python 3.10 and 3.13) with lint, type checks, tests, coverage and a build.
[0.2.0]
Added
- Incident mode,
explain <command>, guided vs independent progress, the full mock exam, a...
v1.0.1
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.0.1] - 2026-10-23
Fixed
- The documentation site serves the demo recording itself; the previous source only played on github.com.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ships complete.
Added
- Reference solutions and exam answer keys ship with the package; an external solutions directory still overrides them.
- Apache-2.0 licence and a NOTICE with the NVIDIA non-affiliation statement.
- PyPI publishing through trusted publishing, and a multi-arch Docker image on GHCR, both built by the release workflow.
greenray doctorprints the version, environment, editor and solutions source.
[0.4.0] - 2026-10-21
Feels like a real terminal.
Added
- Line editing on every OS (prompt_toolkit): persistent history, Ctrl-R search, and tab completion of commands, hosts and the simulated node's paths relative to the working directory.
- A simulated clock:
uptime,dmesg -Tand the login banner show the current date and time, and time passes as you work. watch -n N <command>refreshes on a terminal,clear, andnvidia-smi dmon/dcgmi dmonprint samples live with real delays.--no-colorflag; the mock exam shows time left, questions answered and the current lab in the prompt.ARCHITECTURE.md.
Changed
commands/slurm.pyandcommands/kubectl.pyare now packages split by concern; their public names are unchanged.- Exam answers are kept out of the persistent history.
[0.3.0] - 2026-10-21
Renamed to GreenRay AIO (formerly aiolab). Adds editors, realistic help, terminal realism and CI.
Added
greenraycommand and package (theAIOLAB_*environment variables and~/.aiolabprogress still work).- Text editors
nano,viandvim: your real editor opens on a terminal, with a line editor as fallback. - Realistic
--help,help <sub>andmanpages for 94 commands, respecting each tool's own meaning of-h. - Working
cd/pwdwith relative paths, an Ubuntu-style coloured prompt and a DGX-style login banner. - Real-tool colours on the terminal (
systemctl,grep,ls,ip -br,dmesg). - Polished screens: banner, menu, incident ticket card, results table, progress bars, debrief panels.
- CI on Linux and Windows (Python 3.10 and 3.13) with lint, type checks, tests, coverage and a build.
[0.2.0]
Added
- Incident mode,
explain <command>, guided vs independent progress, the full mock exam, and the reliability fixes (command rollback, realistic errors, Ctrl-C handling). - 39 scenarios covering every NCP-AIO blueprint topic, and a 166-question bank.
[0.1.0]
Added
- First simulator core (as
aiolab): cluster state model, bash-like shell,nvidia-smiwith MIG, scenario engine with grading, timed question drills and progress tracking.
v1.0.0
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[1.0.0] - 2026-10-23
The first stable release. The scenario format is now a commitment: a change that breaks existing scenario files bumps the major version.
What 1.0 contains, for someone arriving fresh: a simulated four-node DGX H100 cluster managed by Base Command Manager with emulated nvidia-smi, DCGM, Slurm, Kubernetes with the GPU Operator, cmsh, InfiniBand tools, NCCL tests, Docker and NGC; 48 scenarios with reference solutions covering every topic of the NCP-AIO blueprint, from a six-lab on-ramp to cross-system incidents, most with variants; a grader that reads the cluster's end state, the evidence gathered and the safety of the work; guided and incident modes; a study path (next, plan), a mock exam in the current format with a report card, and reflection notes; installation from PyPI or as a Docker image; a documentation site.
Added
- A demo recording on the README and the documentation home page.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips. - Documentation reviewed against the current behaviour: updating instructions, the menu, the offered debrief, safe practice and variants in the README and the architecture page.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ships complete.
Added
- Reference solutions and exam answer keys ship with the package; an external solutions directory still overrides them.
- Apache-2.0 licence and a NOTICE with the NVIDIA non-affiliation statement.
- PyPI publishing through trusted publishing, and a multi-arch Docker image on GHCR, both built by the release workflow.
greenray doctorprints the version, environment, editor and solutions source.
[0.4.0] - 2026-10-21
Feels like a real terminal.
Added
- Line editing on every OS (prompt_toolkit): persistent history, Ctrl-R search, and tab completion of commands, hosts and the simulated node's paths relative to the working directory.
- A simulated clock:
uptime,dmesg -Tand the login banner show the current date and time, and time passes as you work. watch -n N <command>refreshes on a terminal,clear, andnvidia-smi dmon/dcgmi dmonprint samples live with real delays.--no-colorflag; the mock exam shows time left, questions answered and the current lab in the prompt.ARCHITECTURE.md.
Changed
commands/slurm.pyandcommands/kubectl.pyare now packages split by concern; their public names are unchanged.- Exam answers are kept out of the persistent history.
[0.3.0] - 2026-10-21
Renamed to GreenRay AIO (formerly aiolab). Adds editors, realistic help, terminal realism and CI.
Added
greenraycommand and package (theAIOLAB_*environment variables and~/.aiolabprogress still work).- Text editors
nano,viandvim: your real editor opens on a terminal, with a line editor as fallback. - Realistic
--help,help <sub>andmanpages for 94 commands, respecting each tool's own meaning of-h. - Working
cd/pwdwith relative paths, an Ubuntu-style coloured prompt and a DGX-style login banner. - Real-tool colours on the terminal (
systemctl,grep,ls,ip -br,dmesg). - Polished screens: banner, menu, incident ticket card, results table, progress bars, debrief panels.
- CI on Linux and Windows (Python 3.10 and 3.13) with lint, type checks, tests, coverage and a build.
[0.2.0]
Added
- Incident mode,
explain <command>, guided vs independent progress, the full mock exam, and the reliability fixes (command rollback, realistic errors, Ctrl-C handling). - 39 scenarios covering every NCP-AIO blueprint topic, and a 166-question bank.
[0.1.0]
Added
- First simulator core (as
aiolab): cluster state model, bash-like shell,nvidia-smiwith MIG, scenario engine with grading, timed question drills and progress tracking.
v0.9.3
Changelog
All notable changes are listed here. The project follows Semantic Versioning.
[0.9.3] - 2026-10-22
Changed
- After every objective is met, the lab offers the debrief and then the reflection instead of printing both at once, so the result stays on screen. Enter accepts,
nskips.
[0.9.2] - 2026-10-22
Fixed
- A lab started without
--variantshowed the unfilled briefing, objectives and hints ({node}) while grading a concrete variant. The lab now shows the variant it grades, andretryshows the next one. - Scenario titles no longer carry placeholders, so
greenray listandgreenray nextread correctly. - The test-suite drives every variant of every scenario through the lab interface, in guided and incident mode, exactly as a learner types it, and fails on any placeholder that reaches the screen.
[0.9.1] - 2026-10-22
Fixed
- The interactive menu answers unknown input instead of silently reprinting itself, accepts
help, the entry names and commands pasted from the docs (greenray next,lab <id>), and tells a first-time user where to start.
[0.9.0] - 2026-10-22
Where to look, not only what to fix.
Added
- Three cross-system incidents, each with three variants and in the mock-exam pool: a DGX node without a driver after a reboot because its BCM category changed; a two-node training run eight times slower because the updated software image lost the GPUDirect RDMA module and one InfiniBand link trained at 100G; a Deployment replica Pending because a pool node was switched to MIG.
- Reflection after a passed lab: three ungraded questions (the evidence, the choice of fix, the verification) whose answers are kept in
~/.greenray/notes/<scenario-id>.md.greenray progresscounts them.
Changed
- Reseating a cable restores a link that trained at reduced speed, as a replaced cable does.
[0.8.0] - 2026-10-22
Tests judgment, not memory.
Added
- Scenario variants: a scenario can list variants that change the node, GPU, job or user. A lab picks one at random,
greenray lab <id> --variant Nchooses,retrymoves to the next, andgreenray validatereplays every variant. Ten scenarios have three variants each. - Safe-practice grading: the simulator records destructive operations that cost users work (a reboot or power-off with jobs on the node, a node set DOWN with jobs, another user's job cancelled, a running pod deleted, a container runtime restarted with containers up). Checks read that log with
audit()and require order of work withran_before(). Checks carry a kind (outcome, evidence or safety) that results display. Seven scenarios use them. - A strictness table in the test-suite: invocations the real tools reject must fail in the simulator with the same wording.
Fixed
scontrol update partitionname=... maxtime=rejects malformed time limits;sacct -jrejects non-numeric job ids.nvidia-smi -pmrejects values other than 0/1 and-lgcrejects clocks outside the supported range.modprobefails for modules the DGX image does not ship;rmfails for a missing file unless-fis given.docker pull,docker runandenroot importfail for Docker Hub repositories that do not exist.
[0.7.0] - 2026-10-22
Ready for a public audience.
Added
- A documentation site built with MkDocs and published to GitHub Pages: getting started, using the lab, the study path, the simulated cluster, exam coverage, the scenario format, architecture, contributing, security and this changelog.
- CI builds the site on every push; Dependabot groups GitHub Actions updates into one pull request.
Changed
- The README is a front page: what the tool is, how to install it, how it teaches, and links into the documentation. The manual moved to the site.
docs/COVERAGE.mdanddocs/SCENARIO_FORMAT.mdare nowdocs/coverage.mdanddocs/scenario-format.md.
Removed
- Compatibility with the project's former name: the
AIOLAB_*environment variables, the~/.aiolabprogress migration and the old solutions-directory names. - Bundled solutions for real-hardware labs that are not part of this repository.
- The code of conduct file; its content rule lives in CONTRIBUTING.
[0.6.0] - 2026-10-21
Teaches better.
Added
- Six on-ramp scenarios for the first week: reading Slurm accounting and node logs, editing slurm.conf and reconfiguring, a first GPU batch job, a Pending pod with a wrong node selector, a read-only cmsh inventory, and mapping a GPU's bus id to its index, UUID and serial.
greenray nextrecommends what to practise from your progress;greenray planprints a four-week schedule covering every scenario, with passed labs ticked.greenray mock --labs-only: the three labs alone in 40 minutes. Every mock now ends with a report card: per-domain bars over questions and labs, and a practise-next list.- A code of conduct and Dependabot configuration.
Changed
- Hints name the tool and the setting instead of quoting the fix command;
greenray validateand the test-suite reject a hint that quotes a state-changing solution step. - On-ramp scenarios are never picked as mock-exam labs.
- An external solutions directory overrides the bundled solutions file by file.
nvidia-smi -qprints the PCI block (bus id) and the minor number.
[0.5.1] - 2026-10-21
Fixed
- The release workflow pushed the Docker image under a mixed-case name, which GHCR rejects.
[0.5.0] - 2026-10-21
Installs anywhere and ships complete.
Added
- Reference solutions and exam answer keys ship with the package; an external solutions directory still overrides them.
- Apache-2.0 licence and a NOTICE with the NVIDIA non-affiliation statement.
- PyPI publishing through trusted publishing, and a multi-arch Docker image on GHCR, both built by the release workflow.
greenray doctorprints the version, environment, editor and solutions source.
[0.4.0] - 2026-10-21
Feels like a real terminal.
Added
- Line editing on every OS (prompt_toolkit): persistent history, Ctrl-R search, and tab completion of commands, hosts and the simulated node's paths relative to the working directory.
- A simulated clock:
uptime,dmesg -Tand the login banner show the current date and time, and time passes as you work. watch -n N <command>refreshes on a terminal,clear, andnvidia-smi dmon/dcgmi dmonprint samples live with real delays.--no-colorflag; the mock exam shows time left, questions answered and the current lab in the prompt.ARCHITECTURE.md.
Changed
commands/slurm.pyandcommands/kubectl.pyare now packages split by concern; their public names are unchanged.- Exam answers are kept out of the persistent history.
[0.3.0] - 2026-10-21
Renamed to GreenRay AIO (formerly aiolab). Adds editors, realistic help, terminal realism and CI.
Added
greenraycommand and package (theAIOLAB_*environment variables and~/.aiolabprogress still work).- Text editors
nano,viandvim: your real editor opens on a terminal, with a line editor as fallback. - Realistic
--help,help <sub>andmanpages for 94 commands, respecting each tool's own meaning of-h. - Working
cd/pwdwith relative paths, an Ubuntu-style coloured prompt and a DGX-style login banner. - Real-tool colours on the terminal (
systemctl,grep,ls,ip -br,dmesg). - Polished screens: banner, menu, incident ticket card, results table, progress bars, debrief panels.
- CI on Linux and Windows (Python 3.10 and 3.13) with lint, type checks, tests, coverage and a build.
[0.2.0]
Added
- Incident mode,
explain <command>, guided vs independent progress, the full mock exam, and the reliability fixes (command rollback, realistic errors, Ctrl-C handling). - 39 scenarios covering every NCP-AIO blueprint topic, and a 166-question bank.
[0.1.0]
Added
- First simulator core (as
aiolab): cluster state model, bash-like shell,nvidia-smiwith MIG, scenario engine with grading, timed question drills and progress tracking.