Arid 2.2.0-alpha.1 — High-Signal Duplicate Intelligence Alpha
Arid 2.2.0-alpha.1 is the first public build of the Arid 2.2 release line.
The duplicate detector remains intentionally unchanged from 2.1: Arid still finds exact normalized Python duplicate code and reports DUP001. V2.2 focuses on making the evidence Arid already produces substantially easier for developers to understand at a glance and easier for CI systems, tools, and coding agents to consume compactly.
This is an alpha release. The intended v2.2 functionality is code complete and has passed pre-publication source, real-world, performance, and supported-platform qualification. Published package and artifact behavior now needs validation before the release line advances toward beta.
What is new
Rich human scan summary
Normal text scans now end with an information-dense summary instead of the previous minimal duplicate totals.
The summary includes:
- files analyzed
- files with duplicates
- source lines
- analyzed lines
- duplicate groups
- total occurrences
- duplicate lines
- duplication percentage
Detailed scans also include fixed categorical breakdowns for:
- Context: executable, declarative, mixed
- Scope: function, module, class, mixed
- Distribution: cross-file, same-file, hybrid
The percentages in these tables describe group share only. They are not quality grades or severity scores.
Objective duplicate hotspots
Normal text output now includes the five files participating in the most reportable duplicate groups.
Hotspots are ranked deterministically by:
- duplicate groups descending
- occurrences descending
- path ascending
A finding contributes at most one group count to a path even when that finding has multiple locations in the same file. Every reported location still contributes to the path's occurrence count.
Hotspots are intentionally descriptive rather than evaluative. Arid does not assign severity, health, or quality grades.
Concise --summary-only scans
--summary-only suppresses individual DUP001 finding blocks while preserving the same scan, filtering, metrics, worker behavior, and exit policy.
For human text output:
arid . --summary-onlyprints the Summary, Breakdown, and Hotspots sections without detailed finding blocks.
For JSON:
arid . --summary-only --jsonor:
arid . --summary-only --format jsonemits the new compact summary-v1 machine contract instead of report-v4.
Markdown and SARIF are intentionally not primary --summary-only formats.
Supplemental reports remain full existing report formats. For example:
arid . \
--summary-only \
--report json=artifacts/full-report.jsonprints the concise human summary while writing the complete report-v4 document to the supplemental file.
New deterministic summary-v1 contract
Compact machine-readable summaries use:
schemas/summary-v1.schema.json
The contract includes:
- scan completeness and structured errors
- effective analysis metadata
- files analyzed
- files with duplicates
- source and analyzed lines
- duplicate groups
- total occurrences
- duplicate lines
- duplication percentage
- fixed Context counts
- fixed Scope counts
- fixed Distribution counts
- deterministic top-five hotspots
The summary is derived exactly once from the final typed report after baseline and focus filtering.
Worker count, elapsed timing, color state, terminal layout, and other runtime presentation details are intentionally absent.
Better GitHub Action outputs
The official GitHub Action now exposes three additional outputs:
occurrencesfiles-with-duplicatessummary-json
summary-json follows the same logical summary-v1 contract as the CLI.
The Action still performs one Arid scan. The new outputs are derived from that same scan rather than by running the detector again.
Adaptive parallelism by default
Ordinary scans now use the same bounded automatic preparation-worker policy previously available through:
--workers autoTherefore:
arid .is equivalent in worker selection to:
arid . --workers autoAutomatic selection uses available parallelism clamped to the range 1..=4, with a fallback of 1 when available parallelism cannot be determined.
Explicit worker controls remain available:
--workers 1
--workers 2
--workers 4
--workers 8Explicit numeric values are honored as requested and are not capped by the automatic-worker limit.
Parallelism remains limited to file preparation. Duplicate detection semantics and deterministic machine output are unchanged.
Compatibility
Arid 2.2 preserves the focused exact detector introduced before this release.
The following remain unchanged from 2.1:
- exact duplicate semantics
DUP001- finding fingerprints
- report-v4 schema and meaning
- baseline-v1 schema and meaning
- error-v1
- suppression-status-v1
- path-explanation-v1
- suppression semantics
- discovery semantics
- focus semantics
- baseline filtering semantics
- normalization semantics
[tool.arid]behavior- explicit
--workers 1behavior - explicit numeric worker behavior
--workers autosemantics- ordinary scan exit meanings
0/1/2 --no-fail-on-findings- Markdown report semantics
- SARIF semantics
- supplemental
--reportsemantics - supported platform set
The intentional compatibility changes are:
- the normal human text footer is now the rich Summary + Breakdown + Hotspots presentation;
- the implicit worker default changes from serial execution to bounded automatic worker selection.
Pre-publication validation
Before this alpha, the v2.2 branch passed:
- the complete locked Rust test suite
- Clippy across all targets and features with warnings denied
- pinned Rust/rustfmt reproducibility checks
- Action and release Python unit tests
- locked release build qualification
- the complete inherited v2.1 validation suite
- the dedicated
validation/v2.2.shcontract suite summary-v1complete, zero-finding, and incomplete schema validation- summary-only mode and output composition validation
- baseline and focus summary parity checks
- supplemental report-v4 preservation
- plain/color visible-text equivalence
- worker determinism checks
- real-world validation against Black, Django, mypy, and Rich
- Unicode, spaces, non-ASCII filename, relative-path, and source-location validation
- the full supported-platform non-publishing Release workflow matrix
- stable 2.1.0 → v2.2 performance qualification
The supported-platform workflow passed on:
- Linux x86-64
- Linux aarch64
- macOS aarch64
- macOS x86-64
- Windows x86-64
Performance qualification
The pre-publication performance campaign used two Hyperfine passes per corpus with reversed command order, 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 | 17.0 ms | 16.4 ms | 17.2 ms | 15.0 ms | -3.6% |
| pydantic | 251.2 ms | 134.9 ms | 244.9 ms | 132.2 ms | -46.3% |
| polaris | 521.4 ms | 303.2 ms | 518.8 ms | 305.9 ms | -41.8% |
| duplicate-heavy | 61.6 ms | 39.2 ms | 62.1 ms | 42.1 ms | -36.3% |
The explicit v2.2 serial path remained effectively at stable 2.1 performance, while the new implicit bounded automatic default materially improved medium, large, and duplicate-heavy workloads.
Install the alpha
With pip:
python -m pip install --pre "arid==2.2.0a1"
arid --versionExpected version output:
arid 2.2.0-alpha.1
The official GitHub Action can be pinned to the alpha tag:
- uses: sponge-b0b/arid@v2.2.0-alpha.1
with:
paths: .What to test
Useful alpha feedback includes:
- whether the rich Summary makes large scans easier to interpret
- whether Context, Scope, and Distribution breakdowns surface useful duplicate patterns
- whether Hotspots identify the files developers naturally inspect first
--summary-onlyin local development, CI logs, and coding-agent workflows- parsing and schema assumptions for
summary-v1 - summary determinism across worker modes
- baseline and focus interactions with summary metrics and hotspots
- GitHub Action consumption of
occurrences,files-with-duplicates, andsummary-json - automatic worker behavior on machines with different available parallelism
- confirmation that explicit
--workers 1remains a reliable serial escape hatch - platform-specific packaging, PyPI installation, standalone binaries, and the GitHub Action
Detector-semantic regressions remain important: equivalent 2.1 and 2.2 scans with equivalent analysis settings should identify the same exact normalized duplicate code.
Known release stage
This alpha freezes summary-v1, hotspot ranking and top-five semantics, and summary-only JSON behavior for the 2.2 release line.
Product fixes are allowed during prerelease stabilization. New product scope is not. Any incompatible correction to the published summary-v1 contract requires an explicit versioned contract decision rather than silent schema mutation.