Commit graph

6 commits

Author SHA1 Message Date
warnason
23566b0885 ExifTool metadata extraction + size in observations + workflow doc
- metadata.py: persistent ExifTool session (avoids Perl startup per file),
  filters out File:/ExifTool: noise
- scanner now populates observations.meta as JSONB
- size duplicated into observations for self-contained queries and to
  strengthen the rescan idempotency check (path + mtime + size)
- README rewritten with state diagram, schema tables, scan/apply workflow
2026-05-26 09:00:35 +02:00
warnason
0b43c7c4dd Add mama-apply: materialize blobs to CAS, hardlink to views
- archive.py: CAS path layout (blobs/<2>/<2>/<hash>), view paths
  scoped by source_kind, hardlink helpers
- applier.py: cursor-paginated apply_pending with dry-run support
- mama-apply CLI with progress and --dry-run

Note: cross-dataset hardlinks fall back to copy (POSIX limitation),
so applying from /mnt/preview to /mnt/archive currently doubles
storage. To be addressed by consolidating sources into the archive
dataset or by introducing --delete-source for move semantics.
2026-05-25 22:15:33 +02:00
warnason
a84b32d6b0 Rescan idempotency + mama-dev (reset, stats)
- observations now keyed by (path, mtime) for idempotent rescans
- new index ix_observations_path_mtime
- mama-dev reset: truncate all data, schema kept
- mama-dev stats: overview, breakdowns by source_kind/status/hostname/MIME, largest blobs
2026-05-25 21:19:30 +02:00
warnason
b0d2723ead Add Alembic with initial schema migration (blobs, observations) 2026-05-25 18:30:30 +02:00
warnason
6fc34eb607 Add project skeleton: config, models, CLI, BLAKE3 scanner 2026-05-25 18:30:30 +02:00
warnason
4b5fe76318 Initial commit: README, MIT license, gitignore 2026-05-25 18:30:30 +02:00