Releases: corca-ai/nose
Release list
0.18.0 - 2026-07-06
Release Notes
Added
- Added #687 divergent gate productization evidence: history-mining artifacts now
have a validator, hardened provenance/counts, and checked nose-on-nose
maintainer-pilot summaries that keep history mining offline and the PR gate
observe-only unless explicitly enforced. - Added #686 GitHub Actions divergent-edit rollout examples for observe-only
SARIF reporting and enforcing strict failures, with step-summary counts and
docs-example validation. - Added #685 divergent-edit gate hardening fixtures for report-only and suppression
edges:base=now honors config-relativeignore-file, malformed ignores fail
before empty-diff short-circuiting, path/language suppressions keep all-members
semantics, and copied/new-copy plus deletion/insertion/rename edge cases are pinned. - Added the #684 divergent-edit strict-policy taxonomy audit: checked policy
artifacts now recordgate.fail_default-based tier/taxonomy confusion counts,
strict false-positive buckets, and strict-positive retention against the
2026-07-06 labelset, while preserving the runtime v2 strict gate unchanged. - Added query-base wrapper compatibility guardrails:
nose capabilitiesnow
advertises divergent-edit JSON v8, SARIF,gate.fail_default, and structured
ignore support as explicit query capability flags, with tests pinning v8 closed
enum values and JSON/SARIF policy-field parity. - Added the #678 semantic-pack default-promotion audit: a checked
bench/semantic_pack/default_promotion_audit_678.v1.jsonartifact and docs
page now record the current builtin lane state, row-level coverage refs,
promotion-candidate decision, rollback requirements, and external
metadata-only policy. - Added checked divergent-edit v2 final closeout artifacts for the clean
a38ecb8breplay summary and policy reproduction, and extended
eval/divergence_fire/replay.py check-artifactsto validate that final
replay evidence instead of relying only on/tmpscratch summaries. - Added the #677 Rust
block_onresidual closeout: the async scheduling
hard-negative suite now covers nested runtime drive, wrapper-returned
Runtimevalues, and constructor-assigned runtime fields, with a checked
artifact documenting why exactblock_onrecovery remains reporting-only. - Added a divergent-edit history-mining harness for bounded commit-range audits.
scripts/divergent-history-mining.pyreplays the existingbase=<parent>
JSON view in temporary worktrees, emits deterministic
nose.divergent_history.v1JSON, groups repeated findings across commits, and
documents the offline workflow separately from the PR-timebase=<ref>gate. - Added the divergent-edit v2
new-copyreport-only lane forbase=<ref>:
added/copied/renamed current-tree clone relationships now appear in human,
JSON, and SARIF output withbase_family_id=null,current_only[]current-tree
provenance, and a non-failing gate. - Implemented the divergent-edit v2 strict gate for
base=<ref>: JSON base output
now emits schema v8 tier/gate fields, SARIF uses tiered rule ids and levels, and
mixed/test-scope evidence is report-only instead of default-failing. - Documented the divergent-edit v2 gate contract: strict, review, report-only,
and suppressed tiers; stable false-fire taxonomy; query-JSON v8 base
fields; and SARIF rule/severity mapping. - Added a runtime-triage harness and maintainer runbook for classifying query-runtime
regressions as noise, capability-growth cost, lower/front-end cost, value-graph cost,
or mixed hot paths before optimizing. The runtime-triage and query-regression harnesses
can now select every checked-out corpus repo with--all-repos. - Added a pre-push Cargo target prune step that removes stale
target/debug/deps/*.rcgu.ofiles before the fast local CI gate, avoiding
macOS dyld/code-signing stalls when local debug target directories grow very
large. - Added a self-test for the Cargo target prune script and a shellcheck gate for
versioned hooks plusscripts/*.shin local and GitHub CI.
Changed
- Tightened the dogfooding duplication ratchet from 29 to 26 reviewed
default-surface families by sharing admission-resolver provenance test
helpers for RustHashMap::from, JavaMap.of, and JavaScriptSet/Map
constructor scenarios. - Clarified the #681 divergent-edit opt-in gate closeout docs:
gate.fail_default
remains the sole default CI authority, the checked strict precision baseline is
0.562, and non-strict tiers remain advisory. - Polished divergent-edit v2 CI documentation and output copy: SARIF messages now name
strict/review/report-only tiers directly, humanbase=<ref>output explains report-only
reasons more specifically, and CI examples pin detection modes plustop=0SARIF uploads. - Removed the retired
nose-clilegacy prelude and tightened its ratchet into a
zero-budget reintroduction guard.
Fixed
- Fixed divergent-edit diff parsing for source paths containing spaces, so the
report-onlynew-copylane preserves the full current-tree path instead of
splittingdiff --githeaders on whitespace.
Performance
- Completed the 0.18.0 pre-release performance pass without changing product output:
inlinenose-ignoresuppression now prescreens candidate marker starts with
memchr, the immediate all-120-repo query regression kept 120/120 hashes,
family counts, and byte counts identical while measuring58,555.18ms -> 57,323.32ms(-2.10%), and the release-candidatev0.17.0comparison
measured60,162.97ms -> 56,068.77ms(-6.81%) with thecrates
recall-loss gate at 0 false merges and 0 canon-preservation violations. See
the 0.18.0 release evidence. - Recorded #688 divergent-gate product-output and runtime evidence: all 120
non-base=corpus queries kept identical hashes, byte counts, and family
counts across the #681 productization range, the focused nose slice stayed
stable, and boundedbase=replay counts/timings stayed below the runtime
investigation threshold. - Verified the #677 Rust
block_onresidual closeout with no product-output
drift or reproduced runtime degradation: the focused Rust query-regression
slice kept identical hashes and family counts acrosshyperfine,nushell,
andtokio, while same-binary runtime triage measured1542.89ms -> 1451.96msaggregate median (-5.89%). - Closed the divergent-edit v2 epic with final replay and product-output evidence:
the 560-record replay completed with 0 errors, v2 strict retained 45/45 confirmed
v1 missed-propagation positives while improving strict precision from 0.479 to
0.562, and a 10-repo non-base=query regression kept identical product hashes,
family counts, and byte counts with aggregate median5957.65ms -> 5930.96ms
(-0.45%, below the same-binary control's+1.18%), so no performance
degradation was confirmed. - Completed a 20-commit profile-guided runtime pass after the runtime-triage setup.
The final all-120-repo run comparedca48518dwitha0bfc252and measured
66,498.30ms -> 70,626.21ms(+6.21%) with 120/120 identical product hashes
and unchanged family counts. A same-binary all-corpus control measured+7.38%,
and a focused 7-iteration recheck of the largest apparent regressions measured
14,874.05ms -> 14,551.12ms(-2.17%) with identical hashes, so this pass records
targeted hot-path wins without a confirmed product-output drift or reproduced broad
runtime degradation. See the 20-optimization runtime pass.
Install nose-cli 0.18.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.18.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.18.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.17.0 - 2026-07-02
Release Notes
Added
- Added the semantic-kernel recall-loss recovery loop around
nose verify --recall-loss-report, including obligation rollups, deterministic diff
tooling, checked artifacts, corpus-priority census workflows, and the new
oracle_exclusions.by_classificationrollup for distinguishing semantic
boundary attribution, missing oracle support, path exploration budget, oracle
cost budget, empty fingerprint, and core-span failures. - Added and expanded the
nose.protocols.string_affix_predicatesprotocol pack
across Python, Java, Rust, Swift, JavaScript, TypeScript, Go, and Ruby, with
receiver, direction, mutation, shadowing, offset, and dynamic-affix hard
negatives. - Added import-backed immutable provenance and Rust import-snapshot resolution
for safe provider literals, selected collection factories/constructors,
same-crate module lookup, one-hop public re-exports, residual boundary
attribution, and relativesuperresolution. - Added corpus-driven stdlib audit and prioritization scripts for JS/TS,
Python, Rust, Swift, Java, and Go, plus first support slices for Go
strings.Joinand JavaOptional. JavaArrays/Collections, Go
sort/slices/maps, Python HOF/runtime, Rust stdlib, Swift stdlib, and
JS/TS builtin coverage are recorded as explicit audit artifacts. - Added bounded Promise recovery for safe
Promise.resolve, local
.then/.catch/.finallycontinuations, imported settled-value contracts,
Nodetimers/promisesdomains and safe payloads, and literal-array
Promise.all,Promise.allSettled,Promise.race, andPromise.any
aggregate slices. Dynamic iterables, unsafe thenables, executor timing,
cancellation/liveness, scheduler APIs, interval streams, and broad scheduling
remain fail-closed. - Added cross-language scheduling, channel, callback, lifecycle, aggregate, and
exception-channel obligation reporting across JS/TS, Python, Rust, Go, Java,
Swift, and Ruby. New executable hard negatives pin Promise, timer, channel,
async runtime, Future, task, continuation, yield, and exception boundaries. - Added reporting-only async/runtime coverage for Swift structured concurrency
andtry, JavaCompletableFuture/Future/Executorreceivers, Rust
block_onruntime provenance, Go channel/goroutine/defer protocols, Python
async lifecycle and generator yield, and Rubyraise/rescue, Thread/Fiber,
and block-yield boundaries. - Added the #653 semantic-kernel capability vocabulary audit and obligation
label cleanup. The current diagnostics prefer reusable capability and
async-*obligation labels while preserving legacy aliases for historical
artifacts.
Changed
- Split exact-admission recall-loss attribution into capability-oriented buckets
for callee identity, receiver domain, library API occurrence, HOF
demand/effect, source surface, mutation/effect, unsupported runtime
boundaries, value-fingerprint floors, import-snapshot misses, and oracle
exclusions. - Renamed await, async-function, and async-block diagnostics to language-neutral
scheduling obligations. Promise-shaped producer and continuation labels now
describe missing Promise proof, not generic async syntax. - Refined runtime/protocol diagnostics so units excluded before oracle
interpretation can still carry diagnostics-only obligation attribution under
oracle_exclusions.by_obligation; top-levelby_obligationremains limited
to oracle-interpretable admission rejections. - Closed the current Promise/scheduling and semantic-admission guardrail cycles
as measured boundaries: exact admissions are limited to checked safe slices,
and remaining executor, cancellation, scheduler, interval, lifecycle, and
cross-language convergence work is represented as named closed obligations. - Reclassified broad audit buckets that are now accounted for by source-backed
or proof-backed rows, including Swiftthrows/try, Java Future/Executor type
mentions, Java stream lifecycle rows, Python generator yield, direct
asyncio.sleep, and Rubyraise/rescue.
Fixed
- Updated the locked
anyhowdependency to clearRUSTSEC-2026-0190in the CI
advisory gate. - Fixed repository CI ratchets by splitting overlong Rust files and updating the
async-mirror query JSON test to assert the documented near/shared-core witness
contract. - Fixed
scripts/check-docs.shfor bothawiki lint --root docsand awiki
versions that lint the current wiki directory. - Hardened JS/TS string-affix receiver proof so wrappers, untyped receivers,
borrowed prototype calls, custom same-name methods, offsets, shadowed names,
andString.prototypepatching stay out of primitive prefix/suffix families. - Fixed dataflow normalization across
tryboundaries so temporary inlining no
longer moves a potentially erroring RHS from before atryinto the catch
region. - Fixed release-candidate runtime regressions by indexing imported-binding
call-target evidence per file, indexing lowering-time domain evidence by anchor,
lazily building import mutation/use indexes, and using compact Rust module
identities instead of absolute-path suffix hashes.
Performance
- Preserved zero false merges and zero canon-preservation violations across the
checked localcratesrecall-loss gates for this cycle. - Kept representative product query-regression slices within budget: Java
CompletableFutureconstructor reporting measured-0.45%, Java receiver
settlement reporting measured+0.41%, Go protocol reporting measured
+0.08%, and the final oracle-exclusion classification report measured
+0.34%median wall time with a+0.05%report-size increase. - Re-ran the hazard release refresh, full local CI, all-pinned-corpus product
query-regression, and release-levelv0.16.0..HEADoutput/runtime comparison for the 0.17.0
release candidate. The final all-120-repo query-regression run measured
59666.48ms -> 63410.42msaggregate median runtime (+6.27%), with product
hash drift in 120 repos and family-count drift in 30 repos. The current
recall-loss gate passed with 0 false merges and 0 canon-preservation
violations;nose 0.16.0did not yet support--recall-loss-report, so
recall-loss diffs begin from 0.17.0 artifacts. See
0.17.0 release evidence for details.
Install nose-cli 0.17.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.17.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.17.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.16.0 - 2026-06-26
Release Notes
Added
- Added query JSON
gradedandgraded_pairevidence for on-demandspotclass
enrichment, including same-language shared-core (subdag) families that expose
async/syncasync-mirrortransformations. - Added the builtin Java Guava immutable collection factory pack for
ImmutableList.of,ImmutableSet.of, andImmutableMap.of, with exact
com.google.common.collectimport-backed provenance and hard-negative
boundaries forcopyOf, missing imports, wrong packages, local type shadows,
static null elements/key-values, duplicate static map keys, and unsupported
ImmutableMap.ofarities. - Added Java stdlib
Collectionsfactory contracts foremptyList,
emptySet,singleton,singletonList,emptyMap, andsingletonMap,
moving those surfaces behind pack-owned factory evidence and fixed-arity
fail-closed result-domain checks. - Added Swift stdlib collection factory semantics for
Array(sequence),
Set(sequence), andDictionary(uniqueKeysWithValues:), with pack-owned
provenance and hard negatives for shadowed types, wrong labels, tuple-entry
shape, and duplicate static keys. - Added Go
strings.Containsas a string-containment semantic capability
distinguished fromslices.Containsby imported namespace proof. - Added JS/TS
Object.keysmap-key-view semantics for proven static objects,
sharing the map-key-view capability while keeping dynamic objects, unsafe
mutation, wrong globals, and unsupported wrappers closed. - Added Rust
Resultchannel capability forOk/Errconstructor provenance
and exact-Resultis_ok/is_errpredicates, without opening callback,
defaulting, or panic-like Result APIs. - Added the sequence-HOF and iterator-materialization capability tranche:
Rust iterator HOFs, Python iterator builtins, JS/TS Array HOFs, Swift
Sequence HOFs, and Ruby Enumerable HOFs now use pack/protocol-owned evidence,
receiver/source proof, callback demand/effect boundaries, and adjacent hard
negatives. The tranche moved builtin packs 46 -> 48, exact-capable packs
36 -> 38, positive fixtures 150 -> 177, hard negatives 102 -> 139, and
conformance refs 252 -> 316. - Added durable semantic-pack closeout requirements and #533 closeout evidence,
including linked independent review artifacts, query-regression evidence
requirements, per-leaf before/after metrics, and explicit process-gap
labeling for historical missing pre-merge review evidence.
Changed
- Tightened
spotclass=leaf-onlyto requiregraded.equal_modulo_holes=true, so
demoted witnesses such as async/sync transformation twins classify asstructural
instead of clean parameterization candidates. - Narrowed the numeric clamp frontier packet: controlled two-comparison and library
bridge surfaces are now recorded as covered, leaving real-corpus bound-order proof
as the remaining blocker. - Strengthened clamp min/max proof so branch-local positive bound-order guards
can prove the safelo <= hipath while keeping the inverse guard scoped. - Hardened Swift factory mutation boundaries so mutation-sensitive factory
evidence stays closed unless the required place/effect proof is present. - Tightened semantic-pack review discipline: future behavior-changing
semantic-pack leaf or migration PRs must preserve two durable independent
review artifacts, resolve blocking findings before merge, and keep product
query-regression evidence out of scratch-only/tmpstate.
Fixed
- Resolved the Rust
ResultAPI evidence runtime trigger by caching repeated
proof work around existing pack evidence while preserving clone output; the
focusedserde_jsoncomparison stayed at 0 query-regression triggers.
Performance
- Re-ran product query-regression for the sequence-HOF tranche across the
selected Rust, Python, JS/TS, Swift, and Ruby representatives. All five leaf
comparisons recorded 0 investigation triggers. JS/TSaxiosshowed a small
in-budget median wall-time increase (167.22 ms -> 171.97 ms), while the Swift
and Ruby representatives improved on their saved comparisons. - Re-ran the hazard release refresh on the 12-repo calibration corpus for
nose 0.16.0. The shipped hazard formula stayed stable (v5G1 AUC 0.691,
logistic G1 AUC 0.659), so nohazard()recalibration was needed.
Install nose-cli 0.16.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.16.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.16.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.15.0 - 2026-06-22
Release Notes
Added
- Added the builtin semantic-pack operating model: compiled builtin pack descriptors,
query JSONsemantic_packsprovenance,nose capabilitiessemantic-pack support
fields, and thenose semantic-pack inventoryreport for auditing shipped pack
ownership, conformance refs, fixture counts, and coverage gaps. - Added builtin semantic-pack adoption and compatibility reports:
nose semantic-pack adoption-gatesfor optional/default promotion gates and
nose semantic-pack compatibilityfor manifest API, installed-version, kernel
vocabulary, and external-influence policy. - Added semantic-pack conformance report schema v2 with executable fixture-expectation
gates and row-level external influence preflight blockers. - Added documentation for the builtin-first semantic-pack architecture, compatibility
policy, adoption gates, ecosystem candidate matrix, and the pre-release kernel/pack
boundary review.
Changed
- Renamed the current official semantic ownership model from first-party wording to
builtin semantic packs. The broadnose.first_partyid remains only as a legacy
compatibility descriptor; new official language, stdlib, protocol, library, and law
support should use narrow builtin pack ids. - Moved active official semantic ownership behind narrow builtin descriptors for
language packs, stdlib/library slices, protocol packs, and value-graph laws while
preserving existing product behavior except for additive provenance/reporting
metadata. - Kept local external semantic-pack manifests explicit opt-ins and metadata-only.
Local manifests are validated and reported, but they do not influence clone
families, ranking, witnesses, exact/near results, or value-law provenance.
Fixed
- Split Go stdlib namespace-call ownership out of the generic builtin method-call
compatibility pack intonose.go.stdlib.namespace_calls. - Aligned semantic-pack conformance documentation examples with the current inventory
and check JSON report shapes.
Performance
- Kept builtin descriptor and external metadata handling out of per-node and per-unit
analysis hot paths. The new semantic-pack diagnostics are static/reporting surfaces,
and adoption/inventory/compatibility reports are checked independently from query
analysis.
Install nose-cli 0.15.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.15.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.15.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.14.0 - 2026-06-20
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 capabilitiesnow advertises
query.capabilities.multi_root. - Added a hidden
nose gap-impactresearch 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 querymachine-readable contract. Query JSON is now schema v4, family
locations carry member ids,--baselinefamilies carrybaseline_status, query rows expose
source_comparable, family objects carry raw detectormetricsfor evaluation tooling,
dashboard JSON exposes the stablefamilies[]key, verified evidence labels distinguish
exactfromshared-core, and cross-language rows report repeated semantic volume instead of
~0 removable. - Redesigned query baselines as schema v2
accepted-duplicationfiles 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.pywrapper,
moving manifest mechanics intobench/corpus_prune/core.pyand 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++.hheaders that
were previously routed to the C parser. On the pinnedbench/reposcorpus this cuts parser
ERRORRaw 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, andfallthrough, 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, andlet
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_Storeis 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 4019.90s,gap-impact bench/repos --top 4021.97s,
query sympy3.80s,query raylib3.25s, andquery alacritty0.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 | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.14.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.13.3 - 2026-06-19
Release Notes
Changed
- Removed the old
scanandreviewCLI surfaces. Usenose query <path> ...for clone-family
exploration andnose query <path> base=<ref>for divergent-edit gates. - Bulk
nose query ... all top=0 --format jsonrendering now reuses one source-line cache while
preserving byte-identical JSON. This keeps the existing all-copiesparamscontract but avoids
re-reading and anti-unifying every family independently during JSON output. - Rebased the CI line-coverage ratchet to 83% after the query-only CLI deletion and
legacy-prelude merge. Current localcargo llvm-cov --workspace --summary-onlyline coverage is
83.68%; keep the workflow andscripts/check-ci-local.shin sync.
Performance
- Re-profiled the checked-out
bench/reposcorpus with a release build after the render fix:
150/150 repos succeeded, 0 repos >= 4s, 82.063s total, max 3.989s (sympy).
Representative byte-identical stage checks:raylibquery_render5284.7ms → 67.3ms,
sympy778.7ms → 166.7ms, andbulma3124.8ms → 87.9ms.
Install nose-cli 0.13.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.13.3/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.13.3
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.13.0 - 2026-06-18
Release Notes
Adds a Swift language frontend and brings Markdown near-duplicate prose detection into
nose query as a new domain (alongside code, CSS, and HTML), plus a Type-4 soundness fix and a
higher cross-language Type-4 coverage floor. Detection of the existing languages and the
--format json query-JSON v2 contract are unchanged.
Added
- Swift language frontend (#442). Swift joins the first-party languages (Python, JavaScript,
TypeScript, Go, Rust, Java, C, Ruby) with tree-sitter lowering and semantic coverage, so Swift
copy-paste, renamed, and Type-4 same-logic clones are detected and proven like the others. - Markdown same-language near-duplicate prose as a
nose querydomain (epic #435).nose querynow reports near-duplicate prose across Markdown documents alongside code clones. Per
capabilities over features, duplication has one entry point, so markdown is surfaced
throughnose queryexactly as the CSS/HTML declarative track is — a "markdown near-duplicates"
section in the human dashboard and a top-levelmarkdownarray under--format json— not as a
separate command. Prose is not code, so it uses a deliberately separatenose-markdownengine:
a character-n-gram pipeline (MinHash-LSH + winnowing + containment candidate generation →
IDF-weighted TF-IDF verify/rank → line-level Smith-Waterman span witness), not the value-graph
IL. Reports ranked families with a relation tier + score, an exact span witness, and
orthogonal evidence (commonness/DF, removable lines, files). Honesty contract:
"near-duplicate (score + witness + commonness)", never "same meaning" or "worth removing" —
boilerplate copies are true duplicates surfaced with high commonness, never suppressed.
Same-language only (cross-lingual/paraphrase need an LLM, out of scope). Deterministic
(byte-identical output). Measured against frozen, LLM-built goldens (bench/markdown/, no
human in the loop: 3 heterogeneous judges, Fleiss κ 0.70/0.71, anchor self-calibration 1.0):
PR-AUC 0.995 / R@P95 0.96 on the code-of-conduct corpus, and an honest multi-genre baseline of
PR-AUC 0.944 / R@P95 0.74 across 5 doc genres, candidate-recall 1.0. Built on the
algorithm survey indocs/markdown-dup-detection-algorithm-survey-2026-06-18.md. See
docs/markdown-duplication.md.
(#435 #436 #437 #438 #439 #440 #441 #444)- Field-evaluation precision/usefulness fixes (#443, #447). (P0) default vendor-dir excludes
(node_modules,vendor,target, …) +nose.tomlexcludeglobs, so a non-git project's
node_modulesno longer floods the report (one field project went 145 noise families → 0); a
min-shared-grams match-substance floor drops thin overlaps. (P1) strip GFM table
scaffolding (pipes/separator rows are format, not content); strong-edge clustering (weak
edges corroborate but don't chain mega-families); confidence-weighted ranking. (P2) large
multi-file clusters are reported as templated sections ("skeleton repeated N× across M
files"), not a clone family — so a templated-doc blob no longer masquerades as one family. - Containment-witness gate (P3, #449). A size-disparate small-in-large containment match
must now have a real contiguous shared-line block, not just scattered char-gram overlap — a
small generic stub no longer gets pulled into a large unrelated doc by common-morpheme
coincidence. Surgical: one field project's spurious mixed-granularity families dropped 8 → 5
with genuine small-in-large and reworded same-size near-dups preserved. - Synthetic recall-vs-edit-ratio benchmark + recall gate (#443, #450). The golden gates
precision; this adds the missing recall gate — a deterministic, self-contained benchmark
(nose-markdown::synth, committed base corpus) that injects controlled edits at known ratios
and asserts recall floors (1.00 / 0.95 / 0.85 / 0.65 at 0/0.1/0.2/0.35 edit ratio), so a
future change that silently sacrifices recall fails CI. - Multi-domain precision golden + regression gate (#443, #454). The original precision
golden was single-genre boilerplate (Contributor Covenant CoC), which over-stated precision.
Added a frozen multi-domain golden —bench/markdown/corpus-docs/(165 files across 5
genres: CLI reference, function/API reference, guides, framework docs, READMEs) +
golden.docs.v1.json, built the same no-human way (Fleiss κ 0.71), wired into a precision
regression gate (eval::docs_golden_precision_floor). The golden-build scripts now take paths
so any corpus can be golden'd.
- Field-evaluation precision/usefulness fixes (#443, #447). (P0) default vendor-dir excludes
Changed
- Swift Type-4 exact coverage parity slice. Swift now has evidence-backed exact-query
coverage for five previously-open matrix cells: typedflatMapvs nested append builders,
module import identity,Dictionary[key, default:]map-default lookup, literalInt
clamp ternaries vsmin(max(...)), and integer-gated total-order comparison absorption.
The implementation is deliberately proof-bounded: wrong module/member/key/default
coordinates, optional??defaulting,Doubleclamp forms, and overloaded/String
comparisons remain adjacent hard negatives. The checked-in Type-4 matrix moves Swift from
15/24 to 20/24 applicable cells, and focused probes now run through
nose query ... witness=exactrather than the deprecated scan path. - Type-4 coverage floor raised to ≥50%. The checked-in coverage matrix
(bench/type4/coverage_matrix.v1.json) now keeps every primary language at or above 56% of
covered applicable cells, backed by new evidence-carrying probes (extract-method-inline,
numeric tail recursion, …) for C, Go, and others.
Fixed
structural_foldreassociation gated to integer heads (#434). A Lean obligation audit (all
24) found the right-fold→left-fold loop rewrite — proven sound overIntonly — could admit a
float-valued head via the coarseValueDomain::Number, and float+/*is non-associative, so
results could change. Addedhead_possibly_float(rejects float literal /Op::TrueDiv/
float-typed param), measured byte-identical on all 135 corpus repos (0 recall cost,
soundness gain), plus added Lean theorems for previously-unproven firing rewrites
(eq_commutes/ne_commutes, guard merges, and astructural_foldfloat counterexample).- Swift implicit-member lowering gap (#452, #455). Swift implicit-member expressions now lower
correctly, closing a coverage gap.
Install nose-cli 0.13.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.13.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.13.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.12.0 - 2026-06-18
Release Notes
Reworks the nose query terminal output to match the project's reporting philosophy —
scope-blind, plain-language, colour-aware — and sweeps the user-facing docs for drift and
consistency. Detection behavior and the machine contract are unchanged: --format json still
emits query-JSON v2 and spells the witness subdag.
Changed
nose queryhuman-output redesign (#431). Families now rank purely by extractability,
scope-blind — test and production are treated alike. The old prod-first partition, the
"(production first)" label, and the pushedscope=prodrecommendation are gone;scope
stays a neutral filter. The opaquesubdagwitness reads asshared-corethroughout the
human output, and the confidence line regroups as proven (exact + shared-core) /
copy-paste / similar with a one-line legend. New TTY-gated colour (zero-dependency
mod style): witness tags colour-coded, paths dimmed, symbols bold — disabled under
NO_COLOR, when piped, and for the JSON/Markdown/SARIF formats, with column alignment
computed on visible width so ANSI never skews the columns. The tersegrammar:block
becomes a runnableexplorecheatsheet.- CLI surface cleanup (#431). The deprecated
scan/reviewand the experimental
behavioral-gateare hidden from top-level--help(they still work, still warn on a TTY,
and stay listed undercapabilities.commands.deprecated); flag docs are self-contained
instead of "(same as scan)"; count nouns are pluralized; empty/single-directory dashboards
no longer emit dead next-commands.
Documentation
- User-facing docs drift, consistency, and IA sweep (#431, #432). Re-verified every
user-facing page against the live CLI (clap help, query DSL parser, query/scan JSON,
capabilities). Reconciled the witness vocabulary (shared-corehuman ↔subdagJSON);
corrected scan-JSON-v1-only fields wrongly attributed to query-JSON v2 (baseline_status,
ignore.expired,ignored_families) and pointed query users at thesince=<baseline>term;
clarified that thetopconfig key boundsnose scanonly; documented thatsort=sites/
hazardwork underqueryand thatbehavioral-gateis hidden; renamed usage "Scan modes"
→ "Detection modes"; added a canonical "default surface" section; de-duplicated the CSS/HTML
detail againstlanguages.md; gave Vue/Svelte their own extension table; and fixed broken
cross-links (awiki lintclean).
Notes
- Control-flow lowering converged on shared
lower.rshelpers (#430). The per-language
if/for/while/stmt-as-blocklowering for C/Java/JS/TS collapsed onto three
closure-parameterized helpers; the emitted IL is byte-identical by construction (verified on
redis/guava/axios/bat/black), eliminating three of nose's own flagged self-clones. No
behavior change.
Install nose-cli 0.12.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.12.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.12.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.11.0 - 2026-06-17
Release Notes
Adds a declarative clone-detection track — CSS and HTML/markup, by computed-style and
rendered-DOM equivalence — alongside the imperative value-graph engine, plus a cross-dialect
markup model that converges the same component across HTML/Vue/Svelte/JSX/TSX.
Added
- Declarative CSS clone detection by computed-style equivalence (#413, #415, #416). CSS is
now a first-class language on a new DECLARATIVE track that sits alongside (not inside) the
imperative value-graph moat. A newLang::Css+CssRule/CssSelector/CssDeclIL feeds an
exact fingerprint that is the rule's canonical computed/declared style — value
canonicalization incss_value(color#fff≡#ffffff≡whiteover the full 148-entry
named-color table, length0px≡0, box-shorthand collapse,url()/hsl()spelling
normalization) and selector/order-independent matching, but cascade-preserving (repeated
property last-wins; shorthand+longhand co-occurrence kept order-sensitive). At-rule preludes
(@media/@supports/@container) are canonicalized so equivalent conditions converge while
distinct ones stay apart (closes a latent prelude false merge). Soundness is by construction
(fingerprint is the computed style, no IL rewrite) plus adversarial per-rule batteries and a
domain-namespaced hash that can never collide with an imperative one; registered as the
normalize.css.computed_style(empirical-only) obligation. Measured by a labeled
benchmark (tests/css_html_quality.rs): recall 13/13, soundness 14/14, verify gate 0 false
merges on the frontend corpus. - Declarative HTML markup clone detection by rendered-DOM equivalence (#413). New
HtmlElement/HtmlAttr/HtmlTextIL; every element subtree is a unit. The exact fingerprint
is the canonical rendered DOM — a recursive subtree hash over lowercased tag + attribute
set + ordered children, canon over attribute order, boolean-attr form
(disabled≡disabled=""), class-token set, tag/attr case, and whitespace
(<pre>/<textarea>kept verbatim). Inlinestyle="…"reuses the full CSS computed-style
canon. The structuralnearchannel abstracts declarative leaf values, so a repeated component
shell with different content surfaces as similar while identical DOM surfaces as exact. <script>/<style>/markup multi-region files (#413). A container file
(.html/.vue/.svelte) lowers to several region ILs —<script>as JS/TS,<style>as
CSS, the markup tree as HTML — all sharing the container's path, so a duplicated block in a
component's<style>and a standalone.cssform one cross-file family.- Cross-dialect markup clones across HTML/Vue/Svelte/JSX/TSX (#417). All five dialects lower
into the common declarative markup IL so the same component converges across dialects. JSX/TSX
now lower toHtmlElement/HtmlAttr/HtmlText(was an imperative Call-tree); a new
HtmlControlnode wraps repeat/conditional idioms (Vuev-for/v-if, Svelte
{#each}/{#if}, JSX.map/&&/ternary). Dialect-idiom normalization
(className→class,htmlFor→for,router-link/Link→a,to→href,:src≡src)
runs in the handlers. The exact channel stays sound — a loop wrapper is structurally distinct
from a single element and never exact-merges with it; bound-attribute expressions are kept
verbatim — so cross-dialect matches land onnearunless the rendered DOM is genuinely
identical. Measured on a realworld React+Vue+Svelte corpus: cross-dialect markup families
0 → 9 (3 three-way), pinned by a six-test adversarial soundness battery. - async↔sync twins converge in the near channel — dual-view
await(#412). The #1
real-world Type-4 gap (§K/§CU): anasync fnand its sync twin (identical body moduloawait)
were 0 families. A dual view of the value graph keyed byBuilder.await_transparentevaluates
await e → efor the fingerprint (twins converge) while the witness keeps an
Opaque(VG_PROTOCOL_AWAIT,[e])wrapper so the graded witness labels themasync-mirror(a
transformation, neverequal_modulo_holes). The exact channel is provably inert
(await→Raw→exact_safe=false): verify clean, exact families byte-identical. Synthetic recall
0 → 6/6, hard-negative FP 0/3; modest real-corpus lift (httpx +1, most twins already converge
via the anchor path). - Rust match-arm payload bindings now converge bound-name copies (#404, #390 follow-up). A
match arm's payload binder (thevinSome(v)) lowers to a projection assignment prepended to
the body (v = scrutinee.0), so it is alpha-canonicalized andSome(a) => f(a)≡
Some(b) => f(b). Conservative (rust_bind_arm_pattern): only unambiguous single-payload
tuple-struct bindings and named struct-field projections; multi-element/nested patterns stay
unbound.nose verify --max-violations 0clean, cross-variant (SomevsOk) stays distinct.
Changed
- Compiled/distributed CSS is kept off the default surface (#424, #426). The frontend gold
set measured the CSS-framework default surface at ~10% worthy, mostly preprocessor output. A
content-based filter (looks_compiled_css) now treats a.csscarrying a build marker — a
preserved/*!license banner, a versioned header, a trailingsourceMappingURL, a sibling
.css.map, or a.min.cssname — asgenerated(off the default surface), and
family_is_compiled_css_pipelinedemotes an all-CSS family with at most one non-compiled member
(a source partial echoed through source→compiled→minified). Preprocessor source files stay on
the surface; a genuine dedup spanning ≥2 source files stays. Measured on the gold set:
0 worthy dropped, default-surface worthy-rate 20% → 41% (framework 11% → 31%). nose statsJSON moved under the tool-wide--format json(#420). The one-off--json
flag is removed (not aliased — one way, not two; pre-1.0 diagnostic command, sole in-repo
consumer migrated), sostatsfollows the same--formatcontract asquery/scan/il.- tree-sitter core upgraded
0.24→0.25, grammarstree-sitter-c→0.24.2,
tree-sitter-python/tree-sitter-javascript→0.25.0(#403, unblocks the reverted
#399/#400/#401). The bumped grammars compile to grammar ABI 15; core 0.25 accepts ABI 14
and 15, so the still-pinned 0.23 grammars (java/ruby/typescript) keep loading
alongside them. Internal-only — no Rust API changes were needed, andnose query --format jsonoutput is byte-identical across the bump on C/Python/JS corpora (the normalizer
absorbs the CST-shape deltas), with the soundness gate (verify --max-violations 0) clean.
Validated on acargo cleanrelease build (the stale-grammar-object trap that produced the
#402 false-green; with core at 0.25 both ABI versions load, so it can no longer recur). tree-sitter-rustupgraded0.23→0.24.2(ABI 15; follows #403). Behavior-neutral:
nose query --format jsonis byte-identical before/after on the Rust dogfood tree
(crates/) and a Rust corpus (alacritty), with the dup-gate and soundness gate clean.tree-sitter-goupgraded0.23→0.25.0(ABI 15; follows #403), with the required
go.rsmigration: go 0.25's one structural change is wrappingblock/ switch-case /
select-case statements in a newstatement_listnode, so the frontend now flattens that
wrapper (stmt_children) — without it every nested statement orphans to Raw, spiking the go
Raw ratio 0.7% → 29%. With the migration the Raw ratio is restored to 0.7% andnose query
output is byte-identical to go 0.23 on 12/16 go corpus repos; the remaining four differ by
≤4 families from go 0.25's own parse-behaviour refinements (Raw ratio equal-or-lower, soundness
gate clean — not a lowering regression). (type_aliasalso gained atype_parametersfield for
generic aliases; the frontend ignores type declarations, so it has no effect.)
Fixed
- False merge closed: JS nullish-coalesce map default (adversarial co-evolution series 10,
#411, §CT). A latent oracle-blind merge — JSm.get(k) ?? d(nullish coalesce) shared an
exact fingerprint with the absence-only defaults (has/in/getOrDefault/.get(k, d)/
=== undefined), though they diverge on a present null-valued key. The null-guarded map default
now lowers to the faithfulValueOrDefault(notGetOrDefault), and theeval.rs
=== undefined-over-map.getexception is dropped. Corpus byte-identical; closes #409, #410. nose queryreport locations bounded to EOF + markdown drill-down (#428: #419, #421, #422).
Frontend::span()read tree-sitter'send_position().row + 1verbatim, so a unit ending in a
trailing newline reportedend_line = content_lines + 1(past EOF); the column-0 correction
already used indeclaration_facts.rsis now applied, dropping out-of-bounds locations across
the corpus to 0 (family/location counts unchanged).id=<fam> --format markdownnow renders the
all-copies extraction skeleton (andfullthe representative diff), composing with the
human/JSON views; help/usage/query-json wording corrected so thevaluesort key reads as
duplicated volume, not theremovablefield.nose query top=0now shows all families (matchingnose scan --top 0), instead of
returning an empty result. The dataset build already usedtop=0for "every family"; the
display paths (list,base,reinvented, and the--format markdown/sarifreport) now
agree, sonose query <path> --format sarif top=0is the complete-upload spelling and query
fully subsumes scan's truncation control. Notop=term still defaults to 30.
Notes
0.10.0 - 2026-06-15
Release Notes
Breaking: nose query becomes the primary surface and nose scan/nose review are
deprecated (both still work, with an interactive one-line nudge; removal is slated for a
later release).
Added
nose queryis now a complete surface over the same datasetscancomputes:- Explorability (#374): DSL negation (
field!=value/path!~substr), set-membership
OR (witness=exact,subdagmatches either;!=over a comma-set drops all of them), an
at=FILE:LINEselector (a stable family handle across edits), asame_symbolevidence field- facet (the parallel-variant signal), an
existing_helperfield oncall-existing-helper
families (names the member to call — and marks itrole: "existing-helper"— so it isn't read
as one more copy to fold), and aspotclassfacet (leaf-onlyvsstructural) that
separates near families whose varying spots are clean value-leaves from those with genuine
logic divergence (computed on demand from the graded witness — only when queried, for cost).
- facet (the parallel-variant signal), an
- Analysis flags:
--mode/--min-*/--exclude/--cache-dir/--ignore-file/
--semantic-pack/--config, configured identically to scan. - CI gate:
--fail-on any/newwith--baseline/--write-baseline, reusing scan's
gate/baseline/ignore logic —nose query <path> --fail-on anyis a drop-in gate. - A structured, versioned JSON contract (query-json, schema v2)
across every view, advertised ascapabilities.schemas.query_json, plus--format markdown/sarifreport output (reusing scan's formatters over the query selection). - Object model — query the whole dataset, not just families:
group=buckets now carry
summed removable lines and rank by them (group=dir/group=fileis a duplication hotspot
map),fileis a new group key, thefamilyview emits fold-graph links
(subsumes/subsumed_by— the relatedid=handles, not just a count), and a new
reinventedview surfaces the reinvented-helper channel ("call the existing helper") that
was previouslyscan --show reinventedonly. - Decision completeness — act in one turn:
fullskeletons annotate each varying spot
with a coarse value-class hint (⟨param N: literal|name|call|expr|block⟩) for the helper
signature (#374 item 6), and the family object carries proof depth —value_nodes(the
shared value-multiset size an exact family proves identical) and per-location
shared_subdagspans (where a sub-dag clone's proven shared computation lives). - Temporality — query the loop, not a snapshot:
since=<baseline>exposes each family's
status(new/changed/unchanged) against a saved snapshot as a queryable field —
status=newfilter,group=statusfacet,statusin JSON. Unlike--baseline(which
hides accepted families for the gate),since=hides nothing;since=B status=new --fail-on anyis the composable equivalent of--baseline B --fail-on new. - Divergent-edit view —
base=<git-ref>: thenose reviewpipeline
surfaced under query. Detects families at the ref and flags the ones a diff changed in one
copy but not its siblings (a likely un-propagated fix), each item carryingfire_eligible
(the §BV proven-shared-logic verdict);base=REF --fail-on anyis the CI gate, firing only
on the proven case. Reuses review's detection verbatim, so the fire precision is identical.
- Explorability (#374): DSL negation (
- Analysis —
nose statsseparates protocol-boundary Raw from lowering-gap Raw (#390).
Constructs lowered as deliberate fail-closed boundaries (await,try/?,defer,go,
channel_*,select,yield) areRawby design, not coverage gaps.statsnow reports
boundary_raw(overall + per-language) and tags each unhandled kindboundary/gap, so the
lowering worklist (coverage_attribution.py) isn't misled into unsoundly "fixing" a boundary.
Corrected corpus picture: rust/go genuine lowering gap is 0.37%/0.18% (the rest is
boundaries); the remaining fixable mass is parse-failureERROR(a grammar axis) and
low-value C type-level declarations. See experiments §CR. - Analysis — Rust constructor patterns now lower as variant tests (#390). A
match/if let/while lettest onSome(v)/Ok(_)/Point { x, y }lowered the whole pattern to an
opaqueRawnode (and split copies differing only in binding name); it now lowers to the
constructor path (the discriminant), parallel to a unit variant likeNone. Measured: corpus
RustRawratio 2.623% → 1.347%, soundness clean (0 false merges), gold-set Rust
worthy-recall +1 with no regression elsewhere. (The variant condition is now Raw-free;
whole-family convergence for copies differing only in the bound name needs binding extraction,
a follow-up.) See experiments §CP (the coverage worklist) and §CQ. nose scanis deprecated in favour ofnose query. It still works (an interactive run
prints a one-line nudge);capabilitiesmoves it fromcommands.stableto
commands.deprecated; docs lead withquery. Removal is slated for a later release.nose reviewis deprecated in favour ofnose query <paths> base=<ref>(which runs the
same detection — a parity test holds them identical). It still works (interactive nudge);
capabilitiesmoves it tocommands.deprecated. Removal is slated for a later release.
Deprecated
nose scan(and the scan-JSON v1 contract) andnose review— migrate tonose query
(query <path>,query <path> base=<ref>) and the query-JSON v2 contract.
Documentation
- The docs lead with
nose query. README, the wiki home,
getting-started, and the full usage reference now
presentnose queryas the everyday command — explore, one-shot report (--format markdown),
PR check (base=<ref>), CI gate (--fail-on), and the versioned JSON contract.nose scan/nose revieware documented as deprecated aliases, and usage is reordered so the
primary command and the shared Ranking / detection-mode sections come before the deprecated
scanreference. The CLI--helptext (long_about, thescan/querysummaries) was
updated to match. - Code↔docs drift sweep. Fixed the capabilities example
(commands.stableno longer listsreview;deprecatedadds it;schemas.query_jsonadded);
migrated the agent-recipe decision procedure to query-JSON v2 field
names; added a deprecation banner to scan-json pointing to query-JSON v2;
corrected clone-types (nearis part of the default surface, not
opt-in); updated languages for the #390 boundary/gap Raw split; and
refreshed the stalenose querydashboard examples against the shipped output.
Install nose-cli 0.10.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/corca-ai/nose/releases/download/v0.10.0/nose-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install corca-ai/tap/noseDownload nose-cli 0.10.0
| File | Platform | Checksum |
|---|---|---|
| nose-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| nose-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| nose-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| nose-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |