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

23 lines
7.3 KiB
JSON

{
"$schema": "../../../../tools/card-layouts/schemas/card-source.schema.json", "schema": "esc-card-source.v1",
"card": {"id": "mpabi-inf-console-bash-03-neovim", "series": "console-bash", "series_title": "Bash · Console Tools", "number": "03", "count": "08", "slug": "neovim", "title": "L03 · Neovim — navigation and editing", "topic": "Nawigacja, wyszukiwanie, edycja, zapis i historia zmian", "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": "bcbeea7b-d87a-5b1c-9364-c19edddf86ce", "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-neovim", "revision": "1", "issued_on": "21.07.2026", "series": "CONSOLE-BASH-03", "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ń mierzy pozycję kursora, wyszukuje i zapisuje zmianę oraz świadomie używa historii undo/redo.", "scope_title": "Zakres tasków", "scope_table": {"headers": ["Krok", "Numer tasku", "Najważniejsza idea", "Priorytet", "Status", "Version"], "rows": [{"chapter": "3", "task": "Task01", "idea_tex": "nawigacja kursora", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "3", "task": "Task02", "idea_tex": "search, edit, write", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "3", "task": "Task03", "idea_tex": "undo i redo", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}]}},
"learning_effects": {"CB03.EN01": {"text": "Uczeń rozróżnia pozycję kursora, stan bufora i stan pliku.", "label": "Model edytora", "bloom_level": "Analiza", "assessment_criteria": ["CB03.KW01"]}, "CB03.EK01": {"text": "Uczeń wykonuje deterministyczną nawigację, edycję i historię zmian.", "label": "Neovim", "bloom_level": "Zastosowanie", "assessment_criteria": ["CB03.KW01"]}},
"assessment_criteria": {"CB03.KW01": {"text": "Kursor trafia na linię 4, beta zostaje zapisana jako BETA, a undo/redo daje sekwencję 4/3/4.", "learning_effects": ["CB03.EN01", "CB03.EK01"]}},
"educational_requirements": {"CB03.WE01": {"text": "Powtarzalna edycja tekstu w Neovim bez zależności od konfiguracji użytkownika.", "label": "Neovim", "learning_effects": ["CB03.EN01", "CB03.EK01"], "learning_tree": {"schema": "we-learning-tree.v1", "policy": "Testy uruchamiają nvim -u NONE na plikach tymczasowych.", "ogolne": [{"tree_id": "CB03.WE01.OG.IP.01", "effect_ref": "CB03.EN01", "display": "EN IP CB03.01", "text": "Uczeń analizuje granicę bufor/dysk.", "kw": [{"criterion_ref": "CB03.KW01", "display": "KW IP CB03.01", "text": "Wyjaśnia, kiedy write jest potrzebny."}]}], "zawodowe": [{"tree_id": "CB03.WE01.TECH.I4.01", "effect_ref": "CB03.EK01", "display": "EK INF04 CB03.01", "text": "Uczeń edytuje plik w Neovim.", "kw": [{"criterion_ref": "CB03.KW01", "display": "KW INF04 CB03.01", "text": "Uzyskuje trzy mierzalne wyniki PASS."}]}]}}},
"sections": [
{"title": "Task01 · Nawigacja", "content_kind": "prose", "content_tex": "Przejdź do linii 4 bez zmiany pliku. W interaktywnym Neovim odpowiada temu ruch 4G.", "educational_requirement_refs": ["CB03.WE01"], "learning_effect_refs": ["CB03.EN01", "CB03.EK01"], "assessment_criterion_refs": ["CB03.KW01"], "area_tree_refs": ["CB03.WE01.OG.IP.01", "CB03.WE01.TECH.I4.01"], "steps": [{"id": "T01-NAV", "title": "Zmierz cursor_line=4 oraz total_lines=5.", "tree_refs": ["CB03.WE01.TECH.I4.01"]}], "assets": [{"path": "assets/neovim-cycle.png", "html_path": "assets/neovim-cycle.svg", "caption": "Nawigacja i wyszukiwanie prowadzą do zmiany bufora, historii i zapisu.", "label": "fig:neovim-cycle", "alt": "Diagram navigate, search, edit, write.", "kind": "diagram", "width": 0.9}]},
{"title": "Task02 · Wyszukiwanie, edycja i zapis", "content_kind": "prose", "content_tex": "Znajdź beta na linii 2, zmień zawartość bufora na BETA i jawnie zapisz plik.", "educational_requirement_refs": ["CB03.WE01"], "learning_effect_refs": ["CB03.EN01", "CB03.EK01"], "assessment_criterion_refs": ["CB03.KW01"], "area_tree_refs": ["CB03.WE01.OG.IP.01", "CB03.WE01.TECH.I4.01"], "steps": [{"id": "T02-EDIT", "title": "Potwierdź linię trafienia i dokładną zawartość pliku.", "tree_refs": ["CB03.WE01.TECH.I4.01"]}]},
{"title": "Task03 · Undo i redo", "content_kind": "prose", "content_tex": "Dodaj linię delta, wykonaj undo i redo. Dopiero wynik po redo zapisz na dysk.", "educational_requirement_refs": ["CB03.WE01"], "learning_effect_refs": ["CB03.EN01", "CB03.EK01"], "assessment_criterion_refs": ["CB03.KW01"], "area_tree_refs": ["CB03.WE01.OG.IP.01", "CB03.WE01.TECH.I4.01"], "steps": [{"id": "T03-HISTORY", "title": "Zmierz liczbę linii 4, 3, 4 i zapisz trace.", "tree_refs": ["CB03.WE01.TECH.I4.01"]}]}
],
"tasks": {"task01": {"prompt_tex": "Przejdź do linii 4.", "criterion": "cursor_line=4 total_lines=5 mode=normal", "assessment_criterion_ref": "CB03.KW01"}, "task02": {"prompt_tex": "Znajdź, zmień i zapisz beta.", "criterion": "found_line=2 saved_word=BETA file_exact=1", "assessment_criterion_ref": "CB03.KW01"}, "task03": {"prompt_tex": "Wykonaj zmianę, undo i redo.", "criterion": "after_change=4 after_undo=3 after_redo=4 saved_delta=1", "assessment_criterion_ref": "CB03.KW01"}},
"tasks_order": ["task01", "task02", "task03"], "mission": "Opanować mierzalny cykl pracy edytora modalnego.", "objectives": ["Przeniesiesz kursor.", "Wyszukasz i zapiszesz zmianę.", "Użyjesz undo i redo."],
"agenda": [{"time": "0--15 min", "work": "Tryby i ruch."}, {"time": "15--40 min", "work": "Search/edit/write."}, {"time": "40--60 min", "work": "Undo/redo i trace."}],
"tech_stack": {"software": [{"name": "Neovim", "use": "edycja headless i interaktywna"}, {"name": "Lua API", "use": "mierzalna pozycja i zawartość"}, {"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 L03 1", "stemctl test native-amd64 console-bash L03 2", "stemctl debug native-amd64 console-bash L03 3"], "pass_condition": "Trzy komunikaty PASS i trace.log."},
"safety_rules": [{"title": "Pliki tymczasowe", "body": "Testy nigdy nie otwierają plików użytkownika."}, {"title": "Czysta konfiguracja", "body": "-u NONE usuwa wpływ prywatnych pluginów i mapowań."}],
"hardware_procedure": [{"step": "1", "action": "Przejdź do linii 4.", "condition": "Plik nadal ma 5 linii."}, {"step": "2", "action": "Wyszukaj i zapisz BETA.", "condition": "Dokładna zawartość na dysku."}, {"step": "3", "action": "Wykonaj undo/redo.", "condition": "Sekwencja liczby linii 4/3/4."}], "references": []
}