Files
lab-console-git-basics-2/json/card_source.json
T

23 lines
7.3 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-05-git-basics-2", "series": "console-bash", "series_title": "Bash · Console Tools", "number": "05", "count": "08", "slug": "git-basics-2", "title": "L05 · Git Basics II — log, diff and restore", "topic": "Historia, zakresy diff i bezpieczne restore", "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": "6c357743-5c79-568f-9577-1871542c21da", "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-git-basics-2", "revision": "1", "issued_on": "21.07.2026", "series": "CONSOLE-BASH-05", "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ń czyta historię, rozdziela dwa zakresy diff i przywraca worktree/index bez destrukcyjnego resetu.", "scope_title": "Zakres tasków", "scope_table": {"headers": ["Krok", "Numer tasku", "Najważniejsza idea", "Priorytet", "Status", "Version"], "rows": [{"chapter": "5", "task": "Task01", "idea_tex": "log i HEAD", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "5", "task": "Task02", "idea_tex": "dwa zakresy diff", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "5", "task": "Task03", "idea_tex": "restore i unstage", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}]}},
"learning_effects": {"CB05.EN01": {"text": "Uczeń analizuje historię oraz relacje HEADindexworktree.", "label": "Historia i diff", "bloom_level": "Analiza", "assessment_criteria": ["CB05.KW01"]}, "CB05.EK01": {"text": "Uczeń bezpiecznie odtwarza wybrane stany pliku.", "label": "Restore", "bloom_level": "Zastosowanie", "assessment_criteria": ["CB05.KW01"]}},
"assessment_criteria": {"CB05.KW01": {"text": "Trzy commity, trzy równoczesne wersje pliku i pełny bezpieczny restore są mierzalne.", "learning_effects": ["CB05.EN01", "CB05.EK01"]}},
"educational_requirements": {"CB05.WE01": {"text": "Czytanie i odtwarzanie stanu Git z jawnym zakresem.", "label": "Git log/diff/restore", "learning_effects": ["CB05.EN01", "CB05.EK01"], "learning_tree": {"schema": "we-learning-tree.v1", "policy": "Karta nie używa reset --hard ani istniejących repozytoriów.", "ogolne": [{"tree_id": "CB05.WE01.OG.IP.01", "effect_ref": "CB05.EN01", "display": "EN IP CB05.01", "text": "Uczeń analizuje zakres diff.", "kw": [{"criterion_ref": "CB05.KW01", "display": "KW IP CB05.01", "text": "Rozróżnia HEAD, index i worktree."}]}], "zawodowe": [{"tree_id": "CB05.WE01.TECH.I4.01", "effect_ref": "CB05.EK01", "display": "EK INF04 CB05.01", "text": "Uczeń wykonuje kontrolowany restore.", "kw": [{"criterion_ref": "CB05.KW01", "display": "KW INF04 CB05.01", "text": "Kończy z wartością base i czystym statusem."}]}]}}},
"sections": [
{"title": "Task01 · Czytanie historii", "content_kind": "prose", "content_tex": "Odczytaj trzy commity w porządku od najstarszego i wskaż commit HEAD.", "educational_requirement_refs": ["CB05.WE01"], "learning_effect_refs": ["CB05.EN01", "CB05.EK01"], "assessment_criterion_refs": ["CB05.KW01"], "area_tree_refs": ["CB05.WE01.OG.IP.01", "CB05.WE01.TECH.I4.01"], "steps": [{"id": "T01-LOG", "title": "Potwierdź base,feature,docs oraz HEAD=docs.", "tree_refs": ["CB05.WE01.OG.IP.01"]}], "assets": [{"path": "assets/git-diffs.png", "html_path": "assets/git-diffs.svg", "caption": "HEAD, index i worktree mogą zawierać trzy różne wersje.", "label": "fig:git-diffs", "alt": "Diagram HEAD, index, worktree i zakresy diff.", "kind": "diagram", "width": 0.9}]},
{"title": "Task02 · Dwa zakresy diff", "content_kind": "prose", "content_tex": "Utrzymaj jednocześnie base w HEAD, staged w indeksie i working w worktree. Status MM potwierdza oba zakresy różnic.", "educational_requirement_refs": ["CB05.WE01"], "learning_effect_refs": ["CB05.EN01", "CB05.EK01"], "assessment_criterion_refs": ["CB05.KW01"], "area_tree_refs": ["CB05.WE01.OG.IP.01", "CB05.WE01.TECH.I4.01"], "steps": [{"id": "T02-DIFF", "title": "Zmierz trzy wersje i dwa diffy.", "tree_refs": ["CB05.WE01.OG.IP.01"]}]},
{"title": "Task03 · Bezpieczne restore", "content_kind": "prose", "content_tex": "Najpierw przywróć worktree z indeksu, potem odstaw indeks do HEAD przez restore --staged, a na końcu odtwórz worktree.", "educational_requirement_refs": ["CB05.WE01"], "learning_effect_refs": ["CB05.EN01", "CB05.EK01"], "assessment_criterion_refs": ["CB05.KW01"], "area_tree_refs": ["CB05.WE01.OG.IP.01", "CB05.WE01.TECH.I4.01"], "steps": [{"id": "T03-RESTORE", "title": "Potwierdź staged, M, base i clean.", "tree_refs": ["CB05.WE01.TECH.I4.01"]}]}
],
"tasks": {"task01": {"prompt_tex": "Odczytaj uporządkowaną historię.", "criterion": "commits=3 subjects=base,feature,docs head=docs", "assessment_criterion_ref": "CB05.KW01"}, "task02": {"prompt_tex": "Porównaj HEAD, index i worktree.", "criterion": "head=base index=staged worktree=working status=MM", "assessment_criterion_ref": "CB05.KW01"}, "task03": {"prompt_tex": "Przywróć oba stany bez reset hard.", "criterion": "after_worktree_restore=staged after_unstage=M final=base clean=1", "assessment_criterion_ref": "CB05.KW01"}},
"tasks_order": ["task01", "task02", "task03"], "mission": "Czytać historię i odtwarzać stan Git bez przypadkowej utraty danych.", "objectives": ["Odczytasz log.", "Rozdzielisz zakresy diff.", "Użyjesz restore i restore --staged."],
"agenda": [{"time": "0--15 min", "work": "Log i HEAD."}, {"time": "15--40 min", "work": "Diff i status MM."}, {"time": "40--60 min", "work": "Restore i trace."}],
"tech_stack": {"software": [{"name": "Git", "use": "historia, diff i restore"}, {"name": "POSIX shell", "use": "repozytoria mktemp"}, {"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 L05 1", "stemctl test native-amd64 console-bash L05 2", "stemctl debug native-amd64 console-bash L05 3"], "pass_condition": "Trzy komunikaty PASS i trace.log."},
"safety_rules": [{"title": "Bez reset hard", "body": "Każdy restore ma jawne źródło i cel."}, {"title": "Repo mktemp", "body": "Istniejące historie nie są modyfikowane."}],
"hardware_procedure": [{"step": "1", "action": "Przeczytaj log.", "condition": "Trzy tematy w kolejności."}, {"step": "2", "action": "Porównaj diffy.", "condition": "base/staged/working i MM."}, {"step": "3", "action": "Przywróć stan.", "condition": "base i clean."}], "references": []
}