66 lines
7.1 KiB
Markdown
66 lines
7.1 KiB
Markdown
# Projekt-Kontext: LPIC-Prüfungsvorbereitung
|
||
|
||
> Arbeitsgedächtnis für Agenten. Wird zu Sitzungsbeginn gelesen und am Ende jeder Sitzung mit relevantem Ergebnis aktualisiert.
|
||
> Abschnitte nicht umbenennen.
|
||
|
||
## Metadaten
|
||
- **Projekt:** `lpic` – Vorbereitung auf die LPIC-Zertifizierung
|
||
- **Status:** Umsetzung <!-- Idee | Planung | Umsetzung | Betrieb | abgeschlossen -->
|
||
- **Angelegt:** 29.10.2026 · **Letzte Aktualisierung:** 29.10.2026
|
||
- **Verantwortlich:** `@author` br · `@owner` br (siehe `ai/context/responsible.md`)
|
||
- **Code:** in diesem Repo – Prüfungssimulator unter `simulator/`, Übungsscripts unter `bash/`, Lab-Aufbau unter `ansible/` bzw. `stacks/` (Ordner bei Bedarf anlegen) · Remote: <!-- TODO: Gitea-Repo anlegen -->
|
||
|
||
## Ziel
|
||
LPIC-1 (101-500 + 102-500), danach LPIC-2. <!-- TODO: Zieltermin -->
|
||
Messbar am Ende:
|
||
1. <!-- TODO: Prüfung(en) bestanden bis TT.MM.JJJJ -->
|
||
2. Jedes Prüfungsthema (Objective) hat einen Eintrag unter `ai/context/knowledge/topics/` mit Kernbefehlen, Dateien und Übungen.
|
||
|
||
## Rahmen
|
||
- Prüfungsgrundlage: offizielle Lernziele (Objectives) des LPI in der jeweils gültigen Version – Version und Abrufdatum im Knowledge-Eintrag nennen.
|
||
- Übungen lokal (Container/VMs, `ai/rules/testing.md`); keine Produktivsysteme.
|
||
- Leitsatz: **so lokal wie möglich, so auswärts wie nötig** (`ai/rules/privacy.md`).
|
||
|
||
## Fahrplan
|
||
- [ ] Ziel festlegen (Stufe, Prüfungen, Termin)
|
||
- [ ] Objectives als Gliederung in `ai/context/knowledge/topics/` anlegen
|
||
- [ ] Lab-Umgebung festlegen (lokale Container/VMs)
|
||
- [x] Prüfungssimulator LPIC-1 mit 180 Fragen (29.10.2026)
|
||
- [x] Zweiter Fragensatz: je 200 Fragen für 101 und 102 (30.10.2026)
|
||
- [ ] Fragen fachlich durchsehen (br) und laufend ergänzen
|
||
- [ ] LPIC-2 (201/202) als weitere Prüfungen im Simulator
|
||
|
||
## Stand
|
||
- 29.10.2026: Repo aus der 2nd-brain-Basis abgeleitet (Regeln, Standards, Kontextstruktur übernommen; 2nd-brain-Inhalte entfernt, ohne Git-Historie).
|
||
- 29.10.2026: Prüfungssimulator `simulator/` fertig: LPIC-1 101/102 je 90 Fragen (109 single, 39 multi, 32 fill), alle Objectives 5.0 mindestens mit ihrem Gewicht abgedeckt; Lern-/Prüfungsmodus, localStorage + JSON-Export/Import, Fragenpakete nachladbar. Fragen KI-erstellt, **noch nicht fachlich geprüft**.
|
||
|
||
## Entscheidungen
|
||
| Datum | Entscheidung | Warum | ADR |
|
||
|---|---|---|---|
|
||
| 29.10.2026 | Simulator in reinem JavaScript (klassische Scripts, kein TypeScript, kein Build für den Code) | kein node/tsc auf dem Rechner; läuft so auch unter `file://` | – |
|
||
| 29.10.2026 | Fragen als JSON (`simulator/data/`), Bundle `js/bank.js` per `tools/build_bank.py`, zusätzlich Import per Datei-Dialog | `fetch` von JSON ist unter `file://` blockiert | – |
|
||
| 29.10.2026 | Fragenregeln: genau 5 Optionen bei single/multi, Erläuterung je Option, Bewertung alles-oder-nichts; Prüfungsmodus 60 Fragen/90 min, Auswahl nach Gewicht; Richtwert Bestehen 65 % | Vorgabe Bediener + LPI-Standards; LPI nennt keine Prozentgrenze (200–800, bestanden ab 500) | – |
|
||
| 29.10.2026 | Ausgelieferte Bank `js/bank.js` ChaCha20-verschlüsselt, Schlüssel aus PSK (`LPIC_SIM_PSK` bzw. `simulator/tools/.psk`, nicht versioniert); Quelltext `data/*.json` bleibt Klartext für Prüfer; Prüfvermerk `review` (pending/approved/rejected); Export ohne Quellen nach `simulator/dist/` | kein Klartext auf der Platte; Schlüssel wird mit ausgeliefert → Verschleierung, kein Schutz gegen gezielte Analyse | – |
|
||
| 29.10.2026 | Weitergabe an Prüfer als tar.gz (kein Git); Festlegungen und LPI-Kontext liegen dafür in `simulator/docs/` (eine Quelle), Mailadresse in Headern bleibt, Lizenz klärt jeder Empfänger | Prüfer brauchen den vollständigen Kontext, nicht die AI-Basis | – |
|
||
| 29.10.2026 | reveal.js 5.1.0 unverändert unter `simulator/vendor/reveal/` (eingebautes Dracula-Theme) | offline lauffähig, kein CDN | – |
|
||
| 29.10.2026 | Neues Repo ohne Historie aus 2nd-brain; Regeln, `ai/common/`, `bin/`, Umgebung und KI-Freigaben übernommen | Basis wiederverwenden, keine 2nd-brain-Inhalte in der Historie | – |
|
||
| 29.10.2026 | Knowledge-Typ `topic` (`topics/`) für Lerninhalte je Prüfungsthema | LPIC-Inhalte von Umgebungswissen trennen | – |
|
||
|
||
## Offene Fragen
|
||
1. [ ] **Ziel:** LPIC-1 (101/102), danach LPIC-2 – Zieltermin?
|
||
2. [ ] **Remote:** Gitea-Repo anlegen (z. B. `br/lpic`) und als `origin` eintragen.
|
||
3. [ ] **Lab:** Welche Umgebung für Übungen (lokale Container, VMs, Distributionen)?
|
||
4. [ ] **Richtwert Bestehen:** 65 % ist eine Annahme (`pass_percent` in `exam.json`) – anpassen?
|
||
5. [ ] **Teilpunkte** bei Mehrfachauswahl: LPI dokumentiert nichts; Simulator wertet alles-oder-nichts.
|
||
6. [ ] **Klartext außerhalb der Bank:** Sitzungs-Export und `localStorage` enthalten die Fragen einer Sitzung im Klartext – ebenfalls verschlüsseln?
|
||
|
||
## Nächster Schritt
|
||
Betreiber testet den Simulator und sieht die Fragen fachlich durch (Rückmeldungen als Korrektur in `simulator/data/`); danach Objectives als Gliederung unter `topics/` anlegen.
|
||
|
||
## Sitzungsprotokoll
|
||
- 29.10.2026 – Repo aus `2ndbrain` abgeleitet: Stacks, Ansible-Inventar, `architecture.md`, 2nd-brain-Knowledge (`dockweb112`, `kellerbeast`, LUKS-Recherche) entfernt; `services/sultan` (Verweis aus `docker.md`) bereinigt behalten; `environment.md` und `privacy.md` auf Projekt angepasst; Knowledge-Typ `topic` ergänzt.
|
||
- 29.10.2026 – Prüfungssimulator gebaut (`simulator/`), Objectives 5.0 und LPI-Regeln recherchiert (Knowledge `research/lpi_exam_format`). Tests lokal: `build_bank.py -c` ok (180 Fragen); `tests/selftest.html` 40/40, `tests/ui_smoke.html` 27/27 in Chromium headless unter `file://` und über lokalen `http.server`; Start und Darstellung zusätzlich in Firefox headless geprüft. Nicht getestet: Mobilgeräte (nur 400-px-Fenster), Safari.
|
||
- 29.10.2026 – Bank verschlüsselt (ChaCha20, gegen Python-`cryptography` und RFC-8439-Vektor geprüft), Prüfvermerk `review`, Export `build_bank.py -e` → `simulator/dist/`; Lückentext-Feld war links verschoben (input inline-block, `margin:auto` griff nicht) → `display:block`. Tests: selftest 44/44, ui_smoke 27/27; Export über `python3 -m http.server 8080` (alle Schnittstellen) ausgeliefert und geprüft.
|
||
- 29.10.2026 – Prüferpaket: Doku nach `simulator/docs/` (exam_format, question_rules, decisions, REVIEW) und `simulator/AGENTS.md`; `build_bank.py -b` → `simulator/release/lpic-sim_<datum>.tar.gz` (ohne PSK, `dist/`, `release/`, Caches; ohne `ai/` und Umgebungsdaten). Entpackt in leerem Verzeichnis geprüft: Build, selftest 44/44, ui_smoke 27/27, alle Doku-Links innerhalb des Pakets. Lizenz klärt jeder Prüfer selbst (Betreiber).
|
||
- 30.10.2026 – Je 110 weitere Fragen für 101 und 102 (`questions_*_set2.json`, nach Gewicht verteilt) → je 200, gesamt 400; Qualitätsprüfung (Backticks, Buchstabenbezüge, doppelte Fragetexte) ohne Befund. Export-Fehler behoben: `build_bank.py -e` löschte das ganze `dist/` samt fremder Datei `lpic.tar.gz` (aus `~/Downloads` wiederhergestellt) – ersetzt jetzt nur noch `index.html`, `css`, `js`, `vendor`, Verzeichnis bleibt (laufender Server liefert weiter). Tests: selftest 44/44, ui_smoke 27/27; Server :8080 liefert 2×200 Fragen; Prüferpaket `release/lpic-sim_2026-10-30.tar.gz` neu.
|