Skip to content

feat(curriculum): the GitHub module becomes step-by-step exercises - #410

Merged
thierryvm merged 3 commits into
mainfrom
feature/github-module-steps
Oct 1, 2026
Merged

thierryvm merged 3 commits into
mainfrom
feature/github-module-steps

Conversation

@thierryvm

@thierryvm thierryvm commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Summary

The six exercises of the GitHub & Collaboration module asked for a single command each (one of them ended on git status and "GitHub Actions will do the rest"). Each is now a multi-step exercise checked on the repository state, with no dead end when commands are typed out of order.

Lesson Steps Setup
git remote remote add origin → remote -v → set-url to SSH one commit
git push & pull pull (a colleague pushed first) → page → add → commit → push gitRepoBehindRemote
git fetch & clone fetch → log HEAD..origin/main → merge origin/main gitRepoBehindRemote
Pull Requests switch -c feature/contact → page → add → commit → push -u gitRepoPushed
Merge strategies merge --no-ff --no-edit → branch -d branch feature/ma-feature
GitHub Actions mkdir -p .github/workflows (Windows: New-Item) → mv → add → commit → push new gitRepoWithWorkflow

Learners who take a wrong turn get advice:

  • Pushing before pulling is rejected with "fetch first".
  • Committing before pulling makes the branches diverge, and the advice is git pull --no-rebase --no-edit (--no-edit because a real terminal would open an editor).
  • A plain fast-forward merge is detected.
  • A --squash merge is detected, both when staged and when committed.
  • git reset --hard after the merge restarts the exercise.
  • A push without -u is detected.
  • A commit made on main is detected.
  • A workflow renamed by mv before its folder exists is detected.

Theory

  • Every code block replays from the lesson's own setup, and its outputs were checked against real git 2.56 and PowerShell 7.
  • The branched git log --graph is shown as an illustration and is not replayed, because it is not simulated.
  • Action versions were checked on GitHub's release pages on 1 October 2026: actions/checkout@v7, actions/setup-node@v7, Node 24.
  • Theory gaps go from 120 to 90.

Engine (separate commit)

  • New-Item -ItemType Directory <path> took Directory for the path. It now creates the folder and its parents, as PowerShell 7 does.
  • git pull --no-edit is accepted.
  • When the destination of mv or cp ends in /, the error now gives GNU's wording.

Removed: six regex validators and the gitRepoWithRemote setup, which no lesson uses any more.

Gates

  • curriculum-validator, run before the change: 0 CRITICAL.
  • test-runner: type-check, lint, vitest and build all green.
    • Final local run: 3004 tests passed.
    • Ratchets: theory gaps 90, bash-on-Windows 34, desyncs 0.
  • terminal-fidelity-auditor: 0 THEORY-WRONG and 38 MATCH. Findings:
    • One Linux mv message was wrong; it is fixed here.
    • Windows Get-ChildItem/Move-Item error texts are left for the Windows fidelity PR.
  • feature-dev:code-reviewer made one IMPORTANT finding: the --squash path had no advice.
    • Fixed, with tests.
    • The "unrecoverable" part was refuted with real git: after a committed squash, merge --no-ff still creates the merge commit.

Test plan

  • CI green
  • Sourcery checked
  • Preview: the 6 lessons played through at desktop and 390 px

🤖 Generated with Claude Code

Résumé par Sourcery

Convertir le module GitHub & Collaboration en six exercices progressifs, sensibles à l’état, avec un comportement Git réaliste, des conseils pour les erreurs courantes et une fidélité améliorée du terminal.

Nouvelles fonctionnalités :

  • Transformer les six leçons GitHub & Collaboration en exercices progressifs à plusieurs étapes couvrant les dépôts distants, la synchronisation, la récupération, les pull requests, les stratégies de fusion et GitHub Actions.
  • Fournir des conseils et des mécanismes de récupération pour les workflows Git courants exécutés dans le désordre et les erreurs fréquentes.
  • Mettre à jour les exemples et les configurations GitHub Actions pour les versions actuelles des actions et de Node.

