fix(build): remove broken cargo verify alias; ci: gate rc branch #212

Merged
KofTwentyTwo merged 2 commits from dev into main 2026-07-29 16:40:23 +00:00
10 changed files with 60 additions and 41 deletions

No files matched your search

-1
View File
@@ -3,7 +3,6 @@
check-all = "clippy --all-targets --workspace -- -D warnings"
test-all = "test --workspace"
cov = "llvm-cov --workspace --ignore-filename-regex main\\.rs --summary-only"
verify = ["fmt --all -- --check", "check-all", "test-all"]
# Dogfooding: build the runnable daemon + reference CLI in release mode.
build-release = ["build", "--release", "-p", "nunciod", "-p", "nuncio-cli"]
# Remove the entire workspace target directory (all crates, all profiles).
+2 -2
View File
@@ -2,9 +2,9 @@ name: CI Quality Gates & Build Pipeline
on:
push:
branches: [ main, dev ]
branches: [ main, dev, rc ]
pull_request:
branches: [ main, dev ]
branches: [ main, dev, rc ]
env:
CARGO_TERM_COLOR: always
-16
View File
@@ -1,16 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Cargo Verify (fmt + clippy + tests)" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
<option name="command" value="verify" />
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
<option name="emulateTerminal" value="true" />
<option name="channel" value="DEFAULT" />
<option name="requiredFeatures" value="true" />
<option name="allFeatures" value="false" />
<option name="withSudo" value="false" />
<option name="backtrace" value="SHORT" />
<envs />
<method v="2">
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
</method>
</configuration>
</component>
+13 -2
View File
@@ -60,7 +60,16 @@ Cargo aliases (defined in `.cargo/config.toml`):
cargo check-all # = clippy --all-targets --workspace -- -D warnings (the lint gate)
cargo test-all # = test --workspace
cargo cov # = llvm-cov --workspace --ignore-filename-regex main.rs --summary-only (informational; needs cargo-llvm-cov)
cargo verify # = fmt --all --check + check-all + test-all
```
There is no `cargo verify` alias — Cargo aliases are a single command's argv and
cannot chain subcommands. Run the full gate as three separate commands (this is
exactly what the pre-commit hook runs):
```bash
cargo fmt --all -- --check
cargo check-all
cargo test-all
```
Common commands:
@@ -92,7 +101,9 @@ A shared RustRover setup lives in `.idea/` (the useful parts are tracked;
- *Run nunciod (daemon)* — start the daemon.
- *Run nuncio-cli (system status)* — drive it (start the daemon first).
- *Cargo Build Release (daemon + CLI)* — `cargo build-release`.
- *Cargo Check All* · *Cargo Test All* · *Cargo Verify (fmt + clippy + tests)* — the gates.
- *Cargo Check All* · *Cargo Test All* — the gates (run `cargo fmt --all -- --check`
separately; there is no combined run configuration, since Cargo aliases and
RustRover run configurations can't chain subcommands).
- *Cargo Coverage* — informational `llvm-cov` (needs `cargo-llvm-cov` installed).
- Tip: set Clippy as the external linter (Settings → Rust → External Linters) so the
editor mirrors the `-D warnings` gate.
+4 -1
View File
@@ -52,10 +52,13 @@ repositories (roadmap Phase 5).
cargo build --workspace # build everything
cargo check-all # clippy, all targets, warnings-as-errors (the gate)
cargo test-all # run the whole test suite
cargo verify # fmt --check + check-all + test-all
cargo test -p nuncio-store # test a single crate
```
There is no `cargo verify` alias (Cargo aliases can't chain subcommands). Run the
full local gate as three separate commands — `cargo fmt --all -- --check`,
`cargo check-all`, `cargo test-all` — which is exactly what the pre-commit hook runs.
Cargo aliases are defined in [`.cargo/config.toml`](.cargo/config.toml).
## Documentation
+3 -2
View File
@@ -9,7 +9,8 @@ Ordered, executable stories for the first two phases of [`ROADMAP.md`](ROADMAP.m
Each story has acceptance criteria (AC) and a rough size (S ≤1d, M ≈2–4d, L ≈1wk).
Do them roughly top-to-bottom; within an epic, stories are mostly independent
unless noted. **Definition of done for every story:** engine + (where applicable)
proto + CLI + offline test, and `cargo verify` green.
proto + CLI + offline test, and the local gate green (`cargo fmt --all -- --check`,
`cargo check-all`, `cargo test-all`).
---
@@ -41,7 +42,7 @@ proto + CLI + offline test, and `cargo verify` green.
`nuncio-core`). **AC:** `cargo check-all` exits 0 locally and in CI.
- **0.C.2 Align CI to the local gate** (S). CI runs `cargo clippy --workspace`
without `--all-targets`; make CI run `cargo check-all` so CI and local are
identical. **AC:** CI and `cargo verify` enforce the same lints.
identical. **AC:** CI and the local gate enforce the same lints.
- **0.C.3 Replace the coverage gate** (M). Drop the gamed 100%-line gate (it
excludes all `main.rs` and incentivized stub+matching-test theater) for a
realistic threshold on engine crates plus a **required** mock-server E2E job.
+19 -7
View File
@@ -110,9 +110,17 @@ RustRover's Cargo test integration is the fastest inner loop.
## 5. Quality gates (run before you commit/push)
The Git pre-commit hook runs `fmt` + `clippy -D warnings` (all targets) + the full
test suite on every `git commit`, so make these green first:
test suite on every `git commit`, so make these green first. There is no combined
`cargo verify` alias — a Cargo alias is a single command's argv and can't chain
subcommands, so run the three checks separately (this is exactly what the
pre-commit hook does):
```bash
cargo fmt --all -- --check
cargo check-all
cargo test-all
```
- **Cargo Verify (fmt + clippy + tests)** — the whole gate in one click (= `cargo verify`).
- **Cargo Check All** — just clippy, all targets, warnings-as-errors.
- **Cargo Test All** — the suite.
- **Cargo Coverage** — informational `llvm-cov` (needs `cargo-llvm-cov`; not a gate).
@@ -120,8 +128,8 @@ test suite on every `git commit`, so make these green first:
(= `cargo build-release`), i.e. what you ship for real dogfooding.
Because the toolchain is pinned (1.97.1) and native, **green here == green in CI** —
so a clean *Cargo Verify* means a clean commit and (once CI minutes are back) a
clean pipeline.
so running `cargo fmt --all -- --check` plus *Cargo Check All* and *Cargo Test All*
clean means a clean commit and (once CI minutes are back) a clean pipeline.
---
@@ -137,9 +145,11 @@ clean pipeline.
| Cargo Build Release (daemon + CLI) | `build-release` | no |
| Cargo Check All | `check-all` | no |
| Cargo Test All | `test-all` | no |
| Cargo Verify (fmt + clippy + tests) | `verify` | no |
| Cargo Coverage | `cov` (informational) | no |
There is no run configuration for the fmt check (`cargo fmt --all -- --check`) —
run it from the Terminal alongside *Cargo Check All* and *Cargo Test All*.
To make your own: **Run → Edit Configurations → + → Cargo Command**, set the
command (e.g. `run -p nuncio-cli -- mail read --id abc`), and tick *Store as
project file* to share it (it lands in `.idea/runConfigurations/`).
@@ -151,7 +161,8 @@ project file* to share it (it lands in `.idea/runConfigurations/`).
1. Edit code; the editor lints (clippy) and formats-on-save as you go.
2. Run the nearest **test via its gutter icon** to check your change; **Debug** it
if you need to step through.
3. When the feature/fix is done, run **Cargo Verify** — that's the commit gate.
3. When the feature/fix is done, run `cargo fmt --all -- --check`, **Cargo Check
All**, and **Cargo Test All** — that's the commit gate.
4. Commit (the hook re-runs the gate). Conventional Commits, feature branches off
`dev` (see `CLAUDE.md`).
5. To see it end-to-end, run **nunciod** and drive it from the Terminal.
@@ -170,7 +181,8 @@ project file* to share it (it lands in `.idea/runConfigurations/`).
- **"Where's the TUI/GUI?"** Archived under `_reference/`; they'll be rebuilt as
separate native client repos (roadmap Phase 5). They are not in the workspace.
- **CI is currently paused** (GitHub Actions minutes). That's fine — the pinned
native toolchain makes your local *Cargo Verify* equivalent to CI.
native toolchain makes your local `fmt --check` + *Cargo Check All* + *Cargo Test
All* run equivalent to CI.
---
+6 -2
View File
@@ -6,7 +6,8 @@ machine (or a new LLM) picks up the work cold.
## TL;DR
1. `git checkout dev` — the canonical branch (Phases 0–2 done + the roadmap). It is
green under the pinned toolchain (1.97.1); `cargo verify` passes.
green under the pinned toolchain (1.97.1); `cargo fmt --all -- --check`,
`cargo check-all`, and `cargo test-all` all pass.
2. Read, in order: [`CLAUDE.md`](../CLAUDE.md), [`docs/ROADMAP.md`](ROADMAP.md),
[`docs/STORY-WORKFLOW.md`](STORY-WORKFLOW.md),
[`docs/ARCHITECTURE.md`](ARCHITECTURE.md).
@@ -61,7 +62,10 @@ commit/push, review-before-close, honest-error over green-lie.**
1. Clone the repo; `git checkout dev`. The toolchain (1.97.1) installs
automatically from `rust-toolchain.toml`. Native OS build (not WSL) — the
daemon needs the OS keyring.
2. `cargo verify` (fmt + clippy `-D warnings` all-targets + test-all) — confirm green.
2. Confirm green: `cargo fmt --all -- --check`, then `cargo check-all` (clippy
`-D warnings` all-targets), then `cargo test-all`. (There is no combined
`cargo verify` alias — Cargo aliases can't chain subcommands — but this is
exactly what the pre-commit hook runs.)
3. Run it: `cargo run -p nunciod` (daemon), then drive with
`cargo run -p nuncio-cli -- system status`. See `docs/RUNNING.md` /
`docs/DEVELOPING-IN-RUSTROVER.md`.
+6 -4
View File
@@ -27,8 +27,9 @@ property of the **contract**, not of anyone's discipline.
These are non-negotiable and apply to every item below:
1. **A capability is done only when engine + proto + CLI command + offline E2E
test all exist together**, and `cargo verify` (fmt + clippy `-D warnings`
all-targets + `test-all`) is green.
test all exist together**, and the local gate (`cargo fmt --all -- --check`,
`cargo check-all` (clippy `-D warnings` all-targets), `cargo test-all`) is
green.
2. **No fabricated success.** A path that cannot do the real thing returns an
honest `Unimplemented`/error — never canned data, never a fake "sent".
3. **The `.proto` files are the contract.** The `nuncio-proto` contract-stability
@@ -188,5 +189,6 @@ scheduled here or folded back into the engine as they earn their place.
Each milestone maps to GitHub issues (numbers above). Every capability is built
via one implementer + a spec/quality review gate + an offline E2E, committed only
when `cargo verify` is green and the proto golden is consistent. Issues close
only after the review step — never on a green build alone.
when the local gate (fmt + clippy `-D warnings` + tests) is green and the proto
golden is consistent. Issues close only after the review step — never on a green
build alone.
+7 -4
View File
@@ -21,9 +21,11 @@ implement; the PO reviews and merges. Do not merge your own work.
A story is done only when **all** of these hold:
1. **engine + proto (if the API surface changes) + CLI command + offline E2E test
exist together** and prove the capability end to end.
2. `cargo verify` is green — that is `cargo fmt --all -- --check`,
2. The full local gate is green — that is `cargo fmt --all -- --check`,
`cargo check-all` (clippy `--all-targets --workspace -D warnings`, **zero**
warnings), and `cargo test-all` (`cargo test --workspace`). **0 ignored tests.**
warnings), and `cargo test-all` (`cargo test --workspace`), run as three
separate commands (there is no combined `cargo verify` alias — Cargo aliases
can't chain subcommands). **0 ignored tests.**
3. **No fabricated success.** A path that cannot do the real thing returns an
honest `Unimplemented`/error — never canned data, never a fake "sent"/"ok".
(Anti-pattern to never imitate: a client that logs "fetching…" and returns a
@@ -86,9 +88,10 @@ proto story is open. Non-proto stories (engine-only, CLI-only) can run in parall
2. TDD where practical. Keep commits Conventional (`feat(scope): …`,
`fix(scope): …`), imperative, <72-char subject, **no AI attribution**, no
issue refs in code (a `Refs #NNN` in the commit message is fine).
3. Before pushing, make `cargo verify` green. The pre-commit hook enforces it.
3. Before pushing, make sure `cargo fmt --all -- --check`, `cargo check-all`, and
`cargo test-all` are all green. The pre-commit hook enforces this.
4. Open a **PR to `dev`** (never to `main`). In the PR body: link the issue,
summarize what you built, **paste the gate output** (`cargo verify` result +
summarize what you built, **paste the gate output** (fmt/clippy/test results +
test counts) as evidence, and list any decisions or follow-ups. If you found a
real bug outside your scope, **file a new issue** — do not silently fix or
ignore it.