Skip to content

ci: check bundled channel config metadata#91134

Merged
vincentkoc merged 1 commit into
openclaw:mainfrom
luoyanglang:wolf/ci-bundled-channel-config-metadata-check
Jun 29, 2026
Merged

ci: check bundled channel config metadata#91134
vincentkoc merged 1 commit into
openclaw:mainfrom
luoyanglang:wolf/ci-bundled-channel-config-metadata-check

Conversation

@luoyanglang

@luoyanglang luoyanglang commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Fixes #80536

What Problem This Solves

src/config/bundled-channel-config-metadata.generated.ts is checked in and used by runtime channel config validation. The repository already has pnpm check:bundled-channel-config-metadata, but the main CI check-shard job did not run it. A PR could therefore change an extension config-schema.ts, forget to refresh bundled metadata, and only discover the stale generated file when the gateway rejected the new field at runtime.

Fix

Add a check-bundled-channel-config-metadata entry to the existing check-shard matrix and dispatch that task to the existing pnpm check:bundled-channel-config-metadata script.

Real Behavior Proof

behavior

Before this patch, the normal CI check shard did not run the existing bundled channel config metadata staleness checker. After this patch, the workflow contains both the check-bundled-channel-config-metadata matrix entry and the matching dispatch to pnpm check:bundled-channel-config-metadata.

environment

Local OpenClaw checkout on macOS, branch head dab9eb9509c61a0d1e1d2bdb8ff1ba357e6023e2, based on origin/main at a7d5d929891136f792832f0c9a159828fe9906c5.

steps

Ran a direct workflow-content assertion, then ran the existing metadata checker and whitespace check from the repository root:

$ node -e "const fs=require('fs'); const ci=fs.readFileSync('.github/workflows/ci.yml','utf8'); const hasMatrix=ci.includes('check-bundled-channel-config-metadata') && ci.includes('task: bundled-channel-config-metadata'); const hasCase=ci.includes('bundled-channel-config-metadata)') && ci.includes('pnpm check:bundled-channel-config-metadata'); if (!hasMatrix || !hasCase) { console.error('missing bundled channel config metadata check shard'); process.exit(1); } console.log('bundled channel config metadata check shard present');"
$ pnpm check:bundled-channel-config-metadata
$ git diff --check

evidence

After-patch command output:

$ node -e "const fs=require('fs'); const ci=fs.readFileSync('.github/workflows/ci.yml','utf8'); const hasMatrix=ci.includes('check-bundled-channel-config-metadata') && ci.includes('task: bundled-channel-config-metadata'); const hasCase=ci.includes('bundled-channel-config-metadata)') && ci.includes('pnpm check:bundled-channel-config-metadata'); if (!hasMatrix || !hasCase) { console.error('missing bundled channel config metadata check shard'); process.exit(1); } console.log('bundled channel config metadata check shard present');"
bundled channel config metadata check shard present

$ pnpm check:bundled-channel-config-metadata
$ node --import tsx scripts/generate-bundled-channel-config-metadata.ts --check

$ git diff --check

Before the patch, the same workflow-content assertion failed on latest main with this output:

missing bundled channel config metadata check shard

observedResult

The workflow now includes the bundled channel config metadata check shard, and the existing generated metadata checker exits 0 on the current generated file.

notTested

No additional gaps.

Duplicate Audit

Immediately before pushing, I reran five live open-PR searches:

Scope Notes

This does not change the generator or regenerate metadata during build. It only makes the existing read-only stale-output guard part of the normal check shard so missing generated metadata is caught in CI instead of at gateway startup.

@openclaw-barnacle openclaw-barnacle Bot added size: XS triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 7, 2026
@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 21, 2026, 10:50 AM ET / 14:50 UTC.

Summary
The PR adds a check-bundled-channel-config-metadata check-shard matrix entry and dispatches it to the existing pnpm check:bundled-channel-config-metadata script.

PR surface: Config +6. Total +6 across 1 file.

Reproducibility: yes. Source inspection shows current main consumes checked-in generated channel metadata at runtime and defines a stale-output checker, while the normal check-shard workflow does not run that checker; this read-only review did not mutate the repo to create a live stale-file repro.

Review metrics: 1 noteworthy metric.

  • CI metadata guard: 1 check-shard task added. This makes an existing generated-metadata drift checker run in normal CI without changing runtime behavior.

Stored data model
Persistent data-model change detected: vector/embedding metadata: .github/workflows/ci.yml. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #80536
Summary: This PR is the active fix candidate for the stale bundled channel metadata validation issue; older same-shape PRs were closed unmerged and are not viable replacements.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Next step before merge

  • [P2] No repair lane is needed; the patch is focused and the remaining action is ordinary maintainer review and merge decision.

Security
Cleared: The diff only invokes an existing repository checker from an existing contents-read CI shard and adds no action refs, permissions, secrets, dependencies, downloads, or package-resolution changes.

