Skip to content

fix(actions): bound agent mention dispatch envelopes - #1021

Closed
seonghobae wants to merge 3 commits into
mainfrom
fix/agent-mention-dispatch-envelope-v2-clean
Closed

fix(actions): bound agent mention dispatch envelopes#1021
seonghobae wants to merge 3 commits into
mainfrom
fix/agent-mention-dispatch-envelope-v2-clean

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Test-first state

This Draft currently contains only focused regression contracts for the central review-agent mention transport. The production code is intentionally unchanged so the exact branch records the current failure before repair.

The reproduced defect is concrete: the router emits 14 top-level repository_dispatch.client_payload properties for @opencode-agent, while GitHub accepts at most 10. Recent mention-router runs fail with HTTP 422 before the authoritative review scheduler is queued, blocking exact-head OpenCode review requests across CWL repositories.

The regression contract also requires:

  • a versioned three-key envelope whose nested claim preserves the existing invocation digest and artifact-ledger identity;
  • validation before durable ledger mutation on both dispatch hops;
  • exact live head, base, and base-branch binding at the scheduler;
  • review-only policy (merge_mode=disabled, no branch update, no auto-merge);
  • legacy dispatch compatibility without allowing the versioned envelope to fall through the legacy event;
  • optional reaction failure to remain advisory after durable dispatch;
  • 100% production coverage and docstring coverage for the affected router and scheduler modules.

This is the bounded successor to stale, conflicted PR #840. It deliberately excludes that PR's unrelated uv materializer, Strix, broad OpenCode, and documentation changes.

Do not merge in the RED state.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e7959cb7-0dd0-4e11-a0f8-2b0f63947f3b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

Fresh ScopeWeave consumer canary confirms this exact transport defect is currently blocking review delivery, not source quality. Scheduled mention-router run 32002622857 at central main@c47afc2dc68488292c1db7c9d6f82dcd5360f181 successfully obtained the OpenCode installation token, then its sweep-organization-agent-mentions job 95305765001 repeatedly received HTTP 422 Invalid request. No more than 10 properties are allowed; 14 were supplied from the repository-dispatch hop and was ultimately cancelled while still sweeping. ScopeWeave already has exact-current-head review-only mentions waiting on this path, including #490 head e9b445fa8695314249190977351d3dd5e14c1583 (comments 5311248118, 5311461254) and #545 head ef9f9a9912b37946ee340aef26f7f2d62a03e32d (comment 5312307562), both against protected develop@44e7903cf8891c65410f7fc6ca5144de3fdb5185. Please use those as post-GREEN operational canaries: the bounded envelope repair must dispatch each existing mention once, bind the same exact head/live-base identities, and yield a formal review-only verdict without branch update/auto-merge. Do not require new duplicate mentions to prove recovery.

Copy link
Copy Markdown
Contributor Author

Closing this RED-only predecessor because the production defect is already resolved on protected main by #1115 (64feb77e8a178035bfd3822830b9435c3b0562fc): both dispatch hops are within GitHub's payload cap, the complete review-only claim remains digest-bound, exact head/base identity is preserved, and the interactive/sweep queue contract is covered. The remaining post-dispatch acknowledgement failure is owned by current focused PR #1135 rather than this divergent 17-file branch. No check, review, or test-only branch evidence transfers; do not revive or merge this RED state.

@seonghobae seonghobae closed this Aug 19, 2026
seonghobae added a commit that referenced this pull request Aug 20, 2026
Point IG-001 and TM-03 at open Draft #1021, and point redaction
TM-01/ADR-0009/PRD-08 at open #1031, so the control-plane graph
stops treating dead pull requests as active_pr integration paths.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
seonghobae added a commit that referenced this pull request Aug 20, 2026
Point IG-001 and TM-03 at open Draft #1021, and point redaction
TM-01/ADR-0009/PRD-08 at open #1031, so the control-plane graph
stops treating dead pull requests as active_pr integration paths.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
seonghobae pushed a commit that referenced this pull request Sep 2, 2026
Addresses Devin review findings on the item-16/17 scheduler target-list
drift entry and the item-32 batch-endpoint entry:

- "Noema evidence changes ownership": the new "scheduler target-list drift"
  section was inserted in the middle of the pre-existing "Noema
  single-request model-control ownership -- PR #1672" entry -- between its
  "900-second clarification" paragraph and its own "Evidence / acceptance"
  closing paragraph -- so the closing paragraph (about Noema's retry/deadline
  fix) ended up trailing the unrelated scheduler section, reading as if it
  were that section's acceptance evidence. Moved the scheduler section to
  come after the Noema section's actual closing paragraph, restoring both
  entries' internal coherence and making the scheduler section the file's
  true final entry again.
- "Structural closure precedes artifacts": the "Structural fix" paragraph
  described .github#1747 (the mirror file + contract test + doctoring
  record) in the past tense, as delivered repository state, but that PR is
  open and unmerged and none of those files exist on this branch or main.
  Reworded to say so explicitly, in the same "pending merge" framing this
  entry's own item-32 write-up already uses correctly.
- "Cross-repository references are not linkable": bare `#1021` / path-style
  `contextual-orchestrator/pull/1021` references -> the binding-convention
  form `ContextualWisdomLab/contextual-orchestrator#1021`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
seonghobae added a commit that referenced this pull request Sep 3, 2026
…n criteria

Devin Review findings on PR #1730:
- Finding A (comment 3913954439, item 30 polling head-change guard): Devin was
  wrong -- verified the in-loop guard at opencode-review.yml:467-470 already
  exits 0, pinned by tests/test_opencode_poll_self_retirement.py. No doc/workflow
  change made.
- Finding B (comment 3913954605, cross-repo #1021 refs): already fixed by
  3476a56 before this comment landed -- all four #1021 refs are already fully
  qualified ContextualWisdomLab/contextual-orchestrator#1021. No change made.
- Finding C1 (comment 3914267880, multimodal free-classification mechanism):
  real gap, fixed. The doc's Correction attributed the exclusion to #933's
  serving gate, but re-traced `_unit_prices_are_free` to 51fc34b (not ba5e00c)
  and confirmed live + against PR #1028's own head (aabd69a) that all 8 named
  models fail earlier, at `_row_is_free` (no unit_pricing/is_free key on
  OpenRouter rows), making #1028's general_free_serving_candidates exemption
  inert for every model it targets.
- Finding C2 (comment 3914325501, re-open criteria too narrow): real gap,
  fixed. Added re-open trigger (c) for the fix failing to actually admit the
  named models -- the exact silently-inactive-gate failure mode Finding C1
  found, which the prior two triggers (text-only regression, unreliable
  tool-call signal) could not have caught.

Both mechanism claims independently re-verified against the vendored
contextual-orchestrator checkout (git log -S, PR #1028 REST status) before
editing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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