Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c7121a3
feat: the plugin owns the opencode and opencode-go routes
claude Oct 24, 2026
50d39f5
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into p-r1
claude Oct 24, 2026
bffd3a4
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into p-r1
claude Oct 26, 2026
25dc182
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into p-r1
claude Oct 26, 2026
9cf8372
test: follow the vendor catalog refresh
claude Oct 26, 2026
0cceb81
fix: address the second review of P-R1
claude Oct 27, 2026
4dbd22e
fix: send Google's thinking level to Gemini models the catalog gives …
claude Oct 27, 2026
d8821f0
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Oct 27, 2026
dec00c8
docs: correct the Go shape count, the README date and the install range
claude Oct 27, 2026
a583874
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into claude/vigilant…
claude Oct 27, 2026
61e2c5d
docs: close the audit's remaining findings on P-R1
claude Oct 27, 2026
854a337
chore: follow the vendor's retirement of nemotron-3-ultra-free
claude Nov 2, 2026
b0f0bdc
test: walk past a model the gateway answers ModelDeprecated for
claude Nov 2, 2026
979ea27
chore(vendor): follow opencode 1.19.5
claude Nov 2, 2026
58ba532
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Nov 4, 2026
4a66384
fix: leave the Google thinking control to the host's pi
claude Nov 4, 2026
7ed93a7
fix: route by the plugin's own endpoint table, never pi's catalog
claude Nov 4, 2026
34d6959
fix: size undescribed models with pi-ai's own defaults, not a copy
claude Nov 4, 2026
fa53d8e
docs: cite both channels' host lines and correct the session header c…
claude Nov 4, 2026
db81e7e
test: size the adapter's toggle case through pi-ai's own Config
claude Nov 4, 2026
48776d2
test: hold every remote codec's two parser doors to one parser
claude Nov 4, 2026
0a165d6
test: record the floor's budget refusal in the dispatch cases
claude Nov 4, 2026
2701c88
test: record where the route claim cannot engage on the alpha npm host
claude Nov 4, 2026
76d11e0
fix: complete the restack of P-R1
claude Nov 4, 2026
8bb7b7f
docs: record the withdrawn thinking-level rewrite and finish the P-R1…
claude Nov 4, 2026
26d1e74
docs: complete the restack review of P-R1
claude Nov 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 32 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,15 @@ jobs:
# `channels/rc/pnpm-lock.yaml` for rc). `scripts/use-channel.ts` switches
# the install, and `DSH_CHANNEL`/`DSH_PI` tell `test/host-versions.test.ts`
# which record to hold the tree to, so a switch that silently did not happen
# fails there by name. One exception to "what an npm user runs": the switch
# also repins the plugin's own `@deepseek-ai/schemastery` to the channel's
# line, so the rc cell runs the host's schemastery, not the plugin's
# published pin (which is the alpha line).
# fails there by name. Two exceptions to "what an npm user runs": the
# lockfiles pin the whole cordis family (cordis, the loader and the plugins
# beside them) at the record's versions, the floors of the `~` ranges the
# cluster declares, what the harness vendors at the tag, where npm lets it
# float to the newest patch (the `e2e-host` job's `npm` cell is the run that
# lets cordis float); and the switch also repins the plugin's own
# `@deepseek-ai/schemastery` to the channel's line, so the rc cell runs the
# host's schemastery, not the plugin's published pin (which is the alpha
# line).
#
# The floor cells (pi at the range's floor: 1.1.0 on rc, 1.3.0 on alpha, the
# pi the desktop app ships, unpatched) run nightly and on dispatch, not on
Expand Down Expand Up @@ -400,10 +405,14 @@ jobs:
# (`dsh@<record>` from `test/support/host-versions.ts`) installed with npm the
# way a user installs it, pi unpatched in both cells:
# - `npm`: the published host exactly as npm resolves it, cordis and pi
# included. The record's newest pi asserts every row; a pi published since
# the record skips the rows that depend on which ids pi describes, with a
# warning (the nightly `host-drift` job names it). Never cached:
# re-resolving is the point.
# included. The record's newest pi asserts the rows wherever the route
# claim engages; a pi published since the record skips the rows that
# depend on which ids pi describes, with a warning (the nightly
# `host-drift` job names it). On a host whose `internal/config` waterfall
# hands listeners the fiber (alpha's `npm` cell today), a `[KNOWN_DEFECT]`
# row asserts that pi-ai serves both planes and the rows that need the
# claim skip by name; where the host itself cannot save, the save rows
# skip. Never cached: re-resolving is the point.
# - `floor`: the tree the desktop app ships, forced with npm `overrides`
# (`floorOverrides` in host-versions.ts): the channel's whole cordis family
# at the record's versions (the floors of the ranges the cluster declares,
Expand Down Expand Up @@ -463,17 +472,22 @@ jobs:
# manifests. package.json is not (every
# dependency bump touches it), so a change to its `test:e2e:host`
# script alone is exercised only by the nightly run.
# Until P-R1 moves the host seam under src/host/, the modules that
# install the host patches and mounts whose behaviour depends on the
# real loader and apply order (the hidden-route mount, the listing
# patch and adapter decoration, the Google bridge, the fetch patch,
# the plane bases and the stream hook) are in scope by name. Every
# other row producer (key-capture.ts, models-catalog.ts, config.ts,
# the generated catalog) is covered on each pull request by the
# in-process characterization of the same rows, on both channels, and
# here by the nightly run.
# The host seam lives under src/host/ (the route claim, the plane
# adapter, the Settings graft, the host-module loaders), and the
# modules whose behaviour depends on the real loader and apply order
# sit beside it by name: the composition (lifecycle.ts, identity.ts),
# the host-module seam (cordis-context.ts), the remaining discovery
# patch (models-discovery.ts), and the two modules that still install
# host-level patches until P6/P10a move them under src/host/: the
# global fetch wrapper (fetch-patch.ts, whose order the probe reads
# as fetchInnermost) and the llm/stream hook (stream-hook.ts). Every
# other row producer (the pure plane profile and model in
# src/utils/, key-capture.ts, models-catalog.ts, config.ts, the
# generated catalog) is covered on each pull request by the
# in-process characterization of the same rows, on both channels,
# and here by the nightly run.
if printf '%s\n' "$changed" \
| grep -Eq '^(src/host/|src/lifecycle\.ts$|src/identity\.ts$|src/responses-provider\.ts$|src/responses-routes\.ts$|src/models-discovery\.ts$|src/google-bridge\.ts$|src/fetch-patch\.ts$|src/pi-provider\.ts$|src/stream-hook\.ts$|cordis\.patch\.yml$|test/e2e/host/|test/e2e/host-binary\.e2e\.ts$|test/support/host\.ts$|test/support/host-versions\.ts$|scripts/host-drift\.ts$|\.github/workflows/ci\.yml$|vitest\.e2e\.config\.ts$|vite\.config\.ts$)'; then
| grep -Eq '^(src/host/|src/lifecycle\.ts$|src/identity\.ts$|src/cordis-context\.ts$|src/models-discovery\.ts$|src/fetch-patch\.ts$|src/stream-hook\.ts$|cordis\.patch\.yml$|test/e2e/host/|test/e2e/host-binary\.e2e\.ts$|test/support/host\.ts$|test/support/host-versions\.ts$|scripts/host-drift\.ts$|\.github/workflows/ci\.yml$|vitest\.e2e\.config\.ts$|vite\.config\.ts$)'; then
echo "run=true" >> "$GITHUB_OUTPUT"
else
echo "run=false" >> "$GITHUB_OUTPUT"
Expand Down
Loading
Loading