Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 18:10
· 58 commits to main since this release

Added

  • Annotation guide on --help and failing --strict-check — the format, a
    GOOD/FAILS contrast, and how to find the Non-concern, shown inline where you fix an
    annotation. Opt out with --no-guide.
  • Single-file --strict-check — lint one file, not just a directory (pre-commit
    hook, or the file you just wrote).
  • Directory charters — a directory carries its own Concern | Non-concern | IO
    line (a .annotation breadcrumb, else its entry file), promoted onto its tree row.
  • Actionable --strict-check diagnostics — each violation now names the file's
    language, the exact comment marker to use, the real line number (past any
    shebang/blank lines — no more hardcoded :1 that led fixes to clobber a shebang),
    the offending content, and a copy-pasteable conformant example. Missing vs.
    non-conforming annotations get distinct wording, and a wrong-marker line is echoed
    as found: '…'. The machine-parseable path:LINE: prefix is preserved. MCP
    strict_check inherits the richer messages.
  • Machine-readable --strict-check --format json — the strict check now emits a
    structured document ({passed, error_count, files_checked, violations, rule_violations}) when --format json is passed, one record per violation with
    path/line/language/category/marker/hint/example/found. The default
    TEXT report is unchanged. MCP strict_check returns this same structured object
    (byte-for-byte the CLI's --format json) instead of a flat text report.
  • ANNOTATION FORMAT in --help — --help now shows what a conforming
    annotation looks like, with a verbatim example sourced from the built-in
    [convention].example so help and enforcement can never disagree.
  • [convention].example config field — a full, conformant annotation line
    (per-language overridable, like require/hint) that feeds both --help and the
    strict-check diagnostics. A test proves every built-in language's example passes
    the lint it advertises.
  • Per-directory display cap — --max-per-node <N> (default 50) shows at most
    N subdirectories and N files per directory, folding the overflow into a single
    [+N folders and F files, use --full to expand] marker. Keeps signal-dense
    source trees fully visible while collapsing massive test/corpus folders to one
    line — the overview an agent wants without the token noise. Aggregate --tokens
    totals still reflect the full (untruncated) subtree, so a collapsed folder still
    reports its true size. Expand everything with --full (or --max-per-node 0).
    Display-only: the walk still visits every file, so --max-files is unaffected.
    JSON/MCP carry the breakdown as elided_dirs / elided_files (omitted when
    zero — no schema bump).

Changed

  • One invariant annotation format — the three-field Concern | Non-concern | IO
    grammar is now fixed (not configurable); the only per-language knob is the comment
    marker.
  • Stricter vacuity enforcement — a filler Concern (utils/helpers/…) and an
    inward Non-concern (this file's own …) now fail, matching what the guide teaches.

Removed

  • --explain — superseded by the annotation guide, now shown inline on a failing
    --strict-check and in --help.