Research-Stack/4-Infrastructure/storage
Brandon Schneider 2f8f77fa77 Add storage observer/optimizer agent (storage_agent.py)
Full Observe→Decide→Act→Emit loop for the restic + Garage + rclone stack:

- storage_agent.py: probes Garage health, restic snapshot count and dedup
  ratio (Q16_16), backup log staleness, cold-copy drift; triggers corrective
  actions (snap, cold-copy, verify, forget, offload, garage restart) based
  on Q16_16 threshold comparisons. Emits hash-chained receipts to both a
  local JSONL log (~/.cache/storage-agent.jsonl) and
  s3://research-stack/agent-receipts/ in Garage.

- storage-agent.service / storage-agent.timer: systemd units installed
  system-wide; timer fires every 15 min (RandomizedDelaySec=60). Includes
  PATH=/home/allaun/.local/bin:... so aws cli and restic are resolved.

- .git/hooks/post-commit updated: agent runs (--once) in the background
  after each restic snap, so post-commit state is always observed.

- 4-Infrastructure/AGENTS.md: full documentation of agent contract,
  receipt schema, trigger table, log paths, and usage examples.

Shim boundary: zero logic — pure subprocess calls to existing CLI tools.
No Float, no new dependencies. py_compile and live dry-run verified.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-18 22:32:52 -05:00
..
storage-agent.service Add storage observer/optimizer agent (storage_agent.py) 2026-05-18 22:32:52 -05:00
storage-agent.timer Add storage observer/optimizer agent (storage_agent.py) 2026-05-18 22:32:52 -05:00
storage_agent.py Add storage observer/optimizer agent (storage_agent.py) 2026-05-18 22:32:52 -05:00