github sponge-b0b/arid v2.1.0-beta.1

latest releases: v2.2.3, v2.2.2, v2.2.1...
pre-releaseone month ago

Arid 2.1.0-beta.1 — Auditable Maintenance Beta

Arid 2.1.0-beta.1 marks the feature-freeze point for the Arid 2.1 release line.

The detector remains intentionally unchanged from 2.0: Arid still finds exact normalized Python duplicate code and reports DUP001. V2.1 adds auditable suppression maintenance, explainable discovery, stale-maintenance enforcement, and a human-facing total scan-time footer around that same detector.

This beta is for broader real-world and integration validation before release-candidate qualification. New product features are not planned after this point. Fixes are limited to correctness defects, compatibility regressions, deterministic-output defects, platform inconsistencies, documentation defects, or release-process defects inside the approved v2.1 contract.

What is frozen

The beta carries forward the complete v2.1 surface introduced in alpha.1:

  • --suppression-status with deterministic active / stale classification
  • idempotent suppression directives
  • valid # arid: disable through EOF
  • --fail-on-stale for suppression status and baseline status
  • --explain-path <PATH> using the same effective discovery policy as real traversal
  • --no-ignore-files for bypassing ignore-file-derived filtering without bypassing Arid exclude, hidden-path, source-type, or symlink policy
  • suppression-status-v1
  • path-explanation-v1
  • direct administrative --report json=PATH output rendered from the same typed model as JSON stdout
  • the always-on human-facing Total time: footer for completed normal text scans
  • timing excluded from JSON, Markdown, SARIF, supplemental report files, and all versioned machine contracts

The existing 2.0 contracts remain unchanged, including report-v4, error-v1, baseline-v1, capabilities-v1, finding identity, ordinary exit meanings, normalization behavior, and duplicate semantics.

Alpha qualification results

The published 2.1.0-alpha.1 release passed the complete pre-publication and published-artifact qualification path.

Before publication, Arid passed:

  • the full inherited v2 integration suite
  • the focused v2.1 suppression, stale-policy, discovery, path-explanation, administrative-output, and timing suite
  • Black, Django, mypy, Rich, and Unicode/space-path real-world validation
  • Django worker determinism at workers 1, 2, 4, and 8
  • malformed-source validation
  • a v2.0.0 → v2.1 performance regression comparison on Requests, Pydantic, and Polaris with no measurable regression
  • the production release build matrix on Linux x86-64, Linux aarch64, macOS arm64, macOS x86-64, and Windows x86-64

After publication, both the exact GitHub Linux x86-64 standalone artifact and the exact PyPI arid==2.1.0a1 installation passed the full durable validation/v2.1.sh contract suite.

Published-artifact validation confirmed:

  • the new CLI controls execute correctly
  • normal text scans display exactly one Total time: footer when appropriate
  • exit-2, JSON, Markdown, SARIF, and supplemental reports remain timing-free
  • suppression-status-v1 and path-explanation-v1 outputs validate against the tagged schemas
  • administrative JSON stdout and direct JSON report files are byte-equivalent

No detector-semantic regression or material performance regression was found during alpha qualification.

Suppression lifecycle maintenance

--suppression-status treats effective suppression regions as lifecycle state rather than permanent lint graffiti.

Each effective region is exactly one of:

  • active — removing the suppression would expose otherwise-reportable duplicate code or allow a duplicate to cross the suppression boundary
  • stale — the suppression is no longer needed under the current analysis settings

Repeated same-state directives are valid no-ops, and # arid: disable through EOF is valid without a matching # arid: enable.

--fail-on-stale can turn stale suppression or baseline state into exit status 1, supporting a maintenance ratchet of:

zero new duplication + zero obsolete suppression

Explainable discovery

--explain-path <PATH> explains one inclusion or exclusion decision without parsing Python, running duplicate detection, or recursively tracing a directory tree.

--no-ignore-files disables ignore-file-derived traversal filtering for one invocation while preserving Arid's own exclusion policy, hidden-path behavior, source-type selection, and symlink policy.

Together these controls make discovery decisions inspectable without introducing a second discovery implementation.

Human-facing timing

Completed normal text scans include a concise footer such as:

Total time: 18.7 ms

Timing is presentation-only. It is intentionally absent from deterministic machine contracts and does not change report-v4 or any other versioned schema.

Install the beta

With uv:

uv tool install --prerelease allow "arid==2.1.0b1"
arid --version

Or with pip:

python -m pip install --pre "arid==2.1.0b1"
arid --version

Expected version output:

arid 2.1.0-beta.1

Official GitHub Action

For this beta:

- uses: sponge-b0b/arid@v2.1.0-beta.1
  with:
    paths: .

The release workflow verifies the published Action against the exact PyPI package version encoded in the tagged Action metadata.

What to test

Beta feedback should focus on defects and integration friction in the frozen v2.1 surface, especially:

  • active/stale suppression classification on real repositories
  • stale-policy enforcement in CI
  • ignore-file and Arid-exclude interactions
  • path explanation in monorepos and unusual repository layouts
  • symlink and hidden-path behavior
  • direct administrative JSON output
  • machine-contract determinism
  • timing-footer presentation across normal text scans
  • absence of timing from machine-oriented output
  • compatibility with existing report-v4 and baseline-v1 consumers
  • platform-specific installation, packaging, and GitHub Action behavior

Any change to suppression-status-v1 or path-explanation-v1 after this point requires an explicit versioned contract decision rather than silent schema mutation.

Next steps

After beta publication, Arid 2.1 enters real-world beta stabilization. The release candidate will be prepared only after published beta artifacts pass the real-world validation campaign, machine contracts remain stable, ordinary detector behavior continues to match 2.0 expectations, timing behavior remains correct, and no material unexplained performance regression appears.

Don't miss a new arid release

NewReleases is sending notifications on new releases.