# Step 0: input-normalization-slug ## Read First - /AGENTS.md - /PLAN.md - /PROGRESS.md - /docs/HARNESS.md - /docs/IMPLEMENTATION_PLAN.md - /docs/ARCHITECTURE.md - /docs/CONVERSION_POLICY.md - /phases/0-harness-foundation/index.json ## Task Implement deterministic input normalization and document slug generation for local PDF paths. Cover `pathlib` handling for Korean filenames, spaces, relative paths, absolute paths, and long Windows paths. The API should not invoke Marker, Nougat, PyMuPDF, or any conversion logic. ## Sprint Contract - Done means: the core package has a tested function or small module that normalizes input PDF paths and produces stable document slugs. - Hard thresholds: same input path and options produce the same slug; non-PDF paths fail clearly; Korean and spaced paths are tested; no parser import is introduced. - Files owned: `src/pdftomd/`, `tests/`, `PROGRESS.md`, `phases/1-core-runtime-contracts/index.json`. - Dependencies: Phase 0 package skeleton and model contracts. ## Acceptance Criteria ```powershell python scripts\validate_workspace.py .\venv\python.exe -m pytest tests ``` ## Verification 1. Run the acceptance commands. 2. Confirm `PROGRESS.md` records the handoff and validation result. 3. Update this phase index step to `completed`, `blocked`, or `error`. ## Do Not - Do not implement PDF parsing. - Do not write conversion output. - Do not add UI code.