# Step 0: markdown-block-renderer ## Read First - /AGENTS.md - /PLAN.md - /PROGRESS.md - /docs/HARNESS.md - /docs/IMPLEMENTATION_PLAN.md - /docs/ARCHITECTURE.md - /docs/CONVERSION_POLICY.md - /phases/4-semantic-enrichment/index.json ## Task Implement block-level Markdown rendering for headings, paragraphs, lists, blockquotes, formulas, captions, and simple references. Renderer tests should use internal block fixtures, not live PDF parsing. ## Sprint Contract - Done means: core block types render to deterministic Markdown strings with focused tests. - Hard thresholds: math delimiter validation is applied; renderer does not inject warnings/errors into Markdown; output is stable across runs. - Files owned: `src/pdftomd/renderer.py`, tests, `PROGRESS.md`, `phases/5-markdown-rendering-assets/index.json`. - Dependencies: Phase 4 enriched blocks and Phase 3 formula outputs. ## Acceptance Criteria ```powershell python scripts\validate_workspace.py .\venv\python.exe -m pytest tests ``` ## Verification 1. Run the acceptance commands. 2. Confirm renderer tests are focused, not full snapshots. 3. Update `PROGRESS.md` and this phase index. ## Do Not - Do not invoke Marker or Nougat. - Do not implement table/asset file writing in this step. - Do not add sidecar document outputs.