Skip to content

chore(release): prepare v0.1.0 - #25

Merged
ericliswan merged 3 commits into
mainfrom
chore/release-v0.1.0
Oct 27, 2026
Merged

ericliswan merged 3 commits into
mainfrom
chore/release-v0.1.0

Conversation

@ericliswan

Copy link
Copy Markdown
Owner

Summary

Prepares the v0.1.0 "crypto core" release. It bumps the workspace to 0.1.0, adds cliff.toml (listed in AGENTS.md §6.6 but never added) and generates CHANGELOG.md. The README gains the AI-assistance "Development process" note (ground rule 8) and the dependency versions (§10), so both are in place before anything is published.

Closes #24

Type of change

  • feat - [ ] fix - [x] docs - [ ] test - [ ] refactor - [x] ci/chore - [ ] security

How was this tested?

  • cargo fmt --check, cargo clippy -D warnings, cargo test --workspace with and without --all-features, cargo build --release -p pwv-cli, cargo deny check: all pass.
  • git cliff --tag v0.1.0 skips one commit: GitHub's auto-created Initial commit (4535e0c), which isn't conventional. That's expected.

Security checklist

  • No secret in args, env vars, logs, Debug output, errors or panics
  • Crypto is called only from pwv-core::kdf / pwv-core::crypto
  • Any new header/file-format field is inside the AAD and validated on load (no format change)
  • Failure paths have tests (no code change)
  • Docs (README / DESIGN / THREAT_MODEL) updated if behaviour changed

§10 security invariants for v0.1.0

Invariant Status
Fresh random nonce on every save; salt only on init/change-master ✅ crypto::seal fills the nonce from SysRng before building the AAD; two_saves_produce_different_nonces_and_ciphertexts. change-master arrives in v0.5.
Entire 59-byte header is AAD ✅ seal uses header.to_bytes(), open uses file[..HEADER_LEN]; memory_cost_downgrade_is_rejected fails if the AAD is removed (mutation-checked in #21)
KDF params validated on every load ✅ Header::parse + derive_key both validate; flipping_any_byte_is_rejected
Single generic decryption error ✅ wrong_password_fails_and_leaves_files_unchanged checks the exact message
OS CSPRNG only; unbiased selection ✅ SysRng only, only in kdf.rs/crypto.rs. The generator arrives in v0.5.
No secrets in args/env/logs/Debug/errors/panics/test output ✅ for the core (Debug redaction test). The CLI arrives in v0.5.
Atomic writes, .bak, 0600 ✅ storage tests
Clipboard cleared only if unchanged n/a until v0.5
insecure-test-kdf absent from defaults and release builds ✅ no default features; cargo tree -p pwv-cli -e features doesn't show it; production_default_meets_production_floor
cargo deny clean; dependency versions in README ✅
Rollback, metadata, clipboard-history limits documented ✅ THREAT_MODEL.md adversary table and known limitations

Notes for the reviewer

  • Owner: the Development process wording speaks for you publicly. Edit it if you'd phrase it differently.
  • Changelog dates are UTC (git-cliff's default), so this release is dated 2026-10-27 although it's the 28th in AEST.
  • After merge: git tag -a v0.1.0 -m "v0.1.0 — crypto core", push the tag, and gh release create with the 0.1.0 changelog section. No 🛑 is listed for v0.1.0, only for v1.0.0.

Starts from `git cliff --init`. Skips release-prep commits, groups
`security:` commits by type rather than by body text, and files
`build:` with chores and CI.

Refs #24
The first release must carry the AI-assistance disclosure (AGENTS.md
ground rule 8) and list dependency versions (release invariant in
section 10). The full README follows in v1.0.

Refs #24
Bumps the workspace to 0.1.0 and generates CHANGELOG.md with
`git cliff --tag v0.1.0`.

Refs #24
@ericliswan

Copy link
Copy Markdown
Owner Author

Self-review: I read gh pr diff.

  • Version: the workspace and both crates in Cargo.lock are 0.0.0 → 0.1.0. Nothing else changes in the lockfile.
  • cliff.toml: this is the stock git cliff --init config with three parser edits. Release-prep commits are skipped, security: is grouped by type, and build: goes under Miscellaneous. The CHANGELOG covers every conventional commit on main plus the first two commits of this PR. This PR's own release commit is skipped by design.
  • README: the dependency versions match cargo tree -p pwv-core --depth 1. The Development process note matches ground rule 8's wording ("AI-agent assistance under the owner's design and review") and names the tool.
  • §10 invariants: I checked them against the code, not just against the tests (table in the PR body). Nothing failed. Three items wait for v0.5 features: change-master, the generator and the clipboard.
  • Next after merge: annotated tag v0.1.0 and gh release create --verify-tag with the 0.1.0 changelog section.

@ericliswan
ericliswan merged commit d543e51 into main Oct 27, 2026
4 checks passed
@ericliswan
ericliswan deleted the chore/release-v0.1.0 branch October 27, 2026 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(release): prepare v0.1.0

1 participant