feat(dispatch): harness CEL dispatch for custom agents (#2889) - #3820
Conversation
…2889) Introduce fullsend dispatch with NormalizedEvent types, harness trigger CEL evaluation, parallel harness-dispatch/harness-run jobs in reusable-dispatch (bash route unchanged), behaviour tests, and dummy runtime wiring validation ops. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 8:19 AM UTC · Completed 8:36 AM UTC |
PR Summary by QodoAdd CEL-based harness dispatch CLI and GitHub Actions harness-run pipeline
AI Description
Diagram
High-Level Assessment
Files changed (42)
|
Site previewPreview: https://b9015090-site.fullsend-ai.workers.dev Commit: |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Code Review by Qodo
1.
|
ReviewFindingsMedium
Low
Compared to prior review (SHA Previous runReviewFindingsMedium
Low
Previous runReviewFindingsMedium
Low
Compared to prior review (SHA Previous run (2)ReviewFindingsMedium
Low
Previous run (3)ReviewFindingsMedium
Low
Compared to prior review (SHA Previous run (4)ReviewFindingsMedium
Low
Previous run (5)ReviewFindingsMedium
Low
Compared to prior review (SHA Previous run (6)ReviewFindingsMedium
Low
Previous run (7)ReviewFindingsMedium
Low
Compared to prior review (SHA Previous run (8)ReviewFindingsMedium
Low
Previous run (9)ReviewFindingsMedium
Low
Compared to prior review (SHA Previous run (10)ReviewResolved from prior review✅ [duplicate-identifier] ✅ [injection-vuln] ✅ [injection-vuln] ✅ [authorization-policy-coherence] ✅ [behavioral-change] FindingsMedium
Low
|
Add unit tests for projection, enumerate, killswitch, gha-event adapter, JSON drivers, and CLI dispatch command. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 8:45 AM UTC · Completed 8:59 AM UTC |
|
🤖 Review · |
|
🤖 Review · |
99ab566 to
3a5b95c
Compare
…end-ai#2889) - Sparse-checkout bin/fullsend for per-org harness-dispatch - Fix issue_comment PR linked_change_proposal and enrich change_proposal via forge - Harden assert_env against shell injection; tighten negative harness CI assertion - Extend behaviour path filter for harnessdispatch/normevent packages Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Cursor <cursoragent@cursor.com>
3a5b95c to
47a417c
Compare
Resolve conflicts in go.mod, orgconfig, and github tests; use GitHubExtensions for collaborator permission lookup; document shared auth rationale in code comments instead of ADR edits. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 11:07 AM UTC · Completed 11:19 AM UTC |
waynesun09
left a comment
There was a problem hiding this comment.
Follow-up review pass on 417e1ec. Findings below are deduplicated against the existing review threads — items already fixed (cd9f3a5, 574ca83, 47a417c) or explicitly decided in earlier threads (label-added bypass scope, fork gating living in harness CEL, no role-enablement gate) are not repeated. Four remaining unique findings at medium+; the orgconfig.go one looks like an unintentional refactor artifact and is the most clear-cut.
waynesun09
left a comment
There was a problem hiding this comment.
Review Squad — 4 new findings (deduplicated against prior rounds)
Ran a fresh 4-agent pass (claude-coder, claude-researcher, gemini-code-review, cursor-code-review). Cross-checked all findings against this PR's existing review history before posting — most of what the agents surfaced independently duplicates already-resolved or already-declared-intentional threads (label-added auth scoping, the review_submitted bot bypass covered by ADR 0054, the e2e deny-semantics gap, and the orgconfig.go dead-code finding already posted in the last round). Only posting what wasn't already raised:
- HIGH — upstream sparse-checkout doesn't check out the install action it references (
.github/workflows/reusable-dispatch.yml) - MEDIUM — one malformed harness aborts dispatch for every agent (
internal/harnessdispatch/enumerate.go) - MEDIUM — custom GitHub roles silently map to
none(internal/normevent/event.go) - MEDIUM — custom
role:values untested against token-minting/WIF scope (internal/harnessdispatch/project.go)
See inline comments for details.
ralphbean
left a comment
There was a problem hiding this comment.
LGTM. One non-blocking note inline.
Merge upstream/main and resolve review threads: orgconfig dead branch, fail-closed fork detection, comment_edited/deleted transitions, per-harness enumerate tolerance, upstream install-action checkout, harness-trigger pre-check with CLI cache, and custom-role docs. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 10:02 PM UTC · Completed 10:12 PM UTC |
|
🤖 Review · |
Use while-read instead of for-in word splitting when scanning agent source paths in reusable-dispatch harness-dispatch job. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 10:28 PM UTC · Completed 10:36 PM UTC |
Treat any registered config agents (or URL sources) as having triggers instead of parsing harness files in bash, which skipped dispatch for behaviour test repos. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 11:09 PM UTC · Completed 11:20 PM UTC |
Use the full v4.2.3 commit SHA so harness-dispatch can resolve actions/cache restore/save in behaviour and production runs. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 12:04 AM UTC · Completed 12:12 AM UTC |
Summary
fullsend dispatchCLI with NormalizedEvent types, ADR 0054 auth gate, kill switch, and harnesstrigger:CEL evaluationharness-dispatch/harness-runjobs toreusable-dispatch.yml(bashroutejob unchanged)assert_env,assert_file,assert_json)Related Issue
Closes #2889
Changes
internal/normevent/— forge-neutral event types + golden tests from schema fixturesinternal/harnessdispatch/— dispatch core, gha-event/json input drivers, gha-matrix outputinternal/harness—trigger:field with CEL compile/lintinternal/forge—GetCollaboratorPermissionfor actor role enrichmente2e/behaviour/features/dispatch/— five scenarios (issue label, wrong label, PR-on-issue negative, PR label, wrong PR label)Testing
go teston changed packagesgo veton changed packagesmake behaviour-test(CI)Checklist
routejob untouched — parallel harness path onlyharness-runskipsvalidate-enrollment(per-repo installs)Made with Cursor