Skip to content

Document continuous agent-run evaluation loop#4028

Merged
justin808 merged 17 commits into
mainfrom
jg-codex/4004-continuous-eval-loop
Jun 15, 2026
Merged

Document continuous agent-run evaluation loop#4028
justin808 merged 17 commits into
mainfrom
jg-codex/4004-continuous-eval-loop

Conversation

@justin808

@justin808 justin808 commented Jun 14, 2026

Copy link
Copy Markdown
Member

Fixes #4004

Summary

  • Add a standalone continuous evaluation loop workflow for checking whether active, stalled, done-unmerged, and recently merged agent runs actually achieved issue/PR intent.
  • Define read-only inputs, classification, ranking, report format, and a reusable loop prompt.
  • Keep durable scheduler state, cursors, capacity profiles, and queue implementation in the private coordination backend rather than committing operator state here.

Validation

  • gh issue view 4004 --json ... -> issue open and current before worker changes
  • agent-coord status --batch-id process-tooling-2026-06-14 -> triage dependency done before coordinator push
  • pnpm exec prettier --check --ignore-unknown .agents/workflows/continuous-evaluation-loop.md -> passed
  • git diff origin/main --check -> passed
  • script/ci-changes-detector origin/main -> documentation-only; recommended CI jobs: none
  • codex review --base origin/main -> clean, no actionable findings
  • Worker pre-commit hooks -> trailing newlines, offline markdown links, and Prettier passed

CI / Labels

Labels: none. This is a documentation-only workflow prompt and the detector recommends no CI expansion.

Confidence note:

  • Validated: command list above and clean branch review.
  • Evidence: local command output and branch review output.
  • UNKNOWN: checker independence cannot be enforced by this repo-only workflow; merge-ledger integration remains conditional until that script exists on the active branch.
  • Residual risk: low; this documents a read-only evaluation workflow and explicitly forbids GitHub writes without approval.

Decision points: 0


Note

Low Risk
Documentation-only workflow rules; no runtime, auth, or application code changes.

Overview
Adds .agents/workflows/continuous-evaluation-loop.md, a read-only checker workflow for verifying whether agent runs (active through recently merged) actually met issue/PR intent—not for building fixes.

The doc defines an operating contract (untrusted GitHub input, preferred independent checker identity, no GitHub writes without coordinator approval, durable state kept out of the repo), evidence inputs from agent-coord, GitHub, git, optional merge ledger, and prior audits, and intent classes (in_progress, realized, partial, missed, regressed, stalled, unknown) with risk-biased tie-breaking.

It specifies finding ranking, a seven-section report (including stalled-run decisions and post-merge-audit intake with fingerprint drafts), a copy-paste loop prompt, and integration with plan-pr-batch, post-merge-audit, and private coordination backends for scheduling.

Reviewed by Cursor Bugbot for commit b435e73. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Documentation
    • Added comprehensive workflow documentation for a “Continuous Evaluation Loop” that evaluates active, stalled, and recently merged agent runs against assigned work items. Includes intent-achievement classification, evidence-based reporting requirements, risk-aware tie-breaking and prioritization, and clear safety rules ensuring evaluation uses untrusted inputs and avoids forbidden write actions.

Agent Merge Confidence

Mode: accelerated-rc
Current head SHA: b435e73
Score: 9/10
Auto-merge recommendation: yes
Affected areas: agent workflow/process documentation; no runtime product code
CI detector: script/ci-changes-detector origin/main -> documentation-only changes; recommended CI jobs: none
Checks: gh pr checks 4028 -> 12 pass, 1 skipped, 0 pending, 0 failing. The skipped docs-format row is explained by the Lint JS and Ruby detector path.
Validation run:

  • gh issue view 4004 --json ... -> issue open/current before worker changes
  • agent-coord status --batch-id process-tooling-2026-06-14 -> triage dependency done before coordinator push
  • pnpm exec prettier --check --ignore-unknown .agents/workflows/continuous-evaluation-loop.md -> passed
  • git diff origin/main --check -> passed
  • script/ci-changes-detector origin/main -> documentation-only; recommended CI jobs: none
  • codex review --base origin/main -> clean, no actionable findings
  • Worker pre-commit hooks -> trailing newlines, offline markdown links, and Prettier passed
    Review/check gate:
  • GitHub checks: complete for b435e7392479b3e5af3015201b012e14dc8998cf; no failed or pending checks
  • Review threads: live GraphQL unresolved count is 0
  • Feedback triage: stale Claude/Codex/Cursor findings were fixed or resolved; no current unresolved non-trivial concern remains
  • Current-head reviewer verdicts:
    • claude-review check: success for b435e7392479b3e5af3015201b012e14dc8998cf (run, job)
    • Cursor Bugbot: pass for current head
    • CodeRabbit: pass for current head
  • Stale reviewer verdicts, advisory only:
    • Earlier Claude/Codex/Cursor/CodeRabbit reviews covered older intermediate heads and are not cited as merge gates
      Labels: none. Documentation-only process workflow; CI detector recommends no CI expansion.
      Known residual risk: low; this is a read-only evaluation workflow and explicitly forbids GitHub writes without approval.
      Merge recommendation: merge now by squash.
      Finalized by: claude-review GitHub check, Claude Code Review run 27517115057 / job 81327698305, completed successfully for current head b435e7392479b3e5af3015201b012e14dc8998cf.

