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

23 lines
7.5 KiB
JSON

{
"$schema": "../../../../tools/card-layouts/schemas/card-source.schema.json", "schema": "esc-card-source.v1",
"card": {"id": "mpabi-inf-console-bash-07-git-branching-2", "series": "console-bash", "series_title": "Bash · Console Tools", "number": "07", "count": "08", "slug": "git-branching-2", "title": "L07 · Git Branching II — rebase and conflicts", "topic": "Przepisanie historii, konflikt, rozwiązanie i weryfikacja", "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": "8b4d0b43-03db-5c02-99e2-914728411a74", "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-branching-2", "revision": "1", "issued_on": "21.07.2026", "series": "CONSOLE-BASH-07", "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ń świadomie wykonuje rebase, rozwiązuje rzeczywisty konflikt i weryfikuje liniową historię.", "scope_title": "Zakres tasków", "scope_table": {"headers": ["Krok", "Numer tasku", "Najważniejsza idea", "Priorytet", "Status", "Version"], "rows": [{"chapter": "7", "task": "Task01", "idea_tex": "rebase na main", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "7", "task": "Task02", "idea_tex": "konflikt UU i continue", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "7", "task": "Task03", "idea_tex": "weryfikacja grafu", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}]}},
"learning_effects": {"CB07.EN01": {"text": "Uczeń analizuje zmianę rodzica i identyfikatora commitów po rebase.", "label": "Rebase", "bloom_level": "Analiza", "assessment_criteria": ["CB07.KW01"]}, "CB07.EK01": {"text": "Uczeń rozwiązuje konflikt i weryfikuje wynikową historię.", "label": "Conflict workflow", "bloom_level": "Zastosowanie", "assessment_criteria": ["CB07.KW01"]}},
"assessment_criteria": {"CB07.KW01": {"text": "Przepisany commit, wykryte UU, rozwiązanie purple i liniowy graf bez merge są potwierdzone.", "learning_effects": ["CB07.EN01", "CB07.EK01"]}},
"educational_requirements": {"CB07.WE01": {"text": "Kontrolowane przepisywanie historii i rozwiązywanie konfliktów.", "label": "Rebase i konflikty", "learning_effects": ["CB07.EN01", "CB07.EK01"], "learning_tree": {"schema": "we-learning-tree.v1", "policy": "Rebase działa wyłącznie w repo mktemp; wynik jest zawsze sprawdzany po continue.", "ogolne": [{"tree_id": "CB07.WE01.OG.IP.01", "effect_ref": "CB07.EN01", "display": "EN IP CB07.01", "text": "Uczeń analizuje skutki przepisywania.", "kw": [{"criterion_ref": "CB07.KW01", "display": "KW IP CB07.01", "text": "Wyjaśnia zmianę hash i rodzica."}]}], "zawodowe": [{"tree_id": "CB07.WE01.TECH.I4.01", "effect_ref": "CB07.EK01", "display": "EK INF04 CB07.01", "text": "Uczeń rozwiązuje konflikt rebase.", "kw": [{"criterion_ref": "CB07.KW01", "display": "KW INF04 CB07.01", "text": "Kończy z 3 commitami, 0 merge i clean."}]}]}}},
"sections": [
{"title": "Task01 · Rebase świadomy", "content_kind": "prose", "content_tex": "Odtwórz commit feature na nowym tipie main. Nowy parent i zmieniony hash są oczekiwanym skutkiem.", "educational_requirement_refs": ["CB07.WE01"], "learning_effect_refs": ["CB07.EN01", "CB07.EK01"], "assessment_criterion_refs": ["CB07.KW01"], "area_tree_refs": ["CB07.WE01.OG.IP.01", "CB07.WE01.TECH.I4.01"], "steps": [{"id": "T01-REBASE", "title": "Potwierdź rewritten, parent_is_main i linear.", "tree_refs": ["CB07.WE01.OG.IP.01"]}], "assets": [{"path": "assets/git-rebase-conflict.png", "html_path": "assets/git-rebase-conflict.svg", "caption": "Konflikt zatrzymuje rebase do czasu jawnego rozwiązania i continue.", "label": "fig:git-rebase-conflict", "alt": "Diagram rebase, conflict, resolve, continue.", "kind": "diagram", "width": 0.9}]},
{"title": "Task02 · Rozwiązanie konfliktu", "content_kind": "prose", "content_tex": "Main wybiera red, feature green. Rebase musi zatrzymać się ze statusem UU; uczeń wybiera purple, dodaje plik i kontynuuje.", "educational_requirement_refs": ["CB07.WE01"], "learning_effect_refs": ["CB07.EN01", "CB07.EK01"], "assessment_criterion_refs": ["CB07.KW01"], "area_tree_refs": ["CB07.WE01.OG.IP.01", "CB07.WE01.TECH.I4.01"], "steps": [{"id": "T02-CONFLICT", "title": "Zmierz UU, purple, zakończenie rebase i nowego parenta.", "tree_refs": ["CB07.WE01.TECH.I4.01"]}]},
{"title": "Task03 · Weryfikacja", "content_kind": "prose", "content_tex": "Po continue sprawdź liczbę commitów, brak merge commitów, uporządkowane tematy, finalny plik i czysty status.", "educational_requirement_refs": ["CB07.WE01"], "learning_effect_refs": ["CB07.EN01", "CB07.EK01"], "assessment_criterion_refs": ["CB07.KW01"], "area_tree_refs": ["CB07.WE01.OG.IP.01", "CB07.WE01.TECH.I4.01"], "steps": [{"id": "T03-VERIFY", "title": "Potwierdź 3 commity, 0 merge, purple i clean.", "tree_refs": ["CB07.WE01.TECH.I4.01"]}]}
],
"tasks": {"task01": {"prompt_tex": "Przepisz feature na main.", "criterion": "rewritten=1 parent_is_main=1 feature_ahead=1 linear=1", "assessment_criterion_ref": "CB07.KW01"}, "task02": {"prompt_tex": "Rozwiąż konflikt rebase.", "criterion": "conflict_detected=1 status=UU resolved=purple rebase_finished=1", "assessment_criterion_ref": "CB07.KW01"}, "task03": {"prompt_tex": "Zweryfikuj liniową historię.", "criterion": "commits=3 merges=0 final=purple clean=1", "assessment_criterion_ref": "CB07.KW01"}},
"tasks_order": ["task01", "task02", "task03"], "mission": "Przepisać historię i rozwiązać konflikt z pełnym dowodem poprawności.", "objectives": ["Wyjaśnisz rebase.", "Rozwiążesz UU.", "Zweryfikujesz liniowy graf."],
"agenda": [{"time": "0--20 min", "work": "Rebase bez konfliktu."}, {"time": "20--45 min", "work": "Konflikt i continue."}, {"time": "45--65 min", "work": "Weryfikacja i trace."}],
"tech_stack": {"software": [{"name": "Git", "use": "rebase i conflict workflow"}, {"name": "POSIX shell", "use": "izolowane repo"}, {"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 L07 1", "stemctl test native-amd64 console-bash L07 2", "stemctl debug native-amd64 console-bash L07 3"], "pass_condition": "Trzy komunikaty PASS i trace.log."},
"safety_rules": [{"title": "Tylko prywatna historia", "body": "Rebase nie jest wykonywany na współdzielonej gałęzi ani repo użytkownika."}, {"title": "Verify after continue", "body": "Samo zakończenie komendy nie zastępuje kontroli grafu i plików."}],
"hardware_procedure": [{"step": "1", "action": "Wykonaj rebase.", "condition": "Nowy parent main i nowy hash."}, {"step": "2", "action": "Rozwiąż UU.", "condition": "Purple, add, continue."}, {"step": "3", "action": "Zweryfikuj wynik.", "condition": "3 commity, 0 merge, clean."}], "references": []
}