Skip to content

v0.4.18

Choose a tag to compare

@pzfreo pzfreo released this 05 Sep 16:09
· 811 commits to main since this release
cd4795f

Patch release. The theme is evidence: a drawing can now be asked what it recognised,
what it missed, and what it did with each finding — and say so in versioned JSON that
another program can read.

Recognition evidence and reporting

  • inspect_step(path) (#1460) — read-only, versioned STEP evidence over one hashed
    byte snapshot. No drawing build, view projection, annotation placement, render, export
    or lint path runs; a guard pins the exact set of engine modules an inspection executes.
    It reports what was found, what each finding was used for (acted_on, disposition,
    reason, owners), and what went unclaimed.
  • Report v1 and CLI sidecars (#1438, #1449, #1455, #1456) — a versioned
    machine-readable recognition and drawing report written alongside generated artifacts,
    atomically (#1452), with physical requirement outcomes projected into it.
  • Script generation writes the sidecar to disk (#1454) rather than embedding a
    snapshot in the emitted Python.
  • Occurrence ownership (#1441–#1453) — every accepted recognition occurrence is now
    tracked to an outcome: direct, grouped, nested countersinks, conditional channels,
    turned steps, through steps, round bosses, exact Plate ownership, and an explicit
    classification for ownerless occurrences.
  • b123d-recognisers 0.4.14 Blend paths adopted (#1459).

Fixes

  • A raw OCC failure no longer escapes on Linux (#1395, #1468). A degenerate iso zone
    reached gp_Trsf::SetScale and crashed: on Linux the kernel raises
    Standard_ConstructionError, which is not a Standard_Failure subclass, so the
    handler missed it. Two further cases came out of the same fix — a negative factor was
    accepted silently and mirrored the geometry, and a NaN scale slipped past a <= 0
    test and hung the build.
  • *_requirement_unverifiable no longer prints ? where a requirement id belongs
    (#1397). That finding is recorded exactly when a recognised source matched no IR
    feature, so no id exists; the message now names how many requirements are unattributable,
    or says the cardinality is unknown where it genuinely is.

Documentation

  • The ADR corpus is five records (#1463), down from twenty-one and 8,787 lines, each
    capped at 200 lines and each naming the guard test that fails if an invariant is
    violated. The superseded records are archived as frozen history.
  • The multi-feature object-reference workflow doc now runs (#856, #858). Its example
    raised ValueError as written, and a test now executes what the doc tells the reader to
    execute and pins the measured output.

Internal

  • reporting's occurrence projector is a named seam (#1461): project_occurrences,
    json_value, producer, write_json_document, drawing_report.
  • PR CI shards were 1.60x out of balance — 38% of collected tests had no recorded
    duration. Rebalanced to 1.00x, cutting PR wall clock by ~19%.

Full changelog: v0.4.17...v0.4.18