@coderabbitai

coderabbitai Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

A new workflow document .agents/workflows/continuous-evaluation-loop.md is added (161 lines). It defines an independent checker process that periodically evaluates agent runs against their assigned GitHub issue intent, classifies outcomes into six categories, ranks findings by risk, mandates a structured report format, supplies a loop prompt template, and notes integration points with triage and post-merge audit.

Changes

Continuous Evaluation Loop Workflow

Layer / File(s) Summary
Operating contract and required inputs
.agents/workflows/continuous-evaluation-loop.md
Establishes the checker role identity, untrusted-input and no-GitHub-write constraints during the loop, durable state storage requirement, and enumerates the ground-truth input sources: agent-coord status, issue/PR evidence, git history, optional merge ledger with explicit UNKNOWN handling, and optional prior audit findings that must be re-verified.
Classification scheme and finding ranking
.agents/workflows/continuous-evaluation-loop.md
Defines six intent-achievement categories (realized, partial, missed, regressed, stalled, unknown) with tie-breaking rules for ambiguous evidence, and specifies the finding ranking order with four tie-breaker criteria: release risk, affected area, dependency fan-out breadth, and age.
Report format, loop prompt, and integration notes
.agents/workflows/continuous-evaluation-loop.md
Mandates structured report sections including scope, high-risk findings with evidence references and recommended actions, stalled-run decision rows, post-merge audit intake drafting rules, per-run table fields, no-action items, and an UNKNOWNs section. Provides the loop prompt template driving evaluation and classification, and notes how the loop complements triage/post-merge audit while clarifying the merge ledger as mechanical evidence rather than proof of intent.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related issues

  • #3984: Addresses hardening agent-coord backend contract and synchronizing workflow documentation with similar UNKNOWN fallback patterns and coordination infrastructure constraints.

Suggested labels

documentation, codex, enhancement

Suggested reviewers

  • alexeyr-ci2
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main change: documentation for a continuous agent-run evaluation loop workflow.
Linked Issues check ✅ Passed The documentation defines all core requirements from #4004: enumeration of active/stalled/merged work, intent-achievement classification, risk-ranked reporting, and integration with post-merge audit and merge ledger processes.
Out of Scope Changes check ✅ Passed All changes are scoped to documenting the continuous evaluation loop workflow as defined in #4004; no unrelated functionality or modifications are introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg-codex/4004-continuous-eval-loop

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 and usage tips.

@greptile-apps

greptile-apps Bot commented Jun 14, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adds .agents/workflows/continuous-evaluation-loop.md, a read-only checker workflow that defines how agents should evaluate whether active, stalled, done-unmerged, and recently merged agent runs actually achieved their assigned issue or PR intent.

  • Introduces classification categories (realized, partial, missed, regressed, stalled, unknown), a ranked report format, and a reusable loop prompt template for agent invocation.
  • Enforces a strict no-GitHub-writes-without-approval contract and explicitly delegates scheduler state, cursors, and durable loop state to the private shakacode/agent-coordination backend.
  • References $triage in the Integration Notes without a corresponding workflow file in this repo, and references script/pr-merge-ledger which does not yet exist (both are gracefully handled with UNKNOWN fallbacks, but the gaps could confuse an agent following the document literally).

Confidence Score: 4/5

Documentation-only change with no runtime code; safe to merge.

