Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 10:29
· 193 commits to main since this release
d5c8df6

What's Changed

  • fix(ci): pin npm major and grant pypi job repo read
  • fix(ci): read the wrapper version from its real source
  • feat(ops): issue-first workflow and a three-lens review
  • docs(agents): retarget subagents at the verification layer
  • docs(preflight): code-format the classification values
  • docs(dev-docs): v0.3.0 release readiness checklist
  • chore(release): v0.3.0
  • docs(release): add pypi release steps and the publish ordering
  • docs: install from the published 0.3.0 release, not from source
  • docs(release): reposition the pip wrapper readme on verification
  • fix(release): resolve the node cli in the pip wrapper, never install it
  • fix(release): apache-2.0 and release metadata for the pip wrapper
  • style(verify): f-string in the sidecar error path
  • test(verify): pin fixture line endings and normalize on read
  • fix(verify): byte-exact sidecar io and a reason for unknown
  • test(verify): drop version-dependent excluded-line assertion
  • docs(verify): drop em dashes from the attribution rework prose
  • fix(verify): attribute coverage by AST statement containment
  • fix(verify): attribute coverage per statement, not physical line
  • docs: accept src and sys in vale vocabulary
  • docs(verify): oracle-limit example and shadow sys.path guidance
  • fix(analyze): quote-aware tokenizing, report-step failure honesty
  • fix(analyze): measure script-form test cmds, no fake zero coverage
  • docs: accept subprocess terms in vale, use verdict casing
  • revert(verify): blanket-skip pycache in shadow tree
  • fix(verify): key new-file and submodule guards off disk, not diff claims
  • fix(verify): match spec/mts FAIL lines in vitest summarizer (M1)
  • fix(verify): retry new failures on a fresh shadow tree (I1)
  • fix(verify): floor verdict at UNPROVEN when tests flaky (C1)
  • docs(verify): note subprocess coverage gap and SAFE suite limits
  • fix(verify): drop changed file sibling pycache in shadow tree
  • fix(verify): reject anchorless, submodule, and non-UTF-8 diff inputs
  • fix(verify): make tests gate flaky-aware with retry-once delta
  • fix(verify): honest reason for removal-only diffs
  • fix(analyze): probe coverage by module execution, not import
  • fix(verify): close quoted-path empty-deletion gap from review
  • fix(verify): reject deleted/renamed/binary diffs instead of dropping
  • docs: accept repo and builtins in vale vocabulary
  • docs: point vale at the vocabulary via explicit config
  • docs: add vale vocabulary so spellcheck accepts product terms
  • fix(analyze): ignore phantom coverage files, satisfy self-gate
  • fix(verify): tolerate CRLF in sidecar output on Windows
  • test(verify): lock fail-closed invariant for sidecar failure
  • fix(verify): make imports gate delta-aware and TYPE_CHECKING-safe
  • docs: quote frontmatter descriptions containing colons
  • docs: normalize remaining transforms-index links
  • docs: apply first-run and navigation review fixes
  • docs: correct verify-path behavior claims from review
  • docs: remove em-dashes across user-facing pages
  • docs(concepts): add determinism illustration to why-no-llm
  • docs(readme): lead with the verification layer positioning
  • docs(changelog): add unreleased verify-diff, mcp, preflight entry
  • docs: reframe faq, transforms intro, and reference for verify
  • docs(concepts): reframe safety model and determinism for verify
  • docs: reposition overview and quickstart to verification layer
  • docs(verification): add verify-diff, mcp, verdicts, preflight pages
  • docs(assets): add verification-layer brand marks and illustrations
  • fix(verify): normalize CRLF before changed-line diff, no false SAFE
  • fix(ci): install coverage.py into the python3 the tests spawn
  • fix(docs): dedent Update closers so changelog.mdx parses (#76)
  • fix(verify): preserve baseline-fail marker past tail truncation
  • fix(verify): no false-SAFE mixed-lang, UNPROVEN no-runner, =-form flags
  • test: run subprocess-heavy files serially to fix parallel flake
  • feat(mcp): verify_change MCP server
  • fix(cli): clean error and exit 2 on bad or empty verify-diff input
  • feat(cli): verify-diff command
  • feat(verify): verifyDiff — verify an arbitrary diff end-to-end
  • feat(verify): three-way verdict fusion (SAFE/UNSAFE/UNPROVEN)
  • fix(verify): ignore no-newline marker in changed-line derivation
  • feat(verify): diff ingestion for arbitrary changes
  • docs(phase2): strategy, roadmap, verifyDiff+MCP spec and plan
  • docs(g0): phase-0b app-corpus results + reusable harness
  • fix(preflight): guard empty-report banner + probe pytest in integration
  • test(preflight): integration over a covered/uncovered sqlalchemy fixture
  • feat(cli): wire preflight command into dispatcher + help
  • feat(cli): add preflight command for migration safety report
  • feat(cli): render migration safety report
  • test(analyze): cover fail-safe verdict + safe/site assertions
  • feat(analyze): safety-verdict classifier for migration sites
  • chore(dev-docs): mark Model.query class-attr re-trial condition done
  • chore(dev-docs): phase 0 redo — accuracy + table parity fixes
  • chore(dev-docs): phase 0 redo — class-attr fix + new G0 verdict
  • test(analyze): coverage tagging works for class-attr findings
  • test(analyze): drop tautological line>0 assert in class-attr dedup test
  • test(analyze): assert single finding per class-attr chain (no dupes)
  • test(analyze): cover class-attr form across every flag reason
  • feat(analyze): handle Model.query class-attr form in sqlalchemy detector
  • chore(dev-docs): phase 0 G0 results — stop at threshold
  • fix(analyze): normalize covered-line keys so detector lookups hit
  • feat(analyze): tag sqlalchemy findings with test coverage
  • feat(analyze): python line-coverage reporter via coverage.py
  • feat(analyze): sqlalchemy-query detector with safe/flag classification

Install

npm install -g refactron@

What's Changed

  • fix(docs): dedent Update closers so changelog.mdx parses by @omsherikar in #76
  • feat(preflight): coverage-aware SQLAlchemy migration safety report by @omsherikar in #74
  • feat(v0.3): SQLAlchemy migration phase 0 — detector + coverage reporter by @omsherikar in #72
  • feat(verify): verifyDiff + MCP verify_change — verify any diff before it lands by @omsherikar in #75
  • docs: reposition to the verification layer for AI code change by @omsherikar in #77
  • fix(verify): delta-aware imports gate, no false UNSAFE on real code by @omsherikar in #78
  • fix(verify): reject deletion/rename/copy/binary diffs, no false SAFE by @omsherikar in #79
  • fix(analyze): probe coverage by module execution, not import by @omsherikar in #80
  • fix(verify): honest reason for removal-only diffs by @omsherikar in #81
  • feat(verify): flaky-aware tests gate with fresh-tree retry, UNPROVEN floor by @omsherikar in #83
  • fix(verify): reject anchorless, submodule, non-UTF-8 diffs; lock shadow immunity by @omsherikar in #82
  • fix(analyze): script-form coverage, honest unknowns, shadow-bypass guard by @omsherikar in #84
  • docs(verify): oracle-limit example and shadow sys.path guidance by @omsherikar in #85
  • fix(verify): attribute coverage by AST statement containment by @omsherikar in #86
  • feat(ops): issue-first workflow and verification-aware subagents by @omsherikar in #88
  • chore(release): v0.3.0 by @omsherikar in #87
  • fix(ci): read the wrapper version from its real source by @omsherikar in #90
  • fix(ci): pin npm major and grant pypi job repo read by @omsherikar in #93

Full Changelog: v0.2.4...v0.3.0