Skip to content

test(plugins): register Workboard typed hook contract#100611

Merged
vincentkoc merged 1 commit into
mainfrom
codex/fix-workboard-hook-contract
Jul 6, 2026
Merged

test(plugins): register Workboard typed hook contract#100611
vincentkoc merged 1 commit into
mainfrom
codex/fix-workboard-hook-contract

Conversation

@steipete

@steipete steipete commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Resolves a problem where current main fails the bundled-plugin contract suite after Workboard added its subagent cleanup hook.

Why This Change Was Made

Registers Workboard’s existing typed subagent_ended hook in both explicit boundary allowlists. This preserves the contract test’s fail-closed inventory without changing plugin runtime behavior.

User Impact

No product behavior change. Plugin contract CI correctly recognizes the Workboard cleanup hook while continuing to reject unreviewed hook registrations or hook names.

Evidence

  • Before on current main: boundary-invariants.test.ts reports extensions/workboard/index.ts as an unexpected typed-hook registration.
  • The runtime registration is api.on("subagent_ended", ...) in extensions/workboard/index.ts.
  • Fresh structured autoreview: clean, confidence 0.92.
  • git diff --check passes.
  • Focused Testbox proof and exact-head CI recorded before merge.

@openclaw-barnacle openclaw-barnacle Bot added size: XS maintainer Maintainer-authored PR labels Jul 6, 2026
@steipete
steipete force-pushed the codex/fix-workboard-hook-contract branch from a88742f to e9f6bcf Compare July 6, 2026 05:00
@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 6, 2026, 1:08 AM ET / 05:08 UTC.

Summary
The PR adds extensions/workboard/index.ts and its subagent_ended hook to the bundled typed-hook registration allowlists in src/plugins/contracts/boundary-invariants.test.ts.

PR surface: Tests +2. Total +2 across 1 file.

Reproducibility: yes. Source inspection shows current main registers api.on("subagent_ended", ...) in Workboard while the contract test's explicit typed-hook allowlists omit that file and hook name; I did not run tests because this review is read-only.

Review metrics: none identified.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #100613
Summary: The current PR is a candidate fix for the Workboard hook-inventory half of the linked current-main regression; a newer same-diff PR is also open and explicitly closes the canonical issue.

Members:

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

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🌊 off-meta tidepool
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:

  • Pick one of the two open same-diff PRs as the canonical landing path.

Risk before merge

  • [P1] There are now two open same-diff Workboard hook-contract PRs; maintainers should choose one landing candidate so the duplicate branch does not create review or merge churn.

Maintainer options:

  1. Decide the mitigation before merge
    Land one narrow allowlist update for the existing Workboard subagent_ended registration, preferably through the issue-linked duplicate if maintainers want GitHub to close the broader regression tracker cleanly.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P1] No code repair is needed; maintainer review should consolidate this PR with the newer same-diff issue-linked PR before landing one of them.

Maintainer decision needed

  • Question: Should maintainers keep this PR as the landing candidate, or use the newer same-diff PR at test(plugins): register workboard typed hook contract #100614 because it closes the linked regression issue and carries stronger proof?
  • Rationale: Both PRs make the same source change, but this PR has a protected maintainer label and the newer PR has better issue linkage; cleanup should be a human choice rather than an automated close.
  • Likely owner: steipete — He owns the recent Workboard hook change and authored the duplicate maintainer-labeled PRs that need consolidation.
  • Options:
    • Use the issue-linked duplicate (recommended): Review and land test(plugins): register workboard typed hook contract #100614, then close this PR as duplicate once the canonical branch is clearly selected.
    • Keep this PR: Land this PR and close the newer duplicate manually if maintainers prefer this branch or review thread.

Security
Cleared: The diff is a test-only allowlist update and does not introduce new runtime, dependency, secret, CI, or supply-chain surface.

Review details

Best possible solution:

Land one narrow allowlist update for the existing Workboard subagent_ended registration, preferably through the issue-linked duplicate if maintainers want GitHub to close the broader regression tracker cleanly.

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

Yes. Source inspection shows current main registers api.on("subagent_ended", ...) in Workboard while the contract test's explicit typed-hook allowlists omit that file and hook name; I did not run tests because this review is read-only.

Is this the best way to solve the issue?

Yes for the code change itself. Updating both explicit allowlists is the narrowest maintainable fix because the runtime hook already exists and the contract intentionally fails closed on new bundled hook registrations.

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add P2: The PR fixes a deterministic repository contract/CI regression with limited runtime blast radius.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: Real behavior proof is not required for this maintainer-labeled test-only contract repair; the PR body cites focused Testbox/CI proof, and the relevant contract check is visible as green in live PR checks.

Label justifications:

  • P2: The PR fixes a deterministic repository contract/CI regression with limited runtime blast radius.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🌊 off-meta tidepool and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Not applicable: Real behavior proof is not required for this maintainer-labeled test-only contract repair; the PR body cites focused Testbox/CI proof, and the relevant contract check is visible as green in live PR checks.
Evidence reviewed

PR surface:

Tests +2. Total +2 across 1 file.

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

What I checked:

Likely related people:

  • steipete: Git blame and PR history tie both the Workboard subagent_ended registration and the managed-worktrees merge that exposed the contract gap to Peter Steinberger, and the related maintainer-labeled issue/PRs are authored by the same account. (role: recent feature-area contributor and likely follow-up owner; confidence: high; commits: 0acd851a3b3d, d2d5911c3296; files: extensions/workboard/index.ts, src/plugins/contracts/boundary-invariants.test.ts)
  • Vincent Koc: Commit 55a0012 fixed the sidebar-export half of the same current-main regression described by the linked issue, leaving this Workboard hook inventory update as the remaining contract half. (role: adjacent regression fixer; confidence: medium; commits: 55a0012c44b5; files: ui/src/app-navigation.ts, ui/src/app-navigation.test.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.

@clawsweeper clawsweeper Bot added 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 Jul 6, 2026
@vincentkoc
vincentkoc merged commit 06fbd84 into main Jul 6, 2026
121 of 124 checks passed
@vincentkoc
vincentkoc deleted the codex/fix-workboard-hook-contract branch July 6, 2026 05:13
@vincentkoc

Copy link
Copy Markdown
Member

Merged via squash.

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

Labels

maintainer Maintainer-authored PR P2 Normal backlog priority with limited blast radius. 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

Development

Successfully merging this pull request may close these issues.

2 participants