The document is well-structured and its operating contract (no GitHub writes without approval, UNKNOWN fallbacks for missing tools) limits blast radius. Two forward references — $triage with no matching workflow file and script/pr-merge-ledger that does not yet exist — could leave an agent without a concrete path to follow. Neither blocks functionality today, but both could cause silent misbehavior once agents start consuming the workflow in earnest.

.agents/workflows/continuous-evaluation-loop.md — specifically the $triage integration note and the script/pr-merge-ledger conditional.

Important Files Changed

Filename Overview
.agents/workflows/continuous-evaluation-loop.md New workflow document defining a continuous agent-run evaluation loop. Well-structured with clear classification tiers, report format, and read-only operating contract. Two minor forward-reference gaps: $triage lacks a corresponding workflow file, and script/pr-merge-ledger is not yet present in the repo.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Agent invokes continuous-evaluation-loop] --> B[Gather Inputs]
    B --> B1["agent-coord status (or GitHub sweep)"]
    B --> B2[GitHub issue/PR state]
    B --> B3[Git history since last cursor]
    B --> B4["script/pr-merge-ledger (if available)"]

    B1 & B2 & B3 & B4 --> C[Classify each run]
    C --> C1[realized]
    C --> C2[partial]
    C --> C3[missed]
    C --> C4[regressed]
    C --> C5[stalled]
    C --> C6[unknown]

    C1 & C2 & C3 & C4 & C5 & C6 --> D[Rank findings]
    D --> E[Generate Report]
    E --> E1[High-Risk Findings]
    E --> E2[Stalled Run Decisions]
    E --> E3[Post-Merge Audit Intake drafts]
    E --> E4[Per-Run Table]
    E --> E5[No-Action Items]
    E --> E6[UNKNOWNs]

    E --> F{Coordinator approval required?}
    F -- Yes --> G[Coordinator dedupes & requests approval]
    G --> H[GitHub writes allowed]
    F -- No --> I[Report delivered, no GitHub writes]
Loading

Reviews (1): Last reviewed commit: "Document continuous agent-run evaluation..." | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ae9cd0804d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@claude

claude Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Code Review

This is a documentation-only PR adding a continuous evaluation loop workflow. The overall structure is solid and consistent with the other files in .agents/workflows/. A few items worth addressing:

Issues

1. $triage is unresolvable — The integration note at the bottom references `$triage` using the repo's dollar-sign skill convention, but no triage skill or workflow exists in .agents/workflows/ or .agents/skills/. The closest candidates are plan-issue-triage and evaluate-issue. Either link to the actual skill name (e.g. $plan-issue-triage) or clarify that $triage lives in the private shakacode/agent-coordination backend.

2. script/pr-merge-ledger is unavailable — Input #4 treats this script as simply "optional" but readers won't know it doesn't exist in this branch yet. The PR confidence note acknowledges this, but that context won't reach someone reading the workflow file in isolation. A brief inline note (e.g. "this script does not yet exist on main; record UNKNOWN until it is available") would prevent confusion.

3. "High-Risk Findings" section is mislabeled — Report section 2 is called High-Risk Findings but the ranked list inside it includes all six classification tiers including partial (rank 4) and unknown (rank 5), which are not inherently high-risk. Consider a name like Ranked Findings or Findings by Priority to avoid implying that partial and unknown items are regressions.

4. unknown items appear in two sections — Section 2 lists unknown items in the ranked findings list, and section 7 is entirely dedicated to UNKNOWNs. The split isn't defined: should an unknown-class run appear in section 2, section 7, or both? Clarify the distinction (e.g. section 2 = unknown-class runs, section 7 = unverifiable facts about any run).

Minor

  • Terminology drift: "checker" is used consistently through the Operating Contract and Classification sections, but the Integration Notes switch to "evaluator" (line 143: "the evaluator must still compare…"). Pick one term.
  • Self-referencing loop prompt: The copy-paste loop prompt tells the agent to return results "in the format from .agents/workflows/continuous-evaluation-loop.md". This works but will silently break if the file is ever moved or renamed. A section anchor would make this more robust (e.g. "…from the Report Format section of .agents/workflows/continuous-evaluation-loop.md").

Verdict

Low risk — none of these block correctness for the workflow's stated purpose, but items 1–4 are likely to confuse operators using this document in practice. Happy to approve once the $triage reference is resolved and the script/pr-merge-ledger gap is disclosed in the file itself.

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Review-fix update for continuous evaluation loop:

  • Added an inline note that script/pr-merge-ledger is not yet on main, so merge_ledger: UNKNOWN is expected until it exists on the active branch.
  • Replaced the non-existent $triage command reference with $plan-pr-batch plus capacity-aware triage workflow wording.

