From 558d53b0c602accb6dfca0a6f387c6bf4cbeb456 Mon Sep 17 00:00:00 2001 From: "M. Pabiszczak" <2+mpabi@noreply.zsl-gitea.mpabi.pl> Date: Tue, 21 Jul 2026 18:21:40 +0200 Subject: [PATCH] feat(console-bash): register completed L01-L08 cards --- catalog/console-bash.json | 16 +++++----- plans/informatyka/console-bash.md | 52 +++++++++++++++++++++++++++++-- series/console-bash.json | 22 +++++++++++++ workspace.json | 6 +++- 4 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 series/console-bash.json diff --git a/catalog/console-bash.json b/catalog/console-bash.json index 56a0459..7a01627 100644 --- a/catalog/console-bash.json +++ b/catalog/console-bash.json @@ -3,13 +3,13 @@ "title": "Bash · Console Tools", "catalog_only": true, "cards": [ - {"id": "L01", "repo": "lab-console-busybox", "number": "01", "title": "BusyBox — the Swiss Army Knife", "status": "planned"}, - {"id": "L02", "repo": "lab-console-tmux", "number": "02", "title": "Tmux — sessions, windows and panes", "status": "planned"}, - {"id": "L03", "repo": "lab-console-neovim", "number": "03", "title": "Neovim — navigation and editing", "status": "planned"}, - {"id": "L04", "repo": "lab-console-git-basics-1", "number": "04", "title": "Git Basics I — status, add and commit", "status": "planned"}, - {"id": "L05", "repo": "lab-console-git-basics-2", "number": "05", "title": "Git Basics II — log, diff and restore", "status": "planned"}, - {"id": "L06", "repo": "lab-console-git-branching-1", "number": "06", "title": "Git Branching I — branch, switch and merge", "status": "planned"}, - {"id": "L07", "repo": "lab-console-git-branching-2", "number": "07", "title": "Git Branching II — rebase and conflicts", "status": "planned"}, - {"id": "L08", "repo": "lab-console-docker", "number": "08", "title": "Docker Fundamentals", "status": "planned"} + {"id": "L01", "repo": "lab-console-busybox", "number": "01", "title": "BusyBox — the Swiss Army Knife", "status": "existing"}, + {"id": "L02", "repo": "lab-console-tmux", "number": "02", "title": "Tmux — sessions, windows and panes", "status": "existing"}, + {"id": "L03", "repo": "lab-console-neovim", "number": "03", "title": "Neovim — navigation and editing", "status": "existing"}, + {"id": "L04", "repo": "lab-console-git-basics-1", "number": "04", "title": "Git Basics I — status, add and commit", "status": "existing"}, + {"id": "L05", "repo": "lab-console-git-basics-2", "number": "05", "title": "Git Basics II — log, diff and restore", "status": "existing"}, + {"id": "L06", "repo": "lab-console-git-branching-1", "number": "06", "title": "Git Branching I — branch, switch and merge", "status": "existing"}, + {"id": "L07", "repo": "lab-console-git-branching-2", "number": "07", "title": "Git Branching II — rebase and conflicts", "status": "existing"}, + {"id": "L08", "repo": "lab-console-docker", "number": "08", "title": "Docker Fundamentals", "status": "existing"} ] } diff --git a/plans/informatyka/console-bash.md b/plans/informatyka/console-bash.md index 7d6998c..02f4b8a 100644 --- a/plans/informatyka/console-bash.md +++ b/plans/informatyka/console-bash.md @@ -1,6 +1,7 @@ # Bash · Console Tools — plan kart -Status: plan, 8 lekcji. +Status: L01–L08 gotowe; seria zakończona i odbierana w profilu +`native-amd64` przez `stemctl`. Seria przygotowuje warsztat przed FPGA, assemblerem i C. Nazwa obejmuje pracę w powłoce i terminalu; BusyBox może udostępniać `ash`, więc nie utożsamiamy @@ -18,8 +19,53 @@ Bash · Console Tools └── L08 · Docker Fundamentals ``` -Każda karta kończy się małym dowodem wykonania: komendą, stanem terminala albo -historią Git, którą uczeń potrafi odtworzyć i wyjaśnić. +Każda karta zawiera trzy wykonywalne taski. Repozytorium karty dostarcza +kontrakt `stem-card.yaml`, testy stanu, wygenerowany widok React, dwustronicowy +PDF A4 oraz akcje `build`, `test`, `run` i `debug`. Debug zapisuje +`trace.log` w katalogu artefaktów tasku. + +## Stan odbioru serii — 2026-07-21 + +| Karta | Dowód końcowy | +| --- | --- | +| L01 BusyBox | dispatch multicall, operacje plikowe, proces i host | +| L02 Tmux | sesja, okna i panele, zachowanie stanu po detach/attach | +| L03 Neovim | nawigacja, search/edit/save, undo/redo | +| L04 Git Basics I | init, status/add, pierwszy commit i clean | +| L05 Git Basics II | log, diff staged/worktree, bezpieczne restore | +| L06 Git Branching I | branch/switch, rozbieżność, merge commit | +| L07 Git Branching II | rebase, rzeczywisty konflikt UU, liniowa historia | +| L08 Docker | specyfikacja image, lifecycle, volume i bind mount | + +Wszystkie 24 taski przechodzą w kontenerze `native-amd64`. Każdy task pracuje +w izolowanym katalogu tymczasowym i raportuje mierzalny komunikat `PASS`. + +### Granice środowiska + +Obraz `native-amd64` nie zawiera BusyBox. L01 używa więc audytowalnego +fixture C implementującego wyłącznie ćwiczony mechanizm multicall, wykrywa +prawdziwy BusyBox, gdy jest dostępny, i zawsze raportuje użyty backend. Fixture +nie jest przedstawiany jako binarka BusyBox. + +Profil ucznia nie otrzymuje socketu Docker/Podman. L08 używa jawnego modelu +stanów offline do sprawdzenia semantyki image/container/storage. Jego `PASS` +nie oznacza uruchomienia prawdziwego silnika. Powtórzenie ćwiczenia z realnym +CLI należy wykonać na kontrolowanej maszynie operatorskiej, najlepiej z +rootless Podmanem albo Dockerem, bez montowania socketu do kontenera ucznia. + +### Sposób uruchamiania + +```bash +stemctl series show console-bash +stemctl list-cards console-bash +stemctl card use console-bash L01 +stemctl test native-amd64 console-bash L01 1 +stemctl debug native-amd64 console-bash L01 3 +``` + +Numer karty i tasku można podmienić na dowolne L01–L08 i 1–3. Identyfikatory, +repozytoria i kolejność kart są zapisane w `series/console-bash.json`, a stan +realizacji w `catalog/console-bash.json`. Pierwotne ustalenia znajdują się również w `series/inf/lab-rv32i-c-pointers-arrays/guidelines/console-series.md`. diff --git a/series/console-bash.json b/series/console-bash.json new file mode 100644 index 0000000..0df55bc --- /dev/null +++ b/series/console-bash.json @@ -0,0 +1,22 @@ +{ + "id": "console-bash", + "title": "Bash · Console Tools", + "source_org": "edu-inf", + "answer_org": "c2025-1a-inf", + "source_remote": "r1", + "answer_remote": "r1a", + "fallback_branch": "main", + "workspace_dir": "console", + "source_dir": "console", + "default_card": "L01", + "cards": [ + {"id": "L01", "repo": "lab-console-busybox", "branch": "main", "title": "BusyBox — the Swiss Army Knife"}, + {"id": "L02", "repo": "lab-console-tmux", "branch": "main", "title": "Tmux — sessions, windows and panes"}, + {"id": "L03", "repo": "lab-console-neovim", "branch": "main", "title": "Neovim — navigation and editing"}, + {"id": "L04", "repo": "lab-console-git-basics-1", "branch": "main", "title": "Git Basics I — status, add and commit"}, + {"id": "L05", "repo": "lab-console-git-basics-2", "branch": "main", "title": "Git Basics II — log, diff and restore"}, + {"id": "L06", "repo": "lab-console-git-branching-1", "branch": "main", "title": "Git Branching I — branch, switch and merge"}, + {"id": "L07", "repo": "lab-console-git-branching-2", "branch": "main", "title": "Git Branching II — rebase and conflicts"}, + {"id": "L08", "repo": "lab-console-docker", "branch": "main", "title": "Docker Fundamentals"} + ] +} diff --git a/workspace.json b/workspace.json index dfffbf5..a228bdc 100644 --- a/workspace.json +++ b/workspace.json @@ -13,7 +13,7 @@ "title": "Legacy Informatyka series", "role": "series", "legacy": true, - "series": ["inf", "rv32i-asm", "freertos"] + "series": ["console-bash", "inf", "rv32i-asm", "freertos"] }, { "id": "edu-fiz", @@ -35,6 +35,10 @@ } ], "series": [ + { + "id": "console-bash", + "file": "series/console-bash.json" + }, { "id": "inf", "file": "series/inf.json"