Skip to content

Release v0.1.9 - #1195

Open
aallan wants to merge 1 commit into
mainfrom
release/v0.1.9
Open

Release v0.1.9#1195
aallan wants to merge 1 commit into
mainfrom
release/v0.1.9

Conversation

@aallan

@aallan aallan commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Release v0.1.9 — the declarable-trap purge

Cuts the accumulated [Unreleased] section (16 fixes + 1 tooling addition) as v0.1.9. Everything in this release already merged to main through its own reviewed PR; this PR carries only the release machinery plus one oracle hardening.

What ships

The reserved-name family completes. A declarable-but-uncallable function is refused at its source: the grammar-keyword class joins old/new under E153 with a named host-invoked carve-out for handle (#1187, #1181), built-in effects cannot be redeclared (E152, #1149), and Vera-prefixed type names are reserved for the prelude (E154).

Entry points and attribution. vera run refuses a dropped entry instead of silently executing a sibling (#1183); [E602] diagnostics for imported bodies locate in their own module (#1186); runtime traps inside imported functions name the module's file (#1189); old()/new() misuse gets dedicated diagnostics (E030/E031, #1173).

Soundness and codegen. decreases clauses are enforced at run time (#1172); codegen skips propagate to transitive callers (#1100); call_indirect is never emitted without a function table (#1185); type aliases are module-local in codegen (#1111) and a user alias cannot disable a prelude combinator (#1184).

Docs and gates. The site fact gate (#1154), the VeraBench v0.0.18 section, and — new in this PR — check_doc_counts.py now pins FAQ.md's headline test count, which had drifted silently through two releases because only the conformance half of that sentence was checked (proven blind before the fix, mutation-validated after).

Release machinery

  • Version 0.1.80.1.9 across the check_version_sync.py surface (pyproject.toml, vera/__init__.py, docs badge, README status line, uv.lock) — verified: "Version 0.1.9 is consistent across 6 files."
  • CHANGELOG: [Unreleased][0.1.9] - 2026-08-04 with compare links updated; fresh empty [Unreleased].
  • HISTORY: v0.1.9 one-liner row in the Stage 19/20 table.
  • README status row: 205 releases; site assets regenerated (build_site.py); doc-counts oracle green (8,840 tests / 136 files / 176 conformance / 42 examples).
  • Open bug-labelled issues after this release: exactly ch05_closure_nat_return trapped once in a full conformance run (unreproducible in ~960 attempts) — suspected rare runtime/GC flake in a CI gate #996 (the watched conformance flake), matching the KNOWN_ISSUES Bugs table one-to-one.

Note for the maintainer

Per the standing instruction this PR is converged but not merged — CI green, CodeRabbit clean, adversarial review posted. Merge is yours (merge commit, per the release convention); the release workflow will detect the version increase on main, build, pause at the pypi environment for your approval, then tag and publish.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Release

    • Updated the application version to 0.1.9.
    • Documented clearer diagnostics, safer entry-point execution, runtime checks, and more reliable code generation.
    • Expanded the reserved-name diagnostics to cover module-qualified calls.
  • Documentation

    • Added the v0.1.9 release history and changelog.
    • Updated project status, release totals, version references, and test metrics.
    • Added checks to ensure documented FAQ test counts and release totals remain accurate.
  • Tests

    • Added regression coverage for reserved function-name consistency.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ebdf89ce-777e-403e-adab-3ae647792525

📥 Commits

Reviewing files that changed from the base of the PR and between 1e69d1e and 9d5fa1a.

⛔ Files ignored due to path filters (5)
  • 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/**
  • uv.lock is excluded by !**/*.lock, !uv.lock
📒 Files selected for processing (11)
  • CHANGELOG.md
  • FAQ.md
  • HISTORY.md
  • README.md
  • ROADMAP.md
  • TESTING.md
  • pyproject.toml
  • scripts/check_doc_counts.py
  • tests/test_checker_modules.py
  • vera/__init__.py
  • vera/checker/registration.py
🔗 Linked repositories identified

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

  • aallan/vera-bench (manual)

📝 Walkthrough

Walkthrough

The release updates Vera to version 0.1.9. It updates package metadata, release records, diagnostics, conformance coverage, documentation metrics, and documentation-count validation.

Changes

Vera 0.1.9 release preparation

Layer / File(s) Summary
Version and release records
pyproject.toml, vera/__init__.py, README.md, CHANGELOG.md, HISTORY.md, FAQ.md, ROADMAP.md, TESTING.md
Updates the project version to 0.1.9, release totals to 205, and documented test metrics to 8,841. Adds the 0.1.9 release records and comparison link. Updates the reserved-keyword conformance count to 176.
Documentation count validation
scripts/check_doc_counts.py
Checks the FAQ test count against live_total_tests. Checks that README.md and HISTORY.md contain matching release totals.
Reserved-name diagnostics and conformance
vera/checker/registration.py, tests/test_checker_modules.py
Refines E153 diagnostics to identify and close module-qualified call routes. Adds a regression test that synchronises the test keyword list with the checker’s reserved-name set and preserves the handle exemption.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • aallan/vera#817: Updates reserved built-in and function-name rejection behaviour and its documentation.
  • aallan/vera#1168: Updates release metadata and package version fields for v0.1.8.
  • aallan/vera#1188: Extends reserved-function-name changes with conformance coverage and diagnostic rationale.

Suggested labels: compiler, tests, ci, docs

🚥 Pre-merge checks | ✅ 8
✅ Passed checks (8 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change as the v0.1.9 release.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Changelog Covers Public-Surface Changes ✅ Passed The release diff changes no listed public-surface paths; its E153 rationale update is explicitly covered in CHANGELOG.md, including module-qualified calls.
Spec And Implementation Move Together ✅ Passed The PR changes no spec files or compiler behaviour; registration.py only changes E153 rationale text, and spec §5.2 already states the matching reserved-name rule.
Diagnostics Carry An Error Code ✅ Passed The release diff only changes E153 rationale text; its Diagnostic call still supplies registered error_code="E153". No new warning or error diagnostic producer was added.
✨ 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.9

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

@aallan

aallan commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Adversarial review record (release machinery)

Verdict: the diff is exactly release machinery plus one gated oracle hardening; no stray changes.

  • Surface: 11 files — the same 10-file surface as the v0.1.8 release commit (CHANGELOG, HISTORY, README, docs/index.html + the four generated site assets, pyproject.toml, uv.lock, vera/__init__.py) plus scripts/check_doc_counts.py.
  • Version: check_version_sync.py reports "Version 0.1.9 is consistent across 6 files"; tests/test_release.py 47/47. The docs/index.html VeraBench caveat deliberately still says v0.1.8 — it records which version the v0.0.18 sweep ran against, a historical fact, not a version-sync surface.
  • CHANGELOG: [Unreleased] cut to [0.1.9] - 2026-08-04 (16 fix bullets + 1 new Added bullet), fresh empty [Unreleased], both compare links updated (v0.1.9...HEAD, v0.1.8...v0.1.9).
  • HISTORY: one v0.1.9 row in the Stage 19/20 table, single issue link per the row-format gate (which caught my first draft's 9 links and was obeyed, not weakened).
  • Oracle hardening (test-first): FAQ.md's headline test count was provably blind — corrupting it to 9,999 passed the pre-change oracle — and the new check flips RED on the same corruption and GREEN on the true value. This closes the drift that shipped twice before.
  • State cross-checks: open bug issues == {ch05_closure_nat_return trapped once in a full conformance run (unreproducible in ~960 attempts) — suspected rare runtime/GC flake in a CI gate #996} == the KNOWN_ISSUES Bugs table; limitations sync green (43/18/16/7/3); doc-counts green (8,840 / 136 / 176 / 42); no closed-issue rows left in ROADMAP; no strikethroughs anywhere.
  • Workflow: on merge, release.yml sees the strictly-increasing version on main, validates the [0.1.9] section, builds, and pauses at the pypi environment for maintainer approval — no manual tag or upload is part of the path.

Per the standing instruction, this PR is converged and left for the maintainer to merge.

@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.79%. Comparing base (65a94bd) to head (9d5fa1a).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1195   +/-   ##
=======================================
  Coverage   93.79%   93.79%           
=======================================
  Files          99       99           
  Lines       34134    34134           
  Branches      458      458           
=======================================
  Hits        32017    32017           
  Misses       2104     2104           
  Partials       13       13           
Flag Coverage Δ
javascript 78.61% <ø> (ø)
python 95.48% <100.00%> (ø)

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 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 `@scripts/check_doc_counts.py`:
- Around line 841-852: Update the FAQ test-count validation around the regex
match in the check function so a missing headline pattern appends an explicit
error instead of silently skipping validation; retain the existing mismatch
error for matched counts. Add regression coverage for both a mismatched
documented count and an absent headline pattern, writing the failing tests
before implementing the check change.
🪄 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: f842c484-f83c-4f9d-b52a-50ec7b97ad98

📥 Commits

Reviewing files that changed from the base of the PR and between 65a94bd and d2349bc.

⛔ Files ignored due to path filters (5)
  • 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/**
  • uv.lock is excluded by !**/*.lock, !uv.lock
📒 Files selected for processing (6)
  • CHANGELOG.md
  • HISTORY.md
  • README.md
  • pyproject.toml
  • scripts/check_doc_counts.py
  • vera/__init__.py
🔗 Linked repositories identified

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

  • aallan/vera-bench (manual)

Comment thread scripts/check_doc_counts.py

@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 `@README.md`:
- Line 266: Update the release total in the README description near the
active-development version from 205 to match the 203 tagged releases reported by
HISTORY.md, while preserving the existing v0.1.9 and other metrics. Validate the
documented 8,840-test count by running scripts/check_doc_counts.py in the
documented virtual environment.
🪄 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: 0545bd83-7dc1-4b66-b1c6-ebfe932a20c3

📥 Commits

Reviewing files that changed from the base of the PR and between d2349bc and 9656cfa.

⛔ Files ignored due to path filters (5)
  • 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/**
  • uv.lock is excluded by !**/*.lock, !uv.lock
📒 Files selected for processing (6)
  • CHANGELOG.md
  • HISTORY.md
  • README.md
  • pyproject.toml
  • scripts/check_doc_counts.py
  • vera/__init__.py
🔗 Linked repositories identified

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

  • aallan/vera-bench (manual)

Comment thread README.md Outdated
@aallan

aallan commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Converged — ready for your merge

Final state at head 1e69d1ec:

  • CI: all checks green (0 pending, 0 failed); merge state CLEAN.
  • CodeRabbit: success at head. Two findings across two rounds, both fixed and answered inline: (1) the FAQ check now errors when the headline pattern is absent instead of silently skipping; (2) HISTORY.md's "By the numbers" release total was two releases stale — corrected to 205 and now cross-checked against README's status row by the oracle. Both fixes mutation-validated. The fresh pass at this head added nothing.
  • Audit: 2 inline findings (0 open), 0 outside-diff findings, "Actionable comments posted" sum matches exactly.
  • Version: 0.1.9 consistent across all 6 sync files; test_release.py 47/47; doc-counts, site-assets, and limitations-sync gates all green.

Per your instruction I have not merged this one. On your merge (merge commit, per the release convention), release.yml will detect the version increase, build, and pause at the pypi environment for your approval before tagging and publishing.

Cut the [Unreleased] section as 0.1.9: the declarable-trap purge. The
reserved-name family completes (E153 grammar keywords with the handle
carve-out, E152 built-in effects, E154 Vera-prefixed type names),
`vera run` refuses dropped entries, imported functions' diagnostics and
trap source maps name their own module, `decreases` is enforced at run
time, and codegen skips propagate to transitive callers.

Also hardens scripts/check_doc_counts.py: FAQ.md's headline test count
is now pinned (it drifted silently through two releases because only
the conformance half of the sentence was checked).

Version 0.1.8 -> 0.1.9 across the check_version_sync.py surface;
HISTORY row added to the Stage 19/20 table; site assets regenerated.

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

aallan commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Re-converged at 9d5fa1a0 — ready for your merge

This head folds in the fixes for the four CodeRabbit findings that posted on #1194 after its merge (relayed by the maintainer): the CHANGELOG bullet's conformance count now reads "(176, was 175)"; a set-equality pin ties the test file's KEYWORDS tuple to _KEYWORD_FN_NAMES - _HOST_INVOKED_FN_NAMES (mutation-validated); and both E153 rationale branches now state precisely that no unqualified call site can reach the declaration and that the formerly half-usable module-qualified route is deliberately closed. The MD038 finding was declined with rationale (38-row nesting convention, no markdownlint gate). All four replied on #1194.

Audit at this head, taken after CodeRabbit's status reached its terminal state: CI 0 pending / 0 failed, merge state CLEAN, CodeRabbit success with its fresh pass adding nothing, ledger 2 inline findings / 0 open / 0 outside-diff, "Actionable" sum exact. Test total is now 8,841 (the new pin), propagated through TESTING/FAQ/README/ROADMAP with all oracles green.

Still yours to merge; the pypi gate waits on the other side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant