- Removed unused `src/vlm/exceptions.py` and consolidated plan summary helpers (`preferred_plan_summary` everywhere).
- Extracted CLI implementations to `cli_helpers.py` and `commands/` (`review_plan`, `report`, `quarantine_cmd`, `state_cmd`, `config_cmd`); `cli.py` is now Click registration and thin delegation.
- Moved `textual` out of `[dev]` optional deps (install via `[tui]` or `[dev,tui]`).
- Archived superseded review/audit markdown under `docs/archive/2026-pre-baseline/`.
- Fixed series parser empty title when the only title token is a quality tag (e.g. `UHD S01E01.mp4`).
- Made `vlm review-plan --tui` a true optional runtime boundary by lazy-loading the Textual UI and guarding Textual imports.
- Hardened execution safety so move/rename operations validate both source and destination against `library_root`, while unsupported quarantine operations fail per-operation without aborting later work.
- Removed silent duplicate-resolution fallback: unresolved `by_quality` groups and unsupported strategies now surface as explicit manual-review outcomes.
- Canonicalized duplicate path matching so duplicate analysis joins stay stable across path-format differences.
- Defined scanner behavior for non-zero `find` exits: keep partial stdout with a warning, or return an empty deterministic result if no paths were emitted.
- Moved plan loading onto a validated typed `ExecutionPlan` boundary in the I/O layer.
- Updated repository review artifacts and documentation to reflect the new baseline.
- Added runtime validation for `identities.json`, `analysis.json`, and `plan.json` on load/save.
- Plan generation now records environment-derived checks in `validation_snapshot` metadata, keeping logical plan output reproducible.
- Added targeted regression tests for plan round-trip validation and invalid-schema rejection.
- Verified the affected workflows with `uv run pytest tests/test_io.py tests/test_planner.py`.
### Logic Optimization & Human-in-the-Loop
- **Human-in-the-Loop Workflow Completion**:
- Added `vlm apply-review` command to sync modifications from `plan_manual_review.csv` back to `plan.json`.
- Implemented `apply_review_to_plan` in `src/vlm/planner.py` to allow manual rejection/modification of high-risk operations via CSV.
- **Scanner Robustness & Environment Awareness**:
- Added proactive `ffprobe` availability check at the start of `vlm scan`.
- Implemented graceful degradation: if `ffprobe` is missing, the scanner automatically falls back to file-only metadata mode with a clear warning, instead of failing per-file.
- **Parser Enhancements**:
- Improved `src/vlm/parser.py` to better handle release group tags (`[Group]`, `(Group)`, `Group_Subs`).
- Added support for hyphenated episode numbering (e.g., `Name - 01`) common in Anime, defaulting to Season 1 with reduced confidence.
- Refined release group removal to be more robust against various bracket styles.
- **CLI & UX**:
-`vlm review-plan` now prints a plan overview plus a structured high-risk operation preview in terminal output.
- Added `--preview-limit` and `--show-all` to control review-plan preview verbosity.
- Added shared plan rendering helpers so `review-plan` and `execute` reuse the same summary fallback behavior.
- Changed default workflow artifact outputs from repository root to `artifacts/`:
-`artifacts/inventory.csv`
-`artifacts/identities.json`
-`artifacts/analysis.json`
-`artifacts/plan.json`
-`artifacts/plan_manual_review.csv`
- Added `workspace_dir` to configuration (`~/.vlm/config.yaml`) to customize default artifact directory.
- Stage-A compatibility: when a command uses default input path and only legacy root artifact exists, CLI now prints a migration warning and falls back to the legacy file.
- Added ignore rules for generated artifact directories in `.gitignore` (`artifacts/`, `runs/`).
- Removed temporary process document `ARTIFACTS_REFACTOR_PLAN_2026-02-16.md`; `CHANGELOG.md` remains the canonical change record.