Corrections de bugs :

  • Améliorer la fidélité de la simulation de Git et de PowerShell pour les pulls divergents, --no-edit, la création de répertoires avec New-Item et les erreurs de mv/cp avec une barre oblique finale.

Améliorations :

  • Remplacer les six validateurs de commandes basés sur des expressions régulières par des vérifications de l’état du dépôt et des configurations dédiées pour chaque leçon.
  • Réduire les lacunes théoriques documentées de 120 à 90 et ajouter des exemples de programme vérifiés ainsi que des notes d’historique.

Documentation :

  • Documenter la refonte du module GitHub, les améliorations de fidélité du terminal et les mises à jour des versions de GitHub Actions dans le journal des modifications et la présentation du projet.

Tests :

  • Ajouter des tests complets pour les nouveaux exercices progressifs, les conseils en cas d’erreur, les configurations des leçons, le comportement de Git, le comportement de PowerShell et les erreurs de transfert de fichiers.

Tâches de maintenance :

  • Supprimer la configuration inutilisée du dépôt distant et les anciens validateurs des leçons GitHub.
Original summary in English

Summary by Sourcery

Convert the GitHub & Collaboration module into six state-aware, step-by-step exercises with realistic Git behavior, guidance for common mistakes, and updated terminal fidelity.

New Features:

  • Transform the six GitHub & Collaboration lessons into state-aware, multi-step exercises covering remotes, synchronization, fetching, pull requests, merge strategies, and GitHub Actions.
  • Provide guidance and recovery behavior for common out-of-order Git workflows and mistakes.
  • Update GitHub Actions examples and setups for current action and Node versions.

Bug Fixes:

  • Improve simulated Git and PowerShell fidelity for divergent pulls, --no-edit, New-Item directory creation, and trailing-slash mv/cp errors.

Enhancements:

  • Replace the six command-based regex validators with repository-state checks and dedicated lesson setups.
  • Reduce documented theory gaps from 120 to 90 and add verified curriculum examples and history notes.

Documentation:

  • Document the GitHub module redesign, terminal fidelity work, and updated GitHub Actions versions in the changelog and project story.

Tests:

  • Add comprehensive tests for the new step-by-step exercises, wrong-turn guidance, lesson setups, Git behavior, PowerShell behavior, and file-transfer errors.

Chores:

  • Remove the unused remote setup and obsolete GitHub lesson validators.

thierryvm and others added 3 commits October 1, 2026 18:02
…efuses them

Needed by the GitHub module as steps: a learner who commits before pulling
a colleague's work ends up with diverged branches, and real git's way out
is `git pull --no-rebase`. Outputs captured in git 2.56: the merge commit
is "Merge branch 'main' of <url>", and --ff-only prints its hints then
"fatal: Not possible to fast-forward, aborting." (exit 128).

New lesson setup gitRepoPushed (main pushed and tracked, remote in sync);
gitRepoBehindRemote builds on it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s --no-edit, mv/cp say why a trailing slash fails

- New-Item -ItemType Directory .github/workflows took "Directory" (the
  value of -ItemType) for the path; it now skips named parameter values and
  creates the parents, as PowerShell 7 does without -Force.
- git pull --no-edit keeps git's merge message (no editor in this terminal);
  output checked against git 2.56 on diverged branches.
- A destination ending in "/": GNU mv says "No such file or directory" when
  it is missing, cp says "Not a directory", and both say
  "failed to access '<dst>': Not a directory" when it is a file
  (coreutils 8.32).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The six exercises of github-collaboration asked for one command each. Each
is now a path checked on the repository state, with no dead end:

- git-remote: add origin, look with git remote -v, switch to SSH.
- git-push-pull (colleague pushed first): pull, add a page, commit, push;
  pushing first ("fetch first") and committing before pulling (diverged)
  each get advice, ending with git pull --no-rebase --no-edit.
- git-fetch-clone: fetch, git log HEAD..origin/main, merge origin/main.
- pull-requests: switch -c, commit, git push -u origin feature/contact.
- merge-strategies: merge --no-ff --no-edit, then branch -d; fast-forward,
  --squash (staged or committed) and a reset --hard are handled.
- github-actions: move a real workflow into .github/workflows/, commit,
  push (actions/checkout@v7, setup-node@v7, Node 24, checked 1 Oct 2026).

Theory replays from each lesson's setup: outputs checked against git 2.56
and PowerShell 7; the branched log --graph is shown as an illustration,
not replayed. New helpers onServer/branchContains/pushed, setup
gitRepoWithWorkflow; gitRepoWithRemote and six validators removed.
Theory gaps 120 -> 90.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
terminal-learning Ready Ready Preview Oct 1, 2026 4:36pm UTC

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @thierryvm, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 2 days and 19 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@sourcery-ai

sourcery-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown

Guide du réviseur

La PR transforme le module GitHub & Collaboration en six exercices guidés, étape par étape et pilotés par l’état, reposant sur des configurations de dépôts réalistes et des conseils de récupération, tout en améliorant la fidélité du terminal pour les pulls divergents, la création de répertoires avec PowerShell et les erreurs de transfert de fichiers GNU ; la théorie du programme, les solutions, les tests et la documentation sont mis à jour en conséquence.

Diagramme de séquence pour l’exercice de pull et push

sequenceDiagram
    actor Learner
    participant Terminal
    participant Repository
    participant Remote

    Learner->>Terminal: git pull
    Terminal->>Remote: Fetch colleague commit
    Remote-->>Terminal: origin/main updated
    Terminal->>Repository: Fast-forward main
    Learner->>Terminal: git add contact.html
    Learner->>Terminal: git commit -m feat: ajoute la page contact
    Learner->>Terminal: git push
    Terminal->>Remote: Update origin/main
    Remote-->>Terminal: Push accepted
Loading

Diagramme de séquence pour la récupération après un pull Git divergent

sequenceDiagram
    actor Learner
    participant Terminal
    participant Repository
    participant Remote

    Learner->>Terminal: git push
    Terminal->>Remote: Attempt update
    Remote-->>Terminal: Rejected: fetch first
    Learner->>Terminal: git pull
    Terminal-->>Learner: Diverging branches advice
    Learner->>Terminal: git pull --no-rebase --no-edit
    Terminal->>Repository: Merge local and remote commits
    Repository-->>Terminal: Merge commit created
Loading

Diagramme de flux pour les exercices GitHub pilotés par l’état

flowchart LR
    Setup[Repository setup] --> Command[Learner enters command]
    Command --> Engine[Terminal engine updates state]
    Engine --> Check[Step checks repository state]
    Check -->|Pass| Next[Unlock next step]
    Check -->|Wrong turn| Advice[Recovery advice or restart]
    Advice --> Command
Loading

Diagramme de flux pour l’exercice sur le workflow GitHub Actions

flowchart LR
    Workflow[ci.yml at repository root] --> Directory[mkdir -p .github/workflows]
    Directory --> Move[mv ci.yml .github/workflows/]
    Move --> Stage[git add .github]
    Stage --> Commit[git commit]
    Commit --> Push[git push]
    Push --> Actions[GitHub Actions runs workflow]
Loading

Modifications au niveau des fichiers

Modification Détails Fichiers
Refonte des six leçons GitHub & Collaboration, avec passage d’une validation basée sur les commandes à des exercices structurés, ordonnés, en plusieurs étapes et avec état, accompagnés de conseils de récupération.
  • Ajout d’étapes explicites, de vérifications d’état, d’indices, d’avertissements, d’un comportement de redémarrage et de commandes spécifiques à l’environnement.
  • Introduction de configurations de dépôts contenant des commits poussés, en retard par rapport au dépôt distant et des workflows.
  • Couverture des parcours dans le mauvais ordre, notamment les push refusés, les pulls divergents, les stratégies de fusion incorrectes, l’absence de suivi du dépôt amont, les commits sur la branche principale et les workflows mal placés.
  • Mise à jour des solutions des leçons et réduction de l’ensemble des lacunes théoriques recensées.
