specs/020-music-preview-recovery/validation.md
Rama main · réplica de lectura del repositorio original.
# Validation: Music preview and recovery
Verified 2026-09-30 in isolated temporary fixtures, using the current working-tree
implementation. The acceptance contract was recorded during implementation; it
does not represent a specification that preceded the code.
- FR-001 / SC-001: Consecutive-frame recognition tests pass. Generated tagless
MP3, ADTS AAC and AIFF files are identified, processed from misleading `.txt`
names, preserve SHA-256 contents and decode successfully with ffmpeg.
- FR-002 / SC-002: `test_preview_lists_changes_without_modifying_release` covers
direct and archived inputs, planned changes, unchanged bytes and modification
times, and absence of an in-release recovery workspace.
- FR-003 / SC-005: `test_completion_summary_counts_actual_changes` and the preview
fixture verify counts and unidentified filename reporting.
- FR-004 / SC-004: `test_unchanged_release_skips_staging_and_publication` asserts
that scratch creation and publication are never called.
- FR-005 / SC-003: Recovery fixtures verify exact original restoration, backup
corruption, changed output, unsafe journal, legacy journal and symlink refusal.
- FR-006 / SC-003: Fault-injected recovery write failure preserves the pre-attempt
bytes and allows retry; an interrupted recovery resumes and restores originals.
- FR-007: Explicit command path argument tests pass; existing category and NZBGet
success/failure tests pass.
## Gates
- 52 unittest cases passed, both focused and inside repository validation.
- Ruff passed for the script and its tests.
- `git diff --check` passed.
- `make validate` exited 0. Its generated PostHog Compose bundle was skipped
because it is externally generated; 214 other Compose stacks rendered without
failures. This is repository validation, not the broader CI-equivalent gate.
## Operational Limits
No live music processing, recovery command, configuration access, container
restart or deployment was performed for these additions. Legacy workspaces without
checksums require manual recovery. Other writers must be stopped before recovery;
the directory lock coordinates script instances. Recovery covers interrupted
processes and ordinary write failures; whole-machine crash durability is not
claimed.