Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
238 commits
Select commit Hold shift + click to select a range
a03423e
test: make the suite engine-independent and guard the client boundary
claude Oct 22, 2026
6ac740f
fix(lifecycle): contain the internal-route mount and follow reloads i…
claude Oct 22, 2026
aa3c01b
fix: price, list and key requests on the plane they belong to; isolat…
claude Oct 22, 2026
54a5b19
fix(store): mount the inspection remote, and read legacy keys per int…
claude Oct 22, 2026
8a5e95f
docs: describe the tree that exists, and the guarantees the suite now…
claude Oct 22, 2026
52f175f
docs: add the improvement plan from the architecture review
claude Oct 22, 2026
603d378
docs(plan): the approved refactor plan, with the host's own contracts
claude Oct 22, 2026
0a0dbb0
docs(plan): route every mode through the user's own provider
claude Oct 23, 2026
d4e3067
docs(plan): the plugin owns the plane routes, measured on pi 1.1.0
claude Oct 23, 2026
a38259c
docs(plan): fold the reviewed design and the build order into the plan
claude Oct 23, 2026
cd3107e
fix: repair what shipped broken in 1.4.1
claude Oct 23, 2026
73d60e4
docs(plan): P1a is in review
claude Oct 23, 2026
2bbb673
chore: remove dead code and tighten the repository's gates
claude Oct 23, 2026
e8944cc
feat: a smaller public API
claude Oct 23, 2026
f276902
build: pin the host the plugin runs on
claude Oct 23, 2026
6182886
test: a harness that is the real host
claude Oct 24, 2026
9ccdeb3
refactor: one way to patch a host method
claude Oct 24, 2026
813e6f3
chore: refresh the generated catalog and limits tables
claude Oct 24, 2026
a3d096b
Merge branch 'claude/vigilant-mendel-bctz9n' into p1a
claude Oct 24, 2026
2339c48
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into p1b
claude Oct 24, 2026
8b6cde6
Merge branch 'claude/vigilant-mendel-bctz9n-p1b' into p2
claude Oct 24, 2026
fb23df4
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1a' into p-t1b
claude Oct 24, 2026
9cd81de
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into p-h
claude Oct 24, 2026
1a568f9
Merge branch 'claude/vigilant-mendel-bctz9n-p2' into p-t1a
claude Oct 24, 2026
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
2728666
test: measure which endpoint families the gateway serves
claude Oct 24, 2026
4c491fe
Merge branch 'claude/vigilant-mendel-bctz9n-p-r1' into p-r2
claude Oct 24, 2026
1c11d22
feat: Settings offers the catalog's models pi does not list
claude Oct 24, 2026
8c04672
test: restructure the suite
claude Oct 25, 2026
2ebaffc
chore: refresh the generated catalog and limits tables
claude Oct 26, 2026
d51a3e6
test: skip free models the gateway has withdrawn in the live suite
claude Oct 26, 2026
409b5e1
fix: address the second review of P-T1b
claude Oct 26, 2026
aec8c1a
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into p-h
claude Oct 26, 2026
0dd1b9c
Merge branch 'claude/vigilant-mendel-bctz9n' into p1a
claude Oct 26, 2026
1f5ed90
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into p1b
claude Oct 26, 2026
05faa93
Merge branch 'claude/vigilant-mendel-bctz9n-p1b' into p2
claude Oct 26, 2026
73db37b
Merge branch 'claude/vigilant-mendel-bctz9n-p2' into p-t1a
claude Oct 26, 2026
9f7e8e2
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1a' into p-t1b
claude Oct 26, 2026
1f48272
test: follow the vendor catalog refresh
claude Oct 26, 2026
3cfacd9
fix: address the second review of P-H
claude Oct 26, 2026
bffd3a4
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into p-r1
claude Oct 26, 2026
8ab5d65
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into p-h
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
9f694bf
Merge branch 'claude/vigilant-mendel-bctz9n-p-r1' into p-r2
claude Oct 27, 2026
059236a
ci: gate freshness only on a pull request's own generator changes
claude Oct 27, 2026
d13cbe2
chore: refresh the generated catalog after Zen retired deepseek-v4-flash
claude Oct 27, 2026
32f2d71
Merge branch 'claude/vigilant-mendel-bctz9n' into claude/vigilant-men…
claude Oct 27, 2026
64c8acc
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into claude/vigilant…
claude Oct 27, 2026
6988e7a
Merge branch 'claude/vigilant-mendel-bctz9n-p1b' into claude/vigilant…
claude Oct 27, 2026
aba2c4a
Merge branch 'claude/vigilant-mendel-bctz9n-p2' into claude/vigilant-…
claude Oct 27, 2026
c6d8965
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1a' into claude/vigila…
claude Oct 27, 2026
c6077be
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into claude/vigila…
claude Oct 27, 2026
3d7cb38
test: give the freshness walk's dynamic import a script-local target
claude Oct 27, 2026
e4aa0c9
Merge branch 'claude/vigilant-mendel-bctz9n' into claude/vigilant-men…
claude Oct 27, 2026
94c3a22
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into claude/vigilant…
claude Oct 27, 2026
14c1544
Merge branch 'claude/vigilant-mendel-bctz9n-p1b' into claude/vigilant…
claude Oct 27, 2026
8ee4245
Merge branch 'claude/vigilant-mendel-bctz9n-p2' into claude/vigilant-…
claude Oct 27, 2026
5133c0c
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1a' into claude/vigila…
claude Oct 27, 2026
b518061
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into claude/vigila…
claude Oct 27, 2026
3ccd70c
fix: address the second review of P-R2
claude Oct 27, 2026
79d0036
Merge branch 'claude/vigilant-mendel-bctz9n-p-r2' into p3
claude Oct 27, 2026
29b43ca
chore: refresh the generated catalog after Zen retired deepseek-v4-flash
claude Oct 27, 2026
4891c07
test: follow the vendor catalog refresh
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
be649da
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Oct 27, 2026
d16a600
docs: date the refreshed model count and correct three stale figures
claude Oct 27, 2026
f8a4af3
Merge branch 'claude/vigilant-mendel-bctz9n' into claude/vigilant-men…
claude Oct 27, 2026
cb3cdda
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into claude/vigilant…
claude Oct 27, 2026
3d461c2
Merge branch 'claude/vigilant-mendel-bctz9n-p1b' into claude/vigilant…
claude Oct 27, 2026
659b0f3
Merge branch 'claude/vigilant-mendel-bctz9n-p2' into claude/vigilant-…
claude Oct 27, 2026
fa6a5bd
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1a' into claude/vigila…
claude Oct 27, 2026
c82fa3e
Merge branch 'claude/vigilant-mendel-bctz9n-p-t1b' into claude/vigila…
claude Oct 27, 2026
a583874
Merge branch 'claude/vigilant-mendel-bctz9n-p-h' into claude/vigilant…
claude Oct 27, 2026
72852fb
Merge branch 'claude/vigilant-mendel-bctz9n-p-r1' into claude/vigilan…
claude Oct 27, 2026
dbe995e
fix: address the second review of P3
claude Oct 27, 2026
3794482
Merge branch 'claude/vigilant-mendel-bctz9n-p3' into p-t2
claude Oct 27, 2026
c0ac147
chore: refresh the generated catalog after Zen retired deepseek-v4-flash
claude Oct 27, 2026
61e2c5d
docs: close the audit's remaining findings on P-R1
claude Oct 27, 2026
1c91312
Merge remote-tracking branch 'origin/main' into claude/vigilant-mende…
claude Nov 2, 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
15e6236
test: install the plane-lookup world before each test
claude Nov 2, 2026
2454609
test(scripts): move the generated-table skip into the CLI-version rules
claude Nov 2, 2026
beae0ca
test(e2e): read an upstream's 400 "Model is unavailable" as a retirement
claude Nov 2, 2026
1d4aaab
docs(testing): describe the suite this branch keeps
claude Nov 2, 2026
4b0ebea
test(e2e): keep the free-tier case's narrowing in the subject picker
claude Nov 2, 2026
979ea27
chore(vendor): follow opencode 1.19.5
claude Nov 2, 2026
28fee8d
docs(plan): restack the plan onto 1.8.0 and the alpha host
claude Nov 2, 2026
8b9da84
build: raise the client bundle ceiling to 136 KB
claude Nov 2, 2026
281fc9f
docs: complete the restack of P0
claude Nov 2, 2026
6812723
docs: close the restack review of P0
claude Nov 2, 2026
7cd12d3
docs: hold the meter's allowance figures to the generated table
claude Nov 3, 2026
e3216d1
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n' i…
claude Nov 3, 2026
73d5465
style: lint and format the merged purge row and token test
claude Nov 3, 2026
2ecf689
fix: complete the restack of P1a
claude Nov 3, 2026
252d0f8
docs: state the measured meter-scan reasons and P1a's refusal test cases
claude Nov 3, 2026
bf5717b
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p1…
claude Nov 3, 2026
5e60c1b
test: one catalogue fixture, behind the one door
claude Nov 3, 2026
f3697a5
docs: describe debugFile by the gate main chose (D24)
claude Nov 3, 2026
074c834
style: satisfy main's promise lint in the retry test
claude Nov 3, 2026
19f05e6
docs(plan): record P1b's restack
claude Nov 3, 2026
8e9f36e
test: keep the fallback case's comment free of a model name
claude Nov 3, 2026
7136ca0
fix: complete the restack of P1b
claude Nov 3, 2026
786de90
docs: name the setup file in the door rule and count the fixture's en…
claude Nov 3, 2026
239d635
docs(plan): record the both-channel host question for P-T1a
claude Nov 3, 2026
bab4fc8
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p1…
claude Nov 3, 2026
521b98f
test: route main's new tests through the one door
claude Nov 3, 2026
737a49d
docs(testing): drop the wrapper forwarder P2 retires again
claude Nov 3, 2026
c15aca0
docs: stop the count sweep record asserting a superseded catalog
claude Nov 3, 2026
798ba2e
chore: refresh the generated catalog for pulse-alpha-free
claude Nov 3, 2026
749669c
Merge branch 'claude/vigilant-mendel-bctz9n' into claude/vigilant-men…
claude Nov 3, 2026
835c793
Merge branch 'claude/vigilant-mendel-bctz9n-p1a' into claude/vigilant…
claude Nov 3, 2026
0563db6
chore: merge the parent's catalog refresh into P2
claude Nov 3, 2026
394e892
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p2…
claude Nov 3, 2026
d65ed21
build: switch the dev install between the harness channels
claude Nov 3, 2026
f595d2d
test: fail if src reads what the desktop's patched pi changes
claude Nov 3, 2026
ea228a6
ci: run the unit and mock suites on both harness channels
claude Nov 3, 2026
90048d7
docs: record the both-channel, no-patch host policy
claude Nov 3, 2026
bcae61f
docs: keep the plan's D14'' row one table cell
claude Nov 3, 2026
44a6d5b
docs: complete the restack of P-T1a
claude Nov 3, 2026
bce1863
test: hold the relock's lockfile strip and name the channel switch's …
claude Nov 3, 2026
4679c1d
fix: report harness channel drift nightly and complete the restack of…
claude Nov 3, 2026
6310663
fix: keep Dependabot and the rc lockfile inside the channel-bump rule…
claude Nov 3, 2026
fb6a686
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Nov 3, 2026
0101239
test: characterize the real host on both harness channels, newest and…
claude Nov 3, 2026
017adad
ci: boot each channel's published binary, as npm installs it and at t…
claude Nov 3, 2026
e1d775c
docs: describe the host cells and the per-channel binary e2e
claude Nov 3, 2026
4871d87
test: name the host cell each row and dispatch set belongs to
claude Nov 3, 2026
79ef58a
test: record the alpha host's broken save as a host limitation
claude Nov 3, 2026
8688046
fix: pin the e2e-host floor cell to the shipped tree and narrow its h…
claude Nov 4, 2026
c1fca83
fix: hold the cordis family to the declared range floors
claude Nov 4, 2026
ec38185
fix: hold the cordis family at the record's floors through a relock
claude Nov 4, 2026
011b99e
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Nov 4, 2026
d001586
docs: pair the reload bullet in the Chinese README
claude Nov 4, 2026
ff2db1d
docs: retitle P-H as the fix it ships
claude Nov 4, 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
7fec19d
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Nov 4, 2026
53388e2
test(mock): the mock serves every dispatched request and no root one
claude Nov 4, 2026
67faee7
test: record the refusal, header and family shapes the community plug…
claude Nov 4, 2026
b9bff93
test: the dispatch derivation reads the root shape P-R2 probes
claude Nov 4, 2026
7322b8b
test: the endpoint-family pins use stand-in route defaults
claude Nov 4, 2026
6c4c643
fix: read ModelDeprecated as gone in every probe classifier and finis…
claude Nov 4, 2026
24fcf00
fix: name the session gate a capped free walk met, and close P-R2's p…
claude Nov 4, 2026
de9bfc0
Merge remote-tracking branch 'origin/claude/vigilant-mendel-bctz9n-p-…
claude Nov 4, 2026
da3dec9
docs: record what the restack changed for P3 in the plan
claude Nov 4, 2026
f006ce6
fix: offer Settings fetch's catalog complement only once the route cl…
claude Nov 4, 2026
38f19dc
test: a harness that is the real host
claude Nov 12, 2026
9cc5cd6
test: pin the host contracts for both internal/config call shapes
claude Nov 12, 2026
2db6e7b
test: re-measure the host cells on rc 0.2.2-rc.2 and alpha 0.2.2-alpha.3
claude Nov 12, 2026
d4723c2
test: pin the bridges' route-level api set per channel, and state bot…
claude Nov 12, 2026
0a000c5
docs: put P-T1b on main 1.9.2 and name the cores and owners the revie…
claude Nov 12, 2026
6786ee2
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p-t1b (hist…
claude Nov 12, 2026
0b2cf31
fix: disabling or reloading the plugin restores the host methods it w…
claude Nov 12, 2026
bea5722
docs: cite the new cordis core for the shadow-method trap, and name t…
claude Nov 12, 2026
da01f95
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p-h (histor…
claude Nov 12, 2026
57b0851
Merge origin/main (#168) into claude/vigilant-mendel-bctz9n-p-t1b
claude Nov 12, 2026
b1d8e29
Merge claude/vigilant-mendel-bctz9n-p-t1b (#110's head, with main #16…
claude Nov 12, 2026
e13848d
Merge origin/main (#110 squash) into claude/vigilant-mendel-bctz9n-p-h
claude Nov 12, 2026
d90f066
feat: the plugin owns the opencode and opencode-go routes
claude Nov 12, 2026
0ab3fa7
fix: the route claim speaks both internal/config call shapes
claude Nov 12, 2026
9ba2290
fix: plane profiles carry pi-ai's image bounds where pi-ai defines them
claude Nov 12, 2026
d4f6557
test: the binary e2e expects the claim on both host cores
claude Nov 12, 2026
5f82bd1
test: the route claim through a pi-ai row the loader removed first
claude Nov 12, 2026
bbd924d
docs: record the new host core and the claim on both shapes
claude Nov 12, 2026
aa70a43
fix: the route claim's re-append never throws into pi-ai's status emit
claude Nov 12, 2026
1f80a51
docs: mark P-T1b and P-H merged, and put P-R1 on main 1.9.2
claude Nov 12, 2026
0b6fc99
docs: the plan's summaries say P0 to P-H are merged
claude Nov 12, 2026
974b43a
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p-r1 (histo…
claude Nov 12, 2026
b54b1de
test: measure which endpoint families the gateway serves
claude Nov 12, 2026
a706d44
docs: record P-R2's dispatch set re-measured on the new host core
claude Nov 12, 2026
af1de77
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p-r2 (histo…
claude Nov 12, 2026
e04e719
Merge claude/vigilant-mendel-bctz9n-p-h (this PR's base) into claude/…
claude Nov 12, 2026
3eb8541
feat: Settings offers the catalog's models pi does not list
claude Nov 12, 2026
60f6552
test: the F21 restart case finds pi-ai's fiber by uid on the new core
claude Nov 12, 2026
c35e6a4
test: Settings' fetch follows the claim's engagement on the new core
claude Nov 12, 2026
40bb655
test: the binary e2e's Settings fetch rows run in every cell of both …
claude Nov 12, 2026
cbca50a
docs: P3's guard on the new core, and its e2e rows in every cell
claude Nov 12, 2026
6c172fe
test: name the pi versions host-discovery's capacity check is measure…
claude Nov 12, 2026
a7cb95a
test: drive Settings' fetch guard through states the host cores reach
claude Nov 13, 2026
33925ef
Merge origin/main (#170, #159) into claude/vigilant-mendel-bctz9n-p-r1
claude Nov 13, 2026
77f538b
fix: Settings' fetch answers the catalog through a handover's restart
claude Nov 13, 2026
96789b4
docs: the plan's patch-method section reads claiming() as the other r…
claude Nov 13, 2026
fdd1ec8
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p3 (history…
claude Nov 13, 2026
71dae39
docs: the plan's P3 rebase note counts four cases and says which chan…
claude Nov 13, 2026
8648541
test: restructure the suite
claude Nov 13, 2026
c3a715a
test: the route claim's stand-in models both cordis cores in one place
claude Nov 13, 2026
8a0cc97
docs: record P-T2's rebase onto P3 and where the new core's cases landed
claude Nov 13, 2026
d3be8ab
test: the refusal oracle classifies a 403 through the installed pi-ai
claude Nov 13, 2026
e18d5b5
test: the refusal oracle's control reads the probe's words, and logLi…
claude Nov 13, 2026
6fcd5b5
docs: place the route claim's stand-in in its support file and record…
claude Nov 13, 2026
11410fd
Merge the pre-rebase tip of claude/vigilant-mendel-bctz9n-p-t2 (histo…
claude Nov 13, 2026
5ecc037
fix: the route claim steps aside for a plane another plugin owns
claude Nov 13, 2026
e21f99d
docs: D27, and the routes OpenCode Console serves
claude Nov 13, 2026
6527780
fix: keep the plugin off every stepped-aside plane, by realm or marker
claude Nov 13, 2026
d63a24c
docs: D27 names the realm by what each context resolves, and covers t…
claude Nov 13, 2026
a1db1d2
fix: a live change of pi-ai's realm alone moves its planes, with one …
claude Nov 13, 2026
51f4626
fix: the purge never rewrites a plane entry another plugin owns
claude Nov 13, 2026
7052ab0
test: pin the step-aside's multi-row branches and the save check on a…
claude Nov 13, 2026
574604e
docs: D27 covers a realm-only live edit and the purge
claude Nov 13, 2026
140c9c9
fix: a live realm change on the plugin's own row or a group moves the…
claude Nov 13, 2026
3c85d97
fix: a marker saved beside a second pi-ai row releases the plane in t…
claude Nov 13, 2026
d58994b
test: perform the discovery and meter step-aside through the applied …
claude Nov 13, 2026
b2d5a86
docs: D27 covers every row's realm edit and the second-row release; t…
claude Nov 13, 2026
219263f
Merge claude/vigilant-mendel-bctz9n-p-r1 (D27 step-aside, main #170/#…
claude Nov 13, 2026
d563282
test: the endpoint setting never moves a plane another plugin owns
claude Nov 13, 2026
25c8c9e
Merge claude/vigilant-mendel-bctz9n-p-r2 (D27 step-aside, main #170/#…
claude Nov 13, 2026
c1d9e86
fix: Settings leaves a stepped-aside plane's list to pi-ai
claude Nov 13, 2026
8b2fa44
fix: Settings leaves a foreign-realm row's undeclared plane to pi-ai
claude Nov 13, 2026
b20bf4b
Merge claude/vigilant-mendel-bctz9n-p3 (D27 step-aside, main #170/#15…
claude Nov 13, 2026
340bf68
docs: record where D27's cases landed in P-T2's layout
claude Nov 13, 2026
5c3854b
chore: refresh the generated catalog and limits tables
github-actions[bot] Nov 13, 2026
586c6b8
chore: follow the catalog refresh through the docs and tests
claude Nov 13, 2026
7534edc
docs: point the routes module header at the per-SDK counts instead of…
claude Nov 13, 2026
ff2f0d6
docs: say where the per-SDK counts live without claiming a single copy
claude Nov 13, 2026
152d0c0
docs: replace the retired muse-spark-1.3-contributor-free id in both …
claude Nov 13, 2026
37bcf0c
Merge the catalog refresh (#171) into claude/vigilant-mendel-bctz9n-p-r1
claude Nov 13, 2026
ce889ef
chore: follow the catalog refresh through P-R1's tests and docs
claude Nov 13, 2026
65b8443
Merge claude/vigilant-mendel-bctz9n-p-r1 (catalog refresh #171) into …
claude Nov 13, 2026
285aeaf
Merge claude/vigilant-mendel-bctz9n-p-r2 (catalog refresh #171) into …
claude Nov 13, 2026
50ef6ab
Merge claude/vigilant-mendel-bctz9n-p3 (catalog refresh #171) into cl…
claude Nov 13, 2026
1e46ef7
ci: one setup, one unit run, and stricter scripts
claude Nov 14, 2026
5690400
Merge branch 'main' into p-t3
claude Nov 14, 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
41 changes: 41 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# The one install every job runs: pnpm, Node and the dependencies, in that
# order. A local action is read from the workspace, so it cannot bring the
# checkout that puts it there: each job checks out first, with its own options
# (the catalog job's depth and credential-free checkout, host-drift's
# credential-free one, the e2e jobs' full history), and then uses this.
name: setup
description: pnpm from packageManager, Node from .node-version (or an input), and a frozen install.

inputs:
node-version:
description: The Node major to run instead of .node-version's (the engines-floor job passes its floor).
required: false
default: ""
registry-url:
description: The registry setup-node writes an .npmrc for (the publish job's).
required: false
default: ""

runs:
using: composite
steps:
# No `version:` input: pnpm/action-setup refuses to run when it is given
# both that and a `packageManager` field, and package.json pins the pnpm
# version exactly, in `packageManager`. One source of truth, and the
# action reads it.
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
# The Node every job runs is named once, in .node-version, which
# test/node-engine.test.ts holds at or above `engines.node`. The input is
# passed through the environment, never interpolated into the script.
- id: node
shell: bash
env:
NODE_VERSION_INPUT: ${{ inputs.node-version }}
run: echo "version=${NODE_VERSION_INPUT:-$(cat .node-version)}" >> "$GITHUB_OUTPUT"
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: ${{ steps.node.outputs.version }}
cache: pnpm
registry-url: ${{ inputs.registry-url }}
- shell: bash
run: pnpm install --frozen-lockfile
16 changes: 11 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@ version: 2
updates:
# The release path. A stale action here is how a tag silently stops producing a
# publish, and the workflow would still be green.
# Every directory that pins an action: the workflows (read from `/`) and the
# composite setup action every job runs, whose pins nothing else would see.
- package-ecosystem: github-actions
directory: /
directories:
- /
- /.github/actions/setup
schedule:
interval: weekly
day: monday
Expand Down Expand Up @@ -54,8 +58,9 @@ updates:
dependency-type: development
dependencies:
dependency-type: production
# A toolchain upgrade that fails `scripts/check.ts`'s toolchain guards is
# expected; so is one that rewrites the lockfile wholesale.
# A toolchain upgrade that fails the toolchain guards in
# `test/toolchain.test.ts` is expected; so is one that rewrites the
# lockfile wholesale.
tooling:
patterns:
- vite-plus
Expand All @@ -72,8 +77,9 @@ updates:
# resolves, pinned per channel. A pull request from here would move one of
# them, land red on `test/harness-channel.test.ts`, and take its whole
# group with it. The nightly `host-drift` job reports when either channel
# moves, and P-T3 (a later phase) turns that report into the bump. Every
# update type is ignored; `test/harness-channel.test.ts` holds both rules.
# moves and proposes the bump itself, as a `chore/host-bump` pull
# request. Every update type is ignored; `test/harness-channel.test.ts`
# holds both rules.
- dependency-name: "@deepseek-ai/*"
- dependency-name: "@earendil-works/pi-ai"
# React stays at 18: the bundles this plugin ships are host-bound, so a
Expand Down
276 changes: 215 additions & 61 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ permissions:
jobs:
release-please:
runs-on: ubuntu-latest
# A run takes about a minute; bounded so a hung API call cannot hold a
# runner for GitHub's six hours.
timeout-minutes: 10
steps:
# Scans conventional commits (feat:/fix:) since the last tag, opens a
# version-bump + changelog PR; merging it creates the tag + GitHub
Expand Down
25 changes: 6 additions & 19 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,9 @@ jobs:
timeout-minutes: 25
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
# No `version:` input: pnpm/action-setup refuses to run when it is given
# both that and a `packageManager` field, and package.json pins 12.6.0
# exactly. One source of truth, and the action reads it.
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 26
cache: pnpm
- run: pnpm install --frozen-lockfile
# pnpm from `packageManager`, Node from .node-version, a frozen install:
# the one setup every CI job runs.
- uses: ./.github/actions/setup
# Explicit, not inherited: `lib/` otherwise exists only because the
# `prepare` lifecycle fired during install, so any `--ignore-scripts`
# hardening would break the release with an unrelated error.
Expand All @@ -54,16 +48,9 @@ jobs:
packages: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
# No `version:` input: pnpm/action-setup refuses to run when it is given
# both that and a `packageManager` field, and package.json pins 12.6.0
# exactly. One source of truth, and the action reads it.
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
- uses: ./.github/actions/setup
with:
node-version: 26
cache: pnpm
registry-url: https://registry.npmjs.org
- run: pnpm install --frozen-lockfile
- name: tag matches package.json version
run: |
test "v$(node -p "require('./package.json').version")" = "${GITHUB_REF_NAME}" \
Expand Down Expand Up @@ -135,8 +122,8 @@ jobs:
- name: verify every published target
run: |
VER=$(node -p "require('./package.json').version")
# One line: scripts/check.ts reads it to prove this list equals what
# publish-scoped.ts publishes (scripts/scoped-targets.ts).
# One line: test/package-checks.test.ts reads it to prove this list
# equals what publish-scoped.ts publishes (scripts/scoped-targets.ts).
pending="dsh-opencode-patch@$VER @viztor/dsh-opencode-patch@$VER @viztor/dsh-opencode@$VER"

# Polls, because a successful `npm publish` does not mean the version
Expand Down
Loading
Loading