docs(adr): adopt entity-first harness evaluation - #6956
Conversation
Use one CEL predicate over a resolved entity and optional prompting event. Supersede event-reconstruction polling while retaining compatible poll driver machinery. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
PR Summary by QodoAdopt entity-first harness evaluation architecture
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
|
🤖 Finished Review · ✅ Success · Started 11:21 AM UTC · Completed 11:41 AM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $6.38 |
Code Review by Qodo
1.
|
Site previewPreview: https://785b73d6-site.fullsend-ai.workers.dev Commit: |
|
Risk Assessment: low (1/5) DetailsDocs-only PR adding ADR 0106 and minor edits to existing architecture docs; Tier 1 signals are unchanged from the prior assessment, architecture.md high churn is a persistent baseline not specific to this change, and anchoring rules preserve the prior score of 1. Previous runRisk Assessment: low (1/5) DetailsDocs-only PR adding ADR 0106 and minor updates to existing architecture docs; Tier 1 signals are essentially identical to the prior assessment (no code, no tests, no CI/dep/protected-path changes, known contributor), and anchoring rules preserve the prior score of 1. Previous run (2)Risk Assessment: low (1/5) DetailsDocs-only PR adding ADR 0099 and making minor updates to three existing docs and one existing ADR. No production code, no test changes, no CI or dependency modifications, no protected paths. Author is a known contributor. |
ReviewFindingsMedium
Low
Next steps:
Previous runReviewFindingsMedium
Low
Next steps:
Previous run (2)ReviewFindingsCritical
Medium
Low
Labels: PR introduces an ADR about dispatch and harness evaluation, modifies architecture and problem docs Next steps:
|
Renumber the ADR after the collision on main, clarify partial supersession and authorization, and preserve the existing architecture narrative. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
Integrate the latest main before updating the pull request. Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Review · ❌ Terminated · Started 6:07 AM UTC · Ended 6:31 AM UTC Commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
🤖 Finished Review · ✅ Success · Started 6:07 AM UTC · Completed 6:31 AM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $5.93 |
Signed-off-by: Barak Korren <bkorren@redhat.com> Assisted-by: Codex (gpt-5.6-sol)
|
🤖 Finished Review · ✅ Success · Started 6:35 AM UTC · Completed 6:55 AM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.95 |
There was a problem hiding this comment.
Note: The following review comments could not be posted on the diff (GitHub returned 422) and are included here instead:
docs/architecture.md(file-level): Line 151 · [medium] internal-inconsistency
The Agent Harness "Decided" section at line 151–154 still describes harness trigger expressions as "evaluated against a forge-neutral NormalizedEvent" and references only ADR 0061. The PR updated the Dispatch section (around line 292) to describe entity-first evaluation per ADR 0106, but left the Harness section bullet unchanged. The two sections of the same document now give contradictory accounts of the harness trigger input contract.
Suggested fix: Update the Harness trigger expressions bullet to describe the entity + optional-event CEL context and add a reference to ADR 0106 alongside the existing ADR 0061 link.
docs/architecture.md(file-level): Line 283 · [low] internal-consistency
Within the Dispatch "Decided" section, the ADR 0061 bullet at lines 283–286 describes routing "operating on a NormalizedEvent struct" in present tense. The new ADR 0106 bullet at lines 292–299 describes "one CEL predicate over a required normalized entity and an optional prompting event," partially superseding the ADR 0061 evaluation context. The ADR 0106 bullet's supersession annotation at lines 298–299 mentions only ADR 0063, omitting ADR 0061 despite ADR 0106's own Status section explicitly stating it partially supersedes both ADRs.
Suggested fix: Annotate the ADR 0061 routing bullet at line 286 with a note such as "(evaluation context superseded by ADR 0106)" and add "and ADR 0061" to the supersession annotation at lines 298–299.
Summary
Decision
Event-driven dispatch supplies both the resolved entity and prompting event. Scheduled discovery supplies the entity with a null event. Harnesses keep one predicate that may inspect either or both contexts.
Harness enablement and platform policy permit scheduled evaluation. Entity history remains untrusted input; trusted input-selection layers determine which actor-originated instructions are authorized and actionable before they control agent behavior. Every run uses the harness's configured agent identity and permissions.
The detailed normalized-entity and query-planning contract remains follow-up normative work. Singleton scheduled runs without a natural entity remain outside this ADR.
This captures the architecture discussion in #313. Stable entity identity can support the separate serialized follow-up model accepted in ADR 0098.
Verification
pre-commit run --files docs/ADRs/0061-harness-cel-dispatch.md docs/ADRs/0063-polling-based-work-discovery.md docs/ADRs/0106-entity-first-harness-evaluation.md docs/architecture.md docs/problems/agent-architecture.mdmake lint