Release: semver, generated changelog, automatic migrations with a pre-upgrade snapshot #23

Closed
opened 2026-09-24 14:33:59 +00:00 by kayg · 5 comments
Owner

Owner decision 2026-09-24 (DESIGN §27). Semver from 0.0.1; changelog generated from atomic commits; migrations run automatically on start after a consistent SQLite snapshot. Public GitHub mirror soon.

Owner decision 2026-09-24 (DESIGN §27). Semver from 0.0.1; changelog generated from atomic commits; migrations run automatically on start after a consistent SQLite snapshot. Public GitHub mirror soon.
Author
Owner

Starting admin-ops on branch job/admin-ops at base 57118d9648. I am reading the current migration, snapshot, version reporting, and API contract flows before implementing release safety.

Starting admin-ops on branch job/admin-ops at base 57118d9648582e682f0a0e1997fc8ad9f84bab35. I am reading the current migration, snapshot, version reporting, and API contract flows before implementing release safety.
Author
Owner

Finding: crates/calternal-db already has consistent VACUUM INTO snapshots and the server exposes manual/scheduled backups, but crates/calternal-server/src/wire.rs applies migrations before taking a startup snapshot. /api/v1/system/info already reports the workspace release version and source commit; I will keep that semver source tied to Cargo and make OpenAPI metadata use the same version. No changelog generator exists under scripts/.

Finding: crates/calternal-db already has consistent VACUUM INTO snapshots and the server exposes manual/scheduled backups, but crates/calternal-server/src/wire.rs applies migrations before taking a startup snapshot. /api/v1/system/info already reports the workspace release version and source commit; I will keep that semver source tied to Cargo and make OpenAPI metadata use the same version. No changelog generator exists under scripts/.
Author
Owner

Finished on job/admin-ops at head 041c6bd0c032ff469198161d3d40cd4f3c1ab071.

Implemented automatic consistent SQLite snapshots before startup migrations and before migrations in reindex, using configured retention. OpenAPI metadata now uses CARGO_PKG_VERSION, matching the existing system-info version source. Added executable scripts/changelog.sh to generate Markdown from commit subjects.

Gate output:

  • cargo fmt --check: no output; exit code 0.
  • cargo clippy --all-targets -- -D warnings: Finished \dev` profile [unoptimized + debuginfo] target(s) in 44.39s`; exit code 0.
  • cargo test: test result: ok. 452 passed; 0 failed; 0 ignored; finished in 0.57s (workspace run); server tests: test result: ok. 8 passed; 0 failed; 0 ignored; finished in 1.89s; exit code 0.
  • bash packages/api-client/check-generated.sh: ✨ openapi-typescript 7.13.0 and 🚀 ../../contracts/openapi.json → src/generated.ts [466.4ms]; exit code 0.
  • bash tests/adversarial/run.sh: ==== FINDINGS 0 and ==== ROUND 2 FINDINGS 0; exit code 0.
  • cargo clean: Removed 13669 files, 9.1GiB total.

The changelog script writes to stdout, groups Conventional Commit prefixes into Breaking/Added/Fixed/Changed/Other, and starts after the current version tag (or uses all history when no matching tag exists). The design did not specify these format and tag rules; please confirm them with the owner.

Finished on `job/admin-ops` at head `041c6bd0c032ff469198161d3d40cd4f3c1ab071`. Implemented automatic consistent SQLite snapshots before startup migrations and before migrations in `reindex`, using configured retention. OpenAPI metadata now uses `CARGO_PKG_VERSION`, matching the existing system-info version source. Added executable `scripts/changelog.sh` to generate Markdown from commit subjects. Gate output: - `cargo fmt --check`: no output; exit code 0. - `cargo clippy --all-targets -- -D warnings`: `Finished \`dev\` profile [unoptimized + debuginfo] target(s) in 44.39s`; exit code 0. - `cargo test`: `test result: ok. 452 passed; 0 failed; 0 ignored; finished in 0.57s` (workspace run); server tests: `test result: ok. 8 passed; 0 failed; 0 ignored; finished in 1.89s`; exit code 0. - `bash packages/api-client/check-generated.sh`: `✨ openapi-typescript 7.13.0` and `🚀 ../../contracts/openapi.json → src/generated.ts [466.4ms]`; exit code 0. - `bash tests/adversarial/run.sh`: `==== FINDINGS 0` and `==== ROUND 2 FINDINGS 0`; exit code 0. - `cargo clean`: `Removed 13669 files, 9.1GiB total`. The changelog script writes to stdout, groups Conventional Commit prefixes into Breaking/Added/Fixed/Changed/Other, and starts after the current version tag (or uses all history when no matching tag exists). The design did not specify these format and tag rules; please confirm them with the owner.
Author
Owner

Follow-up web gates passed after the generated API changes:

  • bun run --cwd apps/web check: svelte-check found 0 errors and 0 warnings; exit code 0.
  • bun run --cwd apps/web test: Test Files 9 passed (9) and Tests 80 passed (80); exit code 0.
  • Final cargo clean: Removed 0 files (the preceding clean removed 9.1GiB).
Follow-up web gates passed after the generated API changes: - `bun run --cwd apps/web check`: `svelte-check found 0 errors and 0 warnings`; exit code 0. - `bun run --cwd apps/web test`: `Test Files 9 passed (9)` and `Tests 80 passed (80)`; exit code 0. - Final `cargo clean`: `Removed 0 files` (the preceding clean removed 9.1GiB).
Author
Owner

Completed on dev in 7291d27b99 (Merge job/admin-ops: admin ops: user deletion policies, pre-migration snapshots, changelog (#21, #23)).

Completed on dev in 7291d27b9912c28259d1f00aaebc2db6ecd2d033 (Merge job/admin-ops: admin ops: user deletion policies, pre-migration snapshots, changelog (#21, #23)).
kayg closed this issue 2026-10-01 05:08:37 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#23
No description provided.