Part of the AI back-office PRD — T13 + challenge C7 (silence is an alert). Rescoped 2026-07-12: the backup-freshness/restore-drill half (T14) moved to #59 so each watchdog ships as its own small PR.
Deliverables
Daily CronJob running dolibarr-data-snapshot (content_hash) + drift comparison vs previous snapshot; drift not explained by journaled writes → alert.
Bracket promoted write batches with pre/post snapshots asserting pure-append diffs (compliance evidence — feeds the PAF).
Heartbeat: the job reports "ran + verdict" daily into the digest channel (interim mail/ntfy; gateway when live — arcodange/telegram-gateway#2). A missing report is itself the alarm.
Chart/CronJob pattern: reuse chart/templates/backup-cronjob.yaml conventions (Values-gated, env-aware, OFF on sandbox).
Acceptance: a seeded ERP change outside journals → drift alert fires; one real promoted batch produces its pure-append bracket proof.
Execution — Blocked by: none · Blocks: T15 monthly audit (reads snapshot history); P3 closure · Human gates: none. Start:claude --worktree t13-drift-watchdog from the erp repo root; read .claude/skills/dolibarr-data-snapshot/SKILL.md + chart/templates/backup-cronjob.yaml. Done means: evidence comment here (drift-alert log on seeded change + one bracket proof) → PR merged with Closes #48 → SKILL/chart docs updated in the same PR.
Part of the **AI back-office PRD** — [T13](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/task-inventory.md) + [challenge C7](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/challenges.md) (silence is an alert). **Rescoped 2026-07-12:** the backup-freshness/restore-drill half (T14) moved to #59 so each watchdog ships as its own small PR.
**Deliverables**
- Daily CronJob running `dolibarr-data-snapshot` (content_hash) + drift comparison vs previous snapshot; drift not explained by journaled writes → alert.
- Bracket promoted write batches with pre/post snapshots asserting **pure-append** diffs (compliance evidence — feeds the PAF).
- Heartbeat: the job reports "ran + verdict" daily into the digest channel (interim mail/ntfy; gateway when live — arcodange/telegram-gateway#2). A missing report is itself the alarm.
- Chart/CronJob pattern: reuse `chart/templates/backup-cronjob.yaml` conventions (Values-gated, env-aware, OFF on sandbox).
**Acceptance:** a seeded ERP change outside journals → drift alert fires; one real promoted batch produces its pure-append bracket proof.
---
**Execution** — Blocked by: none · Blocks: T15 monthly audit (reads snapshot history); P3 closure · Human gates: none.
**Start:** `claude --worktree t13-drift-watchdog` from the erp repo root; read `.claude/skills/dolibarr-data-snapshot/SKILL.md` + `chart/templates/backup-cronjob.yaml`.
**Done means:** evidence comment here (drift-alert log on seeded change + one bracket proof) → PR merged with `Closes #48` → SKILL/chart docs updated in the same PR.
arcodange
added this to the P3 — Standing fleet milestone 2026-07-11 18:18:18 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of the AI back-office PRD — T13 + challenge C7 (silence is an alert). Rescoped 2026-07-12: the backup-freshness/restore-drill half (T14) moved to #59 so each watchdog ships as its own small PR.
Deliverables
dolibarr-data-snapshot(content_hash) + drift comparison vs previous snapshot; drift not explained by journaled writes → alert.chart/templates/backup-cronjob.yamlconventions (Values-gated, env-aware, OFF on sandbox).Acceptance: a seeded ERP change outside journals → drift alert fires; one real promoted batch produces its pure-append bracket proof.
Execution — Blocked by: none · Blocks: T15 monthly audit (reads snapshot history); P3 closure · Human gates: none.
Start:
claude --worktree t13-drift-watchdogfrom the erp repo root; read.claude/skills/dolibarr-data-snapshot/SKILL.md+chart/templates/backup-cronjob.yaml.Done means: evidence comment here (drift-alert log on seeded change + one bracket proof) → PR merged with
Closes #48→ SKILL/chart docs updated in the same PR.feat(ops): watchdogs — snapshot cron, backup freshness, silence alarms (T13/T14)to feat(ops): ERP snapshot cron + drift watchdog + pure-append brackets (T13)