pypi lintlang 0.3.8
LintLang v0.3.8 — Pairwise differentia for ambiguous tool definitions

latest releases: 0.6.0, 0.5.3, 0.5.2...
one month ago

LintLang 0.3.8 adds a relational static check for a failure that per-tool validation cannot see: two individually valid tool definitions that do not explain how they differ.

The new capability: H1.6 pairwise differentia

H1.6 compares tool definitions within one parsed input. Under LintLang's curated synonym model, it reports a pair when one or both descriptions contain no distinguishing analysed term—a differentia that tells a reader when to choose one tool rather than the other.

It distinguishes two cases:

  • Mutual: neither description distinguishes its tool.
  • Domination: every analysed term in the less-specific description is covered by the other, so the finding identifies which description to repair.

Findings expose the precise H1.6 sub-code in terminal, Markdown, and JSON output while retaining H1 as the stable pattern family.

What is different about it

Schema validation assesses whether each tool is valid on its own. H1.6 examines the relationship between tools. That lets it surface some collisions that near-duplicate wording cannot—for example, descriptions whose meaningful terms differ only through synonyms even when ordinary word overlap is low.

The detector remains deterministic, local, and zero-LLM. It adds no API, telemetry, or network calls to scanning.

Release behavior

H1.6 findings are MEDIUM, producing REVIEW. Existing integrations using --fail-on fail continue to block only HIGH and CRITICAL findings. Teams that want H1.6 to gate CI can opt into --fail-on review after inspecting their baseline.

H1.6 includes regression guards for short tokens, singular/plural cardinality, non-Latin descriptions, explicit cross-references, and declared aliases. Human-readable reports now print the H1 sub-code that JSON already carries.

Upgrade

PyPI or pipx:

python -m pip install --upgrade lintlang==0.3.8
# or
pipx upgrade lintlang

GitHub Actions:

- uses: hermes-labs-ai/lintlang@v0.3.8
  with:
    path: AGENTS.md

Pre-commit:

repos:
  - repo: https://github.com/hermes-labs-ai/lintlang
    rev: v0.3.8
    hooks:
      - id: lintlang
        args: [AGENTS.md]

Evidence boundary

  • Comparison scope is one parsed input. Directory scans do not aggregate tool definitions across files or infer a shared namespace.
  • Matching uses a finite English synonym lexicon. A clean scan is not evidence that no ambiguous pair exists.
  • Findings are static review signals; they do not demonstrate runtime tool-selection failure, certify safety, or replace evaluation and human review.
  • H2, H4, and H5 still treat quoted antipattern examples as directives in some documentation. Use intentional scan paths or .lintlangignore for reference prose.

Citation-ready summary

LintLang 0.3.8 adds deterministic H1.6 pairwise differentia detection within one parsed input, identifying tool-description pairs that lack distinguishing analysed terms under a bounded synonym model.

Verification

At merge commit b90f3f6, all required hosted checks passed: Python 3.10, 3.11, 3.12, and 3.13, plus the GitHub Action smoke test. The local release gate passed 276 tests and 76 subtests, Ruff, staged-file hooks, package-boundary checks, and exact-snapshot sdist/wheel builds.

See the README for usage and scope, or the full changelog for the complete release record.

Don't miss a new lintlang release

NewReleases is sending notifications on new releases.