Validation:

  • pnpm exec prettier --write --ignore-unknown .agents/workflows/continuous-evaluation-loop.md -> formatted Markdown
  • pnpm exec prettier --check --ignore-unknown .agents/workflows/continuous-evaluation-loop.md -> passed
  • git diff origin/main --check -> passed
  • script/ci-changes-detector origin/main -> docs-only, recommended CI jobs: none
  • pre-push branch lint and Markdown link checks -> passed

@claude

claude Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Review: Document continuous agent-run evaluation loop

Overall: Well-structured documentation that fills an important gap in the agent coordination workflow. The operating contract (no writes without coordinator approval, untrusted GitHub input, durable state stays private) is clear and appropriately cautious. Three issues worth addressing before merge:

1. Inconsistent skill reference style in Integration Notes (lines 138-142)

The Integration Notes use $plan-pr-batch and $post-merge-audit (Codex skill invocation shorthand), but every sibling workflow doc references these by full path. Examples from pr-processing.md and evaluate-issue.md:

use `.agents/skills/post-merge-audit/SKILL.md` when skills are available
Run `.agents/skills/plan-pr-batch/SKILL.md` first

The $ shorthand works in interactive Codex prompts but is not the established convention for prose in .agents/workflows/ files. Mixing styles in the same section is confusing for agents parsing these docs as instructions.

Suggested fix: Use the full path form with when skills are available where relevant, consistent with the rest of the workflow docs.

2. No mapping between agent-coord status taxonomy and Classification taxonomy (lines 28-29 vs 49-59)

The Inputs section records agent-coord status labels: active, stale, dead, blocked, done, released, done-unmerged.

The Classification section defines a separate vocabulary: realized, partial, missed, regressed, stalled, unknown.

These are deliberately different (operational lane state vs. intent-achievement class), but there is no bridging guidance. An evaluator could reasonably assume done = realized without actually checking the diff — which is exactly the failure mode this workflow is meant to catch.

Suggested fix: Add a one-sentence bridging note in the Inputs section, e.g.:

agent-coord lane state (done, stale, dead...) is operational status only; the Classification section defines the separate intent-achievement classes derived from examining the actual diff and evidence.

3. Incomplete path for post-merge-audit skill (line 100)

In the Post-Merge Audit Intake section, the path is .agents/skills/post-merge-audit — missing the /SKILL.md suffix used everywhere else in workflow docs. An agent following this literally may not resolve the reference.

Minor

  • The loop prompt self-references this file at line 132 (.agents/workflows/continuous-evaluation-loop.md). Fine now, but a rename would silently break it.
  • The script/pr-merge-ledger gap is already acknowledged in-doc — correct call.

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: current unresolved review threads for PR #4028; no prior address-review summary checkpoint was present.

Mattered

  • MUST-FIX: agent-coord operational lane state needed a bridge to the separate intent-achievement classification taxonomy. Addressed in bdb4033 and thread resolved.
  • MUST-FIX: Post-Merge Audit Intake referenced .agents/skills/post-merge-audit without the /SKILL.md suffix. Addressed in bdb4033 and thread resolved.
  • MUST-FIX: Integration Notes used Codex shorthand for plan-pr-batch and post-merge-audit instead of full workflow-doc skill paths. Addressed in bdb4033 and thread resolved.

Optional

  • None.

Skipped

  • Older triage-command and merge-ledger inline threads were already resolved before this pass; no current-head action was needed.
  • The Claude general review summary duplicated the three inline threads handled above; no separate thread exists to resolve.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

@justin808

Copy link
Copy Markdown
Member Author

Address-review summary

Scan scope: follow-up pass after the 2026-06-14T22:12:19Z address-review checkpoint, plus current unresolved review-thread state after the latest push. Waited 180 seconds for the new check/review wave; claude-review and other checks were still pending at the cap.

Mattered

  • MUST-FIX: agent-coord operational lane state needed a bridge to the separate intent-achievement classification taxonomy. Addressed in bdb4033 and thread resolved.
  • MUST-FIX: Post-Merge Audit Intake referenced .agents/skills/post-merge-audit without the /SKILL.md suffix. Addressed in bdb4033 and thread resolved.
  • MUST-FIX: Integration Notes used Codex shorthand for plan-pr-batch and post-merge-audit instead of full workflow-doc skill paths. Addressed in bdb4033 and thread resolved.
  • MUST-FIX: the opening scope and loop prompt omitted stale and dead-heartbeat lanes despite Inputs and Ranking covering them. Addressed in 29d939c and thread resolved.

