Skip to content

fix(agent-mention): enforce repository_dispatch property cap on current main - #911

Closed
seonghobae wants to merge 4 commits into
mainfrom
fix/agent-mention-opencode-payload-cap-current-main
Closed

fix(agent-mention): enforce repository_dispatch property cap on current main#911
seonghobae wants to merge 4 commits into
mainfrom
fix/agent-mention-opencode-payload-cap-current-main

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Purpose

Replace stale/diverged #910 with the same root-cause repair on current protected-main source. GitHub repository dispatch accepts at most 10 top-level client_payload properties. The protected-main OpenCode mention route carried 14 on the router→wrapper hop, so an authorized mention could be rejected before the trusted wrapper ran.

Exact current identity

  • base branch: main;
  • base at branch creation: 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba;
  • exact current head: 4e6ecf5c7e0dc88db8f75b8b1faaf9beeb6e1d9b;
  • Ready since 2026-08-12; the transition started a fresh exact-head hosted and semantic-review cycle, whose queued evidence is not passing;
  • fix(agent-mention): keep OpenCode dispatch payload under 10-property limit #910 remains the stale historical implementation line and is not a merge candidate.

Root-cause contract

The durable invocation claim still binds repository, PR, exact head/base, base branch, source comment, requesting actor, requested agent, and the five immutable review-only controls:

  • trigger_reviews=true;
  • review_dispatch_limit="1";
  • enable_auto_merge=false;
  • update_branches=false;
  • merge_mode="disabled".

Transport is narrower than authority binding:

  1. router→trusted OpenCode wrapper carries exactly nine identity/claim fields, staying under GitHub's ten-property boundary;
  2. the trusted wrapper reconstructs the five fixed controls and recomputes the complete invocation digest before durable-ledger access;
  3. wrapper→authoritative merge-scheduler carries exactly ten scheduler fields and omits wrapper-only identities;
  4. the durable exact-name Actions artifact ledger continues to bind the complete canonical claim, so payload shrinking does not weaken idempotency or review-only policy.

No mutable caller-selected review/merge controls, secret, reviewer authority, or branch-write capability is added.

TDD evidence

Initial RED head 02a86f342ff779145ae7d023c7f096ede4148b04 added the permanent property-cap contract. Agent Mention Router Quality CI reproduced the defect against protected-main behavior: OpenCode initial payload had five extra behavior properties beyond the allowed identity set.

After the current-main router/wrapper repair, exact head f0bb2b75283fe56f3d5cce1e82885fca7b0a4996 exposed one stale pre-existing test that still expected the old 14-property transport. That was a test-contract mismatch, not a production rollback requirement. The current head updates that expectation while separately asserting the full canonical claim still contains all five fixed review-only controls.

At exact current head 4e6ecf5c7e0dc88db8f75b8b1faaf9beeb6e1d9b, Agent Mention Router Quality CI and all eight security/supply-chain workflows completed successfully before the Ready transition. That evidence remains exact-head history, while the newly queued Ready-cycle runs are not passing until terminal-success.

Supersession / acceptance

#910 is closed unmerged and remains preserved as stale lineage. Keep this successor unmerged until the Ready-cycle exact-head gates are terminal-success, current automated source review has no valid unresolved finding, a qualifying independent non-author formal approval exists, live-base compatibility is independently resolved, and branch protection authorizes integration.

After protected integration, exercise an authorized OpenCode mention through the real router→wrapper→scheduler path and require a durable exact-name invocation artifact plus review-only downstream behavior. Predecessor or local-only evidence does not close that operational scenario.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 36 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 18f59524-f8b4-4264-ad53-ead8ddd41922

📥 Commits

Reviewing files that changed from the base of the PR and between 6eb06cd and 4e6ecf5.

📒 Files selected for processing (4)
  • .github/workflows/agent-mention-opencode-dispatch.yml
  • scripts/ci/agent_mention_router.py
  • tests/test_agent_mention_complete_payload_binding.py
  • tests/test_agent_mention_router.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please perform a fresh semantic source review of unchanged exact head 4e6ecf5c7e0dc88db8f75b8b1faaf9beeb6e1d9b against live protected base 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba. All nine exact-head workflows are terminal-success, the branch is zero commits behind, and no formal review or unresolved thread currently exists. Keep Draft; this request is source-review evidence only and is not merge approval or protected-main acceptance.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

@seonghobae I will perform a fresh semantic source review of exact head 4e6ecf5c7e0dc88db8f75b8b1faaf9beeb6e1d9b against base 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba. I will keep #911 as Draft. This action does not approve the pull request or indicate protected-main acceptance.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae marked this pull request as ready for review August 11, 2026 06:45
@seonghobae
seonghobae marked this pull request as draft August 11, 2026 06:46

Copy link
Copy Markdown
Contributor Author

@opencode-agent review

Evaluate exact current head 4e6ecf5c7e0dc88db8f75b8b1faaf9beeb6e1d9b against independently resolved live main 6eb06cdd08c79a06f7b390069d4ffa49e2eb7dba. CodeRabbit’s exact-head request remained rate-limited; all seventeen observed exact-head workflows are terminal-success, GitHub reports the Draft head mergeable, and unresolved threads are zero. Review the repository_dispatch ten-property cap, reconstruction of fixed review-only controls, and complete invocation-digest binding only on this head. Submit a semantic verdict without changing Draft state; keep automated judgment separate from qualifying independent human approval, merge authority, and protected-main operational acceptance.

@seonghobae
seonghobae marked this pull request as ready for review August 12, 2026 04:27

Copy link
Copy Markdown
Contributor Author

Superseded by #840 on the same protected-main base. #840 resolves the identical GitHub repository_dispatch.client_payload ten-property root cause with a stricter three-property versioned canonical-claim envelope on both hops, complete digest/type/policy/size validation, live PR snapshot binding, durable-ledger compatibility, mutation-free review-only scheduling, and stale-snapshot race protection. Its exact head 04c68a997b658019a1df9958a6bfe88ec72f792c has ten terminal-success hosted workflows and zero unresolved threads. Closing this narrower alternative prevents conflicting router/wrapper implementations and duplicate review activity; no checks or approvals transfer, and #840 remains subject to current-head semantic review, independent approval, and branch protection.

@seonghobae seonghobae closed this Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant