Repository navigation
fix: install beside the harness's 0.2.2 release candidate (cordis 4.1) - #153
Merged
Merged
Conversation
The harness published 0.2.2-rc.1 on 2026-11-04. Its @deepseek-ai/dsh-typert-protocol build peers cordis ~4.1.0. npm resolves the plugin's typert peer to the newest admitted build (the `latest` tag, 0.1.0-rc.6, is outside it) and then needs that build's cordis, which the plugin's optional cordis peer stopped short of. A fresh install of the plugin therefore failed with ERESOLVE, and so did the bundle gate's consumer install on main and on every branch. The cordis peer now also admits ~4.1.0. A new harness-channel case holds the cordis peer to the cordis range of every published typert build the typert peer admits (recorded from the registry), and keeps the range stopping at the next tuple. The README pair says why the cordis peer follows the typert range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
…rlap semver.intersects ignores the prerelease-tuple rule npm resolves under, so the case would have passed a typert build that peers a 4.1.1 prerelease, or a peer without the 4.0.6 clause, while npm would fail with ERESOLVE. The case now records the published cordis releases and requires every one an admitted typert build can install to satisfy the peer, with two known answers that show it bites (the peer shipped before 0.2.2-rc.1, and a peer missing the 4.0.6 clause). The README pair no longer calls 0.2.1 the rc channel's latest, says a fresh install depends on the newest build's cordis and a host-first install on its own line's, and the Host core row matches the range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
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.
What broke
On 2026-11-04 the harness started its
0.2.2release candidate. It published@deepseek-ai/cordis4.1.0 and loader 1.1.0 aslatest, the@deepseek-ai/*cluster at0.2.2-rc.1, and@deepseek-ai/dsh0.2.2-rc.1undernext. The cluster's@deepseek-ai/dsh-typert-protocol@0.2.2-rc.1peers@deepseek-ai/cordis~4.1.0.npm resolves the plugin's typert peer to the newest build the range admits, because typert's
latesttag (0.1.0-rc.6) is outside it. It then needs that build's cordis, and the plugin's optional cordis peer (~4.0.4 || >=4.0.5-0 <4.1.0 || >=4.0.6-0 <4.1.0) stopped short of 4.1. So:npm install dsh-opencode-patch@1.8.0fails withERESOLVE. This was measured with npm 11.20. Installing it alongside explicitly installed rc0.2.1-rc.5or alpha0.2.2-alpha.3host packages still resolves;scripts/check.ts's consumer install fails the same way. So thecheck · test · build · gatejob is red onmainand on every open pull request from its next run on.The fix
package.json: the cordis peer also admits~4.1.0. Nothing else in the manifest changes: the typert peer already admits0.2.2-rc.1, and the peer stays optional.test/harness-channel.test.ts: a new case records two things from the registry:0.2.1and0.2.2lines with its cordis range;It requires every cordis an admitted build can install to satisfy the plugin's cordis peer. It checks concrete published versions, not range overlap, because
semver.intersectsignores the prerelease-tuple rule npm resolves under. Two known answers show it bites: the peer shipped before0.2.2-rc.1refusestypert@0.2.2-rc.1 -> cordis@4.1.0, and a peer missing the4.0.6clause refuses the alpha line's prereleases. The range still stops at the next tuple:4.1.1-alpha.1,4.2.0and5.0.0stay out. The typert case's list gains0.2.2-alpha.3.README pair, in step: the compatibility section names the
0.2.2builds on both channels. It explains why the cordis peer follows the typert range: a fresh install takes the newest build's cordis, and a host-first install takes its own line's. It also adds a Host core row matching the range.The plugin imports nothing from
@deepseek-ai/cordisat runtime, so this changes a declaration only. It does not claim the plugin is verified on0.2.2-rc.1: the stacked real-host work (#109 and up) adds the host tiers that measure each channel.Verification
main's rangeexpected [ 'typert@0.2.2-rc.1 -> cordis@4.1.0' ] to deeply equal []4.0.6clausepnpm run checkmain: 23)vp test run, shuffle seeds 1 and 42pnpm run build+scripts/check.tscheck passed(onmainwithout the fix:FAIL a consumer install or load failed: npm error code ERESOLVE)0.2.2-rc.1+ cordis4.1.0; beside each channel's host set in both orders it resolvesAn independent review found that the first version of the case compared ranges by overlap and fixed it in the second commit. It also found two README wording errors, now corrected:
0.2.1called the rc channel's latest, and an over-broadERESOLVEsentence.🤖 Generated with Claude Code
https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD