Repository navigation
ci(release),ui: the publish-check texts say what the release does today — the dead ui changeset:publish alias goes, its wiring test pins the live path - #27131
Conversation
release.yml's comment over the publish step now names what scripts/release-publish.sh runs before `changeset publish`: the dist-tooling scan with --no-build, which refuses the publish. The ui `changeset:publish` alias, which nothing invokes, is removed, and its wiring test now pins the gate's order on the live path, scripts/release-publish.sh. Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg Co-authored-by: Claude <noreply@anthropic.com>
…-publish-check-texts
…-publish-check-texts
Contract reviewServed-tier: Read at 2026-10-28T07:45Z by the ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS |
维护者速读 — 席位终稿 · PR #27131 · head
|
Fixes #27017
Clause-②: no
Metadata-protocol: none
维护者速读
release.yml发布步骤上方的注释现在按顺序写清scripts/release-publish.sh实际做的三件事(先跑@object-ui发布产物的 tooling 扫描、再changeset publish、最后一次性推 tag);删掉ui/package.json里没人调用的changeset:publish别名;它的接线测试改为钉住真实发布路径。--no-build,与真实发布读的不是同一批产物。release.yml只改注释,发布逻辑一个字节没动;ui/package.json是私有工作区根(private: true),不发布。回滚即 revert 本 PR。ui/scripts/__tests__/check-published-dist-tooling.test.ts的runs on the publish path用例(钉的东西从别名换到scripts/release-publish.sh,断言没有放松);②.github/workflows/release.yml发布步骤注释;③ui/package.json删的那一行。pnpm --dir ui exec vitest run scripts/__tests__/check-published-dist-tooling.test.ts,预期 35/35 通过。release.yml属 Tier H,需授权审批)。What changes
.github/workflows/release.yml— comment only. The text over the publish step saidscripts/release-publish.sh"ischangeset publishfollowed by ONE atomicgit push origin --tags". Measured onorigin/main: since the four-gate port the script first runsnode ui/scripts/check-published-dist-tooling.mjs --no-buildand refuses to publish when it is red, and since the npm-record change it records npm's per-package answers forscripts/release-verify-npm.mjs. The comment now lists the three things the script runs, in order. No step,run:line or condition changed. ⛔ The release workflow was not run, dispatched or re-run to test this (Prime Directive 15); the edit is text.ui/package.json— thechangeset:publishalias is removed, not re-described. Nothing invokes it:git grep -n 'changeset:publish'outsideui/package.jsonhits only the wiring test, a past-tense history line inscripts/release-publish.sh's comment, and releasedCHANGELOG.mdentries (release-owned, untouched). No workflow and no script under.github/orscripts/calls it. JSON carries no comments, so "make it say what it is for" has no spelling here, and what it ran (the scan without--no-build, thenchangeset publish) is a second publish door that reads a different build from the release's.ui/package.jsonisprivate: true, so nothing publishes.ui/scripts/__tests__/check-published-dist-tooling.test.ts— the wiring pin keeps its invariant (the gate runs beforechangeset publishon the publish path) and moves to the live path: the workspace root'sreleasescript ends inbash scripts/release-publish.sh, and that script (comment lines dropped) runs the gate asif ! node ui/scripts/check-published-dist-tooling.mjs --no-build; thenbefore itschangeset publishline. The old comment's claim thatchangesets/actionrunschangeset:publishwas false (release.ymlrunspnpm run release) and is gone.The whole card rides one PR in lane
domain:skills, as triage ordered; the twoui/**files are the ui lane's tree, carried here because they describe the same publish path as therelease.ymlcomment.Tests
Edited test file, and the reverse check (three mutations, each red, then green again)
pnpm --dir ui exec vitest run --maxWorkers=2 scripts/__tests__/check-published-dist-tooling.test.ts(under the verify lock):Test Files 1 passed (1),Tests 35 passed (35),VERDICT command-exit 0.scripts/ablation-replace.mjswith the fix committed, anchor hit counted,git checkout HEADtrap, and blob-hash restore check:--no-builddropped from the gate line inscripts/release-publish.sh→runs on the publish pathfailed (expected … to match /^if ! node ui\/scripts\/check…/), exit 1; restored, blob equals HEAD.releasescript's&& bash scripts/release-publish.shreplaced by&& changeset publish→ failed (expected false to be true), exit 1; restored.changeset publishline put ahead of the gate inscripts/release-publish.sh→ failed (expected 43 to be less than 19), exit 1; restored.Acceptance notes
scripts/release-publish.sh's own header (lines 25–27) still says it is "Run as thepublish:command of changesets/action", whichrelease.ymlsays it is not. Same family of stale text, outside this card's three files; noted, not edited here.ui/scripts/__tests__full directory on the final head7076bbdd: 175 files passed, 2 skipped; 5019 tests passed. On a fresh worktree it first needs@objectstack/spec,@objectstack/formulaand@objectstack/clientbuilt: before those builds, 3 files failed on missingdist/(none of them reads a file this PR changes).Verification
Head
7076bbdd(merged withorigin/main).dispatch-gates --commandsderived 62 families; all 62 ran locally with exit 0, includingpnpm check:pm-dispatch-gatesandpnpm --dir ui exec vitest run scripts/.--ranreconciliation: 62 derived, 62 run, 0 NOT-MEASURED. Outside the derivation:eslinton the edited test exit 0. CI check-runs were not awaited. Full readings are in the os-dev report on #27017.Generated by Claude Code