Skip to content

PageLabel-Namespace propagiert nicht in Stage-8-Eval (+ version-gemischtes --load-drafts) #80

Description

@TillQuandel

Follow-up aus dem Bug-Hunt zu PR #79 (Cross-Model: Orchestrator-Wiring-Review). PR #79 stellte die Note-Seitenanker auf Druckseiten-/PageLabels um — zwei Konsumenten ziehen die Seitenzahl aber weiter aus dem physischen Index. Beides diagnostisch/Edge-Case, nicht gating (Headline-Metriken hallucination/coverage sind text-basiert und unverfälscht).

Fund 1 (MED) — Stage-8-Eval nutzt physischen PyMuPDF-Index

generative/eval_quality_v2.py:194 (_pdf_sentences) nummeriert range(1, len(pdf_doc)+1) + enumerate(pages, start=1), und generative/eval_quality.py:88 (_extract_page_text) nutzt pdf_doc[page_num-1] — beides physische 1-basierte Seiten. Die geschriebene Note zitiert nach PR #79 aber Druckseiten-Labels (z. B. „S. 159" für physische Seite 178).

Folge: best_page (persistiert in quality_history.jsonl) und die dem Judge gezeigten Pool-Seiten-Header (eval_quality_v4.py [K1] Seiten {pages}) liegen in einem anderen Namespace als die Note. Vor PR #79 nummerierte pdf_to_pages für alle PDFs (i+1, p) → gleicher Namespace; die Divergenz ist durch PR #79 neu. Betrifft nur label-tragende PDFs (Gate aktiv).

Fix-Skizze: Eval-Seitennummerierung ebenfalls aus _pdf_page_labels/_usable_page_labels ableiten (gemeinsame Quelle mit pdf_chunker), damit best_page + Judge-Pool im Druckseiten-Namespace liegen.

Fund 2 (LOW) — --load-drafts über Pipeline-Versionsgrenze

orchestrator.py lädt Drafts mit eingefrorenen source_anchors, figure_alt.embed_alt_figures liest die /PageLabels jedoch live neu aus der PDF. Wurde der State von einer Pre-PageLabel-Pipeline gespeichert (Anker = Form-Feed „S. 5"), berechnet das neue figure_alt Label-Seiten („S. 163") → bind_figures_to_drafts findet 0 Matches → alle Figuren still als no_match verworfen. Nur bei versions-gemischtem save/load; selten.


Quelle: statischer Orchestrator-Wiring-Review (Explore-Subagent), 2026-06-27. Fund 1 im echten Code (eval_quality_v2.py:194, eval_quality.py:88) verifiziert; Fund 2 als Edge-Case gemeldet.

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