Optional

  • None.

Skipped

  • Older triage-command and merge-ledger inline threads were already resolved before this pass; no current-head action was needed.
  • The Claude general review summary duplicated the inline threads handled above; no separate thread exists to resolve.

Next default scan starts after this comment. Say check all reviews to rescan the full PR.

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@claude

claude Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Review — Documentation-only, low risk overall

The structure and intent of this workflow are solid: clear operating contract, layered evidence inputs, a well-reasoned classification hierarchy with a risk-escalation tie-break rule, and explicit separation from the maker role. The safety rules (no GitHub writes without coordinator approval, durable state stays private) are well placed and consistent with pr-processing.md.

Issues found

1. stale and dead-heartbeat lanes missing from intro and Loop Prompt (medium)
Input step 1 collects all seven lane types including stale and dead (dead-heartbeat), but the intro and the copy-paste Loop Prompt template both say only "active, stalled, done-unmerged, recently merged." An agent following the Loop Prompt verbatim would skip stale/dead-heartbeat lanes entirely. Inline comment on line 3 has a suggested fix.

2. released lane state has no intent-achievement mapping (low-medium)
released is listed as a lane state to record in Input step 1, but the Classification section has no entry for it and the note on line 31 only covers donerealized. An evaluator would be unsure whether a released lane should be assumed realized or still requires evidence. Inline comment on line 28 covers this.

3. stalled dual meaning not explicitly disambiguated (low)
stalled appears as both an agent-coord operational lane state and an intent-achievement class. The note on line 31 clarifies that donerealized, but no equivalent note covers stalled. A reader could skip the evidence step and auto-classify any operationally-stalled lane. Inline comment on line 62 has a suggested one-liner fix.

Nits

  • Integration Notes lines 143 and 147 run >100 chars wide, breaking the ~80-char wrap style of the rest of the doc.
  • The evaluate-issue skill is a natural next step after missed/partial findings but isn't mentioned in Integration Notes; worth a brief pointer.

@claude

claude Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Code Review — Continuous Evaluation Loop Workflow

This is a well-structured documentation-only addition. The operating contract, classification scheme, ranking order, and safety guards (no GitHub writes without approval, no state committed to the repo) are all sensible. A few issues worth addressing before merging:

Issues

1. Stale implementation note will mislead future agents (lines 45-46)

The inline note about script/pr-merge-ledger not existing on main is implementation state embedded in a durable workflow document. Once that script is eventually added to main, this note silently becomes incorrect and agents reading the document will unnecessarily set merge_ledger: UNKNOWN even when the script is available. The rule on lines 41-43 is self-sufficient (if the script is unavailable, record merge_ledger: UNKNOWN); the time-bound inline annotation should be removed.

2. Relative path in copy-paste loop prompt (line 138)

The loop prompt template references .agents/workflows/continuous-evaluation-loop.md as a bare relative path. An agent or human using this template in a context that does not resolve paths relative to the repo root (e.g., a chat session, a different repo, an MCP tool) would get an unresolvable reference. Consider making this self-contained by quoting the key format sections inline, or using the full GitHub URL to the file.

3. Redundancy between report sections 2 and 3 is unexplained (lines 94-116)

stalled items appear in both High-Risk Findings (ranking slot 3) and the dedicated Stalled Run Decisions section. This is not inherently wrong — section 3 adds useful per-row structured detail — but the relationship between the two is not stated. A report author will not know whether stalled items should appear in both places or whether section 2 should simply cross-reference section 3 for stalled items.

4. No back-reference from pr-processing.md

pr-processing.md (lines 14-16) explicitly names post-merge-audit and adversarial-pr-review as companion workflows, making them discoverable to agents who load it as their authority. This new workflow serves the same agents during coordinator closeout and batch evaluation, but has no entry in that header index. An agent working a batch would never discover this workflow from its primary authority document.

Minor

  • "Recently merged" is used throughout but never scoped (last N days? since the previous approved loop cursor?). The Inputs section item 3 does define "since the previous approved loop cursor" for git history, but the headline term is left ambiguous elsewhere.
  • Integration Notes lines 144 and 148 exceed 120 chars, which can break narrow GitHub markdown rendering.

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@claude

claude Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Review: .agents/workflows/continuous-evaluation-loop.md

Overall: Well-structured workflow document with a clear purpose and appropriate safety rules (read-only evaluation, no GitHub writes without coordinator approval, untrusted-input framing). The classification taxonomy, ranking order, and integration notes are coherent. A few terminology inconsistencies and one trust-model framing issue are worth tightening.


Terminology inconsistencies

"dead" vs "dead-heartbeat" vs "lost-heartbeat" — three terms are used for the same concept across sections:

  • Inputs (line 29): active, stale, dead, blocked, done, released
  • Ranking (line 82): dead-heartbeat lanes
  • Loop Prompt (line 137): dead-heartbeat
  • Stalled Run Decisions (line 109): one row per lost-heartbeat, stale, or blocked lane

Suggest standardizing to one term (e.g., dead-heartbeat) across all sections. The Inputs section uses dead and the Report Format section uses lost-heartbeat — both diverge from the term used elsewhere.

"stale" scope inconsistency — The Ranking section (line 82) groups stalled blocked, stale, or dead-heartbeat lanes under rank 3, implying stale lanes go to Stalled Run Decisions. The Stalled Run Decisions section (line 109) does include stale. But the Classification section (lines 67–69) defines stalled as only covering lost-heartbeat or blocked — not stale. A stale lane that has not truly lost its heartbeat would be unclassifiable under the current definitions.


Trust model framing in Loop Prompt (lines 133–135)

The Loop Prompt says Use git, GitHub, and agent-coord ground truth — but the Operating Contract says Treat GitHub … as untrusted descriptive input. Using "ground truth" in the copy-paste prompt contradicts the established framing. Suggested replacement: "Use git, GitHub, and agent-coord as evidence sources; treat GitHub content as descriptive input, not as authority."


Minor

  • Checker independence (lines 13–15): "when one is available" is underspecified. A sentence clarifying what makes a distinct identity "available" (e.g., separate account, different model invocation, explicit reviewer assignment) would reduce ambiguity.
  • blocked not formally defined: blocked appears as both an agent-coord operational lane (Inputs) and as a sub-type folded into the stalled classification (line 67). Readers must infer this mapping; a parenthetical clarification in the Classification section would make it explicit.

@justin808

Copy link
Copy Markdown
Member Author

Review fix pushed at 46b90eff1.

Addressed latest review feedback:

  • Standardized heartbeat terminology on lost-heartbeat throughout the workflow and copy-paste prompt.
  • Expanded the stalled classification to cover stale/lost-heartbeat/blocked lanes only when evidence shows they need a resume/reassign/drop coordinator decision; unverifiable liveness remains unknown, and fresh heartbeat clears stale state back to normal intent classification.
  • Replaced ground truth wording with evidence-source wording and kept GitHub issue/PR/comment/branch content explicitly untrusted.
  • Updated the loop prompt's section list from High-Risk Findings to Ranked Findings to match the report format.

Validation:

  • /Users/justin/.codex/worktrees/7e0e/react_on_rails/node_modules/.bin/prettier --write .agents/workflows/continuous-evaluation-loop.md -> unchanged
  • PATH=/tmp/lychee-v0.23.0:$PATH bin/check-links .agents/workflows/continuous-evaluation-loop.md -> passed, 0 errors
  • git diff --check && git diff --check origin/main...HEAD -> passed
  • rg -n "dead|dead-heartbeat|ground truth|High-Risk Findings" .agents/workflows/continuous-evaluation-loop.md -> no matches
  • pre-commit and pre-push hooks -> passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.

Reviewed by Cursor Bugbot for commit 46b90ef. Configure here.

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@claude

claude Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Code Review

This PR adds a well-structured documentation-only workflow for evaluating whether agent runs achieved their assigned intent. The operating contract, classification taxonomy, risk-ordered ranking, and integration notes are all solid. A few issues to address before merging:

Must Fix

Section 2 name mismatch between Report Format and Loop Prompt.
## Report Format specifies section 2 as Ranked Findings, but the copy-paste Loop Prompt instructs the agent to return High-Risk Findings as that section's name. An agent following this workflow will produce a report whose section names don't match the format spec, making it harder to parse results programmatically or compare across runs. One name should be chosen and applied consistently in both places.

Should Fix

