Skip to content

Lab tool: start, grade and finish for every guided exercise - #90

Merged
ayeshrodz merged 9 commits into
mainfrom
labs/guided-exercises
Oct 4, 2026
Merged

ayeshrodz merged 9 commits into
mainfrom
labs/guided-exercises

Conversation

@ayeshrodz

Copy link
Copy Markdown
Owner

Adds typed server-side setup and cleanup actions to the lab tool (prepare.py, schema, compiler) and a definition for each guided exercise of chapters 3 to 22, plus cleanup for the graded chapter labs.

  • lab start NAME installs/creates what the exercise needs but does not teach; the matching preparation tasks are replaced by a Start task.
  • lab grade NAME checks the state the tasks leave behind. New check options: firewall zone/source/forward port, partition, container, package verify, file executable.
  • lab finish NAME undoes the changes on the servers (best effort), then archives the project folder.
  • Host actions are fixed scripts built from validated values, limited to allowed paths; unit tests cover quoting and refusals.

Each guided exercise was run end to end on the test lab (start, the page's solution, grade, finish, grade again). Exercises without lasting state (chapters 2 and 4, parts of 8) and the first-login/host-key style ones are left as plain pages.

🤖 Generated with Claude Code

ayeshrodz and others added 9 commits October 4, 2026 10:52
…ide setup and cleanup

Guided exercises of every chapter now have an exercise definition. lab start
prepares the servers (packages, users, files, disks, firewall, containers),
lab grade checks the state the tasks leave behind, and lab finish undoes it.
The graded chapter labs also get cleanup actions.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@ayeshrodz
ayeshrodz merged commit f32dd02 into main Oct 4, 2026
1 check passed
@ayeshrodz
ayeshrodz deleted the labs/guided-exercises branch October 4, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant