fix(render): *** i ## nie wyciekają do PDF (markdown→LaTeX) #39

Merged
gitea merged 1 commits from fix/pdf-markdown-md-markers into master 2026-07-28 15:19:04 +00:00
Owner

Zgłoszony problem: PDF wciąż zawiera ## i ***. Sprawdziłem — i są dwie
warstwy
przyczyny.

1 · Realne dziury w konwersji (naprawione tym PR)

  • ***mocne*** (bold+italic) łapało się jako ** + zgubiona gwiazdka →
    \textbf{*mocne}*. W druku zostawał wisior *. Dodana alternatywa
    ***…*** PRZED **/*\textbf{\textit{…}}.
  • ##Tytuł bez spacji, zamknięty ATX (## Tytuł ##) i 7+ kratek
    trafiały do akapitu i były eskejpowane jako \#\#…. Pułapka: \# w LaTeXu
    renderuje się jako #, więc w PDF widać ##, choć w .tex jest \#\#.
    Właśnie dlatego stary test ("##" not in out) tego nie łapał — w \#\# nie ma
    podłańcucha ##. Nagłówki traktujemy teraz pobłażliwie i żaden znacznik nie ostaje.

Nowe testy patrzą pod kątem renderu (brak \#, brak wiszącej gwiazdki poza
gwiazdką poleceń \section*). +7 regresji, render 34 ✓.

2 · Ważniejsze: markdown NIGDY nie trafił na klaster

Diagnoza rejestru i CI:

  • W rejestrze jest jeden tag obrazu render: 56131b20 — sprzed markdownu
    (commit, który tylko DODAŁ workflow build-render). Działający pod ma zero
    wystąpień markdown_to_latex.
  • Obraz z markdownem (#37, 623603b1) nie istniejeMANIFEST_UNKNOWN.
  • build-render (obraz z TeX Live, setki MB) padł na runnerze:
    failed to create container: no space left on device.

Czyli sama poprawka konwersji nie wystarczy — dopóki build-render nie zbuduje i
nie wypchnie obrazu render z tym kodem, na kluster nic nie zjedzie.

Do zrobienia po Twojej stronie (infra runnera): zwolnić miejsce na runnerze
(docker system prune -af / większy dysk), potem odpalić build-render
(merge tego PR dotyka services/render/**, więc powinien go wyzwolić; albo ręcznie
workflow_dispatch). Gdy obraz z markdownem się wypchnie, image-updater go
promuje (będzie najnowszy) i PDF wreszcie dostanie prawdziwe formatowanie.

Zgłoszony problem: PDF wciąż zawiera `##` i `***`. Sprawdziłem — i są **dwie warstwy** przyczyny. ## 1 · Realne dziury w konwersji (naprawione tym PR) - **`***mocne***`** (bold+italic) łapało się jako `**` + zgubiona gwiazdka → `\textbf{*mocne}*`. W druku zostawał **wisior `*`**. Dodana alternatywa `***…***` PRZED `**`/`*` → `\textbf{\textit{…}}`. - **`##Tytuł` bez spacji**, **zamknięty ATX** (`## Tytuł ##`) i **7+ kratek** trafiały do akapitu i były eskejpowane jako `\#\#…`. Pułapka: `\#` w LaTeXu **renderuje się jako `#`**, więc w PDF widać `##`, choć w `.tex` jest `\#\#`. Właśnie dlatego stary test (`"##" not in out`) tego nie łapał — w `\#\#` nie ma podłańcucha `##`. Nagłówki traktujemy teraz pobłażliwie i żaden znacznik nie ostaje. Nowe testy patrzą pod kątem **renderu** (brak `\#`, brak wiszącej gwiazdki poza gwiazdką poleceń `\section*`). **+7 regresji, render 34 ✓.** ## 2 · Ważniejsze: markdown NIGDY nie trafił na klaster Diagnoza rejestru i CI: - W rejestrze jest **jeden** tag obrazu render: **`56131b20`** — sprzed markdownu (commit, który tylko DODAŁ workflow build-render). Działający pod ma zero wystąpień `markdown_to_latex`. - Obraz z markdownem (#37, `623603b1`) **nie istnieje** — `MANIFEST_UNKNOWN`. - `build-render` (obraz z TeX Live, setki MB) **padł na runnerze**: `failed to create container: no space left on device`. Czyli sama poprawka konwersji nie wystarczy — dopóki `build-render` nie zbuduje i nie wypchnie obrazu render z tym kodem, na kluster nic nie zjedzie. **Do zrobienia po Twojej stronie (infra runnera):** zwolnić miejsce na runnerze (`docker system prune -af` / większy dysk), potem odpalić `build-render` (merge tego PR dotyka `services/render/**`, więc powinien go wyzwolić; albo ręcznie `workflow_dispatch`). Gdy obraz z markdownem się wypchnie, image-updater go promuje (będzie najnowszy) i PDF wreszcie dostanie prawdziwe formatowanie.
gitea added 1 commit 2026-07-28 14:13:18 +00:00
fix(render): potrójne gwiazdki i kratki bez spacji nie wyciekają do PDF
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 11m9s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m59s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 39s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 18s
build-render / build (push) Successful in 8m52s
build / build (push) Successful in 7m9s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 13m40s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 10m3s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 36s
Testy / Kontrola składni wszystkich warstw (push) Successful in 28s
998c83b26e
Dwie realne dziury w markdown→LaTeX, obie WIDOCZNE w gotowym PDF:

1. `***mocne***` (pogrubienie+kursywa) łapało się jako `**` + zgubiona gwiazdka →
   `\textbf{*mocne}*`, czyli w druku zostawał wisior `*`. Dokładam alternatywę
   `\*\*\*…\*\*\*` PRZED `**` i `*` (kolejność od najdłuższego znacznika) →
   `\textbf{\textit{…}}`.

2. Nagłówek bez spacji po kratkach (`##Tytuł`), zamknięty ATX (`## Tytuł ##`)
   i 7+ kratek trafiały do akapitu i były eskejpowane jako `\#\#…`. Pułapka: w
   LaTeXu `\#` renderuje się jako `#`, więc w PDF WIDAĆ było `##`, choć w źródle
   `.tex` jest `\#\#`. Dlatego stary test (`"##" not in out`) tego nie łapał —
   podłańcuch `##` nie występuje w `\#\#`. Nagłówki traktujemy teraz pobłażliwie:
   dowolna liczba kratek na starcie, spacja nieobowiązkowa, końcowe kratki
   ucinane, gołe kratki bez treści pomijane. Żaden znacznik nagłówka nie ostaje.

Nowa asercja w testach patrzy pod kątem RENDERU: brak `\#` i brak wiszącej
gwiazdki (poza gwiazdką poleceń `\section*` itd.). +7 testów regresji, render 34.

UWAGA DEPLOY: obraz render w rejestrze to wciąż 56131b20 (sprzed markdown, LOG-27),
bo build-render (TeX Live) padał na runnerze z „no space left on device". Ten PR
dotyka services/render/**, więc powinien wywołać build — ale najpierw trzeba
zwolnić miejsce na runnerze, inaczej i ten build padnie.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea merged commit 998c83b26e into master 2026-07-28 15:19:04 +00:00
gitea deleted branch fix/pdf-markdown-md-markers 2026-07-28 15:19:05 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/astrololo#39