Land the verified 0.0.1 fixes in the repo that publishes the wheel - #16
Merged
Conversation
This repo publishes intentumdiff-python to PyPI, and it did not have the fixes for the defects that got 0.0.1 pulled. They were stranded in PR #15 (now conflicting) and #14. Two were missing outright: - src/intentumdiff/__main__.py — `python -m intentumdiff` failed in 0.0.1 because this file did not exist. It still did not exist here. - scripts/smoke_published_wheel.py — the release gate itself: installs the artefact into a clean venv and checks install, import, console script, `python -m`, a real diff, clean stderr, and that every URL resolves. The engine fixes, all verified against a green build in the experiments repo: - rust_core.py: canonicalise the distribution-qualified parser plugin id. The wheel publishes as intentumdiff-python while the import package is intentumdiff, so the certified parser arrived as 'intentumdiff-python:python:python' and failed an allowlist that only knew 'intentumdiff:python:python'. The certified batch path declined with "unsupported parser plugin" and fell through to routed finalize — Rust to Rust, so no gate fired and nothing looked wrong, while the certification and the facts only that path derives were silently absent. - registry.py: trust the package's own distribution name. THE 0.0.1 defect. - loader.py: the OSV advisory notice is debug, not warning. It fired on every ordinary run and put alarming text on stderr beside correct results. - _shared.py: `file a.py b.py` labelled both sides with the NEW filename, and claimed a "working tree" scope for diffs with no working tree. - sources/: a source that compares two differently named files now says so; get_content returns one filename because that is what language detection needs, and both sides inherited it. - core/models.py: facts_trace, populated only under INTENTUMDIFF_TRACE_FACTS. - live_server.py: the perceptual asset_diff op. - differ.py: display names applied at the boundary that knows both. Verified before syncing: Rust 266 passed, extension 260 passed, Python suite running. The experiments repo has no CI (Actions disabled on billing), so this repo's own CI is the gate — which is the point of syncing here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
CORE_REF was "main". But main only moves when a release is cut, so a consumer pinned to it cannot verify against an unreleased engine change — which is exactly what a release candidate exists to allow. That gap is not theoretical. The provenance tests in this PR assert facts_trace, added to the engine, and failed in CI while passing locally: CI was building an engine that predated the feature under test. The tests were right; the pin was wrong. Now follows release/v0.0.2-rc, and reads INTENTUMDIFF_CORE_REF so a one-off build can point elsewhere without editing the file. Tracking a branch does make the build unreproducible, so this becomes a TAG the moment intentumdiff-core cuts one. The comment says so where the next person will read it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PEP 440 spells the prerelease 0.0.2b1 — no hyphen, no dot — where Cargo and npm use 0.0.2-beta.1. Same release, three spellings, and the publish workflow asserts the tag matches this string exactly. Beta because 0.0.1 was published without anyone installing the artefact and using it. A version without a beta marker is a claim of stability, and that claim follows use rather than preceding it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three tests asserted the literal "0.0.1", so bumping to 0.0.2b1 failed them — for a reason that has nothing to do with what any of them checks. Two assert CLI BRANDING and one asserts IMPORT PURITY; none is about which version is current. A hardcoded version in a test is the same defect the release skill names for workflows: "derive the expected version, never a literal. A hardcoded version goes stale silently and fails at the very end of a release, blaming the artefact when the gate was wrong." They now read __version__. Importing it into the purity test is safe: that test's subject is a subprocess, so the parent's imports are not what it measures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This repo publishes the PyPI wheel, and it did not have the fixes for the defects that got 0.0.1 pulled. They were stranded in #15 (now conflicting) and #14.
Two files were missing outright:
src/intentumdiff/__main__.pypython -m intentumdifffailed in 0.0.1 because this file did not exist. It still did not exist herescripts/smoke_published_wheel.pypython -m, a real diff, clean stderr, and that every URL resolvesPlus nine engine files. The one worth reading twice:
rust_core.py— the certified path was never being taken. The wheel publishes asintentumdiff-pythonwhile the import package isintentumdiff, so the parser id arrived asintentumdiff-python:python:pythonand failed an allowlist that only knewintentumdiff:python:python. The certified batch path declined with "unsupported parser plugin" and fell through to routed finalize. That fallthrough is Rust→Rust, so no engine gate fired: results were correct, the engine was Rust, and the certification plus the facts only that path derives were silently missing. Fixing it turned 7 failing tests green at once.Verification
The experiments repo (formerly
intentumdiff) has no CI — Actions is disabled there on billing — so this repo's CI is the gate. That is the point of syncing here rather than merging privately.Supersedes #15, which conflicts. #14's content is included.
🤖 Generated with Claude Code