feat(release): extend the release-due watcher + tarball pack-check to engine/miner/ui-kit#8592
Conversation
… engine/miner/ui-kit (#8591) Only MCP had a "release due" tracking-issue safety net (mcp-release-watch.yml) and a published-tarball dry-run validator (test:mcp-pack) -- engine, miner, and ui-kit had neither. If release-please ever silently stopped proposing a release PR for one of them, nothing would flag it, and their published npm tarballs were never checked for stray/forbidden/secret-like content. - scripts/release-semver-utils.ts: pure semver/conventional-commit primitives extracted from mcp-release-core.ts (parseConventionalSubject, compareSemver, bumpVersion, latestSemverTagWithPrefix, inferReleaseTypeFromSubjects, escapeIssueMarkdownText, shortSha) so both MCP's bespoke watcher and the new generic one share one implementation instead of duplicating it. MCP's own public API is unchanged (same exports, same behavior -- verified against its full existing test suite, 105 tests across 8 files, zero regressions). - scripts/package-release-core.ts: the generic due-detection/issue-building core for engine/miner/ui-kit. Deliberately simpler than MCP's: none of the three have commits needing cross-cutting-path attribution the way MCP wraps app-side Worker logic, and all three already have release-please maintaining their CHANGELOG.md natively (release-please-config.json), so no bespoke changelog renderer is needed here. - scripts/check-package-release-due.ts: generic upsert/close CLI, parameterized by --package engine|miner|ui-kit, mirroring check-mcp-release-due.ts (including the #6145 auto-close-once-caught-up fix). - .github/workflows/package-release-watch.yml: ONE new job checking all three packages sequentially (not a matrix) -- the shared Actions runner pool is org-wide, and #8574's investigation found extra concurrent scheduled-run runners a direct contributor to queue saturation, so this adds zero additional concurrent runner load. - scripts/check-engine-package.ts / check-ui-kit-package.ts: npm-pack dry-run validators (test:engine-pack / test:ui-kit-pack, wired into test:ci and ci.yml). Pattern-based allowlists (^dist/.*\.(js|d\.ts)$ etc.), not enumerated file lists like MCP/miner's small hand-curated ones -- engine ships 358 files and ui-kit 152, mirroring their src/ trees 1:1 via tsc's default output shape, and will keep growing as the engine extraction continues (per its own README). Also fixes two real gaps the new ui-kit pack-check immediately caught: ui-kit's CHANGELOG.md existed on disk but was missing from package.json's "files" field (silently excluded from the published npm tarball), and ui-kit had no README.md at all. Both fixed.
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
loopover-ui | 730d805 | Jul 24 2026, 11:41 PM |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8592 +/- ##
=======================================
Coverage 92.54% 92.54%
=======================================
Files 796 796
Lines 79850 79850
Branches 24135 24135
=======================================
Hits 73899 73899
Misses 4802 4802
Partials 1149 1149
Flags with carried forward coverage won't be shown. Click here to find out more. |
Bundle ReportBundle size has no change ✅ |
|
Warning ⏸️ LoopOver review result - manual review recommendedReview updated: 2026-07-25 00:26:58 UTC
Review summary Nits — 7 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
test/unit/check-ui-kit-package.test.ts's real-package regression test needs packages/loopover-ui-kit/dist/ on disk, but validate-tests never built ui-kit -- only validate-code did, in a separate job/runner. This job runs the general test/unit/*.test.ts suite unconditionally whenever it runs at all, so the test failed on CI (confirmed live on #8592) even though it passed locally where ui-kit had already been built manually. Reproduced locally by deleting packages/loopover-ui-kit/dist/ and confirming npm run test:ui-kit-pack fails exactly as CI reported, then confirming the new Build UI-kit package step (mirroring engine/MCP/ miner's existing pattern in this same job) fixes it.
Closes #8591.
Summary
Only MCP had a "release due" tracking-issue safety net (
mcp-release-watch.yml) and a published-tarball dry-run validator (test:mcp-pack) — engine, miner, and ui-kit had neither. If release-please ever silently stopped proposing a release PR for one of them, nothing would flag it, and their published npm tarballs were never checked for stray/forbidden/secret-like content.scripts/release-semver-utils.ts: pure semver/conventional-commit primitives extracted frommcp-release-core.tsso both MCP's bespoke watcher and the new generic one share one implementation instead of duplicating it. MCP's own public API is unchanged (same exports, same behavior — verified against its full existing test suite, 105 tests across 8 files, zero regressions).scripts/package-release-core.ts: the generic due-detection/issue-building core for engine/miner/ui-kit. Deliberately simpler than MCP's — none of the three have commits needing cross-cutting-path attribution the way MCP wraps app-side Worker logic, and all three already have release-please maintaining theirCHANGELOG.mdnatively, so no bespoke changelog renderer is needed.scripts/check-package-release-due.ts: generic upsert/close CLI, parameterized by--package engine|miner|ui-kit, mirroringcheck-mcp-release-due.ts(including the MCP release due: 4.0.0 #6145 auto-close-once-caught-up fix)..github/workflows/package-release-watch.yml: one new job checking all three packages sequentially (not a matrix) — the shared Actions runner pool is org-wide, and Epic: consolidate the '-coverage' bolt-on test-file family #8574's investigation found extra concurrent scheduled-run runners a direct contributor to queue saturation, so this adds zero additional concurrent runner load.scripts/check-engine-package.ts/check-ui-kit-package.ts: npm-pack dry-run validators (test:engine-pack/test:ui-kit-pack, wired intotest:ciandci.yml). Pattern-based allowlists, not enumerated file lists like MCP/miner's small hand-curated ones — engine ships 358 files and ui-kit 152, mirroring theirsrc/trees 1:1, and will keep growing as the engine extraction continues.Bonus fix: the new ui-kit pack-check immediately caught two real gaps —
CHANGELOG.mdexisted on disk but was missing frompackage.json'sfilesfield (silently excluded from the published npm tarball), and ui-kit had noREADME.mdat all. Both fixed.Test plan
npx vitest run test/unit/generate-mcp-changelog-script.test.ts test/unit/mcp-release.test.ts test/unit/mcp-release-candidate.test.ts test/unit/package-release.test.ts test/unit/check-engine-package.test.ts test/unit/check-ui-kit-package.test.ts test/unit/check-mcp-package.test.ts test/unit/check-miner-package.test.ts— 105/105 passnpm run typecheck/npm run actionlint— cleannpm run test:engine-pack/npm run test:ui-kit-pack— pass against the real built packages (358 / 152 files)check-package-release-due.ts --package {engine,miner,ui-kit} --jsondirectly against real repo state to confirm end-to-end correctness