- Add verbose=False to all stub function signatures in cli dispatch tests
- Switch test_verbose_output_printed from capsys to caplog since repair
diagnostics now route through logging (stderr) not print (stdout)
- config.py: worker_script now points to paperforge/worker/__init__.py
(pipeline/ removed in Phase 12)
- worker/status.py: doctor checks paperforge.worker importability
instead of old literature_pipeline.py existence
- tests/test_config.py: update assertion for new worker_script name
- Update all pipeline.worker.scripts patches to paperforge.worker.*
- Fix test_base_views.py and test_base_preservation.py imports
- Update test_legacy_worker_compat.py for new module paths
- Fix OCR test patches to target correct module namespaces
- Update test_command_docs.py to reference new pf-* command docs
- Add TestUnifiedCommandsInUserDocs to verify no old commands in primary docs
- Update test_smoke.py docstring for sync command
- Wrap figure-map, chart-type-map, and scaffold generation in try/except
- Track written files for cleanup on failure
- Save original formal note content before modification
- On exception: delete partial files and restore original note
- Add test_prepare_rollback.py with 3 tests:
- figure-map failure triggers rollback
- scaffold failure triggers rollback
- success path leaves all files intact
- Fix zotero_key quote stripping in scan_deep_reading_queue
- Replace direct meta.get('ocr_status') read with validate_ocr_meta() call
in run_deep_reading() to properly validate OCR completion status
- Fixes bug where meta.json with ocr_status=done but missing files
incorrectly marked paper as ready for deep reading
- validate_ocr_meta() checks 7 conditions before returning 'done':
file existence, sizes, page markers, etc.
- done_incomplete status is correctly treated as blocked (not ready)
by existing blocked logic at line 2810
- Add regression test: test_smoke_deep_reading_done_incomplete_is_blocked
- Test pending->queued transition on job submission
- Test processing->done transition when polling returns success
- Test processing->error transition on API error response
- Test processing->blocked transition via HTTPError 401 (classify_error maps to blocked)
- Test sync_ocr_queue skips done/blocked items from existing queue
- Test cleanup_blocked_ocr_dirs removes empty dirs, preserves dirs with payload
- Test all 7 OCR states (pending, queued, running, done, error, blocked, nopdf) don't crash
Key: patch requests.post with side_effect=HTTPError 401 to trigger
classify_error path, since registry token is always present in test env.
- fixture_vault: creates complete vault structure with paperforge.json
- fixture_library_records: 3 minimal library-record .md files
- fixture_bbt_json: Better BibTeX JSON export in exports/
- fixture_with_pdf: vault with real temp PDF for PDF-resolver tests
- All use pathlib.Path, Windows-compatible
- Convert ocr parser to sub-subcommands (run, doctor)
- Add _cmd_ocr_doctor() with formatted tiered report output
- Update dispatch logic to route ocr doctor subcommand
- Add CLI dispatch test for doctor command
- Update command/lp-ocr.md with doctor documentation
- Add paperforge_lite/ocr_diagnostics.py with tiered L1-L4 checks
- L1: token presence, L2: URL reachability, L3: API schema validation
- L4: optional live PDF round-trip test with polling
- Add 7 mocked unit tests for all levels
- Include blank.pdf test fixture
- Replace literature_pipeline.load_vault_config body with
paperforge_lite.config.load_vault_config wrapper
- Rebuild pipeline_paths() from shared paperforge_paths() plus
10 worker-only keys (pipeline, candidates, search_*, harvest_root,
records, review, config, queue, log, bridge_config*, index, ocr_queue)
- Replace ld_deep._load_vault_config and _paperforge_paths with
shared resolver wrappers returning ocr, records, literature
- Fix subprocess test to set PYTHONPATH so paperforge_lite is
importable when worker runs as a standalone script
- 34 tests pass (22 config + 8 worker compat + 4 ld_deep compat)
- Test literature_pipeline.load_vault_config matches paperforge_lite.config
- Test PAPERFORGE_SYSTEM_DIR env var override in worker
- Test pipeline_paths returns all 17 expected keys (shared + worker-only)
- Test ld_deep._load_vault_config and _paperforge_paths match shared resolver
- Test direct worker status subprocess smoke test (CMD-02)
- Tests fail against current code: worker has 5 config keys vs shared's 7,
env overrides not implemented, and pipeline_paths lacks shared resolver keys
- Tests main() with --vault vault paths --json emits valid JSON with vault, worker_script, ld_deep_script keys
- Tests main() with --vault vault paths emits text paths without unresolved <system_dir> or <resources_dir> tokens
- Tests ocr and ocr run both dispatch to run_ocr
- Tests status/selection-sync/index-refresh/deep-reading each dispatch to correct worker
- Uses monkeypatch to isolate from real workers and filesystem