Review details

Best possible solution:

Land this focused CI guard after ordinary maintainer review; any broader build-time regeneration policy can remain a separate follow-up.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection shows current main consumes checked-in generated channel metadata at runtime and defines a stale-output checker, while the normal check-shard workflow does not run that checker; this read-only review did not mutate the repo to create a live stale-file repro.

Is this the best way to solve the issue?

Yes. Wiring the existing read-only checker into the existing check-shard is the narrowest maintainable fix for this PR's scope; automatic build-time regeneration would be a broader policy decision.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 0ad48dad2c47.

Label changes

Label justifications:

  • P2: This is a normal-priority CI guard for a bounded generated-metadata/runtime validation failure mode.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body includes terminal output showing the before-patch workflow assertion failing and the after-patch workflow assertion plus existing metadata checker passing.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes terminal output showing the before-patch workflow assertion failing and the after-patch workflow assertion plus existing metadata checker passing.
Evidence reviewed

PR surface:

Config +6. Total +6 across 1 file.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 0 0 0 0
Config 1 6 0 +6
Generated 0 0 0 0
Other 0 0 0 0
Total 1 6 0 +6

What I checked:

  • Repository policy read: Read the full root AGENTS.md and applied its read-only review, CI/workflow, security, and ClawSweeper-specific review guidance; no scoped .github/AGENTS.md exists and the only maintainer note found was Telegram-specific, not relevant to this workflow-only PR. (AGENTS.md:1, 0ad48dad2c47)
  • Current main lacks the shard: Current main's check-shard matrix includes guards, shrinkwrap, prod-types, lint, dependencies, and test-types, and its dispatcher has no bundled-channel-config-metadata case. (.github/workflows/ci.yml:1253, 0ad48dad2c47)
  • PR diff wires the existing check: The PR adds one check-shard matrix entry named check-bundled-channel-config-metadata and one bundled-channel-config-metadata) dispatch branch that runs pnpm check:bundled-channel-config-metadata. (.github/workflows/ci.yml:1222, dab9eb9509c6)
  • Existing checker script: The package script already maps check:bundled-channel-config-metadata to node --import tsx scripts/generate-bundled-channel-config-metadata.ts --check, so the PR reuses an existing repository checker. (package.json:1502, 0ad48dad2c47)
  • Checker failure contract: The generator's --check path reports stale generated output and exits nonzero when output would change; the shared generated-output helper returns without writing when check mode is enabled. (scripts/generate-bundled-channel-config-metadata.ts:337, 0ad48dad2c47)
  • Runtime relevance: Current config validation builds bundled channel schemas from GENERATED_BUNDLED_CHANNEL_CONFIG_METADATA and validates configured channel blocks against those schemas, matching the linked stale-generated-metadata failure mode. (src/config/validation.ts:155, 0ad48dad2c47)

Likely related people:

  • vincentkoc: Current-main blame for the check-shard matrix and dispatcher points to recent CI workflow work, and nearby history shows repeated changes to .github/workflows/ci.yml. (role: recent CI workflow contributor; confidence: high; commits: 66e5cfdd8617, 7cd58cca2a26, 99d8549de6dc; files: .github/workflows/ci.yml)
  • Takhoffman: Commit ed2798417e002cf8a295eac1642bfadf96e11b86 restored the bundled channel config metadata gate and the checker surface this PR wires into CI. (role: introduced checker primitive; confidence: high; commits: ed2798417e00; files: package.json, scripts/generate-bundled-channel-config-metadata.ts, src/config/bundled-channel-config-metadata.generated.ts)
  • steipete: Commits 40bd36e35d3366e53bf199fb1a4d89cd8c9c743a and dd098596cf347532b35143ff34b78c36ebdefb78 moved and collapsed bundled channel metadata into plugin-owned manifest/config architecture. (role: metadata architecture contributor; confidence: medium; commits: 40bd36e35d33, dd098596cf34; files: scripts/generate-bundled-channel-config-metadata.ts, scripts/load-channel-config-surface.ts, src/config/bundled-channel-config-metadata.generated.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 7, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal backlog priority with limited blast radius. labels Jun 7, 2026
@clawsweeper clawsweeper Bot added merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jun 15, 2026
@vincentkoc
vincentkoc merged commit 68ddb97 into openclaw:main Jun 29, 2026
118 of 128 checks passed
@luoyanglang
luoyanglang deleted the wolf/ci-bundled-channel-config-metadata-check branch June 29, 2026 07:00
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 30, 2026
QiuYuang pushed a commit to QiuYuang/openclaw that referenced this pull request Jul 1, 2026
chenyangjun-xy pushed a commit to chenyangjun-xy/openclaw that referenced this pull request Jul 1, 2026
chenyangjun-xy pushed a commit to chenyangjun-xy/openclaw that referenced this pull request Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

2 participants