Skip to content

v0.4.9

Choose a tag to compare

@pzfreo pzfreo released this 21 Aug 08:41
· 1072 commits to main since this release
01c3da3

The recogniser upgrade, the authored-tolerance epic, and the layout-visibility fixes.

Added

  • Lint now verifies that an annotation claiming to carry a measurement actually renders it
    (#1217). Coverage checks read provenance riders the annotations carry about themselves and
    believed them; nothing checked the claim against what the annotation draws. Four new codes —
    claimed_value_absent, claimed_measurement_not_compiled, and two that report an
    unverifiable claim rather than passing it — and Drawing.add_table now keeps the rows it
    draws so a table's claims are readable back. Measured over all 21 STEP fixtures: 1,081
    claims, 1,078 confirmed, and three findings — all instances of one genuine provenance
    defect, see #1219.

  • lint_summary()["quality"] gains a fourth component, fidelity: whether what the drawing
    says is TRUE. The existing three ask whether required content landed (completeness),
    whether there is too much of it (restraint), and whether a reader can make it out
    (legibility) — none asked whether it is correct, so a drawing labelled 99 over a 16 mm
    path reported a perfect score on every component available to it. Also covers a callout
    drawn for a feature the part does not have, and a gear data table stating a tooth count
    the geometry contradicts — the last of which reports passed: True and zero errors, so
    the only existing channel that names it is by_code. Completeness, restraint and fidelity
    report available: False with a reason rather than a flattering number when they have no
    evidence, and every lint code the engine emits is classified onto exactly one component,
    an explicit unscored register, or a register of codes whose component depends on the
    issue's outcome_stage. quality["unscored"] reports the findings that reached no
    component at all and flags any whose classification nobody made — section_dropped was
    found scoring on nothing while a comment beside its emission said the opposite, and eleven
    more *_dropped codes reach the engine as drop_code data with the same shape (#1176).

Changed

  • Updated the exact b123d-recognisers production lock from 0.2.4 to 0.2.6.
    The immutable PyPI wheel/sdist hashes and capability-manifest digest aa52bc04216cd1eccc05796d2262547c7f476b80a3ec77334a77b9d8e3241a58 are
    recorded in .github/recogniser-release.json; focused compatibility evidence and the
    normal consumer gates run on the generated PR.

  • HoleRequirementOutcome gains members and features, ClaimOutcome gains measurement,
    and linting.hole_coverage.canonical_hole_sites is public (#1217). A consumer attributing a
    requirement outcome to a specific recognised hole needs the evidence the outcome accounts
    for, and needs to key into the canonical space the ledger publishes it in — a through hole's
    own-axis coordinate is zeroed there.

  • The STEP-analysis benchmark's drawing_consumer boundary now consumes
    hole_requirement_outcomes instead of a second correspondence implementation of its own
    (#1206), and follows the ledger's pointer through linting.evidence rather than trusting it.
    Holes the ledger reports unverifiable now score unknown where the duplicate credited them
    by guessing: 26 holes, five on each CTC-03 fixture and eight on each CTC-04 fixture. The
    five-case evaluation corpus is unchanged, and one lint message on CTC-03 now reports its
    coordinates in the ledger's own canonical space.

  • Drawing.suppressions() rows gain a conveyed_by key: the dimension that states a
    withheld measurement instead, or None when nothing takes the fact over (#1154). It is not
    a synonym for the existing authored flag — that says whose decision it was, this says
    where the measurement went.

  • Updated the exact b123d-recognisers production lock from 0.2.2 to 0.2.4.
    The immutable PyPI wheel/sdist hashes and capability-manifest digest d0023d30e583c03abc55f09dfeaaa56fddf56334afa0417818480b2fa2ce3f0f are
    recorded in .github/recogniser-release.json; focused compatibility evidence and the
    normal consumer gates run on the generated PR.

  • Updated the exact b123d-recognisers production lock from 0.2.1 to 0.2.2.
    The immutable PyPI wheel/sdist hashes and capability-manifest digest 7985befc8572bfe6d1c0805dfdf690d74a5a4a5f14d5988cc29c366315ff04ca are
    recorded in .github/recogniser-release.json; focused compatibility evidence and the
    normal consumer gates run on the generated PR.

Fixed

  • An authored tolerance the compiler approved now reaches the sheet wherever the measurement
    is drawn (#1215, #1216). build123d_drafting resolves a dimension's text as
    label if label is not None else _number_with_units(measured, tolerance), and every
    dimension this engine emits passes a label — so a forwarded tolerance= rendered nothing
    while type-checking and reading back correctly from Dimension.label. Ten render paths
    discarded the band that way: envelope extents, the height ladder, the turned-step chain, two
    public Drawing verbs, the deferred corridor route, the detail-view redraw, the short-rise
    escape, step shoulders, pattern pitch, compound-callout recess terms, grid pitch, and both
    hole tables. A general guard now decorates every parameter of every feature across a corpus,
    through both decorations= key shapes, and joins what the compiler approved against what the
    claiming annotation renders.

  • Collapsed N× marks no longer state a tolerance their members do not share (#1216). A
    pattern's pitch claimed the authored band of eve

Full changelog: https://github.com/pzfreo/draftwright/blob/main/CHANGELOG.md