Scaffold calcalist: repo, toolchain, config model and doctor

Initialise the project per the approved implementation plan (M0).

- Pin the toolchain with devbox: Rust 1.97.1, pimsync 0.5.11, jujutsu 0.44.0,
  and radicale 3.7.8 for later integration tests.
- Add the configuration model with full referential validation, reporting
  every problem in one pass rather than short-circuiting on the first.
- Add `calcalist doctor`, verifying pimsync's presence and version series,
  the state directory, and the configuration.
- Define the whole CLI surface; only `doctor` acts, the rest exit 2 rather
  than pretending to work.
- Rewrite SPECS.md: Rust naming conventions in place of the JS/TS style
  lines, a `devbox run check` gate instead of a pre-commit hook (jj runs no
  git hooks), and the sync semantics the spec previously left unstated.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
randogoth 2026-09-10 09:10:16 +03:00
commit 2bc93262f8
12 changed files with 1674 additions and 0 deletions

24
devbox.json Normal file
View file

@ -0,0 +1,24 @@
{
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.17.2/.schema/devbox.schema.json",
"packages": [
"rustc@1.97.1",
"cargo@1.97.1",
"rustfmt@1.97.1",
"clippy@1.97.1",
"pimsync@0.5.11",
"jujutsu@0.44.0",
"radicale@3.7.8"
],
"shell": {
"scripts": {
"fmt": "cargo fmt --all",
"check": [
"cargo fmt --all -- --check",
"cargo clippy --all-targets -- -D warnings",
"cargo test"
],
"test": "cargo test",
"build": "cargo build --release"
}
}
}