docs(specs): add dot_alfred sidecar design doc
First entry in the new specs/ directory. Specifies the layout and semantics of the per-show .alfred/ sidecar that will back the future concrete TVShowRepository: - One .alfred/ directory per show, containing show.yaml + one season_NN.yaml per season (zero-padded, season_00 for Specials). - Per-episode entries store file size + mtime so cache lookups skip a full ffprobe rescan when nothing changed. - Self-healing on drift (file missing/modified/new) without raising. - Atomic writes via temp file + os.replace(). - Phased implementation plan (builder + freeze first, then serializer, then cache validator, then repo, then wiring). No code yet — spec only, awaiting review before the implementation phases. Companion entry in CHANGELOG (Added).
This commit is contained in:
@@ -15,6 +15,19 @@ callers).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- **Design doc for `.alfred/` sidecar persistence
|
||||
(`specs/dot_alfred.md`).** First entry in the new `specs/` directory.
|
||||
Specifies a per-show `.alfred/` directory holding a `show.yaml` and
|
||||
one `season_NN.yaml` per season, used by the upcoming concrete
|
||||
`TVShowRepository` to cache parse/probe results and avoid full
|
||||
rescans on every library read. Covers schema, naming conventions,
|
||||
cache invalidation strategy (size + mtime), self-healing on
|
||||
drift, atomicity (`os.replace`), edge cases (legacy folders,
|
||||
corrupted sidecars, manual file removal), and a phased
|
||||
implementation plan. No code yet — spec only.
|
||||
|
||||
### Internal
|
||||
|
||||
- **`specs/` is now tracked.** The repo-level `.gitignore` had a
|
||||
|
||||
Reference in New Issue
Block a user