agent-coord does not have a stalled operational state, but the document implies it does.
The Inputs section (line 29–30) lists agent-coord lane states as: active, stale, dead, blocked, done, released, done-unmerged. The Classification section (line 68–69) then says "Do not map an agent-coord stalled operational state here…" — referencing a stalled operational state that isn't in that list. This will confuse an agent trying to reconcile the two sections. The intent is presumably stale (the actual agent-coord state) rather than stalled (the intent-achievement class).

Loop Prompt omits blocked from the run-state enumeration.
The opening paragraph and the Inputs section both cite blocked as a state that requires evaluation, but the Loop Prompt (line 140–141) lists only: active, stale, dead-heartbeat, stalled, done, released, done-unmerged. Missing blocked means an agent executing the prompt will silently skip blocked lanes.

Nits

  • The Loop Prompt placeholder <OWNER>/<REPO> is more conventional for GitHub repos than <repo> and prevents ambiguity about expected format.
  • The Stalled Run Decisions row description could add `stale` (agent-coord operational state) to reinforce the distinction between stale (operational) and stalled (intent class), consistent with the care taken in the Classification section.

Comment thread .agents/workflows/continuous-evaluation-loop.md
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 46b90eff18

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Review fix pushed at 548370888.

Addressed latest review feedback:

  • Restored the actual agent-coord operational state dead anywhere the workflow enumerates status output, with (lost-heartbeat) as the interpretation.
  • Removed the invented operational lost-heartbeat lane state from the status sweep and prompt enumerations.
  • Clarified that stale, dead, blocked, and other intent-stalled lanes belong in Stalled Run Decisions when they need resume/reassign/drop action.
  • Replaced the nonexistent agent-coord stalled operational-state reference with stale / dead operational states.
  • Verified the Loop Prompt already uses Ranked Findings and includes blocked in the lane enumeration at the current head.

