# Step 1: pyqt-shell ## Read First - /AGENTS.md - /PLAN.md - /PROGRESS.md - /docs/HARNESS.md - /docs/IMPLEMENTATION_PLAN.md - /docs/UI_GUIDE.md - /phases/9-pyqt-thin-client/step0.md ## Task Create the minimal PyQt application shell for selecting a PDF, choosing output directory, and configuring runtime/formula options. Keep the interface quiet and utilitarian for repeated local conversion work. ## Sprint Contract - Done means: a minimal PyQt window can launch and bind controls to the core API config without running conversion by default. - Hard thresholds: UI does not duplicate conversion engine logic; long Korean paths remain visible via tooltip or equivalent; defaults match CLI. - Files owned: UI package/modules, tests if practical, `docs/UI_GUIDE.md`, `PROGRESS.md`, phase index. - Dependencies: UI API contract. ## Acceptance Criteria ```powershell python scripts\validate_workspace.py ``` ## Verification 1. Run the acceptance command. 2. If UI launch cannot be automated, record manual verification steps in `PROGRESS.md`. 3. Update this phase index. ## Do Not - Do not create a marketing landing page. - Do not call Marker/Nougat directly from widgets. - Do not make UI the only way to run conversion.