chore(compat): move the three stale reader rows to their newest published patch - #391
Merged
Merged
Conversation
…shed patch The reader list is "the highest published patch of each line in the support window", but both gates check the document against their own copy and never against a registry, so all three movable rows had drifted: pg-core 0.6.3 with 0.6.5 published, @e4a/pg-wasm 0.6.1 with 0.6.5 published, @e4a/pg-js 2.3.3 with 2.4.0 published. 0.5.10 and 1.11.0 are already the highest in their lines and do not move. Each move is a replacement, not an addition: two `=` pins on one minor line do not resolve, which `pg-compat/tests/support_window.rs` holds the crate to. The deprecation comment in `reader!` is now the other way round. pg-core 0.6.5 is the first pinned release that ships the `#[deprecated]` on `VERSION_V3`, so the `#[allow(deprecated)]` pair it was written for is load bearing rather than inert; dropping either one fails `pg-compat-lint`'s clippy `-D warnings`. Both lockfiles are regenerated, not hand-edited. The two gate READMEs and the two JS tests that name a reader by id follow the pins. Closes #379 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
….4.0 alias `pg-js-2-4-0` was a safe hypothetical while it existed nowhere. This PR makes it a live `package.json` entry pointing at `@e4a/pg-js@2.4.0`, so the doc comment's `npm:@e4a/pg-wasm@2.4.0 under a pg-js-2-4-0 alias` read as a claim about a real alias that resolves to the opposite package. Bumped to `2.5.0`/`pg-js-2-5-0`, the same unpublished-version trick this PR already applied to README.md's step-2 walkthrough and pg-compat/README.md uses for 0.7.0. Second occurrence of that collision; the first was caught, this one was missed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`npm install` left the hoisted transitive `@e4a/pg-wasm` at 0.6.1: both pg-js readers declare `^0.6.1` and 0.6.1 still satisfies it. Before this PR the pin and the transitive were both 0.6.1 and agreed by coincidence; moving the pin to 0.6.5 split them, so the two `@e4a/pg-js` legs (the three `stream*` cases) unsealed through a version the reader list no longer declares, while a consumer installing `@e4a/pg-js@2.4.0` fresh today gets 0.6.5 — a combination the gate did not exercise. `installedPackage()` only checks the alias, so nothing caught it. `npm update @e4a/pg-wasm`; lockfile only, package.json untouched. Verified after `npm ci` that the transitive resolves to 0.6.5, and the gate still opens every case: 26 passed. 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.
Closes #379.
Moves the three stale rows in
COMPATIBILITY.md's reader list to the highest published patch of their line, and moves both gates' copies with them.crates.io pg-core0.6.30.5.100.6.50.5.10npm @e4a/pg-wasm0.6.10.6.5npm @e4a/pg-js2.3.31.11.02.4.01.11.00.5.10and1.11.0are the highest in their lines and do not move. Each of the three is a replacement rather than an addition, asno_two_pinned_readers_share_a_minor_linerequires. The "Checked against the registries" line reads2026-08-31, re-measured today against crates.io and npm rather than copied from the issue body.0.6.5 ships the deprecation
The issue asked for the comment in
reader!to be re-checked rather than carried forward, and the claim in it has flipped. Publishedpg-core0.6.5 does carry#[deprecated]onVERSION_V3(pg-core-0.6.5/src/consts.rs:38in the crates.io tarball); 0.6.3 carried none. So the two#[allow(deprecated)]the comment was written for are load bearing now instead of inert. Dropping the one on the import fails the build:The comment now records that instead of its opposite. 0.5.10 still contains no
#[deprecated]at all, so in that module both allows stay inert.WIRE_VERSIONdid not move: it is still 2 on both sides, and every reader opened every case it is meant to, so the moved versions speak the same container version.Beyond the seven files the issue lists
Two JS tests name a reader by its id and would have thrown
no reader configuredthe moment the pin moved:WASM_READERintest/gate-teeth.test.mjs, and the last assertion intest/manifest.test.mjs. The version literals intest/failures.test.mjsand the synthetic documents insupport_window.rsandmanifest.test.mjsare labels and fixtures rather than readers, so they are untouched.Both gate READMEs name the pinned versions in their open-one-case command and in the reader table, so those follow the pins. One further line in
pg-compat-js/README.md: its "adding a version" walkthrough used"pg-js-2-4-0": "npm:@e4a/pg-js@2.4.0"as the hypothetical, which this change turns into a real entry inpackage.json. It now reads2.5.0, the waypg-compat/README.mduses an unpublished0.7.0for the same job. Revert that line if you would rather the example stayed as it was.Testing
Both acceptance checks, against a sample set sealed by HEAD:
Also green:
cargo clippy --manifest-path pg-compat/Cargo.toml --all-targets --locked -- -D warnings,cargo fmt --checkonpg-compat, and thepg-core,pg-pkg,pg-cliandpg-ffisuites as CI runs them.Both lockfiles were regenerated by building (
cargo check,npm install), not hand-edited.Reviewed by dobby: the
code-commentsrule over the full diff (no breach — the only comment touched is thereader!deprecation rewrite, which records a live constraint in an already densely commented file), plus a correctness pass over all 11 files —cargo test --workspace --locked394 passed,pg-compat18 passed,pg-compat-js26 passed, clippy-D warningsandcargo fmt --checkclean — approve, with the two findings fixed in this PR at 948ad99.Fixed:
pg-compat-js/src/readers.mjs:61—installedPackage's doc comment usedpg-js-2-4-0as a hypothetical alias, which this PR turns into a live entry resolving to the opposite package; moved to2.5.0/pg-js-2-5-0, the second occurrence of the collision the body already caught forREADME.md.Fixed:
pg-compat-js/package-lock.json—npm installhad left the hoisted transitive@e4a/pg-wasmat 0.6.1 (both pg-js readers declare^0.6.1), so the two@e4a/pg-jslegs unsealed through a version the reader list no longer declares while a fresh@e4a/pg-js@2.4.0install gets 0.6.5;npm update @e4a/pg-wasmmoves it, lockfile only, and the gate still opens every case.Attention: nothing pins or asserts that hoisted transitive, so the next pin move can silently re-split it —
installedPackage()checks only the alias, andpg-compat-js/test/manifest.test.mjscompares only what it returns. Worth anoverridesentry or one assertion there, in its own PR.