Skip to content

fix(plugins): allow workboard typed hook registration#100610

Closed
liuhaiyang14 wants to merge 1 commit into
openclaw:mainfrom
liuhaiyang14:codex/fix-base-ci-navigation-hooks
Closed

fix(plugins): allow workboard typed hook registration#100610
liuhaiyang14 wants to merge 1 commit into
openclaw:mainfrom
liuhaiyang14:codex/fix-base-ci-navigation-hooks

Conversation

@liuhaiyang14

@liuhaiyang14 liuhaiyang14 commented Jul 6, 2026

Copy link
Copy Markdown

What Problem This Solves

After #100535, extensions/workboard/index.ts registers a typed subagent_ended hook. The plugin contract explicitly allowlists bundled plugin files that call api.on(...), but the workboard entrypoint was not added to that allowlist.

That leaves checks-fast-contracts-plugins-a failing with:

  • extensions/workboard/index.ts present in discovered typed hook registrations
  • extensions/workboard/index.ts missing from BUNDLED_TYPED_HOOK_REGISTRATION_FILES

The earlier UI navigation export failure has already been covered on current main by 55a0012c fix(ui): restore sidebar navigation exports, so this PR is now intentionally narrowed to the remaining plugin contract gap.

Summary

  • add extensions/workboard/index.ts to the bundled typed hook registration allowlist
  • add its subagent_ended hook to the explicit hook-name guard map

Evidence

RED before fix:

  • pnpm test:contracts:plugins -- --runInBand failed because extensions/workboard/index.ts was not in BUNDLED_TYPED_HOOK_REGISTRATION_FILES.

GREEN after rebase to current upstream/main:

  • pnpm test:contracts:plugins -- --runInBand (43 passed, 967 passed)
  • pnpm check:test-types
  • git diff --check
  • pnpm exec oxfmt --check src/plugins/contracts/boundary-invariants.test.ts

Negative Boundaries

  • Does not change workboard hook behavior; it only updates the contract allowlist for the existing subagent_ended registration.
  • Does not carry the UI navigation export fix, which is already present on current main.

@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.

Close as superseded: current main already restored the Control UI sidebar export API, and the remaining Workboard hook allowlist fix is covered by a smaller current-base maintainer PR with focused proof. This PR is now dirty against current main and keeps an obsolete UI hunk alongside the still-useful hook-contract hunk.

Root-cause cluster
Relationship: superseded
Canonical: #100614
Summary: The current PR is superseded by a smaller current-base PR for the remaining Workboard hook-contract fix; the UI portion is already implemented on main.

Members:

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

Canonical path: Use #100614 as the current-base landing path for the Workboard hook allowlist, and keep the sidebar export implementation already on main.

So I’m closing this here and keeping the remaining discussion on #100614 and #100613.

Review details

Best possible solution:

Use #100614 as the current-base landing path for the Workboard hook allowlist, and keep the sidebar export implementation already on main.

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

Yes. From source, the boundary invariant scans bundled plugin production files for api.on, current Workboard registers subagent_ended, and current main's allowlist does not include extensions/workboard/index.ts; I did not run tests in this read-only review.

Is this the best way to solve the issue?

No, this branch is no longer the best landing path. The hook allowlist hunk is the right fix, but the sidebar export hunk is already on main and leaves this PR dirty; the narrower current-base PR is cleaner.

Security review:

Security review cleared: The diff touches Control UI helper exports/tests and a plugin contract-test allowlist only; no dependency, workflow, secret, package, or runtime security surface was changed.

AGENTS.md: found and applied where relevant.

What I checked:

Likely related people:

  • @steipete: Authored the merged managed-worktrees feature that added the Workboard subagent_ended hook, and authored the current-base canonical hook-contract PR. (role: feature owner and canonical follow-up author; confidence: high; commits: 0acd851a3b3d, a38744f706e6; files: extensions/workboard/index.ts, src/plugins/contracts/boundary-invariants.test.ts)
  • @vincentkoc: Authored the current-main commit that restored the sidebar navigation exports and tests that overlap this PR's UI hunk. (role: recent sidebar navigation repair author; confidence: high; commits: 55a0012c44b5; files: ui/src/app-navigation.ts, ui/src/app-navigation.test.ts)

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

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jul 6, 2026
@clawsweeper clawsweeper Bot added 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 Jul 6, 2026
@clawsweeper clawsweeper Bot closed this Jul 6, 2026
@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper autoclose is complete.

Reason: structured ClawSweeper close marker: close-required (sha=0c38afde1956ba5ebcc788afbd58e22235563ed9)

Closed:

@liuhaiyang14 liuhaiyang14 changed the title fix(ui): restore sidebar navigation exports fix(plugins): allow workboard typed hook registration Jul 6, 2026
@liuhaiyang14

Copy link
Copy Markdown
Author

@clawsweeper re-review

Rebased and narrowed in 132bd8e after current main already picked up the UI navigation export fix (55a0012c).

This PR now only updates the bundled typed hook contract allowlist for the existing extensions/workboard/index.ts subagent_ended registration.

Validation after rebase:

  • pnpm test:contracts:plugins -- --runInBand (43 files, 967 tests passed)
  • pnpm check:test-types
  • git diff --check
  • pnpm exec oxfmt --check src/plugins/contracts/boundary-invariants.test.ts

@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper could not start a re-review for this item.

Reason: re-review requires an open issue or PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: S status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant