chore: release v0.6.40 — ship pipeline auto-commit - #620
Merged
Conversation
…repo docenta honors a per-repo .docentaignore (gitignore syntax, outranks .gitignore, !pattern whitelists). This checkout carries one that keeps _trash/ (the design-document quarantine) in the corpus even though /_trash/* is gitignored. The policy is per-machine, so the file itself is never committed.
…n.rs `main.rs` carried the bodies of `run_search`, `run_stats`, `run_aggregate` and `run_daemon` (plus the search payload writer) as a leftover of the pre-#436 grammar, while every newer command already lived in `commands/*` behind a `run_<command>` entry point. Move the four stragglers to the same shape: - `commands/search/run.rs` — `run_search` + `write_search_payload_to_stdout`, re-exported as `commands::search::run_search`; the `--stats` / `--agg` synthesised searches re-enter through it. - `commands/stats.rs` — `run_stats` (and the module docs no longer claim the daemon-mode route lives in `main.rs`). - `commands/aggregate.rs` — `run_aggregate`. - `commands/daemon_mgmt.rs` — `run_daemon`. `dispatch.rs` now names every command through `commands::…` instead of reaching back into the crate root. `client_profile` is declared once with the other modules (the `#[path]` re-declaration mid-file pointed at the file's default location anyway). The crate-level `#![expect(clippy::single_call_fn)]` is gone: the workspace already allows that lint by policy, and the expectation would have gone unfulfilled once the single-call bodies left the file. Tests moved beside what they exercise: the `parse_drive_letter` cases to `args.rs`, the `SearchParams::from_cli_args` contract checks to the search entry point. The elevation tests stay with `main`. `main.rs` now holds only `main`, `run` and the two elevation helpers (651 → 227 lines). Behaviour unchanged; clippy (all targets, all features) and the 162 uffs-cli unit + integration tests are green.
The crate header and module docs promised one visual language "for the daemon, broker, combined-system, and MCP status output", which reads as if those binaries render through this crate. They do not: the daemon reports status over the wire (`StatusResponse`) and `uffs-broker --status` is a four-line service probe. The only consumer is `uffs-cli`, whose `--status` / `--daemon status` views cover all four sections. Say so, and record why it stays a separate layer-0 crate instead of folding into `uffs-format` (which pulls `uffs-mft`): the thin CLI must style output without the MFT reader in its dependency graph.
Two comments in crates/uffs-cli/Cargo.toml still said `version = "0.5.90"` while the pins beside them read 0.6.39 — the release bump rewrites the value but not the prose. Describe the field without quoting a number so the comment cannot rot again (the same lesson rust-toolchain.toml's header records for the channel date).
The README explained the thin client's dropped tokio/ws2_32 dependency but never why there is no clap — the question every reader of src/args.rs asks. Add the answer with its evidence from docs/research/cross-tool-benchmark-analysis.md §4.1.1: Windows process creation is ~12 ms + ~2.7 ms per MB, the 52.7 MB fat client spent 136 ms before main(), a clap parse is ~1 ms — the cost was weight, not parsing — and the thin client landed at ~774 KB. Name where clap still lives (uffs-mft, uffs-daemon, uffs-mcp, uffs-bench) and give the two-line PowerShell recipe to re-measure size and cold start on a release box.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
just shipPhase 2 auto-commit for v0.6.40 — the[workspace.package].versionbump inCargo.toml. This PR routes that commit through branch-protection rules. Once it merges tomain, runjust release-tagto cut the signedv0.6.40tag, which firesrelease.ymland builds the cross-platform binaries + GitHub Release v0.6.40. (No auto-tag on merge — the tag step is manual on-demand, Path B.)Auto-merge
--auto --squashis queued — GitHub will merge as soon as the required status checks pass. Squash is required becausemain-protectionmandates signed commits, and GitHub's rebase-auto-merge cannot sign the rebased commit; the squash-merge commit is signed by GitHub's own key, which satisfiesrequired_signatures: true. The original author's signed commit remains verifiable in the PR branch history.After merge
The auto-commit lived only on
release/v0.6.40, so localmainnever drifted — sync it with a plaingit pull --ff-only origin main(noreset --hardneeded).