Skip to content

phd-pdf-images-gate: 44/44 \includegraphics resolve to ZERO — slug-vs-title mismatch #775

@gHashTag

Description

@gHashTag

phd-pdf-images-gate: 44/44 \includegraphics resolve to ZERO — slug-vs-title mismatch

TL;DR: ВСЕ 44 уникальных \includegraphics{} в docs/phd/**/*.tex используют title-pattern (ch01-introduction.png), но на диске PNG лежат slug-pattern (00-monad.png). tectonic ест отсутствующие graphics молча → PDF без картинок. Это нарушает phd-pdf-images-gate skill (тогда tectonic exit-code ≠ единственный success signal).


R5-verified state (commit 756cf359 on main @ 2026-05-13T11:53Z)

$ grep -rohE '\\includegraphics(\[[^]]*\])?\{[^}]+\}' --include="*.tex" docs/phd/ \
    | sed -E 's/.*\{([^}]+)\}/\1/' | sort -u | wc -l
44

$ ls assets/illustrations/ | wc -l
44   # ровно 44 PNG — но slug-pattern!

Sample mismatch (первые 5)

.tex references (title-pattern) assets/illustrations/ (slug-pattern)
app-a-cover-abstract.png 00-monad.png
app-b-golden-ledger.png 01-golden-egg.png
app-c-acknowledgments.png 02-golden-cut.png
app-d-reproducibility-scripts.png 03-golden-harvest.png
app-f-bitstream-archive.png 04-golden-scales.png
\graphicspath{{assets/}{../../assets/illustrations/}}

Ни один из prefix × target × ext (prefix ∈ {"",assets/,../}, ext ∈ {``,.png,`.jpg`,`.pdf`}) не резолвится → 0/44 match.

Полный список 44 targets: см. attachment /tmp/all_targets.txt локально или regen командой выше.

Why это критично

  1. tectonic exit-code = 0 при отсутствующих graphics — silent failure. См. skill phd-pdf-images-gate.
  2. Defense 2026-06-15 — PhD monograph должен иметь все illustrations (анхор da-vinci-azbuka).
  3. R5-violation: ранее tri-phd-build говорил "GREEN" хотя картинок нет.

Две альтернативы фикса (нужно решение оператора)

Option A: переименовать \includegraphics{} в .tex → slug-pattern

  • Pro: PNG-файлы остаются как есть (canonical naming от художника)
  • Con: 44 правки в LaTeX (по 1-2 на chapter/appendix)
  • Compatible с: da-vinci-azbuka v5.16 (он именно slug-pattern предписывает)

Option B: добавить symlinks slug → title в assets/illustrations/

ln -s 00-monad.png assets/illustrations/cover_v4.png
ln -s 01-golden-egg.png assets/illustrations/ch01-introduction.png
# ... ×44
  • Pro: 0 правок в .tex, обратимо
  • Con: 44 symlinks в git, slug↔title mapping нужно где-то документировать
  • Compatible с: phd-architectural-blueprint-figures v1.0 (filename = chapter name)

Option C (hybrid, рекомендуется): centralize mapping

  1. Один файл docs/phd/figure-map.tex с \newcommand{\figCh01}{00-monad} × 44
  2. В .tex использовать \includegraphics{\figCh01} вместо \includegraphics{ch01-introduction.png}
  3. Художник переименовывает PNG → меняем только map, .tex не трогаем

Pre-registered acceptance (для phd-pdf-images-gate)

# Все 3 условия должны быть зелёными:
# 1. Каждый \includegraphics{T} резолвится к файлу
for t in $(grep -rohE '\\includegraphics(\[[^]]*\])?\{[^}]+\}' --include="*.tex" docs/phd/ \
              | sed -E 's/.*\{([^}]+)\}/\1/' | sort -u); do
    found=0
    for pre in "" "assets/" "../../assets/illustrations/"; do
        for ext in "" ".png" ".jpg" ".pdf"; do
            [ -f "docs/phd/${pre}${t}${ext}" ] && found=1 && break 2
        done
    done
    [ $found -eq 0 ] && echo "MISSING: $t"
done | wc -l   # должно быть 0

# 2. tectonic PDF содержит N=44 graphics
pdfimages -list docs/phd/main.pdf | tail -n +3 | wc -l   # ≥ 44

# 3. Hash каждой картинки = hash файла на диске (no silent placeholder)

Related

  • Sibling skill: phd-pdf-images-gate v1.0 — это именно тот kind of silent failure, который skill должен ловить.
  • Sibling skill: da-vinci-azbuka v5.16 — addresses slug-vs-title mismatch (Option A).
  • Sibling skill: phd-architectural-blueprint-figures v1.0 — title-pattern naming (Option B/C).
  • Defense 2026-06-15 — hard deadline.

Anchor

φ² + φ⁻² = 3 · R5-HONEST · DOI 10.5281/zenodo.19227877 (B007) · Defense 2026-06-15

🤖 Filed by Trinity Queen Hive (PASS-9 «все фиксить!!»)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions