Skip to content

julie-extract v2.12.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 15:30

v2.12.0

This feature release adds versioned, golden-backed test-role evidence for
continuous-testing consumers while keeping execution and verdict logic outside
the extraction product.

Test Evidence Contract

  • kind_coverage.test_detection is now published through the library snapshot,
    julie-extract languages --json, SQLite capability rows, and JSONL exports.
  • The fixed role vocabulary is test_case, test_container, and
    test_lifecycle. Positive capability claims require an emitted role in a
    registered golden fixture.
  • Consumers get explicit supported, source-backed not_applicable, and owned
    open_gaps classifications. Absence remains unknown when capability evidence,
    indexed-file status, or parse health is insufficient.
  • The versioned consumer contract is documented in
    docs/contracts/test-evidence-v1.md.
  • Release packages include both the test-evidence contract and the
    continuous-testing evidence-boundary decision.

Golden Closure

  • All 28 code languages now have golden-backed evidence for at least one emitted
    test role.
  • All 108 language-role cells are classified exactly once: 60 are supported, 6
    are source-backed not_applicable, and 42 remain explicit open_gaps with
    closure ownership.
  • The strict language-quality gate now includes test detection for code
    languages and still reports silent_cells: 0 and quality_bar_debts: 0.
  • CSS and regex provide the source-backed negative cases. HTML, JSON, Markdown,
    SQL, TOML, and YAML retain explicit gaps because test meaning comes from an
    external host, framework, or schema rather than the standalone language.

Extraction Fixes

  • Razor now detects embedded C# test attributes such as [Fact] without
    misclassifying ordinary declarations.
  • Vue <script> and <script setup> sections now publish JavaScript and
    TypeScript call-style test roles with host-SFC spans, body spans, stable IDs,
    and parent relationships.
  • Ordinary declarations and qualified member calls remain negative controls for
    call-style test detection.

Continuous-Testing Boundary

julie-extractors owns emitted test roles plus capability and diagnostic
evidence. Miller owns deterministic graph candidates over extracted facts. Eros
owns runner inventory, scheduling, results, freshness, and verdicts. This release
does not add a watcher, runner inventory, scheduler, result store, or impact
verdict engine.

The boundary decision is recorded in
docs/architecture/continuous-testing-evidence-boundary.md.

Contract Versions

  • Rust package versions change from 2.11.0 to 2.12.0 across
    julie-extract-artifact, julie-extract-cli, and julie-extractors.
  • SQLite schema stays 4.
  • extract_contract_version stays 3.
  • JSONL schema stays 3.
  • test_detection is additive within the existing versioned capability object.
  • Parser dependency pins are unchanged.

Release Preparation

The local release candidate is verified with:

cargo fmt --check
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.0
cargo xtask release package-list
git diff --check

Published Release

Published 2026-07-10T15:30:13Z as
https://github.com/anortham/julie-extractors/releases/tag/v2.12.0.

Target Archive SHA-256
aarch64-apple-darwin 249ed102deece8841c2965d7ad370ef08e63a82d093315a21f374a4457e57812
x86_64-apple-darwin 29ce60fbfc96d636eb1500df3d563c8739dd7bf1ef8097f00bda531c6ca467b5
x86_64-pc-windows-msvc b4c428bc25638381e9ad46603cc3f30cd5ebb0065f0df83134afdda43b6df9ef
x86_64-unknown-linux-gnu 578946c36965e80407a26f774ea730c0bce9bd536b20ce7e46e96098ed3006a2

The release workflow and all downloaded assets passed. The separate
push-triggered CI run exposed seven Linux Rust 1.97 Clippy findings after the
release was already live; v2.12.1 is prepared as a behavior-preserving source
and CI-hygiene superseding patch.