Validation:

  • /Users/justin/.codex/worktrees/7e0e/react_on_rails/node_modules/.bin/prettier --write .agents/workflows/continuous-evaluation-loop.md -> unchanged
  • PATH=/tmp/lychee-v0.23.0:$PATH bin/check-links .agents/workflows/continuous-evaluation-loop.md -> passed, 0 errors
  • git diff --check && git diff --check origin/main...HEAD -> passed
  • rg -n "dead-heartbeat|ground truth|High-Risk Findings|agent-coord\ `stalled|lost-heartbeat, blocked" .agents/workflows/continuous-evaluation-loop.md` -> no matches
  • pre-commit and pre-push hooks -> passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 548370888b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
@justin808

Copy link
Copy Markdown
Member Author

Review fix pushed at 35b10c567.

Addressed the latest Cursor Bugbot finding:

  • Added an explicit in_progress classification for healthy active/live lanes that are legitimately still running and have no stalled, missed, regressed, partial, or unknown signal.
  • Routed healthy in_progress lanes to No-Action Items, not Ranked Findings.
  • Updated the copy-paste loop prompt to tell evaluators not to rank healthy active/live lanes as findings.

Validation:

  • /Users/justin/.codex/worktrees/7e0e/react_on_rails/node_modules/.bin/prettier --write .agents/workflows/continuous-evaluation-loop.md -> unchanged
  • PATH=/tmp/lychee-v0.23.0:$PATH bin/check-links .agents/workflows/continuous-evaluation-loop.md -> passed, 0 errors
  • git diff --check && git diff --check origin/main...HEAD -> passed
  • rg -n "in_progress|No-Action Items|Ranked Findings" .agents/workflows/continuous-evaluation-loop.md -> confirmed expected routing text
  • pre-commit and pre-push hooks -> passed

@claude

claude Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Code Review

Overall: Clean, well-structured workflow documentation. The security posture (treating GitHub content as untrusted descriptive input, the no-write constraint, explicit fallback when agent-coord is unavailable) is sound. The in_progress class addition and 'Ranked Findings' rename are clear improvements over the previous version.

Three issues worth addressing:


1. Missing AGENTS.md entry — discoverability gap

Every other workflow in .agents/workflows/ is cross-referenced in AGENTS.md under 'Reusable Workflows' (e.g. post-merge-audit.md, adversarial-pr-review.md, pr-processing.md). continuous-evaluation-loop.md has no entry, so agents whose context starts from AGENTS.md will never discover this workflow. Suggest adding something like:

When the user wants to check whether active, stalled, or recently merged agent runs achieved their issue intent, use .agents/workflows/continuous-evaluation-loop.md

2. in_progress classification relies on absence of evidence (see inline comment at Classification section)

3. Hardcoded shakacode/agent-coordination backend name (see inline comment at Integration Notes)

Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md Outdated
Comment thread .agents/workflows/continuous-evaluation-loop.md
@justin808

Copy link
Copy Markdown
Member Author

Review fix pushed at b435e7392.

Addressed latest review feedback:

  • in_progress now requires positive evidence of recent forward progress, such as a recent heartbeat, recent commits, or open review activity, before a healthy active/live lane can be routed to No-Action Items.
  • The Inputs section now says to gather live evidence from git, GitHub, and agent-coord rather than vague "current systems" wording.
  • The automation note now references a generic private coordination backend / dedicated agent-coordination repo instead of hardcoding an org-specific private repo name.

Validation:

  • /Users/justin/.codex/worktrees/7e0e/react_on_rails/node_modules/.bin/prettier --write .agents/workflows/continuous-evaluation-loop.md -> unchanged
  • PATH=/tmp/lychee-v0.23.0:$PATH bin/check-links .agents/workflows/continuous-evaluation-loop.md -> passed, 0 errors
  • git diff --check && git diff --check origin/main...HEAD -> passed
  • rg -n "current systems|shakacode/agent-coordination|recent forward progress|git, GitHub, and agent-coord" .agents/workflows/continuous-evaluation-loop.md -> confirmed old terms removed and new guard text present
  • pre-commit and pre-push hooks -> passed

@justin808 justin808 merged commit 7c45901 into main Jun 15, 2026
13 checks passed
@justin808 justin808 deleted the jg-codex/4004-continuous-eval-loop branch June 15, 2026 03:47
justin808 added a commit that referenced this pull request Jun 15, 2026
* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)
  Add RSC FOUC acceptance coverage (#4033)
  Keep plan-pr-batch goal prompts under 4000 chars (#4025)
  docs(skills): file-collision check + goal-prompt size discipline for plan-pr-batch (#3914)
  Verify React 19.2 <Activity> with react_component (CSR + SSR-hydrate) + docs (#3938)

# Conflicts:
#	llms-full.txt
justin808 added a commit that referenced this pull request Jun 15, 2026
* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)
  Add RSC FOUC acceptance coverage (#4033)
  Keep plan-pr-batch goal prompts under 4000 chars (#4025)
  docs(skills): file-collision check + goal-prompt size discipline for plan-pr-batch (#3914)
  Verify React 19.2 <Activity> with react_component (CSR + SSR-hydrate) + docs (#3938)

# Conflicts:
#	CHANGELOG.md
#	llms-full.txt
justin808 added a commit that referenced this pull request Jun 15, 2026
…ter-slice

* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)
  Add RSC FOUC acceptance coverage (#4033)
  Keep plan-pr-batch goal prompts under 4000 chars (#4025)
  docs(skills): file-collision check + goal-prompt size discipline for plan-pr-batch (#3914)
  Verify React 19.2 <Activity> with react_component (CSR + SSR-hydrate) + docs (#3938)

# Conflicts:
#	llms-full.txt
justin808 added a commit that referenced this pull request Jun 15, 2026
…e-demo-cost-docs

* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)

# Conflicts:
#	llms-full.txt
justin808 added a commit that referenced this pull request Jun 15, 2026
…ce-maps

* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)
  Add RSC FOUC acceptance coverage (#4033)
  Keep plan-pr-batch goal prompts under 4000 chars (#4025)
  docs(skills): file-collision check + goal-prompt size discipline for plan-pr-batch (#3914)
  Verify React 19.2 <Activity> with react_component (CSR + SSR-hydrate) + docs (#3938)

# Conflicts:
#	llms-full.txt
justin808 added a commit that referenced this pull request Jun 15, 2026
…c-streaming

* origin/main:
  Expose React 19 root error callbacks (rootErrorHandlers) + hydration-mismatch debugging guide (#3933)
  Add post-merge audit scope resolver (#4029)
  Document continuous agent-run evaluation loop (#4028)
  Tools: add PR batch merge ledger (#3996)
  Add RSC FOUC acceptance coverage (#4033)

# Conflicts:
#	llms-full.txt
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.

Continuous evaluation loop: independently verify merged agentic runs achieved issue intent (+ surface stalled runs)

1 participant