src/app/data/curriculum.ts
src/app/data/exerciseSteps.ts
src/app/data/lessonSetup.ts
src/app/data/validators.ts
src/test/exerciseSteps.test.ts
src/test/lessonSetup.test.ts
src/test/lessonSolutions.ts
src/test/lessonTheoryGaps.ts
src/test/validators.test.ts
Extension de la simulation de Git et du système de fichiers pour prendre en charge les nouveaux parcours d’exercices et reproduire le comportement réel des outils.
  • Ajout de la gestion des pulls divergents pour --no-rebase, --ff-only et --no-edit.
  • Correction de l’analyse des paramètres et des chemins de New-Item dans PowerShell, ainsi que de la création des répertoires parents.
  • Ajustement des erreurs de barre oblique finale de mv/cp afin d’utiliser la formulation GNU.
src/app/data/commands/git.ts
src/app/data/commands/windows.ts
src/app/data/terminalEngine.ts
src/test/gitRemotes.test.ts
src/test/terminalEngine.test.ts
Mise à jour de la théorie du programme GitHub et de l’historique du projet afin de documenter les exercices étape par étape et les versions vérifiées des outils.
  • Remplacement des exemples à commande unique par des workflows réalistes concernant les dépôts distants, les pull/push, les fetch/merge, les PR, les stratégies de fusion et les Actions.
  • Mise à jour des exemples Actions pour utiliser checkout/setup-node v7 et Node 24.
  • Documentation du comportement sous Windows, des options de fusion de pull, des limites de la simulation et de la réduction des lacunes théoriques.
CHANGELOG.md
STORY.md

Conseils et commandes

Interagir avec Sourcery

  • Déclencher une nouvelle revue : commentez @sourcery-ai review sur la pull request.
  • Poursuivre les discussions : répondez directement aux commentaires de revue de Sourcery.
  • Générer une issue GitHub à partir d’un commentaire de revue : demandez à Sourcery de créer une issue à partir d’un commentaire de revue en y répondant. Vous pouvez également répondre à un commentaire de revue avec @sourcery-ai issue pour créer une issue à partir de celui-ci.
  • Générer le titre d’une pull request : écrivez @sourcery-ai n’importe où dans le titre de la pull request pour générer un titre à tout moment. Vous pouvez également commenter @sourcery-ai title sur la pull request pour générer ou régénérer le titre à tout moment.
  • Générer le résumé d’une pull request : écrivez @sourcery-ai summary n’importe où dans le corps de la pull request pour générer un résumé de PR à tout moment, exactement à l’endroit souhaité. Vous pouvez également commenter @sourcery-ai summary sur la pull request pour générer ou régénérer le résumé à tout moment.
  • Générer le guide du réviseur : commentez @sourcery-ai guide sur la pull request pour générer ou régénérer le guide du réviseur à tout moment.
  • Résoudre tous les commentaires de Sourcery : commentez @sourcery-ai resolve sur la pull request pour résoudre tous les commentaires de Sourcery. Cette commande est utile si vous avez déjà traité tous les commentaires et ne souhaitez plus les voir.
  • Ignorer toutes les revues de Sourcery : commentez @sourcery-ai dismiss sur la pull request pour ignorer toutes les revues existantes de Sourcery. Cette commande est particulièrement utile si vous souhaitez repartir de zéro avec une nouvelle revue. N’oubliez pas de commenter @sourcery-ai review pour déclencher une nouvelle revue !

Personnaliser votre expérience

Accédez à votre tableau de bord pour :

  • Activer ou désactiver les fonctionnalités de revue, telles que le résumé de pull request généré par Sourcery, le guide du réviseur et d’autres fonctionnalités.
  • Modifier la langue de revue.
  • Ajouter, supprimer ou modifier les instructions de revue personnalisées.
  • Ajuster les autres paramètres de revue.

Obtenir de l’aide

Original review guide in English

Reviewer's Guide

The PR transforms the GitHub & Collaboration module into six state-driven, step-by-step exercises backed by realistic repository setups and recovery advice, while extending terminal fidelity for divergent pulls, PowerShell directory creation, and GNU file-transfer errors; curriculum theory, solutions, tests, and documentation are updated accordingly.

