CI: add built plugin singleton smoke#48710
Merged
Takhoffman merged 1 commit intomainfrom Mar 17, 2026
Merged
Conversation
Contributor
Greptile SummaryThis PR adds a post-build singleton smoke test (
Confidence Score: 3/5
Prompt To Fix All With AIThis is a comment left during a code review.
Path: .github/workflows/ci.yml
Line: 305-306
Comment:
**Job rename may break branch protection required status checks**
Renaming the job from `startup-memory` to `build-smoke` changes the status check name that GitHub surfaces in branch protection rules. If `startup-memory` was listed as a required status check for merging into `main`, any open PRs will be blocked (showing "startup-memory — Expected — Waiting for status to be reported") and new PRs won't be mergeable until the branch protection rule is updated to reference `build-smoke` instead.
Please verify that the branch protection configuration for `main` is updated atomically with this rename, or that `startup-memory` was not a required check.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: tsdown.config.ts
Line: 174
Comment:
**Smoke test artifact included in published npm package**
`dist/plugins/build-smoke-entry.js` will be included in the published npm package because `package.json`'s `files` array includes `"dist/"` without any exclusion for this path. This is a CI-only test artifact — it re-exports internal symbols (`clearPluginCommands`, `executePluginCommand`, `getPluginCommandSpecs`, `matchPluginCommand`, `loadOpenClawPlugins`) from `commands.js` and `loader.js`, which aren't intended as public API. There's also no corresponding entry in `package.json`'s `exports` map, so while it isn't addressable as a package export, it still adds dead weight and exposes internal structure in every published version.
Consider either:
- Adding `"!dist/plugins/build-smoke-entry.js"` to the `files` array in `package.json`, or
- Moving the entry file to a location that's excluded from the publish set (e.g. a separate `smoke/` directory negated in `files`).
How can I resolve this? If you propose a fix, please make it concise.Last reviewed commit: 99f1b38 |
650cce5 to
c3aa2e6
Compare
ea17a2b to
012d272
Compare
20 tasks
012d272 to
d07e93e
Compare
mrosmarin
added a commit
to mrosmarin/openclaw
that referenced
this pull request
Mar 17, 2026
* main: (142 commits) fix(zalouser): fix setup-only onboarding flow (openclaw#49219) CI: add built plugin singleton smoke (openclaw#48710) update contributing focus areas docs(providers): clarify provider capabilities vs public capability model docs(refactor): align plugin SDK plan with public capability model docs(cli): add plugins inspect command reference docs(plugins): document public capability model, plugin shapes, and inspection Plugins: internalize diagnostics OTel imports Plugins: internalize diffs SDK imports Plugins: internalize more extension SDK imports Plugins: add local extension API barrels Plugins: add inspect matrix and trim export Plugins: add inspect command and capability report fix(telegram): unify transport fallback chain (openclaw#49148) Plugins: add binding resolution callbacks (openclaw#48678) fix(gateway): clear trusted-proxy control ui scopes refactor: narrow extension public seams test: stabilize memory async search close docs(hooks): clarify trust model and audit guidance feat(mattermost): add retry logic and timeout handling for DM channel creation (openclaw#42398) ...
nikolaisid
pushed a commit
to nikolaisid/openclaw
that referenced
this pull request
Mar 18, 2026
brandontyler
pushed a commit
to brandontyler/clawdbot
that referenced
this pull request
Mar 19, 2026
pholpaphankorn
pushed a commit
to pholpaphankorn/openclaw
that referenced
this pull request
Mar 22, 2026
alexey-pelykh
pushed a commit
to remoteclaw/remoteclaw
that referenced
this pull request
Mar 25, 2026
(cherry picked from commit 5a2a4ab)
alexey-pelykh
added a commit
to remoteclaw/remoteclaw
that referenced
this pull request
Mar 25, 2026
* fix(ci): stop serializing push workflow runs (cherry picked from commit 0a20c5c) * test: harden path resolution test helpers (cherry picked from commit 1ad47b8) * Fix launcher startup regressions (openclaw#48501) * Fix launcher startup regressions * Fix CI follow-up regressions * Fix review follow-ups * Fix workflow audit shell inputs * Handle require resolve gaxios misses (cherry picked from commit 313e5bb) * refactor(scripts): move container setup entrypoints (cherry picked from commit 46ccbac) * perf(ci): gate install smoke on changed-smoke (openclaw#52458) (cherry picked from commit 4bd90f2) * Docs: prototype generated plugin SDK reference (openclaw#51877) * Chore: unblock synced main checks * Docs: add plugin SDK docs implementation plan * Docs: scaffold plugin SDK reference phase 1 * Docs: mark plugin SDK reference surfaces unstable * Docs: prototype generated plugin SDK reference * docs(plugin-sdk): replace generated reference with api baseline * docs(plugin-sdk): drop generated reference plan * docs(plugin-sdk): align api baseline flow with config docs --------- Co-authored-by: Onur <[email protected]> Co-authored-by: Vincent Koc <[email protected]> (cherry picked from commit 4f1e12a) * fix(ci): harden docker builds and unblock config docs (cherry picked from commit 9f08af1) * Docs: add config drift baseline statefile (openclaw#45891) * Docs: add config drift statefile generator * Docs: generate config drift baseline * CI: move config docs drift runner into workflow sanity * Docs: emit config drift baseline json * Docs: commit config drift baseline json * Docs: wire config baseline into release checks * Config: fix baseline drift walker coverage * Docs: regenerate config drift baselines (cherry picked from commit cbec476) * Release: add plugin npm publish workflow (openclaw#47678) * Release: add plugin npm publish workflow * Release: make plugin publish scope explicit (cherry picked from commit d41c9ad) * build: default to Node 24 and keep Node 22 compat (cherry picked from commit deada7e) * ci(android): use explicit flavor debug tasks (cherry picked from commit 0c2e6fe) * ci: harden pnpm sticky cache on PRs (cherry picked from commit 29b36f8) * CI: add built plugin singleton smoke (openclaw#48710) (cherry picked from commit 5a2a4ab) * chore: add code owners for npm release paths (cherry picked from commit 5c9fae5) * test add extension plugin sdk boundary guards (cherry picked from commit 77fb258) * ci: tighten cache docs and node22 gate (cherry picked from commit 797b6fe) * ci: add npm release workflow and CalVer checks (openclaw#42414) (thanks @onutc) (cherry picked from commit 8ba1b6e) * CI: add CLI startup memory regression check (cherry picked from commit c0e0115) * Add bad-barnacle label to prevent barnacle closures. (openclaw#51945) (cherry picked from commit c449a0a) * ci: speed up scoped workflow lanes (cherry picked from commit d17490f) * ci: restore PR pnpm cache fallback (cherry picked from commit e1d0545) * CI: guard gateway watch against duplicate runtime regressions (openclaw#49048) (cherry picked from commit f036ed2) * fix: correct domain reference in docker setup script * fix: adapt cherry-picks for fork TS strictness * fix: adapt cherry-picked tests for fork structure - Dockerfile test: OPENCLAW_ → REMOTECLAW_ ARG names - ci-changed-scope test: add missing runChangedSmoke field - doc-baseline test: rename to e2e (needs dist/ build artifacts) - extension boundary test: update baselines and expectations for fork * fix: adjust ci-changed-scope test for fork's narrower skills regex --------- Co-authored-by: Vincent Koc <[email protected]> Co-authored-by: Peter Steinberger <[email protected]> Co-authored-by: Tak Hoffman <[email protected]> Co-authored-by: Bob <[email protected]> Co-authored-by: Onur <[email protected]> Co-authored-by: Altay <[email protected]> Co-authored-by: Ayaan Zaidi <[email protected]> Co-authored-by: Onur Solmaz <[email protected]> Co-authored-by: Harold Hunt <[email protected]>
ralyodio
pushed a commit
to ralyodio/openclaw
that referenced
this pull request
Apr 3, 2026
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.
Summary
dist-runtimestill register commands onto the canonical built runtime graph./pair,/phone, and/voicein built environments. Without a built smoke, future build-layout or loader changes could regress that path without being caught by unit tests alone.startup-memorylane tobuild-smoke, addedpnpm test:build:singleton, added a stable built smoke entrypoint atdist/plugins/build-smoke-entry.js, and added a smoke script that stages a temp bundled plugin throughdist-runtime, importsopenclaw/plugin-sdk, loads it through the built loader, and asserts the canonical built command registry sees/pair.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
User-visible / Behavior Changes
Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain risk + mitigation:Repro + Verification
Environment
dist/anddist-runtime/Steps
pnpm build.pnpm test:build:singleton.pnpm test:startup:memory.Expected
dist/plugins/build-smoke-entry.js.dist-runtimethrough the built loader can importopenclaw/plugin-sdkand still register/paironto the canonical built command registry.Actual
pnpm buildemitted the stable smoke entrypoint.pnpm test:build:singletonpassed and verified the built loader + canonical command registry path.pnpm test:startup:memorypassed after the lane rename.Evidence
Attach at least one:
Human Verification (required)
What you personally verified (not just CI), and how:
pnpm build; verifieddist/plugins/build-smoke-entry.jsexists; ranpnpm test:build:singleton; ranpnpm test:startup:memory.openclaw/plugin-sdkso the check covers the built root-alias/native-loading path in addition to canonical command registration.Review Conversations
If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.
Compatibility / Migration
Yes/No) YesYes/No) NoYes/No) NoFailure Recovery (if this breaks)
pnpm test:build:singletonstep from thebuild-smokelane..github/workflows/ci.yml,package.json,tsdown.config.ts,src/plugins/build-smoke-entry.ts,scripts/test-built-plugin-singleton.mjsopenclaw/plugin-sdk, or/pairnot appearing in the canonical built command registry during the smoke.Risks and Mitigations
Risk: the new smoke could become coupled to build internals and fail on unrelated bundle-layout churn.
Mitigation: the smoke now imports a stable source-owned built entrypoint (
dist/plugins/build-smoke-entry.js) rather than scraping hashed chunks.Risk: the smoke could prove only direct
api.registerCommandbehavior and miss the builtopenclaw/plugin-sdkalias path.Mitigation: the fixture imports
openclaw/plugin-sdkand usesemptyPluginConfigSchema(), so the smoke covers the actual alias/native-loading path involved in the original regression.