Skip to content

release: v0.1.2 — the gate-hardening batch + pre-release sweep - #968

Merged
aallan merged 4 commits into
mainfrom
release/v0.1.2
Jul 9, 2026
Merged

release: v0.1.2 — the gate-hardening batch + pre-release sweep#968
aallan merged 4 commits into
mainfrom
release/v0.1.2

Conversation

@aallan

@aallan aallan commented Jul 9, 2026

Copy link
Copy Markdown
Owner

The v0.1.2 release: rolls the four merged community PRs into [0.1.2], plus everything the six-auditor pre-release sweep surfaced — including one genuine crash bug, fixed test-first in this PR.

The batch being released

Four PRs — #960, #962, #964, #965 — closing three Stage 20 rows plus one ongoing-thread item, all by @chethanuk and each hardened in review.

What the sweep found (23 confirmed findings, 2-skeptic verified)

Fixed in this PR:

Release machinery

Versions to 0.1.2 across the 10-file surface; [Unreleased] emptied into [0.1.2] with compare links; HISTORY opens the combined "Stage 19 and Stage 20: The dual-threaded start" section (maintainer decision: the external thread runs the single-source sprint while verification completeness follows) with its index row; 200 tagged releases / 96 active days, both computed from git.

Closes #966
Closes #537

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added clearer E009 diagnostics for invalid string escapes and malformed string interpolations, including guidance and JSON-friendly details.
    • Updated project/version information to v0.1.2.
  • Bug Fixes
    • Improved CLI error reporting so these failures no longer produce crash-style tracebacks, and diagnostics are returned cleanly in both text and JSON modes.
  • Chores
    • Refreshed release notes, documentation, and test/validation guidance, plus updated CI dependency-audit checks.

