ci: add ubuntu-24.04-arm to the test matrix - #5
Conversation
Bumps the `wasmtime` runtime floor from `>=45.0.0` to `>=46.0.1`, off a release affected by GHSA-4ch3-9j33-3pmj (medium) — a `wasmtime-wasi` `FilePerms` bypass on hard-link and rename destinations, whose affected range includes the `45.0.0` that `uv.lock` had pinned. The upstream core backport is `45.0.3`, but the `wasmtime-py` binding never tagged a `45.0.x` patch, so `46.0.1` is the only patched binding release. CI already resolved the unbounded floor to `46.0.1` (verified against main's own install log), so this is behaviour-neutral for the test matrix; the value is pinning the lockfile and the declared floor off the affected release for minimum-version resolvers (`uv sync`, distro packagers, pre-existing venvs). Vera's own WASI host (`vera/runtime/wasi_host.py`) is not exploitable: it preopens with the default `READ_WRITE` `FilePerms`, so there is no restricted permission for a link/rename to bypass. The maintainer commit additionally reconciles the pin's rationale comment (Dependabot's bump left it describing `>=45.0.0`) to record both the load-bearing `>=45` floor requirement (the wasmtime-py#337 `BaseException` host-import trampoline that `execute()`'s exit-130 mapping depends on, aallan#595/aallan#599) and the security reason for `46.0.1`, and adds a CHANGELOG `### Security` entry. Co-Authored-By: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.invalid>
Raises the `setuptools` build-system floor from `>=82.0.1` to `>=83.0.0`.
`83.0.0` is the latest release, unyanked, and requires Python `>=3.10`
(below Vera's `>=3.11` floor). It affects only `[build-system].requires`,
which CI exercises with build isolation on all twelve
`{ubuntu, macos-15, macos-26, windows} × {3.11, 3.12, 3.13}` cells;
`uv.lock` does not record setuptools, so no lockfile refresh is owed and
`uv lock --check` stays meaningful.
Co-Authored-By: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-Authored-By: Claude <noreply@anthropic.invalid>
…docs
Hand-authored, self-contained SVGs in assets/diagrams/ (design system,
conventions, and inventory in its README.md), embedded across
vera/README, README, spec/06/07/11/12/13, DE_BRUIJN, TOOLCHAIN, TESTING,
LSP_SERVER and HISTORY. The headline is the overall compiler
architecture diagram vera/README.md previously lacked.
Every figure that replaced an ASCII original keeps the text in a
collapsed <details> block tagged `text` (skipped by the doc gates'
skip_langs) — the docs are read by agents in terminals and fed to
llms-full.txt, where images are invisible. No diagram carries live
counts; the one data figure (history-growth) plots the historical
release columns from HISTORY.md and says so on its face.
The architecture and pipeline figures draw the check -> {verify |
compile} fork truthfully: vera compile does not consume verify results
and contract guards are always emitted. The replaced ASCII's "runtime
contract insertion for Tier 3" caption echoed the spec drift tracked in
aallan#958; its corrected text version rides in the details block. README's
project-structure tree also gets its stale module counts fixed
(codegen 11 -> 13, wasm 9 -> 19, verified against the tree). All embeds
use repo-relative paths so they render from any ref; the latent
switch-to-absolute-if-ever-published-to-PyPI constraint is recorded in
assets/diagrams/README.md.
Co-Authored-By: Claude <noreply@anthropic.invalid>
Extends the set on maintainer go, all candidates including the marginal tier: the subtyping and effect-row lattices (spec §2.8, §7.8), module resolution with the transitive-but-not-visible rule (§8.6), the async eager/concurrent model and the vera serve request lifecycle (§9.5), closure heap layout + call_indirect dispatch (§11.10), browser dynamic import introspection (§12.9.1), the WASI GC-exempt arena and the server-world adapter sequence (§13.3, §13.7), the FAQ's three verification layers, the contract-driven-testing loop, and the Dafny/Lean/Koka/F* comparison matrix (grounded strictly in the FAQ's own claims), the CONTRIBUTING gate pipeline (count-free — hook counts are policed doc counts), the DE_BRUIJN binding-stack timeline, and the host-binding-families map with the IO-stays-inline rationale (vera/README.md). Same design system and conventions as wave 1; every embed verified to sit under its intended section heading. The ci-gates and comparison figures carry no live counts; each cell of the comparison traces to a sentence in FAQ.md. Co-Authored-By: Claude <noreply@anthropic.invalid>
The CI matrix covers three OS families x three Python versions but no Linux aarch64, despite README listing it as a supported platform. z3-solver, wasmtime, and lark all resolve prebuilt manylinux_2_38_aarch64 wheels for 3.12 today, so add one job (platform coverage, not python-version coverage) via `include` rather than cross-multiplying the full 3-version grid. No `if:` in the job compares matrix.os against anything other than the literal 'ubuntu-latest' string, so the new unlisted value runs the normal test step and is correctly excluded from the coverage-upload step. Fixes aallan#702 Skip-changelog: CI-only matrix addition, no vera/ or spec/ behavior change Co-Authored-By: Claude <noreply@anthropic.invalid>
… drift The behavioural fix: vera/README.md §Runtime contracts still described the pre-aallan#957 world (codegen "classifies contracts using the verifier's tier results", Tier-1 guards "omitted"), contradicting the architecture diagram embedded above it. It now states the truth: compile never consults the verifier, guards are always emitted, and the §11.8 aspiration stays tracked in aallan#958. Drift, each verified against the tree, the registry, or the tracker before fixing: SKILL's conformance count (103 -> 143) + spec table chapter-13 row + both multi-file conformance companions named; CLAUDE/AGENTS pipeline gains the resolve stage (and resolve_imports in the stage-function list); FAQ gains IO.read_char and the Exn<T> effect; README's "three-tier verification" delivered-claim scoped to the two implemented tiers; DESIGN gains HttpServer in the effects row (a list claiming to mirror `vera effects --json`), HttpServer/Random/Diverge rows in the built-in effects table, a Tier-1 coverage sentence aligned to spec §6.8, and the tiers + effect-row-lattice diagrams; KNOWN_ISSUES gains rows for the open aallan#439 and aallan#770 limitations and clarifies the shipped-aallan#813 row header; HISTORY's stage index gains Stages 16-17 and the intro catches up (Stage 17, 94 days); vera/README's module-map line counts regenerated from disk (worst: verifier.py 1,005 -> 6,582; two same-named rows disambiguated by section) + eq_ability.py row + JS totals; TESTING drops a reference to the split-away test_codegen.py; spec §12 stops citing the closed aallan#465 as a tracker and unifies the heap-growth wording; TOOLCHAIN's text version moves fmt to the parse column (vera fmt formats a type-broken file - verified empirically); DE_BRUIJN frames its early VeraBench figure as a snapshot. build_site.py now rewrites IMAGE embeds to raw.githubusercontent URLs - a blob/ page is HTML, not image bytes - fixing the four diagrams inlined into llms-full.txt. Also fixes six rendering defects in the wave-2 SVGs (two z-order occlusions: host-families' browser/IO cards under the adapter band, lsp-session's gate card under the invalidation card; four text overflows: language-comparison NOTES column, effect-handlers notes, browser-bindings, wasi-arena), found by maintainer review + a systematic overflow/overlap scan of all 33. Examples and conformance fixtures came back clean: no workaround shapes for fixed bugs. Test-code staleness (the aallan#869 table-forcing fold, the aallan#570 wide-graph avoidance, the aallan#516 docstring, the ch09_decimal "not supported" note - reproduced working) lands as a separate PR. Co-Authored-By: Claude <noreply@anthropic.invalid>
One figure, in the site's own design language (paper-transparent, ink pills, single flame accent, JetBrains Mono): the model writes -> the compiler proves -> it ships, with the dotted-flame diagnostics return. Embedded in docs/index.html §Why — the sentence it draws — and mirrored into the generated index.md via build_index_md. Arrowheads use markerUnits=userSpaceOnUse so head stroke weight equals line weight (the default strokeWidth scaling rendered ~18px heads with ~3.6px strokes against 2px dotted lines), the return line is 2.5px true round dots (dotted reads lighter than solid at equal weight), and the path stops short of the caption so the head sits in clear air — maintainer review findings. Co-Authored-By: Claude <noreply@anthropic.invalid>
…n#959 review) The wave-1 integration mis-targeted this block, and the revert reconstructed it from the details copy without its original language tag — an MD040 regression against main. Byte-identical to main again. Co-Authored-By: Claude <noreply@anthropic.invalid>
|
CodeAnt AI is reviewing your PR. |
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
📝 WalkthroughWalkthroughThis PR updates Vera to version 0.1.1: adds an advisory ubuntu-24.04-arm CI lane and wheel-availability checks, introduces a scheduled limitations-drift-sync workflow, hardens the sync script's state-check error handling, raises wasmtime/setuptools minimum versions, adds a resolve pipeline stage to documentation, and adds extensive SVG diagrams across specs and READMEs. Several test fixtures and documentation figures were also updated. ChangesCI Infrastructure and Limitations Sync
Estimated code review effort: 3 (Moderate) | ~25 minutes Release version bump and dependency updates
Documentation and diagram overhaul
Estimated code review effort: 2 (Simple) | ~12 minutes Compiler test fixture updates
Estimated code review effort: 2 (Simple) | ~15 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 7 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (7 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsLinked repositories: Public OSS repositories can only analyze public repositories installed in this organization. No linked repositories were analyzed; skipped Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CodeAnt AI finished reviewing your PR. |
There was a problem hiding this comment.
Code Review
This pull request updates the wasmtime dependency floor to >=46.0.1 in pyproject.toml and uv.lock to address the GHSA-4ch3-9j33-3pmj security vulnerability, with corresponding updates made to CHANGELOG.md. It also bumps the setuptools build-system requirement to >=83.0.0. Feedback on this PR points out that the CI workflow configuration changes (e.g., for adding ubuntu-24.04-arm to the test matrix) appear to be missing from the changes.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| # default READ_WRITE FilePerms, so there is nothing to bypass); the | ||
| # bump keeps the resolved floor off a CVE-affected release for | ||
| # embedders who restrict perms. | ||
| "wasmtime>=46.0.1", |
There was a problem hiding this comment.
The consistency sweep's test auditors found five places where the test code still described (or worked around) bugs that are long fixed; each change was verified by running the affected tests before and after. - tests/test_codegen_monomorphize.py: TWO_PARAM_SRC carried an array_fold whose only purpose was forcing a dispatch table around the closed aallan#869; the fold is gone and main calls unwrap_second directly (sum unchanged at 107) — the fixture itself is now the regression pin. - tests/test_codegen_gc_alloc.py: the aallan#570-era "1,000 elements to stay under the bug threshold" graph is promoted to the true 5,000-element Array<Box> wide graph the docstring always intended (test_wide_graph_with_gc_pressure, sum 12,497,500). - tests/test_runtime_traps.py: the module docstring deferred "Stage 2 (source mapping) and Stage 3 (Fix: paragraphs)" as future aallan#516 work; both shipped (v0.0.124/v0.0.125) and are exercised throughout the file — the docstring now says so. - tests/conformance/ch09_decimal.vera: the "decimal_compare is not yet supported in codegen" note was disproven by running it; the program now exercises decimal_compare through a three-arm Ordering match (Less/Equal/Greater → 1+2+4, ensures ==7; main sum 51 → 58), with a matching manifest feature tag. - tests/test_codegen_data_types.py: the aallan#773 parenthetical now speaks of the scalar-representation Eq limitation in the past tense. TESTING.md's per-file table follows the four shifted line counts. Skip-changelog: test-code annotation hygiene only; no compiler, spec, or behaviour change (the CHANGELOG sweep bullet covering this lands with the v0.1.1 release commit). Co-Authored-By: Claude <noreply@anthropic.invalid>
Cuts v0.1.1 and opens HISTORY Stage 18 (the visual documentation pass): the 34-figure SVG set, the six-auditor consistency sweep, the first external contributions + the aallan#957 verifier-soundness fix, the wasmtime CVE floor bump, and the stale-test retirement. - CHANGELOG: [Unreleased] rolls to [0.1.1] - 2026-07-08 (+ compare links); the stale-test retirement gains its bullet under Fixed. - Version bumps: vera/__init__.py, pyproject.toml, uv.lock, docs/index.html tag link. - HISTORY: intro + By-the-numbers total advance to Stage 18 with the git-computed active-day count; the stage index closes row 17 and adds row 18; the Stage 15/16/17 section headings close their date ranges to match the index (the sweep closed the index side only); the Stage 18 section lands with the v0.1.1 row. - docs/: site assets regenerated (build_site.py). Co-Authored-By: Claude <noreply@anthropic.invalid>
docs: v0.1.1 — the 34-figure visual documentation release
The loop-web.svg embed rendered top-heavy and visually left-shifted: the drawing occupied a 1000x252 canvas with 70 units of dead space above and 166 to the right (vs 30 left, 18 below). The viewBox is recropped symmetric around the browser-measured content bbox (12 units each side) and the embed's CSS margins equalised — 48px of air above and below the drawing, and it now spans the column. The audit that rode along, every claim checked against the registry or a live run: - The effect enumeration gains Diverge and "eight algebraic effects" corrects to nine (vera effects --json lists 9 effects); README.md's identical list gets the same one-word fix. - The Inference provider list gains Mistral in both places it appears (vera/runtime/inference.py detects four provider keys). - The three-tier feature card is scoped to what shipped, mirroring README: Z3 static + runtime fallback delivered, the Z3-guided middle tier specified but not implemented. - The WASI showcase shows the compile command's actual output line and a consistent examples/http_server.wasm artifact path (the old text was a paraphrase with a mismatched path); the wasmtime serve banner was verified against a real run. - safe_divide and classify_sentiment link their examples/ counterparts the way the fizzbuzz sample does; the generated index.md gets the same links plus the fizzbuzz one it never had. scripts/build_site.py carries the parallel copies for the generated index.md; docs/ assets regenerated. hello_world / factorial outputs, the browser-bundle listing, and the E001 block (pinned by TestErrorDisplaySync, 28 tests green) all verified unchanged-correct. Co-Authored-By: Claude <noreply@anthropic.invalid>
docs(site): rebalance the loop figure + audit the landing page's claims
… into v0.1.1 (aallan#963) Six themed stages (19–24) continuing HISTORY's numbering replace the tier/milestone mix, all 100 open issues placed exactly once; the fold-in moves the landing-page-audit and roadmap bullets into [0.1.1], corrects the external-contribution history (chethanuk is the third outside contributor, after @rlseaman PR aallan#173 and @rzyns PR aallan#685), and trims the Stage 17/18 intros to the established scale. Co-Authored-By: Claude <noreply@anthropic.invalid>
…s, wheel-gate rows, matrix prose, CHANGELOG, ROADMAP The matrix cell alone leaves the platform policy stale: README still listed Linux aarch64 as untested, the wheel-availability gate checked no aarch64 tags, TESTING.md/CLAUDE.md still said 12 combinations, and the ROADMAP ongoing-threads line still carried the issue. All move in lockstep; the manylinux_2_38_aarch64 rows validated live (36/36 wheel combinations resolve). The cell stays advisory - not added to required merge checks.
…allan#848 comment in ci.yml (PR aallan#962 review)
…he Debian 12 glibc example (PR aallan#962 review) Debian 12 (bookworm) ships glibc 2.36, below the stated 2.38 floor - a pre-existing inconsistency on the line this PR touches.
…es, cron failures file a tracking issue (aallan#960) Weekly (Mon 07:00 UTC + on-demand) run of check_limitations_sync.py --check-states (aallan#852). Hardened in review: UNKNOWN issue states (gh missing/auth/rate-limit/timeout) now fail the run instead of passing vacuously; scheduled failures file/update a labelled tracking issue mirroring nightly-stress.yml; Windows cp1252 pipe-decode fixed via ASCII-only message + explicit child-stdio UTF-8. CHANGELOG/ROADMAP/TESTING lockstep included. External contribution by @chethanuk (PR aallan#960); review hardening by the maintainer loop. Co-Authored-By: Claude <noreply@anthropic.invalid>
# Conflicts: # CHANGELOG.md
There was a problem hiding this comment.
Actionable comments posted: 14
🤖 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 `@DESIGN.md`:
- Around line 31-32: The collections guidance in DESIGN.md uses shortened helper
names that do not match the built-ins; update the references in the Collections
and Standard library descriptions to use the full array helper names. Replace
the generic mentions of `filter`, `fold`, and `slice` with `array_filter`,
`array_fold`, and `array_slice` so the documentation aligns with the actual
function names and symbols used elsewhere.
In `@README.md`:
- Around line 227-233: The test totals in the project status docs are out of
sync, so update the README status blurb to match the latest count reported in
TESTING.md and any related doc-count gate text. Check the “active development”
summary in README.md and the corresponding overview/status entries in ROADMAP.md
and TESTING.md so the same total is used everywhere, especially after the new
test added in this PR. Refer to the README status paragraph and the doc-count
summary sections in TESTING.md and ROADMAP.md when making the correction.
In `@scripts/build_site.py`:
- Around line 416-417: The new loop diagram reference is not aligned with the
diagram inventory, because `loop-web.svg` is used in the site content but not
listed in `assets/diagrams/README.md`. Update `scripts/build_site.py` to either
point to an already-documented diagram name or add `loop-web.svg` to the
inventory so the generated site stays single-sourced and consistent with the
documented assets.
- Around line 555-560: Update the generated docs text in the site builder to
match the language surface: replace the non-canonical “Exceptions” effect name
with “Exn<E>” in the relevant content emitted by the docs generation logic, and
soften the `Inference` description so `Inference.complete` is described only as
typed and contract-verifiable without claiming it is fully mockable or broadly
supported by user-defined handlers. Locate the affected strings in the site
generation path around the bullet list and any mirrored copy elsewhere, and keep
both mentions consistent.
In `@scripts/check_limitations_sync.py`:
- Around line 311-320: The issue is that check_issue_states emits one nearly
identical UNKNOWN error per issue when gh is unavailable, creating noisy
duplicate output. Update check_issue_states in scripts/check_limitations_sync.py
to detect the “all issues are UNKNOWN because gh is missing/unauthenticated”
case once and append a single aggregate error message instead of per-issue
lines. Keep the existing UNKNOWN handling for mixed cases, and adjust
test_unknown_state_is_an_error so it matches the new aggregate message.
In `@spec/02-types.md`:
- Around line 318-319: The diagram embed in spec/02-types.md is missing the
required collapsed text fallback. Update the markdown near the subtyping lattice
image so it follows the documented diagram embed convention by adding the
matching details/summary text version block alongside the existing SVG
reference, using the same wording and structure as other embeds in this spec.
In `@spec/06-contracts.md`:
- Around line 373-374: The figure embed in the contracts spec is missing its
required text fallback. Update the documentation around the existing diagram
reference so it includes the matching collapsed <details><summary>Text
version…</summary> block alongside the current image embed, keeping the fallback
text aligned with the Three-tier verification diagram content and consistent
with the pattern used for other embeds.
In `@spec/07-effects.md`:
- Around line 179-180: Add collapsed text fallbacks for both diagram embeds in
the effects spec: the handler-dispatch figure and the effect-subtyping figure
currently only include the SVG, so insert matching <details><summary>Text
version…</summary> blocks beside each image as required by the diagram embed
convention. Update the nearby figure markup in the same section so each visual
embed has an equivalent text description, using the existing figure labels and
surrounding prose to keep the fallback aligned with the handler-dispatch and
effect-subtyping content.
In `@spec/08-modules.md`:
- Around line 209-210: The module-resolution diagram currently includes only the
SVG embed, but it also needs the matching collapsed text fallback to stay
consistent with the other diagram embeds. Update the markdown in the spec
section where this image is referenced so it includes the corresponding
<details><summary>Text version…</summary> block alongside the existing diagram,
matching the pattern used for other SVG inserts and keeping the fallback text
next to the diagram reference.
In `@spec/09-standard-library.md`:
- Around line 517-518: Add the missing collapsed text fallbacks for the two
diagram embeds in the standard library spec. The async figure currently only
inserts the SVG, so pair it with a matching details/summary text version block
that describes the async(e), commutative effect-row, host worker thread, and
W002 eager-evaluation behavior; do the same for the vera serve figure. Keep the
fallback immediately beside each SVG embed to follow the diagram-set convention
and make both figures accessible without relying on the image.
In `@spec/11-compilation.md`:
- Around line 392-393: The closure diagram figure is missing its required
collapsed text fallback. In the section containing the `closure-layout.svg`
image, add the matching `<details><summary>Text version…</summary>` block
immediately alongside the SVG so it follows the diagram-set convention and
provides the alternate text version for the same closure-layout content.
In `@spec/12-runtime.md`:
- Around line 498-499: Add collapsed text fallbacks next to both SVG embeds in
the runtime spec, since the diagram inserts currently only reference the image
and miss the required readable alternative. Update the GC-cycle and
browser-runtime figure sections in the same style as other embeds, using
matching <details><summary>Text version…</summary> blocks so they can be located
by the existing diagram references and the surrounding figure content.
In `@TOOLCHAIN.md`:
- Around line 20-31: The toolchain diagram and text version currently place test
under the code-generation branch, but `vera test` belongs on the execution path
alongside `run` and `serve`. Update the diagram source and the text block in the
toolchain docs so the branch boundary after `compile` flows into execution, and
move `test` to that execution branch while keeping `compile` as the
code-generation step. Use the existing `toolchain.svg`/text version content as
the target to keep both representations aligned with the command behavior.
In `@vera/README.md`:
- Line 725: Update the test-suite count in README.md so it matches ROADMAP.md;
the current “6,821 tests” value is stale and should be changed to the new suite
size reported by the roadmap. Locate the testing overview text in the README and
keep the surrounding description of the pytest suite, conformance suite, and
example programs unchanged while correcting only the numeric count.
🪄 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
Run ID: c83e804d-2227-4fe0-bf57-5f28b9df09ee
⛔ Files ignored due to path filters (41)
assets/diagrams/architecture.svgis excluded by!**/*.svgassets/diagrams/async-model.svgis excluded by!**/*.svgassets/diagrams/browser-bindings.svgis excluded by!**/*.svgassets/diagrams/checker-passes.svgis excluded by!**/*.svgassets/diagrams/ci-gates.svgis excluded by!**/*.svgassets/diagrams/closure-layout.svgis excluded by!**/*.svgassets/diagrams/contract-testing.svgis excluded by!**/*.svgassets/diagrams/diagnostic-card.svgis excluded by!**/*.svgassets/diagrams/effect-handlers.svgis excluded by!**/*.svgassets/diagrams/effect-row-lattice.svgis excluded by!**/*.svgassets/diagrams/faq-layers.svgis excluded by!**/*.svgassets/diagrams/gc-cycle.svgis excluded by!**/*.svgassets/diagrams/history-growth.svgis excluded by!**/*.svgassets/diagrams/host-families.svgis excluded by!**/*.svgassets/diagrams/httpserver-lifecycle.svgis excluded by!**/*.svgassets/diagrams/language-comparison.svgis excluded by!**/*.svgassets/diagrams/lsp-session.svgis excluded by!**/*.svgassets/diagrams/memory-layout.svgis excluded by!**/*.svgassets/diagrams/module-resolution.svgis excluded by!**/*.svgassets/diagrams/pipeline.svgis excluded by!**/*.svgassets/diagrams/server-world.svgis excluded by!**/*.svgassets/diagrams/slot-evolution.svgis excluded by!**/*.svgassets/diagrams/slot-numbering.svgis excluded by!**/*.svgassets/diagrams/slot-scopes.svgis excluded by!**/*.svgassets/diagrams/subtyping-lattice.svgis excluded by!**/*.svgassets/diagrams/testing-layers.svgis excluded by!**/*.svgassets/diagrams/tiers.svgis excluded by!**/*.svgassets/diagrams/toolchain.svgis excluded by!**/*.svgassets/diagrams/wasi-arena.svgis excluded by!**/*.svgassets/diagrams/wasi-component.svgis excluded by!**/*.svgassets/diagrams/wasmtime-embedding.svgis excluded by!**/*.svgassets/diagrams/workflow.svgis excluded by!**/*.svgassets/diagrams/z3-refutation.svgis excluded by!**/*.svgdocs/SKILL.mdis excluded by!docs/**docs/index.htmlis excluded by!docs/**docs/index.mdis excluded by!docs/**docs/llms-full.txtis excluded by!docs/**docs/llms.txtis excluded by!docs/**docs/loop-web.svgis excluded by!**/*.svg,!docs/**tests/conformance/ch09_decimal.verais excluded by!**/*.verauv.lockis excluded by!**/*.lock,!uv.lock
📒 Files selected for processing (38)
.github/workflows/ci.yml.github/workflows/limitations-sync.ymlAGENTS.mdCHANGELOG.mdCLAUDE.mdCONTRIBUTING.mdDESIGN.mdDE_BRUIJN.mdFAQ.mdHISTORY.mdKNOWN_ISSUES.mdLSP_SERVER.mdREADME.mdROADMAP.mdSKILL.mdTESTING.mdTOOLCHAIN.mdassets/diagrams/README.mdpyproject.tomlscripts/build_site.pyscripts/check_limitations_sync.pyscripts/check_wheel_availability.pyspec/02-types.mdspec/06-contracts.mdspec/07-effects.mdspec/08-modules.mdspec/09-standard-library.mdspec/11-compilation.mdspec/12-runtime.mdspec/13-wasi.mdtests/conformance/manifest.jsontests/test_check_limitations_sync.pytests/test_codegen_data_types.pytests/test_codegen_gc_alloc.pytests/test_codegen_monomorphize.pytests/test_runtime_traps.pyvera/README.mdvera/__init__.py
| | Collections | `Array<T>`, `Map<K,V>`, `Set<T>` | Functional, immutable; no mutation, no loops; `array_map`/`filter`/`fold`/`slice` as built-ins | | ||
| | Standard library | 164 built-in functions | Strings, arrays, maps, sets, decimals, math (log/trig/constants/utilities), JSON, HTML, Markdown, regex, base64, URL — no external deps | |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
set -euo pipefail
printf '\n== DESIGN.md excerpt ==\n'
cat -n DESIGN.md | sed -n '20,40p'
printf '\n== Array helper names in docs/code ==\n'
rg -n "array_(filter|fold|slice|map|mapi|any|all|find|sort_by)|filter` / `fold` / `slice`|no loops" -S README.md SKILL.md AGENTS.md DESIGN.md vera tests examples spec | sed -n '1,200p'
printf '\n== Random effect/runtime references ==\n'
rg -n "Random\.random_(int|float|bool)|Math\.random|random_int|random_float|random_bool|random" -S vera tests examples README.md SKILL.md AGENTS.md DESIGN.md | sed -n '1,240p'Repository: chethanuk/vera
Length of output: 3867
🏁 Script executed:
set -euo pipefail
printf '\n== DESIGN.md array row ==\n'
cat -n DESIGN.md | sed -n '29,32p'
printf '\n== Canonical array helper names elsewhere ==\n'
rg -n 'array_(filter|fold|slice|map|mapi|reverse|find|any|all|flatten|sort_by)|array_length|array_append|array_concat' README.md SKILL.md AGENTS.md vera tests examples spec DESIGN.md | sed -n '1,240p'Repository: chethanuk/vera
Length of output: 25854
Use the full array helper names in DESIGN.md:31
filter / fold / slice should be array_filter / array_fold / array_slice here, to match the actual built-ins and avoid pointing readers at non-existent functions.
🤖 Prompt for 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.
In `@DESIGN.md` around lines 31 - 32, The collections guidance in DESIGN.md uses
shortened helper names that do not match the built-ins; update the references in
the Collections and Standard library descriptions to use the full array helper
names. Replace the generic mentions of `filter`, `fold`, and `slice` with
`array_filter`, `array_fold`, and `array_slice` so the documentation aligns with
the actual function names and symbols used elsewhere.
Source: Path instructions
| Vera is in **active development** at v0.1.1, with **no known bugs**: 1,900+ commits, 199 releases, 6,821 tests, 91% code coverage, 143 conformance programs, 37 examples, and a 14-chapter specification. See **[HISTORY.md](HISTORY.md)** for how the compiler was built. | ||
|
|
||
| The reference compiler — parser, AST, type checker, contract verifier (Z3), WASM code generator, module system, browser runtime, and runtime contract insertion — is working. The language specification is in draft across [14 chapters](spec/). | ||
|
|
||
| **Key features delivered:** [typed De Bruijn indices](DE_BRUIJN.md) (`@T.n`), mandatory contracts, algebraic effects (IO, Http, HttpServer, State, Exceptions, Async, Inference, Random), refinement types, constrained generics (Eq, Ord, Hash, Show), algebraic data types, pattern matching, modules, 164 built-in functions (strings, arrays, maps, sets, decimals, math, JSON, HTML, Markdown, regex, base64, URL), contract-driven testing, canonical formatter, browser runtime, three-tier verification (Z3 static, guided, runtime fallback), a [language server](LSP_SERVER.md) with warm incremental verification and agent-facing proof-delta methods, and contract-verified HTTP handlers served natively (`vera serve`) or as wasi:http components for stock `wasmtime serve` (`--target wasi-p2 --world server`). | ||
| **Key features delivered:** [typed De Bruijn indices](DE_BRUIJN.md) (`@T.n`), mandatory contracts, algebraic effects (IO, Http, HttpServer, State, Exceptions, Async, Inference, Random, Diverge), refinement types, constrained generics (Eq, Ord, Hash, Show), algebraic data types, pattern matching, modules, 164 built-in functions (strings, arrays, maps, sets, decimals, math, JSON, HTML, Markdown, regex, base64, URL), contract-driven testing, canonical formatter, browser runtime, three-tier verification design (Z3 static and runtime fallback shipped; the Z3-guided tier is specified, not yet implemented), a [language server](LSP_SERVER.md) with warm incremental verification and agent-facing proof-delta methods, and contract-verified HTTP handlers served natively (`vera serve`) or as wasi:http components for stock `wasmtime serve` (`--target wasi-p2 --world server`). | ||
|
|
||
| **What's next:** the path from "working language" to "the language agents actually use" — see **[ROADMAP.md](ROADMAP.md)** for the four strategic milestones. The flagship goal is a verified MCP tool server where contracts guarantee tool schemas at compile time. **[VeraBench](https://github.com/aallan/vera-bench)** — a 50-problem benchmark across 5 difficulty tiers — now covers 6 models across 3 providers (v0.0.7). The headline result: Kimi K2.5 achieves 100% run_correct on Vera, beating both Python (86%) and TypeScript (91%). Three models beat TypeScript on Vera; the flagship tier averages 93% Vera vs 93% Python — essentially parity. These are single-run results with high variance — see the [full report](https://github.com/aallan/vera-bench) for details. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Test count drifted from TESTING.md.
This hunk states "6,821 tests", but TESTING.md's own Overview row (also updated in this PR) reports 6,822 (6,733 passed + 26 stress, 63 skipped = 6,822). One of these two is stale — most likely this line, since TESTING.md's per-file row for test_check_limitations_sync.py was bumped to 6 tests/107 lines to reflect the new TestCheckStatesFailsLoud test added in this same PR.
📝 Suggested fix
-Vera is in **active development** at v0.1.1, with **no known bugs**: 1,900+ commits, 199 releases, 6,821 tests, 91% code coverage, 143 conformance programs, 37 examples, and a 14-chapter specification.
+Vera is in **active development** at v0.1.1, with **no known bugs**: 1,900+ commits, 199 releases, 6,822 tests, 91% code coverage, 143 conformance programs, 37 examples, and a 14-chapter specification.Worth double-checking ROADMAP.md's "Where we are" line too, since the same doc-count gate covers it.
As per coding guidelines, "any PR that adds tests will trip scripts/check_doc_counts.py if it doesn't also update the test counts in TESTING.md (per-file rows + overall total), ROADMAP.md (the "Where we are" line), and README.md (project-status line)." As per path instructions, "Review Markdown files for factual accuracy against the codebase, broken links, and outdated information."
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Vera is in **active development** at v0.1.1, with **no known bugs**: 1,900+ commits, 199 releases, 6,821 tests, 91% code coverage, 143 conformance programs, 37 examples, and a 14-chapter specification. See **[HISTORY.md](HISTORY.md)** for how the compiler was built. | |
| The reference compiler — parser, AST, type checker, contract verifier (Z3), WASM code generator, module system, browser runtime, and runtime contract insertion — is working. The language specification is in draft across [14 chapters](spec/). | |
| **Key features delivered:** [typed De Bruijn indices](DE_BRUIJN.md) (`@T.n`), mandatory contracts, algebraic effects (IO, Http, HttpServer, State, Exceptions, Async, Inference, Random), refinement types, constrained generics (Eq, Ord, Hash, Show), algebraic data types, pattern matching, modules, 164 built-in functions (strings, arrays, maps, sets, decimals, math, JSON, HTML, Markdown, regex, base64, URL), contract-driven testing, canonical formatter, browser runtime, three-tier verification (Z3 static, guided, runtime fallback), a [language server](LSP_SERVER.md) with warm incremental verification and agent-facing proof-delta methods, and contract-verified HTTP handlers served natively (`vera serve`) or as wasi:http components for stock `wasmtime serve` (`--target wasi-p2 --world server`). | |
| **Key features delivered:** [typed De Bruijn indices](DE_BRUIJN.md) (`@T.n`), mandatory contracts, algebraic effects (IO, Http, HttpServer, State, Exceptions, Async, Inference, Random, Diverge), refinement types, constrained generics (Eq, Ord, Hash, Show), algebraic data types, pattern matching, modules, 164 built-in functions (strings, arrays, maps, sets, decimals, math, JSON, HTML, Markdown, regex, base64, URL), contract-driven testing, canonical formatter, browser runtime, three-tier verification design (Z3 static and runtime fallback shipped; the Z3-guided tier is specified, not yet implemented), a [language server](LSP_SERVER.md) with warm incremental verification and agent-facing proof-delta methods, and contract-verified HTTP handlers served natively (`vera serve`) or as wasi:http components for stock `wasmtime serve` (`--target wasi-p2 --world server`). | |
| **What's next:** the path from "working language" to "the language agents actually use" — see **[ROADMAP.md](ROADMAP.md)** for the four strategic milestones. The flagship goal is a verified MCP tool server where contracts guarantee tool schemas at compile time. **[VeraBench](https://github.com/aallan/vera-bench)** — a 50-problem benchmark across 5 difficulty tiers — now covers 6 models across 3 providers (v0.0.7). The headline result: Kimi K2.5 achieves 100% run_correct on Vera, beating both Python (86%) and TypeScript (91%). Three models beat TypeScript on Vera; the flagship tier averages 93% Vera vs 93% Python — essentially parity. These are single-run results with high variance — see the [full report](https://github.com/aallan/vera-bench) for details. | |
| Vera is in **active development** at v0.1.1, with **no known bugs**: 1,900+ commits, 199 releases, 6,822 tests, 91% code coverage, 143 conformance programs, 37 examples, and a 14-chapter specification. See **[HISTORY.md](HISTORY.md)** for how the compiler was built. | |
| The reference compiler — parser, AST, type checker, contract verifier (Z3), WASM code generator, module system, browser runtime, and runtime contract insertion — is working. The language specification is in draft across [14 chapters](spec/). | |
| **Key features delivered:** [typed De Bruijn indices](DE_BRUIJN.md) (`@T.n`), mandatory contracts, algebraic effects (IO, Http, HttpServer, State, Exceptions, Async, Inference, Random, Diverge), refinement types, constrained generics (Eq, Ord, Hash, Show), algebraic data types, pattern matching, modules, 164 built-in functions (strings, arrays, maps, sets, decimals, math, JSON, HTML, Markdown, regex, base64, URL), contract-driven testing, canonical formatter, browser runtime, three-tier verification design (Z3 static and runtime fallback shipped; the Z3-guided tier is specified, not yet implemented), a [language server](LSP_SERVER.md) with warm incremental verification and agent-facing proof-delta methods, and contract-verified HTTP handlers served natively (`vera serve`) or as wasi:http components for stock `wasmtime serve` (`--target wasi-p2 --world server`). | |
| **What's next:** the path from "working language" to "the language agents actually use" — see **[ROADMAP.md](ROADMAP.md)** for the four strategic milestones. The flagship goal is a verified MCP tool server where contracts guarantee tool schemas at compile time. **[VeraBench](https://github.com/aallan/vera-bench)** — a 50-problem benchmark across 5 difficulty tiers — now covers 6 models across 3 providers (v0.0.7). The headline result: Kimi K2.5 achieves 100% run_correct on Vera, beating both Python (86%) and TypeScript (91%). Three models beat TypeScript on Vera; the flagship tier averages 93% Vera vs 93% Python — essentially parity. These are single-run results with high variance — see the [full report](https://github.com/aallan/vera-bench) for details. |
🤖 Prompt for 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.
In `@README.md` around lines 227 - 233, The test totals in the project status docs
are out of sync, so update the README status blurb to match the latest count
reported in TESTING.md and any related doc-count gate text. Check the “active
development” summary in README.md and the corresponding overview/status entries
in ROADMAP.md and TESTING.md so the same total is used everywhere, especially
after the new test added in this PR. Refer to the README status paragraph and
the doc-count summary sections in TESTING.md and ROADMAP.md when making the
correction.
Sources: Coding guidelines, Path instructions
|  | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Keep the diagram inventory single-sourced.
This introduces loop-web.svg, but assets/diagrams/README.md does not list that SVG yet. Either add the asset there or reuse the documented diagram name so the site build stays aligned with the inventory.
🤖 Prompt for 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.
In `@scripts/build_site.py` around lines 416 - 417, The new loop diagram reference
is not aligned with the diagram inventory, because `loop-web.svg` is used in the
site content but not listed in `assets/diagrams/README.md`. Update
`scripts/build_site.py` to either point to an already-documented diagram name or
add `loop-web.svg` to the inventory so the generated site stays single-sourced
and consistent with the documented assets.
| - **Algebraic effects** — IO, Http, HttpServer, State, Exceptions, Async, Inference, Random, Diverge — declared, typed, and handled explicitly. Pure by default. | ||
| - **Refinement types** — Types that express constraints like "a list of positive integers of length `n`". | ||
| - **Three-tier verification** — Static via [Z3](https://www.microsoft.com/en-us/research/project/z3-3/), guided with hints, runtime fallback for the rest. | ||
| - **Three-tier verification** — Static via [Z3](https://www.microsoft.com/en-us/research/project/z3-3/) plus runtime fallback, shipped; the Z3-guided middle tier is specified, not yet implemented. | ||
| - **Diagnostics as instructions** — Every error is a natural-language explanation with a concrete fix, designed for LLM consumption. | ||
| - **LLM inference as effect** — `Inference.complete` is an algebraic effect — typed, contract-verifiable, mockable. Anthropic, OpenAI, Moonshot. | ||
| - **LLM inference as effect** — `Inference.complete` is an algebraic effect — typed, contract-verifiable, mockable. Anthropic, OpenAI, Moonshot, Mistral. | ||
| - **Typed stdlib** — JSON, HTML, Markdown, HTTP, Regex, Decimal — built-in ADTs with parse/query/serialize. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use the canonical effect name and do not overstate Inference.
The generated docs still say Exceptions, but the language docs use Exn<E>. They also call Inference mockable, which is broader than the current implementation because user-defined handlers are still unsupported. Please tighten both occurrences so the site matches the language surface.
Also applies to: 647-647
🤖 Prompt for 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.
In `@scripts/build_site.py` around lines 555 - 560, Update the generated docs text
in the site builder to match the language surface: replace the non-canonical
“Exceptions” effect name with “Exn<E>” in the relevant content emitted by the
docs generation logic, and soften the `Inference` description so
`Inference.complete` is described only as typed and contract-verifiable without
claiming it is fully mockable or broadly supported by user-defined handlers.
Locate the affected strings in the site generation path around the bullet list
and any mirrored copy elsewhere, and keep both mentions consistent.
| elif state == "UNKNOWN": | ||
| # A state that cannot be determined (gh CLI missing, | ||
| # auth failure, rate limit, timeout) must be loud: a | ||
| # silent pass here would leave the scheduled #852 | ||
| # workflow green while checking nothing. | ||
| errors.append( | ||
| f"Issue #{num} state could not be determined " | ||
| "(gh CLI missing, auth failure, or timeout); " | ||
| "--check-states cannot verify the limitation tables" | ||
| ) |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
Correct fix, but consider a single aggregate message when gh is entirely unavailable.
The UNKNOWN branch is correct and matches the new test's expectation. However, check_issue_states is called against all_issues (potentially several dozen tracked numbers across five doc tiers) — if gh itself is missing/unauthenticated, every single one degrades to UNKNOWN and this loop emits one near-identical error line per issue, which will flood the scheduled workflow's tracking-issue body with repetitive noise for what is really one root cause (tool unavailable).
♻️ Optional: detect the "all unknown" case once
if do_check_states:
all_issues = (
readme_issues
| vera_readme_open
| all_spec_issues
| skill_issues
| lsp_issues
)
if all_issues:
states = check_issue_states(all_issues)
+ if all(v == "UNKNOWN" for v in states.values()):
+ errors.append(
+ "gh CLI state check failed for all "
+ f"{len(all_issues)} tracked issues (missing/auth/"
+ "timeout); --check-states cannot verify the limitation "
+ "tables"
+ )
for num in sorted(all_issues):
state = states.get(num, "UNKNOWN")
if state == "CLOSED":
...
- elif state == "UNKNOWN":
- errors.append(
- f"Issue #{num} state could not be determined "
- "(gh CLI missing, auth failure, or timeout); "
- "--check-states cannot verify the limitation tables"
- )
+ elif state == "UNKNOWN" and not all(
+ v == "UNKNOWN" for v in states.values()
+ ):
+ errors.append(
+ f"Issue #{num} state could not be determined "
+ "(gh CLI missing, auth failure, or timeout); "
+ "--check-states cannot verify the limitation tables"
+ )Note: this would require updating test_unknown_state_is_an_error to still match the new aggregate message.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| elif state == "UNKNOWN": | |
| # A state that cannot be determined (gh CLI missing, | |
| # auth failure, rate limit, timeout) must be loud: a | |
| # silent pass here would leave the scheduled #852 | |
| # workflow green while checking nothing. | |
| errors.append( | |
| f"Issue #{num} state could not be determined " | |
| "(gh CLI missing, auth failure, or timeout); " | |
| "--check-states cannot verify the limitation tables" | |
| ) | |
| if all_issues: | |
| states = check_issue_states(all_issues) | |
| if all(v == "UNKNOWN" for v in states.values()): | |
| errors.append( | |
| "gh CLI state check failed for all " | |
| f"{len(all_issues)} tracked issues (missing/auth/" | |
| "timeout); --check-states cannot verify the limitation " | |
| "tables" | |
| ) | |
| for num in sorted(all_issues): | |
| state = states.get(num, "UNKNOWN") | |
| if state == "UNKNOWN" and not all( | |
| v == "UNKNOWN" for v in states.values() | |
| ): | |
| # A state that cannot be determined (gh CLI missing, | |
| # auth failure, rate limit, timeout) must be loud: a | |
| # silent pass here would leave the scheduled `#852` | |
| # workflow green while checking nothing. | |
| errors.append( | |
| f"Issue #{num} state could not be determined " | |
| "(gh CLI missing, auth failure, or timeout); " | |
| "--check-states cannot verify the limitation tables" | |
| ) |
🤖 Prompt for 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.
In `@scripts/check_limitations_sync.py` around lines 311 - 320, The issue is that
check_issue_states emits one nearly identical UNKNOWN error per issue when gh is
unavailable, creating noisy duplicate output. Update check_issue_states in
scripts/check_limitations_sync.py to detect the “all issues are UNKNOWN because
gh is missing/unauthenticated” case once and append a single aggregate error
message instead of per-issue lines. Keep the existing UNKNOWN handling for mixed
cases, and adjust test_unknown_state_is_an_error so it matches the new aggregate
message.
|  | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add text fallbacks for both figures.
Both inserts only add the SVG. The diagram-set convention requires a collapsed text version beside each embed, so please add the matching <details><summary>Text version…</summary> blocks for the async and vera serve figures.
Also applies to: 602-603
🤖 Prompt for 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.
In `@spec/09-standard-library.md` around lines 517 - 518, Add the missing
collapsed text fallbacks for the two diagram embeds in the standard library
spec. The async figure currently only inserts the SVG, so pair it with a
matching details/summary text version block that describes the async(e),
commutative effect-row, host worker thread, and W002 eager-evaluation behavior;
do the same for the vera serve figure. Keep the fallback immediately beside each
SVG embed to follow the diagram-set convention and make both figures accessible
without relying on the image.
Source: Path instructions
|  | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add the text fallback for the closure diagram.
The SVG is in place, but this figure still needs the collapsed text version that the diagram-set convention requires. Please add the matching <details><summary>Text version…</summary> block here as well.
🤖 Prompt for 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.
In `@spec/11-compilation.md` around lines 392 - 393, The closure diagram figure is
missing its required collapsed text fallback. In the section containing the
`closure-layout.svg` image, add the matching `<details><summary>Text
version…</summary>` block immediately alongside the SVG so it follows the
diagram-set convention and provides the alternate text version for the same
closure-layout content.
Source: Path instructions
|  | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add text fallbacks for both figures.
Both inserts only add the SVG. assets/diagrams/README.md requires a collapsed text version beside each embed, so please add the matching <details><summary>Text version…</summary> blocks for the GC-cycle and browser-runtime figures.
Also applies to: 607-608
🤖 Prompt for 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.
In `@spec/12-runtime.md` around lines 498 - 499, Add collapsed text fallbacks next
to both SVG embeds in the runtime spec, since the diagram inserts currently only
reference the image and miss the required readable alternative. Update the
GC-cycle and browser-runtime figure sections in the same style as other embeds,
using matching <details><summary>Text version…</summary> blocks so they can be
located by the existing diagram references and the surrounding figure content.
Source: Path instructions
|  | ||
|
|
||
| <details> | ||
| <summary>Text version</summary> | ||
|
|
||
| ```text | ||
| source ──▶ parse ──▶ check ──▶ verify ──▶ compile ──▶ run | ||
| parse check verify compile run | ||
| ast test | ||
| fmt | ||
| fmt ast test serve | ||
| ``` | ||
|
|
||
| </details> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Show vera test on the execution branch.
The diagram/text version makes vera test look like a code-generation-only gate, but it compiles and then executes the generated WASM to run contract-driven tests. Redraw that branch so the stage boundary matches the command behaviour.
🤖 Prompt for 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.
In `@TOOLCHAIN.md` around lines 20 - 31, The toolchain diagram and text version
currently place test under the code-generation branch, but `vera test` belongs
on the execution path alongside `run` and `serve`. Update the diagram source and
the text block in the toolchain docs so the branch boundary after `compile`
flows into execution, and move `test` to that execution branch while keeping
`compile` as the code-generation step. Use the existing `toolchain.svg`/text
version content as the target to keep both representations aligned with the
command behavior.
| ## Test Suite | ||
|
|
||
| Testing spans a **pytest suite** of 6,763 tests across 104 files — compiler-internals unit tests plus a **conformance suite** (143 programs in `tests/conformance/` validating every language feature against the spec) and **example programs** (37 end-to-end demos). The conformance suite is the definitive specification artifact — each program tests one feature and serves as a minimal working example. | ||
| Testing spans a **pytest suite** of 6,821 tests across 104 files — compiler-internals unit tests plus a **conformance suite** (143 programs in `tests/conformance/` validating every language feature against the spec) and **example programs** (37 end-to-end demos). The conformance suite is the definitive specification artifact — each program tests one feature and serves as a minimal working example. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Sync the test-suite count with the roadmap.
This still says 6,821 tests, but ROADMAP.md now reports 6,822. Please update the count so the docs do not disagree about the suite size.
🤖 Prompt for 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.
In `@vera/README.md` at line 725, Update the test-suite count in README.md so it
matches ROADMAP.md; the current “6,821 tests” value is stale and should be
changed to the new suite size reported by the roadmap. Locate the testing
overview text in the README and keep the surrounding description of the pytest
suite, conformance suite, and example programs unchanged while correcting only
the numeric count.
User description
Pre-flight validation ahead of aallan#702.
Summary
ubuntu-24.04-arm× Python 3.12 job to thetestmatrix viainclude(platform coverage, not python-version coverage, so it isn't cross-multiplied against all three Python versions).if:condition in the job keys offmatrix.osagainst anything other than the literal'ubuntu-latest'string, so the new value correctly runs the plain test step and is excluded from the coverage-upload step.z3-solver,wasmtime, andlarkall resolve prebuiltmanylinux_2_38_aarch64wheels for Python 3.12 today (verified independently, not assumed).Known gap (out of scope for this PR)
scripts/check_wheel_availability.py'sSUPPORTEDtable has zero Linux aarch64 rows despite README documenting it as supported — the wheel pre-flight gate gives no signal for aarch64 dependency drift. Leaving as a fast-follow rather than folding into this PR, to keep the diff matching this issue's stated scope.Test plan
yaml.safe_loadparses clean.pre-commit run --all-filesgreen.ubuntu-24.04-arm× 3.12 job actually execute and pass in this PR's CI run (not just parse) — existing 12-job matrix must stay green too.CodeAnt-AI Description
Add arm64 CI coverage and raise the wasmtime minimum version
What Changed
ubuntu-24.04-armwith Python 3.12, adding Linux arm64 coverage without expanding the whole matrix.wasmtimeminimum version is raised to>=46.0.1, keeping installs off a release affected by a known security issue.Impact
✅ Real Linux arm64 test coverage✅ Safer installs for embedders using wasmtime✅ Clearer release notes for the security update💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.
Summary by CodeRabbit
New Features
Bug Fixes