Release Notes
Added
- Added explicit multi-root query analysis with repeatable
nose query --root/-r <path>, while
keeping the single positional-root form compatible. nose capabilities now advertises
query.capabilities.multi_root.
- Added a hidden
nose gap-impact research diagnostic that ranks remaining lowering gaps by
affected files, detection units, unit node/line mass, repositories, and parser-error status
instead of by Raw count alone.
Changed
- Tightened the
nose query machine-readable contract. Query JSON is now schema v4, family
locations carry member ids, --baseline families carry baseline_status, query rows expose
source_comparable, family objects carry raw detector metrics for evaluation tooling,
dashboard JSON exposes the stable families[] key, verified evidence labels distinguish
exact from shared-core, and cross-language rows report repeated semantic volume instead of
~0 removable.
- Redesigned query baselines as schema v2
accepted-duplication files with family ids, member
ids, and member source digests. Pre-v2 baseline arrays are no longer supported; regenerate with
nose query <path> --baseline <file> --write-baseline.
- Production reinvented-helper suggestions that only point at test helpers are now omitted with
explicit counts.
- Split benchmark corpus pruning internals behind the stable
bench/prune_corpus.py wrapper,
moving manifest mechanics into bench/corpus_prune/core.py and CLI/self-test orchestration into
bench/corpus_prune/cli.py.
Fixed
- Corpus lowering now skips source-extension artifacts that are not analyzable source: binary
files with source suffixes, ANSI-highlighted output files, and obvious C++ .h headers that
were previously routed to the C parser. On the pinned bench/repos corpus this cuts parser
ERROR Raw from 56,895 to 25,219 and full lowering-gap Raw from 60,332 to
28,444.
- Closed measured high-impact language-lowering gaps across Python, Go, Java, Swift, Rust, Ruby,
and TypeScript. The pass covers Python comments/continuations/dict unpack, Go type switches,
generic/index ambiguity, iota, labels, and fallthrough, Java declaration/module and unsigned
shift surfaces, Swift macros/directives/accessors/operators/literals/ranges/selectors/control
flow, Rust nested constructor patterns, macro token roots, shorthand projections, and let
chains, Ruby regex/case/rescue/lambda/interpolation/operator/modifier forms, and TypeScript
decorators/static blocks. Ambiguous, type-only, and macro-only syntax is now exact-closed or
fail-closed instead of leaking actionable Raw wrappers.
- Made checked-out benchmark corpus setup reproducible after pruning: pinned repos are reset
before pruning, .DS_Store is excluded from prune/digest accounting, and the prune manifest was
refreshed for the fresh-corpus result. Manual corpus-verify runs also have a longer timeout and
upload logs on cancellation.
- Fixed repository CI by splitting overlong frontend test modules below the file-length ratchet
limit and cleaning up clippy ratchet failures without changing covered behavior.
Performance
- Re-ran representative release-build performance gates throughout the lowering work; no
systematic slowdown was observed. Final post-change wall times on the same workspace were
stats bench/repos --top 40 19.90s, gap-impact bench/repos --top 40 21.97s,
query sympy 3.80s, query raylib 3.25s, and query alacritty 0.19s.
Install nose-cli 0.14.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.14.0/nose-cli-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install corca-ai/tap/nose
Download nose-cli 0.14.0