You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(nix): package the CLI as a flake and add a nix lane
Distribution is the flake only — there is no crates.io release — so this is how
the CLI is consumed. `nix build .#intent` packages it; `nix flake check` gates
fmt, clippy, the crate's test suite, a `--help` smoke test, and a proof that the
packaged binary reads a real corpus.
Two attributes are needed to package a crate that is not at the repository root,
and they are not the same knob. `buildAndTestSubdir` moves only the build and
test phases; `cargoSetupPostPatchHook` still reconciles the vendored lockfile
against the repository root and fails with "Missing Cargo.lock from src".
`cargoRoot` is what points that reconciliation at the crate. `src` stays the
whole repository on purpose, so the corpus at `intent/` remains visible to a
check aimed at it from the same source tree.
The nix lane is a separate workflow rather than a job inside `ci.yml`. Folding a
multi-minute Nix build in beside the fast corpus gates would couple them, and
running the corpus gates through `nix flake check` would collapse `corpus-strict`
and `semantic-review-fixtures` into a single check named `check` — a run would
no longer show which gate concluded and how. This lane packages the CLI and
re-gates nothing.
Adopting the formatter and the lint required two changes to the lifted source:
- The block comments carried hand-aligned continuation lines that rustfmt
de-indents to column 0, which reads worse than what it replaced. Converted to
line comments, which rustfmt leaves alone, so the wording is unchanged and the
gate is real rather than permanently red or absent.
- `automated_context_indicator` becomes the `Iterator::find` it was written as by
hand. `require_section` keeps its eight arguments under an explicit `allow`
with the reason inline: this crate is a lift whose acceptance bar is behaving
identically, and grouping those arguments is a refactor motivated only by a
style lint, better done on its own where a regression would be attributable.
Verified locally: `nix flake check` passes all five checks, the packaged binary
reports 246 graph nodes against the real corpus, and after these source edits the
strict check still reports 0 diagnostics with the graph unchanged at 246/215.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
agent-tool: Claude Code
agent-tool-version: 2.1.220
agent-runtime: Claude Code 2.1.220
agent-session-lookup: unavailable
tooling-profile: dotfiles@unknown-dirty
0 commit comments