SHA256
S07: PDF-Build-Fehler endgueltig behoben. S06-Hotfix (array, calc, providecommand real) loeste das Problem nicht; nach Rebuild kam unveraendert "! LaTeX Error: No counter 'none' defined." Eigentliche Ursache: Pandoc 3.x emittiert fuer unnummerierte Tabellen direkt vor begin{longtable} die Zeile def LTcaptype none, ohne den Counter none zu definieren. Pandocs eigene Default-Vorlage definiert ihn (commit d835461 in Pandoc 3.8.2.1), Custom-Templates muessen das selbst tun (siehe Pandoc-Issue 11201). Fix: eine Zeile newcounter none direkt nach providecommand real im Tabellen-Block des Templates. Sandbox-Reproduktion exakter Fehlertext ohne Fix, sauberes PDF mit Fix. Auf Thomas' System: PDF wird erzeugt, Ausbildungs-Layout im PDF visuell bestaetigt. Iteration A fuer Teilgebiet 01 damit inhaltlich abgeschlossen. Build-UX-Fix: build.ps1 ergaenzt um Start-Sleep -Seconds 3 nach jedem fehlschlagenden Build-Schritt (Pflichtdatei-Check, PDF-Build, DOCX-Build), damit die rote Fehlerzeile lesbar bleibt bevor das PowerShell-Fenster zugeht. teilgebiete/01-lebenslauf.md um beide Fixes ergaenzt (zweistufige Hotfix-Geschichte, PDF-Bestaetigung, UX-Fix). agent-prompt.md Aktueller-Stand-Abschnitt fuer S08 fortgeschrieben mit verbleibender Iterationsreihenfolge B-C-D, Hinweise auf Pandoc-Versionsunterschied praeziser formuliert.
This commit is contained in:
@@ -1,4 +1,2 @@
|
|||||||
S06
|
S07
|
||||||
Session-Abschluss S06. Teilgebiet 01 Iteration A inhaltlich umgesetzt: Ausbildung als 2-Spalten-Layout via Pandoc-Multiline-Tabelle ohne Header, Template um array, calc, booktabs, longtable und providecommand real ergänzt, alle Linienbreiten auf 0pt. DOCX-Layout von Thomas visuell bestätigt (nur Default-Tabellenrahmen offen, Rahmen-Aus in Iteration B). PDF-Build mit Hotfix steht noch aus — erste Aufgabe der nächsten Session ist build.ps1 laufen lassen und das Ausbildungs-Layout im PDF prüfen.
|
PDF-Build-Fehler endgueltig behoben. S06-Hotfix (array, calc, providecommand real) loeste das Problem nicht; nach Rebuild kam unveraendert "! LaTeX Error: No counter 'none' defined." Eigentliche Ursache: Pandoc 3.x emittiert fuer unnummerierte Tabellen direkt vor begin{longtable} die Zeile def LTcaptype none, ohne den Counter none zu definieren. Pandocs eigene Default-Vorlage definiert ihn (commit d835461 in Pandoc 3.8.2.1), Custom-Templates muessen das selbst tun (siehe Pandoc-Issue 11201). Fix: eine Zeile newcounter none direkt nach providecommand real im Tabellen-Block des Templates. Sandbox-Reproduktion exakter Fehlertext ohne Fix, sauberes PDF mit Fix. Auf Thomas' System: PDF wird erzeugt, Ausbildungs-Layout im PDF visuell bestaetigt. Iteration A fuer Teilgebiet 01 damit inhaltlich abgeschlossen. Build-UX-Fix: build.ps1 ergaenzt um Start-Sleep -Seconds 3 nach jedem fehlschlagenden Build-Schritt (Pflichtdatei-Check, PDF-Build, DOCX-Build), damit die rote Fehlerzeile lesbar bleibt bevor das PowerShell-Fenster zugeht. teilgebiete/01-lebenslauf.md um beide Fixes ergaenzt (zweistufige Hotfix-Geschichte, PDF-Bestaetigung, UX-Fix). agent-prompt.md Aktueller-Stand-Abschnitt fuer S08 fortgeschrieben mit verbleibender Iterationsreihenfolge B-C-D, Hinweise auf Pandoc-Versionsunterschied praeziser formuliert.
|
||||||
Tooling-Fix in checkpoint.ps1 abgeschlossen (Quoting-Bug, Pipe-Validierung, Whitespace-Normalisierung, Pre-flight-Checks, atomarer Rollback bei Fehler).
|
|
||||||
agent-prompt.md Aktueller-Stand-Abschnitt für S07 fortgeschrieben mit verbleibender Iterationsreihenfolge B-C-D, neuen Lehren aus S06 dokumentiert (Sandbox-Reads über NTFS-Mount können stale sein, Sandbox-Pandoc 2.9 vs Thomas' Pandoc 3.x Output-Unterschiede).
|
|
||||||
|
|||||||
+12
-14
@@ -85,28 +85,26 @@ Setze zwischen sinnvollen Zwischenständen Checkpoints (z.B. nach "Marketing.md
|
|||||||
|
|
||||||
## Aktueller Stand / Nächste Aufgabe
|
## Aktueller Stand / Nächste Aufgabe
|
||||||
|
|
||||||
**Letzte Session:** S06 (2026-04-25)
|
**Letzte Session:** S07 (2026-04-26)
|
||||||
|
|
||||||
**Was wurde gemacht:**
|
**Was wurde gemacht:**
|
||||||
- **Iteration A für Teilgebiet 01 — Ausbildung als 2-Spalten-Layout, Tabellen-Variante.** Erster Versuch mit Pandoc-Definition-List ergab im PDF das gewünschte 2-Spalten-Layout, im DOCX aber nicht (Pandoc rendert Definition-Lists als zwei separate Absatzstile, Word kann zwei Absätze nicht in eine Zeile zwingen). Auf Wunsch von Thomas auf Pandoc-Multiline-Tabelle ohne Header umgestellt — Strich-Verhältnis 10:70 ergibt Spaltenbreiten ca. 14 % / 80 %. `templates/template.tex` um Tabellen-Setup erweitert: `array`, `calc`, `booktabs`, `longtable` geladen, `\providecommand{\real}[1]{#1}` (Pandoc-Hilfsmakro) ergänzt, alle booktabs-Linienbreiten und Rule-Separationen auf 0 pt, `\LTpre`/`\LTpost` auf 0.4 em.
|
- **PDF-Build-Fehler endgültig behoben.** Der S06-Hotfix (array, calc, providecommand real) hat das Problem nicht beseitigt — nach Rebuild auf Thomas' System kam unverändert `! LaTeX Error: No counter 'none' defined.` Eigentliche Ursache: Pandoc 3.x emittiert für unnummerierte Tabellen direkt vor `\begin{longtable}` die Zeile `\def\LTcaptype{none}`, ohne den Counter `none` zu definieren. Sobald longtable intern `\refstepcounter{\LTcaptype}` aufruft, bricht LaTeX ab. Pandocs eigene Default-Vorlage definiert den Counter (commit d835461 in 3.8.2.1), Custom-Templates müssen das selbst tun. Siehe [Pandoc-Issue #11201](https://github.com/jgm/pandoc/issues/11201). Fix: eine Zeile `\newcounter{none}` direkt nach `\providecommand{\real}` im Tabellen-Block des Templates. In der Sandbox sauber reproduziert (gleicher Fehlertext ohne Fix, sauberes PDF mit Fix). Auf Thomas' System: PDF wird erzeugt, Ausbildungs-Layout im PDF visuell bestätigt.
|
||||||
- **Hotfix für PDF-Build-Fehler.** Erster Build auf Thomas' System schlug mit `! LaTeX Error: No counter 'none' defined.` in der Tabellen-Spaltenangabe fehl. Ursache: Pandoc 3.x emittiert calc-basierte Spaltenbreiten der Form `p{(\columnwidth - 2\tabcolsep) * \real{0.8554}}`, die `calc` und `\real` voraussetzen. Sandbox-Pandoc 2.9 emittiert die simplere `ll`-Spaltenform und hat den Fehler nicht reproduziert (wichtige Lehre: Sandbox-Verifikation deckt Pandoc-Versionsunterschiede nicht ab). Hotfix mit synthetischem Pandoc-3.x-Spalten-Format in der Sandbox kompiliert.
|
- **Iteration A für Teilgebiet 01 damit inhaltlich abgeschlossen** (Tabellen-Variante mit zwei Spalten ca. 14 % / 80 %, rahmenlos im PDF, native Word-Tabelle im DOCX — Rahmen-Aus folgt in Iteration B).
|
||||||
- **DOCX nach Tabellen-Revision visuell bestätigt:** Tabelle sieht gut aus; nur die Default-Word-Tabellenrahmenlinien sind noch da (Rahmen-Aus erfolgt in Iteration B über `reference.docx`).
|
- **Build-UX-Fix:** `build/build.ps1` ergänzt um `Start-Sleep -Seconds 3` nach jedem fehlschlagenden Build-Schritt (Pflichtdatei-Check, PDF-Build, DOCX-Build). Vorher schloss sich das PowerShell-Fenster bei Doppelklick auf das Skript so schnell, dass die rote Fehlerzeile nicht lesbar war. Bei mehreren Fehlern in einem Lauf akkumulieren sich die Pausen — gewollt.
|
||||||
- **PDF-Build mit Hotfix steht aus** — Thomas hat nach dem Hotfix-Commit nicht erneut gebaut. Erste Aufgabe der nächsten Session: `build/build.ps1` laufen lassen, Hotfix verifizieren.
|
|
||||||
- **Tooling-Fix: `checkpoint.ps1` robust gemacht.** Im Verlauf der Session ist ein Hotfix-Commit am PowerShell-Argument-Quoting gescheitert, weil die Commit-Message via `git commit -m $commitMsg` mit doppelten Anführungszeichen im Summary von PS5.1 zerlegt wurde. Behoben durch Übergabe der Commit-Message über eine Temp-Datei mit `git commit -F`. Zusätzlich: Pipe-Zeichen im Summary werden vorab abgelehnt (kollidieren sonst mit Changelog-Format), Whitespace wird normalisiert, Pre-flight-Checks für `index.lock` und Cleanliness von `changelog.md`, atomarer Rollback bei Fehler im Hauptablauf (changelog-Anhang und Index-Stagung werden zurückgerollt), Cleanup-Robustheit in `finally`-Block.
|
|
||||||
|
|
||||||
**Nächste Aufgabe:** Teilgebiet 01 — drei verbleibende Iterationen in dieser Reihenfolge:
|
**Nächste Aufgabe:** Teilgebiet 01 — drei verbleibende Iterationen in dieser Reihenfolge:
|
||||||
1. **Verifikation Iteration A**: `build/build.ps1` einmal laufen lassen, prüfen dass PDF jetzt erzeugt wird und das Ausbildungs-Layout dem PDF-Wunsch entspricht (linke Spalte Datum normal, rechte Spalte Titel fett).
|
1. **B) `templates/reference.docx` in Word polieren** — Header/Footer setzen, Schriften auf Calibri vereinheitlichen, Listen-Schutz „Keep with next" und Widow-Control via Word-Stile, Tabellen-Stile so konfigurieren, dass die Ausbildungs-Tabelle ohne Rahmen rendert (Default-Tabellenstil oder benannter Stil).
|
||||||
2. **B) `templates/reference.docx` in Word polieren** — Header/Footer setzen, Schriften auf Calibri vereinheitlichen, Listen-Schutz „Keep with next" und Widow-Control via Word-Stile, Tabellen-Stile so konfigurieren, dass die Ausbildungs-Tabelle ohne Rahmen rendert (Default-Tabellenstil oder benannter Stil).
|
2. **C) Foto-Einbindung** in cv.md mit Pandoc-Image-Syntax und Template-Anpassung für Position/Größe (z.B. oben rechts neben Name, ca. 3 cm).
|
||||||
3. **C) Foto-Einbindung** in cv.md mit Pandoc-Image-Syntax und Template-Anpassung für Position/Größe (z.B. oben rechts neben Name, ca. 3 cm).
|
3. **D) Hyphenation-Feintuning für PDF** — kurze Wortteile am Zeilenanfang mit höherer Penalty oder gezielten `\hyphenation`-Ausnahmen reduzieren. Iterativ.
|
||||||
4. **D) Hyphenation-Feintuning für PDF** — kurze Wortteile am Zeilenanfang mit höherer Penalty oder gezielten `\hyphenation`-Ausnahmen reduzieren. Iterativ.
|
|
||||||
|
|
||||||
Nach D): Status von Teilgebiet 01 in `zentral-index.md` auf „abgeschlossen" setzen (R2-OK von Thomas). Anschließend nächstes Teilgebiet nach Priorität (laut Index Teilgebiet 02 „Zeugnis von ASMPT").
|
Nach D): Status von Teilgebiet 01 in `zentral-index.md` auf „abgeschlossen" setzen (R2-OK von Thomas). Anschließend nächstes Teilgebiet nach Priorität (laut Index Teilgebiet 02 „Zeugnis von ASMPT").
|
||||||
|
|
||||||
**Offene Punkte (unverändert seit S04):** Zuschnitt und Festpreise der KI-Produkte (marketing.md Abschnitt 2), KMU-Direkthonorarsatz festlegen (marketing.md Abschnitt 2), Vergütungsmodell-Wahl bei erstem konkreten Fall (Notiz in marketing.md Abschnitt 2).
|
**Offene Punkte (unverändert seit S04):** Zuschnitt und Festpreise der KI-Produkte (marketing.md Abschnitt 2), KMU-Direkthonorarsatz festlegen (marketing.md Abschnitt 2), Vergütungsmodell-Wahl bei erstem konkreten Fall (Notiz in marketing.md Abschnitt 2).
|
||||||
|
|
||||||
**Hinweise für die nächste Session:**
|
**Hinweise für die nächste Session:**
|
||||||
- **Sandbox-Reads über den NTFS-Mount können stale/inkonsistent sein.** In S06 zeigte mir die Sandbox mehrfach Dateiinhalte, die im echten Repo nicht existierten (vermeintliche Truncation auf Working-Tree-Dateien, vermeintliche Index-Korruption). Thomas' PowerShell-Outputs waren immer die Wahrheitsquelle. Wenn Sandbox-Reads Schäden zeigen, die unplausibel sind, **nicht panisch reagieren** — erst Thomas via PowerShell verifizieren lassen, bevor Reparaturmaßnahmen ergriffen werden.
|
- **Sandbox-Pandoc ist 2.9.x, Thomas' System läuft Pandoc 3.x.** Output-Unterschiede zwischen den Versionen können Build-Probleme verursachen. Sandbox-Pandoc emittiert weder die calc-basierten Spaltenbreiten (`p{... * \real{...}}`) noch `\def\LTcaptype{none}` — beides Pandoc-3.x-Eigenheiten. Sandbox-Verifikation des kompletten Pipeline-Laufs mit `pandoc cv.md → PDF` deckt diese Bugs nicht ab. Bei Fehlern, die nur auf Thomas' System auftreten, **synthetisch das Pandoc-3.x-Output-Fragment in einer Mini-Tex-Datei nachbauen** und damit gegen das Template kompilieren.
|
||||||
- **Sandbox-Schreibvorgänge sind aber zuverlässig** (nach Thomas' Bestätigung mehrerer Schreibziele in S06). Sowohl Write-Tool als auch `mcp__workspace__bash` mit Heredoc funktionieren. Bei längeren Skript-Dateien (>100 Zeilen) bleibt Heredoc trotzdem die robustere Wahl.
|
- **Sandbox-Reads über den NTFS-Mount können stale/inkonsistent sein.** Wenn Sandbox-Reads Schäden zeigen, die unplausibel sind, **nicht panisch reagieren** — erst Thomas via PowerShell verifizieren lassen, bevor Reparaturmaßnahmen ergriffen werden.
|
||||||
|
- **Sandbox-Schreibvorgänge sind zuverlässig** (Write-Tool und Heredoc via Bash). Bei längeren Skript-Dateien (>100 Zeilen) bleibt Heredoc trotzdem die robustere Wahl.
|
||||||
- **Sandbox kann nichts an `.git/` schreiben** (NTFS-Permission-Issue): Lock-Files, korrupte Index — alles muss von PowerShell aus repariert werden.
|
- **Sandbox kann nichts an `.git/` schreiben** (NTFS-Permission-Issue): Lock-Files, korrupte Index — alles muss von PowerShell aus repariert werden.
|
||||||
- **Sandbox-Pandoc ist 2.9.x, Thomas' System läuft Pandoc 3.x.** Output-Unterschiede zwischen den Versionen können Build-Probleme verursachen (siehe Hotfix für `\real` und `calc`). Im Zweifel synthetisch den 3.x-Output nachbauen und gegen Template testen.
|
- **`checkpoint.ps1` ist robust** gegen Anführungszeichen, Pipes, Whitespace-Anomalien und Index-Lock-Reste. `.checkpoint-pending.txt` darf ganz normal Sonderzeichen enthalten.
|
||||||
- **`checkpoint.ps1` ist jetzt robust** gegen Anführungszeichen, Pipes, Whitespace-Anomalien und Index-Lock-Reste. `.checkpoint-pending.txt` darf wieder ganz normal Sonderzeichen enthalten.
|
- **`build.ps1` pausiert bei Fehler 3 Sekunden pro fehlgeschlagenem Schritt.** Nicht überrascht sein, wenn ein fehlerhafter Lauf entsprechend länger braucht.
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ foreach ($f in @($sourceFile, $templateTex, $referenceDoc)) {
|
|||||||
if ($overallExit -ne 0) {
|
if ($overallExit -ne 0) {
|
||||||
Write-Host "===== Abbruch: Pflichtdateien fehlen =====" -ForegroundColor Red
|
Write-Host "===== Abbruch: Pflichtdateien fehlen =====" -ForegroundColor Red
|
||||||
Write-Log "===== Abbruch: Pflichtdateien fehlen ====="
|
Write-Log "===== Abbruch: Pflichtdateien fehlen ====="
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
exit $overallExit
|
exit $overallExit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,6 +99,8 @@ if ($pdfExit -eq 0 -and (Test-Path $outputPdf)) {
|
|||||||
Write-Host " PDF FEHLER (Exit $pdfExit) - Details siehe build.log" -ForegroundColor Red
|
Write-Host " PDF FEHLER (Exit $pdfExit) - Details siehe build.log" -ForegroundColor Red
|
||||||
Write-Log "PDF FEHLER (Exit $pdfExit)"
|
Write-Log "PDF FEHLER (Exit $pdfExit)"
|
||||||
$overallExit = 1
|
$overallExit = 1
|
||||||
|
# Kurz pausieren, damit die rote Fehlerzeile lesbar bleibt, falls das Fenster danach zugeht
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- DOCX-Build --------------------------------------------------------------
|
# --- DOCX-Build --------------------------------------------------------------
|
||||||
@@ -123,6 +126,8 @@ if ($docxExit -eq 0 -and (Test-Path $outputDocx)) {
|
|||||||
Write-Host " DOCX FEHLER (Exit $docxExit) - Details siehe build.log" -ForegroundColor Red
|
Write-Host " DOCX FEHLER (Exit $docxExit) - Details siehe build.log" -ForegroundColor Red
|
||||||
Write-Log "DOCX FEHLER (Exit $docxExit)"
|
Write-Log "DOCX FEHLER (Exit $docxExit)"
|
||||||
$overallExit = 1
|
$overallExit = 1
|
||||||
|
# Kurz pausieren, damit die rote Fehlerzeile lesbar bleibt, falls das Fenster danach zugeht
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
}
|
}
|
||||||
|
|
||||||
$endTs = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
|
$endTs = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
|
||||||
|
|||||||
Binary file not shown.
@@ -162,23 +162,23 @@ endobj
|
|||||||
|
|
||||||
endobj
|
endobj
|
||||||
74 0 obj
|
74 0 obj
|
||||||
<< /S /GoTo /D (section*.3) >>
|
<< /S /GoTo /D (none.1) >>
|
||||||
endobj
|
endobj
|
||||||
76 0 obj
|
77 0 obj
|
||||||
(\376\377\000T\000r\000a\000i\000n\000i\000n\000g\000s)
|
(\376\377\000T\000r\000a\000i\000n\000i\000n\000g\000s)
|
||||||
|
|
||||||
endobj
|
endobj
|
||||||
77 0 obj
|
78 0 obj
|
||||||
<< /S /GoTo /D (section*.3) >>
|
<< /S /GoTo /D (none.1) >>
|
||||||
endobj
|
endobj
|
||||||
79 0 obj
|
80 0 obj
|
||||||
(\376\377\000K\000e\000n\000n\000t\000n\000i\000s\000s\000e)
|
(\376\377\000K\000e\000n\000n\000t\000n\000i\000s\000s\000e)
|
||||||
|
|
||||||
endobj
|
endobj
|
||||||
80 0 obj
|
81 0 obj
|
||||||
<< /S /GoTo /D [ 81 0 R /Fit ] >>
|
<< /S /GoTo /D [ 82 0 R /Fit ] >>
|
||||||
endobj
|
endobj
|
||||||
84 0 obj
|
85 0 obj
|
||||||
<< /Filter /FlateDecode /Length 2849 >>
|
<< /Filter /FlateDecode /Length 2849 >>
|
||||||
stream
|
stream
|
||||||
xÚÍ[ÍŽ#¹␍¾÷Søº"Rÿ€a m·Ø[’¾-ö´Aö’9$—¼~$Q¢(UÙ]=Ó�]Œj—%ÅŸ�©uøý ?=©v]¼‰
|
xÚÍ[ÍŽ#¹␍¾÷Søº"Rÿ€a m·Ø[’¾-ö´Aö’9$—¼~$Q¢(UÙ]=Ó�]Œj—%ÅŸ�©uøý ?=©v]¼‰
|
||||||
@@ -193,31 +193,31 @@ iw
|
|||||||
ö1ó8××…â¥tM¾JWŒZW£3ù¿M):l6IrlË›«Ú/=‘²�¨_iÉo²…L²Æ°8qt¦{F<‹ÆÿÉØ1R¸äëí‘ë`°‰ÓÜñ˜Üf¬+¨nç|˜‰-hýPE¼o\ûŽq§¾^åá–Ù\½”w.Pê¦ÕB}É—þJ‡œ&ÔÙh‡æ—ö+º¦„n`' Mƒg@‚Î.e¯mÓOÊdíü.þëÙ‡=ª©"Ë]ŽÊB¢Ül½c¤Ú_FK¹³zãKžËéõ+^-*cïcê¡�ieÔw·^ ½©õjÇÖ+¨�Þ+íöQï¦6¦þxsB§�º Sݤdå!Ö¾Nî{=.ÄPH÷¾ÐÏ¡#µÄÏ'Òá)�¯x4ÖâƒssØ8BØ(Û{¥½tLœ9 •Üï£oöÃÂb®[?ö¢Ã&ùíÝÄÊ!W):�&êÍŒ“e£¥tSÿB}ÒÀ/>'¢ÙzšmÏö<ûÇêEœhÊ�,z¾™W¼G‹—u#ϯyå™�Û,¼òmÓÝ*¹‚¡®dx~Ã¥Šâ×1ÞŒ’`Ú„8Åx”M†Å8�rër#Ή^Mh¼¦Wü¬[}Û"«¶¿y©úúõ | |||||||