You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Apply post-review fixes to the retention cycle.
- Order chain members topologically (base first, each child after its
parent via ParentID), with Created only as a tie-breaker. Ordering by
Created alone could place a child ahead of its base on tied or skewed
timestamps, and the leaf-inward delete then removes the base before a
surviving incremental — orphaning it. Stragglers from broken/cyclic
links are appended, never dropped.
- Stop deleting a chain's members at the first failure (return, not
continue): once a leaf delete fails, deleting its ancestors would
orphan it, so abort the chain and leave a complete shorter prefix.
Other chains still proceed.
- Make chain ordering deterministic: break equal newest() timestamps
by Root so keep_last / GFS selection is reproducible (map iteration
is randomized; a planner must not be). Same comparator used in Plan.
- Reject negative retention.max_age in config validation: ParseDuration
accepts "-1h", which would push the cutoff into the future and make
the whole catalog deletable.
- Reject negative CLI flag overrides before planning, mirroring the
config-load validation that flags otherwise bypass.
- Label a partially deleted chain "partially pruned", not "pruned".
- Fix the command name in README and docs/RETENTION.md: it is
"siphon dumps prune", not "siphon prune".
- Add tests: topological member order on tied/skewed timestamps,
deterministic chain order on tied timestamps, and that a chain's
deletion stops (base untouched) when the leaf delete fails.
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -181,7 +181,7 @@ storage:
181
181
182
182
Credentials are resolved from the standard AWS chain (env vars, `~/.aws`, instance role) — never stored in the config file. See [docs/STORAGE.md](docs/STORAGE.md) for details.
183
183
184
-
A `retention:` block (default + optional per-profile override) drives `siphon prune`, which deletes old backups as whole chains so an incremental is never orphaned:
184
+
A `retention:` block (default + optional per-profile override) drives `siphon dumps prune`, which deletes old backups as whole chains so an incremental is never orphaned:
185
185
186
186
```yaml
187
187
defaults:
@@ -191,7 +191,7 @@ defaults:
191
191
gfs: { daily: 7, weekly: 4, monthly: 6 }
192
192
```
193
193
194
-
`siphon prune`is dry-run by default; pass `--apply` to delete. Flags override the configured policy per run. See [docs/RETENTION.md](docs/RETENTION.md) for details.
194
+
`siphon dumps prune`is dry-run by default; pass `--apply` to delete. Flags override the configured policy per run. See [docs/RETENTION.md](docs/RETENTION.md) for details.
0 commit comments