Files
lab-console-tmux/json/card_source.json
T

23 lines
7.4 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "../../../../tools/card-layouts/schemas/card-source.schema.json", "schema": "esc-card-source.v1",
"card": {"id": "mpabi-inf-console-bash-02-tmux", "series": "console-bash", "series_title": "Bash · Console Tools", "number": "02", "count": "08", "slug": "tmux", "title": "L02 · Tmux — sessions, windows and panes", "topic": "Serwer, sesje, okna, panele i trwałość stanu", "project": "Warsztat terminalowy", "subject": "Informatyka", "level": "Rok 1 · Console", "revision_date": "2026-07-21T00:00:00+02:00", "status": "Gotowa do wykonania", "version": "v00.01", "uuid": "2e06affe-9ecc-5813-8313-fd7b91744f3b", "author": "M. Pabiszczak", "year": "2026"},
"generated": {"tex": "doc/generated/main.tex", "html": "web/index.html", "html_css": "web/style.css", "react_app": true, "html_tree_inspector": false}, "template": "templates/karta-klasyczna.json",
"title_block": {"category": "KARTA PRACY · INFORMATYKA · CONSOLE", "standard": "ISO 7200", "prepared_by": "M. Pabiszczak", "prepared_on": "21.07.2026", "checked_by": "testy automatyczne", "approved_by": "—", "url": "http://localhost:8080", "repository_url": "https://gitea.local/edu-inf/lab-console-tmux", "revision": "1", "issued_on": "21.07.2026", "series": "CONSOLE-BASH-02", "document_type": "karta pracy", "tool": "card-layouts", "sheet": "1 / 1", "show_qr": false, "show_repository_qr": false, "height_cm": 3, "repeat_on_every_page": true, "replace_front_matter": true},
"front_page_scope": {"title": "Cel karty", "content_tex": "Uczeń tworzy izolowaną sesję tmux, organizuje okna i panele oraz dowodzi trwałości stanu między klientami.", "scope_title": "Zakres tasków", "scope_table": {"headers": ["Krok", "Numer tasku", "Najważniejsza idea", "Priorytet", "Status", "Version"], "rows": [{"chapter": "2", "task": "Task01", "idea_tex": "cykl życia sesji", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "2", "task": "Task02", "idea_tex": "okna i panele", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "2", "task": "Task03", "idea_tex": "detach/attach i trwałość", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}]}},
"learning_effects": {"CB02.EN01": {"text": "Uczeń wyjaśnia relację klientserwersesjaoknopanel.", "label": "Model tmux", "bloom_level": "Analiza", "assessment_criteria": ["CB02.KW01"]}, "CB02.EK01": {"text": "Uczeń tworzy i mierzy izolowany układ tmux.", "label": "Obsługa tmux", "bloom_level": "Zastosowanie", "assessment_criteria": ["CB02.KW01"]}},
"assessment_criteria": {"CB02.KW01": {"text": "Sesja, layout dwóch okien oraz trwały stan dwóch klientów dają trzy komunikaty PASS.", "learning_effects": ["CB02.EN01", "CB02.EK01"]}},
"educational_requirements": {"CB02.WE01": {"text": "Bezpieczna organizacja pracy terminalowej w tmux.", "label": "Tmux", "learning_effects": ["CB02.EN01", "CB02.EK01"], "learning_tree": {"schema": "we-learning-tree.v1", "policy": "Testy używają osobnego socketu i nigdy nie dotykają sesji użytkownika.", "ogolne": [{"tree_id": "CB02.WE01.OG.IP.01", "effect_ref": "CB02.EN01", "display": "EN IP CB02.01", "text": "Uczeń analizuje hierarchię tmux.", "kw": [{"criterion_ref": "CB02.KW01", "display": "KW IP CB02.01", "text": "Rozróżnia serwer, klienta, sesję, okno i panel."}]}], "zawodowe": [{"tree_id": "CB02.WE01.TECH.I4.01", "effect_ref": "CB02.EK01", "display": "EK INF04 CB02.01", "text": "Uczeń automatyzuje layout terminala.", "kw": [{"criterion_ref": "CB02.KW01", "display": "KW INF04 CB02.01", "text": "Potwierdza liczby okien/paneli i trwały marker."}]}]}}},
"sections": [
{"title": "Task01 · Cykl życia sesji", "content_kind": "prose", "content_tex": "Utwórz sesję lab na osobnym sockecie, sprawdź ją przez has-session i zamknij wyłącznie testowy serwer.", "educational_requirement_refs": ["CB02.WE01"], "learning_effect_refs": ["CB02.EN01", "CB02.EK01"], "assessment_criterion_refs": ["CB02.KW01"], "area_tree_refs": ["CB02.WE01.OG.IP.01", "CB02.WE01.TECH.I4.01"], "steps": [{"id": "T01-SESSION", "title": "Zmierz jedną sesję lab na izolowanym sockecie.", "tree_refs": ["CB02.WE01.TECH.I4.01"]}], "assets": [{"path": "assets/tmux-model.png", "html_path": "assets/tmux-model.svg", "caption": "Klient łączy się z serwerem, który utrzymuje sesje, okna i panele.", "label": "fig:tmux-model", "alt": "Diagram klient, serwer, sesja, okno i panele.", "kind": "diagram", "width": 0.9}]},
{"title": "Task02 · Okna i panele", "content_kind": "prose", "content_tex": "Utwórz okna shell i editor, a shell podziel na dwa panele. Nazwy i liczności są dowodem layoutu.", "educational_requirement_refs": ["CB02.WE01"], "learning_effect_refs": ["CB02.EN01", "CB02.EK01"], "assessment_criterion_refs": ["CB02.KW01"], "area_tree_refs": ["CB02.WE01.OG.IP.01", "CB02.WE01.TECH.I4.01"], "steps": [{"id": "T02-LAYOUT", "title": "Potwierdź 2 okna i 2 panele shell.", "tree_refs": ["CB02.WE01.TECH.I4.01"]}]},
{"title": "Task03 · Detach i attach", "content_kind": "prose", "content_tex": "Niezależne procesy klienta zapisują i odczytują marker z tego samego serwera. To mierzalny odpowiednik detach/attach bez interaktywnego TTY.", "educational_requirement_refs": ["CB02.WE01"], "learning_effect_refs": ["CB02.EN01", "CB02.EK01"], "assessment_criterion_refs": ["CB02.KW01"], "area_tree_refs": ["CB02.WE01.OG.IP.01", "CB02.WE01.TECH.I4.01"], "steps": [{"id": "T03-PERSIST", "title": "Potwierdź marker ready, 2 okna i 3 panele work.", "tree_refs": ["CB02.WE01.TECH.I4.01"]}]}
],
"tasks": {"task01": {"prompt_tex": "Utwórz i sprawdź izolowaną sesję.", "criterion": "session=lab sessions=1 isolated_socket=1", "assessment_criterion_ref": "CB02.KW01"}, "task02": {"prompt_tex": "Utwórz dwa okna i podziel shell.", "criterion": "windows=2 shell_panes=2 names=editor,shell", "assessment_criterion_ref": "CB02.KW01"}, "task03": {"prompt_tex": "Potwierdź stan zachowany między klientami.", "criterion": "reattach_state=preserved windows=2 work_panes=3 marker=ready", "assessment_criterion_ref": "CB02.KW01"}},
"tasks_order": ["task01", "task02", "task03"], "mission": "Zorganizować trwały i mierzalny warsztat terminalowy tmux.", "objectives": ["Utworzysz sesję.", "Zbudujesz layout okien i paneli.", "Wyjaśnisz detach/attach."],
"agenda": [{"time": "0--20 min", "work": "Sesja i socket."}, {"time": "20--40 min", "work": "Okna i panele."}, {"time": "40--60 min", "work": "Trwałość stanu i trace."}],
"tech_stack": {"software": [{"name": "tmux", "use": "serwer terminalowy"}, {"name": "POSIX shell", "use": "izolowany test"}, {"name": "stemctl", "use": "profil native-amd64"}], "hardware": [{"name": "Brak", "use": "laboratorium kontenerowe"}]},
"container_test": {"title": "Test native-amd64", "commands": ["stemctl test native-amd64 console-bash L02 1", "stemctl test native-amd64 console-bash L02 2", "stemctl debug native-amd64 console-bash L02 3"], "pass_condition": "Trzy komunikaty PASS i trace.log."},
"safety_rules": [{"title": "Osobny socket", "body": "Każdy task używa unikatowego tmux -L."}, {"title": "Kontrolowane procesy", "body": "Trap zamyka wyłącznie serwer testowy."}],
"hardware_procedure": [{"step": "1", "action": "Utwórz sesję.", "condition": "Jedna sesja lab."}, {"step": "2", "action": "Zbuduj layout.", "condition": "Dwa okna i dwa panele."}, {"step": "3", "action": "Sprawdź trwałość.", "condition": "Marker ready odczytany przez kolejnego klienta."}], "references": []
}