From 0c468504dcc3e0c5ff5bc3046a8f044fbb27b639 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 1 Oct 2026 17:58:24 +0000 Subject: [PATCH] List only after-1.0 work in the README roadmap (closes #208) The README roadmap and the TODO.md Next Step still described finished 1.0 work as remaining. The roadmap now lists only work planned after 1.0. The security item says the encryption and blob-generation code was reviewed before 1.0 with every finding fixed, and keeps an outside audit as after-1.0 work rather than a blocker. The error-condition item is gone because every failure case it listed now has a fault-injection test. Daemon mode, which the owner put after 1.0, is added to the roadmap. TODO.md says the 1.0 work is complete on next and that merging to main and tagging are the owner's; Future Steps points to the roadmap. Judgement call: dropped the human-readable size flags item; no command flag takes a raw-integer size. Model: opus-5-5 --- README.md | 26 +++++++++++--------------- TODO.md | 16 +++++++--------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 6fb2d9c..0a7edb2 100644 --- a/README.md +++ b/README.md @@ -577,22 +577,16 @@ complete annotated example also lives in ## roadmap -Items still to do before / shortly after 1.0. Loosely ordered by -priority. +Work planned after 1.0. Loosely ordered by priority. ### correctness and operability -* **Security audit of the encryption implementation.** Pre-1.0 - blocker if we're advertising "secure" at the top of this README. - age + zstd + content-defined chunking is mostly off-the-shelf - pieces, but the seams (key handling, recipient parsing, manifest - trust boundary, restore-time identity validation) need an outside - read. -* **Error-condition tests.** Today's coverage is the happy path - plus a few specific regressions. Need fault-injection coverage: - network failures mid-blob, disk-full during restore, corrupted / - truncated / missing blobs, partial uploads, kill -9 between - manifest and db.zst.age writes. +* **Outside security audit.** Before 1.0 the encryption and + blob-generation code was reviewed and every finding fixed; no + outside audit has been done. age + zstd + content-defined chunking + is mostly off-the-shelf pieces, but the seams (key handling, + recipient parsing, manifest trust boundary, restore-time identity + validation) need an outside read. * **Verify restored content end-to-end in CI.** The current integration test does this for a small synthetic snapshot but not at scale. A nightly job against a multi-GB representative @@ -615,13 +609,15 @@ priority. doesn't resume from where it stopped or skip already-present files. A `--resume` mode that checks targets before fetching blobs would matter for very large restores. +* **Daemon mode.** A long-running mode that watches for file + changes so frequent backups, such as hourly, skip the full scan. + It adds little for the usual runs from cron every 12 to 36 hours. + See [issue #204](https://git.eeqj.de/sneak/vaultik/issues/204). ### usability * **Man pages and richer `--help` examples.** Cobra generates basic help; man pages would be a separate target. -* **`--bwlimit` style human-readable size flags** across the - command surface where they're currently raw integers. * **`vaultik snapshot diff `** — show which files changed between two snapshots without restoring either. * **Status reporting hook for `--cron`.** When a backup fails diff --git a/TODO.md b/TODO.md index feb0f2a..c490f04 100644 --- a/TODO.md +++ b/TODO.md @@ -14,14 +14,11 @@ pre-1.0 # Next Step -Define the remaining scope for the first tagged release under the 1.0.0 -milestone, then cut that tag. The mechanism to cut it now exists and is -exercised; what is left is the scope decision, which is the owner's. -This step deliberately names one version number: it previously said -"cut v0.1.0" while the `Makefile` baked in `1.0.0-rc.1` and the issue -milestone said 1.0.0, and three different answers to "what is the next -release" is exactly the contradiction -[issue #65](https://git.eeqj.de/sneak/vaultik/issues/65) was filed over. +The 1.0 work is complete on `next`: the scope settled on +[issue #125](https://git.eeqj.de/sneak/vaultik/issues/125) was the work +already planned for 1.0, and all of it has landed. The mechanism to cut +the tag exists and is exercised; what is left is merging `next` to +`main` and tagging, both the owner's. # Completed Steps @@ -693,4 +690,5 @@ release" is exactly the contradiction # Future Steps -None queued; the release-scoping item is now the Next Step. +Work planned after 1.0 is listed in the README +[roadmap](README.md#roadmap).