Rolls [Unreleased] (the four merged community PRs: #852 limitations-sync,
#702 arm64 advisory lane, #956+#955 gate-honesty pair) into [0.1.2],
plus what the pre-release sweep found:

- fix(transform): an invalid string escape no longer crashes vera check
  with a raw lark.VisitError traceback (#966) — transform() unwraps a
  VisitError carrying a VeraError; E009 diagnostics gain the full
  instruction format (rationale/fix/spec_ref for the escape and
  interpolation classes), retiring a false grammar-prevents waiver.
  Test-first: text + JSON envelope tests, RED-confirmed pre-fix.
- ci: two workarounds retired on fired triggers (#537) — pygments
  2.20.0 shipped the CVE-2026-4539 fix (--ignore-vuln removed), and
  setup-python's toolcache carries pip 26.1.2 natively (--upgrade pip
  removed); both KNOWN_ISSUES rows retire with them.
- docs: TESTING.md contract-verification block regenerated from live
  vera verify --json (283/378 obligations, 74.9% static - was three
  campaigns stale at 256/280); the summary off-by-one it surfaced is
  filed as #967 (KNOWN_ISSUES limitation + ROADMAP Stage 19 row);
  scheduled limitations-sync workflow documented; gate rows scoped to
  the #955 semantics; spec-block counts to 189; ~93,500 test-code
  lines; spec 0.5.1 acknowledges W001/W002; HISTORY's v0.1.0 column
  restored to its true snapshot (6,779) with the growth chart in
  lockstep; README/FAQ counts to 6,848; three test-code comments
  citing since-fixed issues (#918, #706, #635) retired.

Release machinery: versions to 0.1.2 (10-file surface), HISTORY gains
the combined 'Stage 19 and Stage 20' dual-threaded section + index row,
196-day... 96-day count recomputed from git, 200 tagged releases.

Closes #966
Closes #537

Co-Authored-By: Claude <noreply@anthropic.invalid>
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR fixes invalid string-escape crashes by unwrapping lark.VisitError and enriching E009 diagnostics, bumps the project to 0.1.2, updates release and status documentation, and removes an obsolete dependency-audit CI workaround.

Changes

E009 Diagnostic and VisitError Unwrapping

Layer / File(s) Summary
Error factory and diagnostic field expansion
vera/transform.py
_transform_error now carries rationale, fix, and spec_ref, and new E009 helper factories are added for escape and interpolation failures.
Escape and interpolation error sites use new factories
vera/transform.py
Escape decoding and interpolation parsing now raise the dedicated E009 helpers for all relevant failure paths.
VisitError unwrapping at transform() boundary
vera/transform.py
transform() unwraps VisitError and re-raises the original VeraError when present.
Tests and spec updates for E009 behaviour
tests/test_cli.py, spec/00-introduction.md, scripts/check_diagnostic_fields.py, TESTING.md
New CLI tests cover invalid escapes in text and JSON modes, and the spec/docs clarify diagnostic codes and diag-fields-exempt handling.

v0.1.2 Version Bump and Release Documentation

Layer / File(s) Summary
Version bump
pyproject.toml, vera/__init__.py
Package version metadata is updated to 0.1.2.
CHANGELOG and HISTORY release entries
CHANGELOG.md, HISTORY.md
Release notes, compare links, stage history, and summary counts are updated for 0.1.2.
Project status and metrics documentation
README.md, FAQ.md, ROADMAP.md, TESTING.md
Version strings, test counts, verification metrics, and scheduled limitation-sync docs are refreshed.
Test docstring wording updates
tests/test_codegen_gc_rooting.py, tests/test_codegen_interpolation.py
Explanatory docstrings are revised without changing assertions or logic.

Dependency-Audit Workaround Removal

Layer / File(s) Summary
Dependency-audit step simplification and docs sync
.github/workflows/ci.yml, KNOWN_ISSUES.md
The audit job no longer upgrades pip or ignores the CVE, and the matching workaround rows are removed from known issues.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant cmd_check
  participant transform
  participant LarkTransformer
  participant decode_string_escapes

  cmd_check->>transform: transform(tree)
  transform->>LarkTransformer: visit tree
  LarkTransformer->>decode_string_escapes: process STRING_LIT token
  decode_string_escapes->>decode_string_escapes: raise _escape_error (E009)
  LarkTransformer->>transform: raise VisitError(orig_exc=VeraError)
  transform->>transform: unwrap VisitError, re-raise VeraError
  transform->>cmd_check: propagate VeraError with rationale/fix/spec_ref
Loading

Possibly related PRs

  • aallan/vera#826: Both PRs change how vera/transform.py constructs diagnostic metadata, including rationale, fix, and spec_ref fields.

Suggested labels: compiler, tests, spec, ci, docs

🚥 Pre-merge checks | ✅ 7 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 77.78% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (7 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR addresses #966 and #537 by unwrapping VisitError, expanding E009 diagnostics, and removing the CI pip upgrade and audit workaround.
Out of Scope Changes check ✅ Passed The version, changelog, docs, and testing updates all support the stated release and sweep objectives, with no unrelated changes evident.
Changelog Covers Public-Surface Changes ✅ Passed CHANGELOG.md explicitly covers the only surface changes: the E009 transform/diagnostic fix (#966) and the spec update adding W001/W002 warning codes.
Spec And Implementation Move Together ✅ Passed transform.py’s E009 diagnostics now match spec 0.5.1/0.5.8, and the escape/interpolation rules already exist in spec 1.6/4.6; no compiler–spec drift found.
Diagnostics Carry An Error Code ✅ Passed PASS: every new/changed diagnostic in the PR carries a stable code (E009/E010), including the added test diagnostic with E009.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: the v0.1.2 release bundle, including the gate-hardening batch and pre-release sweep.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v0.1.2

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 83.33333% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.30%. Comparing base (9bfd195) to head (53d19a7).

Files with missing lines Patch % Lines
vera/transform.py 82.85% 6 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #968      +/-   ##
==========================================
+ Coverage   93.23%   93.30%   +0.06%     
==========================================
  Files          96       96              
  Lines       31448    31470      +22     
  Branches      456      456              
==========================================
+ Hits        29321    29362      +41     
+ Misses       2114     2095      -19     
  Partials       13       13              
Flag Coverage Δ
javascript 78.41% <ø> (ø)
python 95.09% <83.33%> (+0.07%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
Connect Timeout Error (attempted address: api.github.com:443, timeout: 10000ms)

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@vera/transform.py`:
- Around line 395-408: _parse_interp_expr() is still bypassing the new
VisitError unwrapping path, so E009 inside string interpolation can be
double-wrapped and escape correctly handled. Update the interpolation parsing
flow in VeraTransformer.transform() / _parse_interp_expr() so the same
VisitError boundary is used there, or explicitly flatten any nested VisitError
chain before re-raising. Make sure the fix preserves the existing
invalid-expression and statements-not-allowed errors while preventing wrapped
interpolation errors from slipping through.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e9ffb66f-97bc-44b0-85ca-4976263b9243

📥 Commits

Reviewing files that changed from the base of the PR and between 9bfd195 and f099595.

⛔ Files ignored due to path filters (7)
  • assets/diagrams/history-growth.svg is excluded by !**/*.svg
  • docs/index.html is excluded by !docs/**
  • docs/index.md is excluded by !docs/**
  • docs/llms-full.txt is excluded by !docs/**
  • docs/llms.txt is excluded by !docs/**
  • tests/conformance/ch09_show_hash_composites.vera is excluded by !**/*.vera
  • uv.lock is excluded by !**/*.lock, !uv.lock
📒 Files selected for processing (16)
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • FAQ.md
  • HISTORY.md
  • KNOWN_ISSUES.md
  • README.md
  • ROADMAP.md
  • TESTING.md
  • pyproject.toml
  • scripts/check_diagnostic_fields.py
  • spec/00-introduction.md
  • tests/test_cli.py
  • tests/test_codegen_gc_rooting.py
  • tests/test_codegen_interpolation.py
  • vera/__init__.py
  • vera/transform.py
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • aallan/vera-bench (manual)

Comment thread vera/transform.py
aallan added 3 commits July 9, 2026 21:51
… (PR #968 review)

A nested transformer (_parse_interp_expr's inner VeraTransformer runs
inside the outer transformer's STRING_LIT callback) can double-wrap a
VeraError; the single-level unwrap would re-raise the wrapper. Not
user-reachable today - interpolation segments cannot contain nested
string literals (the outer lexer closes at the first quote, verified
by probe), and the inner transformer's other token callbacks cannot
raise on grammar-valid input - but _unwrap_visit_error now walks the
whole chain (unit-tested with a hand-built double wrap, RED-first),
and the user-reachable interpolation-statement E009 path gains its
own envelope pin. Counts follow (+3 tests).
@aallan aallan changed the title release: v0.1.2 — the external gate-hardening batch + pre-release sweep release: v0.1.2 — the gate-hardening batch + pre-release sweep Jul 9, 2026
@aallan
aallan merged commit 3177cbd into main Jul 9, 2026
28 checks passed
@aallan
aallan deleted the release/v0.1.2 branch July 9, 2026 21:14
@coderabbitai coderabbitai Bot mentioned this pull request Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant