Arid 2.2.0-rc.1 — High-Signal Duplicate Intelligence Release Candidate
Arid 2.2.0-rc.1 is the final frozen prerelease candidate for Arid 2.2.
The product behavior is unchanged from the fully qualified 2.2.0-beta.1 artifact. The detector still finds exact normalized Python duplicate code and reports DUP001; the v2.2 release surface remains the rich human Summary/Breakdown/Hotspots view, --summary-only, deterministic summary-v1, expanded GitHub Action summary outputs, and bounded adaptive file-preparation parallelism by default.
This RC exists because beta stabilization identified a release-process coverage gap after v2.2.0-beta.1 was published: the production Action E2E job exercised the Action successfully but did not explicitly assert the three new v2.2 outputs. The workflow has been corrected to verify occurrences, files-with-duplicates, and the logical contents of summary-json, while preserving the qualification-visible job identity.
No product, detector, packaging, compatibility, deterministic-output, machine-contract, Action-implementation, or platform correction was required after beta.
Frozen v2.2 behavior
Rich human summary
Normal text scans end with:
- Summary — files analyzed, files with duplicates, source/analyzed lines, duplicate groups, occurrences, duplicate lines, and duplication percentage
- Breakdown — duplicate-group counts and percentages by Context, Scope, and Distribution
- Hotspots — up to five files ranked by duplicate-group participation, then occurrences, then path
Hotspots are objective participation counts, not severity or quality scores.
--summary-only
Use:
arid . --summary-onlyfor concise human aggregate output without individual DUP001 blocks.
Use:
arid . --summary-only --jsonfor deterministic summary-v1 JSON.
Summary-only mode changes presentation, not detection, filtering, metrics, worker behavior, or exit policy. Supplemental --report files remain full report formats.
summary-v1
The compact machine contract includes completeness/error state, effective analysis metadata, aggregate duplicate metrics, fixed Context/Scope/Distribution counts, and deterministic top-five hotspots.
It intentionally excludes worker count, elapsed timing, color state, terminal layout, and human-formatted number strings.
The contract is derived from the final reportable findings after baseline and focus policy and does not introduce another detector path.
GitHub Action outputs
The official Action exposes:
occurrencesfiles-with-duplicatessummary-json
alongside the existing outputs.
The Action performs one scan and derives its outputs and optional reports from that same scan.
The production Release workflow now explicitly verifies all three v2.2 outputs, including the logical contents of summary-json.
Adaptive parallelism
Omitting --workers is equivalent to:
arid . --workers autoAutomatic selection uses available parallelism clamped to 1..=4, with fallback to one worker when parallelism cannot be determined.
Explicit numeric worker counts remain exact and are not subject to the automatic cap. Parallelism remains confined to file preparation and does not change duplicate semantics or deterministic machine output.
Beta stabilization evidence
The exact published 2.2.0-beta.1 artifact passed the complete real-world stabilization campaign.
Published artifacts
- exact GitHub prerelease verification passed;
- all five supported standalone assets were present;
- the published Linux x86-64 archive digest matched the GitHub release digest;
- exact PyPI
arid==2.2.0b1installed successfully; - standalone and PyPI artifacts both passed
validation/v2.2.sh; - standalone/PyPI
summary-v1output was byte-identical; - standalone/PyPI report-v4 output was byte-identical.
Real-world detector validation
The published beta passed the established campaign against:
- Black
- Django
- mypy
- Rich
- Unicode, space, non-ASCII filename, relative-path, and source-location path cases
Detector behavior remained compatible with the established Arid 2.1 expectations.
Human summary validation
Summary, Breakdown, and Hotspots remained compact and legible across repositories ranging from 69 to 2,927 analyzed files.
Hotspot behavior was useful on real repositories. Rich also demonstrated the intended objective behavior: generated/data-heavy Unicode tables dominated the unfiltered hotspot list because they genuinely dominated duplicate participation, while ordinary --exclude policy immediately produced application-focused hotspots without introducing special generated-code heuristics.
Semantic color was visually reviewed as restrained, readable, and semantically sensible. Stripping ANSI styling produced the same visible content as --color never after excluding the intentionally volatile elapsed-time footer.
Machine contract and determinism
Real Django summary-v1:
- validated against
schemas/summary-v1.schema.json; - was byte-identical across implicit default,
--workers auto, and explicit workers 1, 2, 4, and 8; - matched independently reconstructed aggregate counts from report-v4;
- matched independently reconstructed Context, Scope, Distribution, and Hotspots;
- excluded worker, timing, and color state as required.
GitHub Action gate
The published beta Action executed successfully in the production release workflow.
After identifying the missing assertions, non-publishing Release workflow run 33296962210 passed with explicit verification of:
occurrencesfiles-with-duplicatessummary-json
The correction changed release-process verification only; it did not change the Action implementation or Arid product behavior.
Published-to-published performance
The final beta campaign compared the exact published Arid 2.1.0 Linux x86-64 standalone artifact with the exact published 2.2.0-beta.1 artifact using two reversed-order Hyperfine passes, three warmups per pass, and ten measured runs per pass.
| Corpus | 2.1 implicit | 2.2 implicit | 2.2 --workers 1
| 2.2 --workers auto
| implicit change |
|---|---|---|---|---|---|
| requests | 16.9 ms | 15.4 ms | 16.3 ms | 15.6 ms | -9.1% |
| pydantic | 239.7 ms | 129.6 ms | 237.2 ms | 126.6 ms | -45.9% |
| polaris | 501.5 ms | 293.9 ms | 497.6 ms | 295.7 ms | -41.4% |
| duplicate-heavy | 61.2 ms | 40.6 ms | 59.3 ms | 38.4 ms | -33.8% |
No material unexplained performance regression remains.
Compatibility
Arid 2.2 preserves the 2.1 detector and existing machine/report compatibility surfaces, including report-v4, finding fingerprints, baseline-v1, suppression/discovery/focus behavior, normalization semantics, ordinary exit meanings, Markdown, SARIF, and supplemental reports.
The intentional v2.2 changes remain limited to the new aggregate presentation and summary contract, expanded Action outputs, and adaptive implicit worker selection.
Install the RC
With uv:
uv tool install --prerelease allow "arid==2.2.0rc1"
arid --versionOr with pip:
python -m pip install --pre "arid==2.2.0rc1"
arid --versionExpected version output:
arid 2.2.0-rc.1
Official GitHub Action
For this RC:
- uses: sponge-b0b/arid@v2.2.0-rc.1
with:
paths: .Qualification target
This RC is intended to pass the complete published-release-candidate qualification campaign with no product-code changes afterward. If it passes, stable 2.2.0 promotion must be the exact metadata/documentation transition produced by release.sh from this qualified RC.