Only the Verification Layer
Breaking, despite being a minor. The refactoring product this package grew out of has been removed: six commands, the 20 AST transforms, the interactive TUI, blast-radius scoring and the tier taxonomy. They were the demo of the verification engine, not the product. verify-diff and the MCP tool are untouched.
Refactron is now only a verification layer. verify-diff and the verify_change MCP tool are exactly what they were in 0.3.0, down to the report shape. Everything that surrounded them, the refactoring product this package grew out of, has been removed from it.
Under semver a 0.x release may carry breaking changes in a minor, and this one does. Read the Removed section before upgrading: there is no major-version bump to warn you, so ^0.3.0 will not pull this in but refactron@latest will. The 0.3.0 entry below says nothing was renamed, removed, or redefined. That was true of 0.3.0 and is explicitly untrue of this release.
Removed
Six commands, the transforms behind them, and the interactive UI.
| Removed | Was |
|---|---|
refactron analyze | scan for transform patterns, blast radius, tier |
refactron run | plan, verify and apply transforms |
refactron document | generate docstrings and changelog prose |
refactron rollback | undo the last applied refactor |
refactron preflight | SQLAlchemy 1.x to 2.0 safety report |
refactron init | scaffold .refactronrc.json |
bare refactron | the interactive Ink REPL |
Also removed: the 20 AST transforms and their LibCST sidecars, the autofix fixers, blast-radius scoring, the tier taxonomy, the .refactron/ session store, the legacy verification engine, the language-adapter layer, and the src/core/models.ts and src/adapters/interface.ts locked contracts.
Why: they were the demo of the verification engine, not the product. They were also most of the package. What remains is about a sixth of the source and all of what people install it for.
Changed
- Bare `refactron` prints help and exits 2 instead of opening the TUI.
- An unknown command exits 2 and says so, rather than failing to resolve a module.
- `refactron login` is a real command. Previously only
login --print-tokenwas dispatched, and it discarded the status callback, so the device code and verification URL were never displayed. Status now goes to stderr, which keeps--print-tokenpipeable. - `--help` describes this product. It advertised six departed commands and called Refactron “safety-first refactoring”, the pre-pivot positioning.
Added
- A library entry point.
mainandtypeshave pointed atdist/index.jssince before 0.2.0, but no such file existed, soimport { verifyDiff } from 'refactron'never resolved.src/index.tsnow exportsverifyDiff,RefactronVerifier,checkPythonSyntax,checkTypescriptSyntax,reportCoverage, theVerdictReporttype and thecontracts.tssurface. - A help-drift test.
tests/unit/cli/help-drift.test.tsasserts that every verb the help advertises is actually dispatched, against the built binary.
Fixed
- `build:copy-py` could fail silently. Its trailing
|| truebound to the whole&&chain, so a failure to copy the *verification* sidecars exited 0: green build, green CI, then every Python verdict failing at runtime against a missing sidecar. The build now asserts all three sidecars reachdist/.
Internal
- 18 unused runtime dependencies dropped, including
ink,react,ts-morphand the threetree-sitterpackages. Five remain. - The pre-merge gate no longer runs
analyze src/against this repo. It gates the shipped artifact instead. It deliberately does not runverify-diffagainst this repo either: coverage attestation is Python-only, so a TypeScript repo verifying itself caps atUNPROVENpermanently.
TransformId still lists the 20 transform literals. Narrowing a locked contract in the same release that restructures the repo would make any regression un-bisectable, so it waits for a later major.