Sequence diagram for the pull-and-push exercise

sequenceDiagram
    actor Learner
    participant Terminal
    participant Repository
    participant Remote

    Learner->>Terminal: git pull
    Terminal->>Remote: Fetch colleague commit
    Remote-->>Terminal: origin/main updated
    Terminal->>Repository: Fast-forward main
    Learner->>Terminal: git add contact.html
    Learner->>Terminal: git commit -m feat: ajoute la page contact
    Learner->>Terminal: git push
    Terminal->>Remote: Update origin/main
    Remote-->>Terminal: Push accepted
Loading

Sequence diagram for divergent git pull recovery

sequenceDiagram
    actor Learner
    participant Terminal
    participant Repository
    participant Remote

    Learner->>Terminal: git push
    Terminal->>Remote: Attempt update
    Remote-->>Terminal: Rejected: fetch first
    Learner->>Terminal: git pull
    Terminal-->>Learner: Diverging branches advice
    Learner->>Terminal: git pull --no-rebase --no-edit
    Terminal->>Repository: Merge local and remote commits
    Repository-->>Terminal: Merge commit created
Loading

Flow diagram for state-driven GitHub exercises

flowchart LR
    Setup[Repository setup] --> Command[Learner enters command]
    Command --> Engine[Terminal engine updates state]
    Engine --> Check[Step checks repository state]
    Check -->|Pass| Next[Unlock next step]
    Check -->|Wrong turn| Advice[Recovery advice or restart]
    Advice --> Command
Loading

Flow diagram for the GitHub Actions workflow exercise

flowchart LR
    Workflow[ci.yml at repository root] --> Directory[mkdir -p .github/workflows]
    Directory --> Move[mv ci.yml .github/workflows/]
    Move --> Stage[git add .github]
    Stage --> Commit[git commit]
    Commit --> Push[git push]
    Push --> Actions[GitHub Actions runs workflow]
Loading

File-Level Changes

Change Details Files
Reworked all six GitHub & Collaboration lessons from command-based validation into stateful, ordered, multi-step exercises with recovery guidance.
  • Added explicit steps, state checks, hints, warnings, restart behavior, and environment-specific commands.
  • Introduced pushed, behind-remote, and workflow-containing repository setups.
  • Covered wrong-order flows including rejected pushes, divergent pulls, incorrect merge strategies, missing upstream tracking, main-branch commits, and misplaced workflows.
  • Updated lesson solutions and reduced the recorded theory-gap set.
src/app/data/curriculum.ts
src/app/data/exerciseSteps.ts
src/app/data/lessonSetup.ts
src/app/data/validators.ts
src/test/exerciseSteps.test.ts
src/test/lessonSetup.test.ts
src/test/lessonSolutions.ts
src/test/lessonTheoryGaps.ts
src/test/validators.test.ts
Extended Git and filesystem simulation to support the new exercise flows and match real tool behavior.
  • Added divergent pull handling for --no-rebase, --ff-only, and --no-edit.
  • Corrected PowerShell New-Item parameter/path parsing and parent-directory creation.
  • Adjusted mv/cp trailing-slash errors to GNU wording.
src/app/data/commands/git.ts
src/app/data/commands/windows.ts
src/app/data/terminalEngine.ts
src/test/gitRemotes.test.ts
src/test/terminalEngine.test.ts
Updated GitHub curriculum theory and project history to document the step-by-step exercises and verified tool versions.
  • Replaced one-command examples with realistic remote, pull/push, fetch/merge, PR, merge-strategy, and Actions workflows.
  • Updated Actions examples to checkout/setup-node v7 and Node 24.
  • Documented Windows behavior, pull merge flags, simulation limitations, and reduced theory gaps.
CHANGELOG.md
STORY.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@thierryvm
thierryvm merged commit 5d314d3 into main Oct 1, 2026
4 checks passed
@thierryvm
thierryvm deleted the feature/github-module-steps branch October 1, 2026 16:51

This branch was successfully deployed

1 active deployment
Preview — 6abf2934 Deployed Oct 1, 2026 by vercel[bot]
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