julie-extract v2.12.1
v2.12.1
This maintenance release supersedes v2.12.0 to close its source-control CI
finding. The v2.12.0 release workflow and published assets were correct, but
the separate Linux push CI run failed when Rust 1.97 introduced stricter Clippy
diagnostics for seven existing Option control-flow patterns.
CI Closeout
- SQL structural-fact fallback now uses
Option::filterwhile preserving the
prior missing-name behavior. - C++, CSS, GDScript, Lua, and Razor early-return paths use the
?operator in
the forms required by Rust 1.97 Clippy. - The rewrites do not change extracted symbols, facts, contracts, parser pins,
or release-package contents. v2.12.0publication evidence, downloaded asset checks, and dogfood results
are recorded indocs/release-evidence/2026-07-10-v2-12-0-release.md.
Release Process Hardening
- New
scripts/check-release-state.shtripwire fails when the source tree
declares a version whose tag is not on origin, when localmainis ahead of
origin/main, or when a local tag is missing from origin. This release was
itself delayed by that exact gap: thev2.12.1prep commit sat unpushed and
untagged for a day afterv2.12.0shipped.docs/release.mdnow requires
the tripwire at session start and as the first closeout check.
Contract Versions
- Rust package versions change from
2.12.0to2.12.1across
julie-extract-artifact,julie-extract-cli, andjulie-extractors. - SQLite schema stays
4. extract_contract_versionstays3.- JSONL schema stays
3. - Test evidence stays
1. - Parser dependency pins are unchanged.
Release Preparation
The patch candidate is verified with:
cargo fmt --check
rustup run 1.97.0 cargo clippy --workspace --all-targets --all-features --no-deps -- -D warnings
cargo test -p xtask
cargo xtask test default
cargo xtask test contract
cargo deny --all-features check
node scripts/language-data-quality-report.mjs --strict
cargo xtask release preflight --version 2.12.1
git diff --check