Conversation
Automated sync from stranske/Workflows Template hash: a4c8811ece41 Changes synced from sync-manifest.yml
🤖 Keepalive Loop StatusPR #142 | Agent: Codex | Iteration 0/5 Current State
🔍 Failure Classification| Error type | infrastructure | |
|
Autofix updated these files:
|
There was a problem hiding this comment.
Pull request overview
Syncs automation/workflow templates from stranske/Workflows, expanding the repo’s agent automation to be registry-driven (agent keys/branch prefixes), and standardizing LangSmith metadata wiring across LangChain scripts.
Changes:
- Introduces an agent registry (
.github/agents/registry.yml) plus a JS helper (.github/scripts/agent_registry.js) and wires multiple workflows to resolve agent behavior from labels/registry. - Updates belt/autofix/verify workflows to accept/propagate
agent_key, adjust branch naming, and improve autofix triggering. - Updates LLM workflow/runtime pins and centralizes LangSmith metadata construction.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/requirements-llm.txt | Bumps pinned LangChain-related runtime versions for workflow LLM steps. |
| tools/llm_provider.py | Adds shared LangSmith metadata/tag builder + trace URL helper. |
| scripts/sync_dev_dependencies.py | Simplifies dependency drift reporting/exit flow. |
| scripts/langchain/progress_reviewer.py | Minor string formatting adjustment in heuristic summaries. |
| scripts/langchain/pr_verifier.py | Switches LangSmith config building to shared helper with fallback. |
| scripts/langchain/issue_optimizer.py | Removes stray whitespace (format-only change). |
| scripts/langchain/followup_issue_generator.py | Switches LangSmith config building to shared helper with fallback. |
| CLAUDE.md | Removes CI policy block from assistant context doc. |
| .github/workflows/autofix.yml | Adds workflow_job trigger + refactors PR file listing with rate-limit fallback. |
| .github/workflows/agents-verify-to-new-pr.yml | Includes agent registry in sparse checkout and labels follow-ups using resolved agent key. |
| .github/workflows/agents-verify-to-issue.yml | Updates instructions to refer to generic agent:* labels. |
| .github/workflows/agents-verify-to-issue-v2.yml | Includes agent registry in sparse checkout and labels follow-ups using resolved agent key. |
| .github/workflows/agents-autofix-loop.yml | Resolves agent type and gates autofix loop to codex-only support. |
| .github/workflows/agents-auto-pilot.yml | Uses registry default agent for labeling and dispatches belt with agent_key. |
| .github/workflows/agents-73-codex-belt-conveyor.yml | Adds agent_key input; makes conveyor concurrency/branch validation agent-aware; passes agent_key on redispatch. |
| .github/workflows/agents-72-codex-belt-worker.yml | Adds agent_key input; makes concurrency/output/labels/branches agent-aware in steps. |
| .github/workflows/agents-72-codex-belt-worker-dispatch.yml | Adds agent_key input and forwards it to the reusable worker workflow. |
| .github/workflows/agents-71-codex-belt-dispatcher.yml | Adds agent_key input/output; selects issues and branch prefixes per agent registry. |
| .github/scripts/keepalive_loop.js | Resolves agent routing via registry helper while keeping keepalive opt-in behavior. |
| .github/scripts/agent_registry.js | Adds minimal YAML registry loader + label routing/config helpers. |
| .github/agents/registry.yml | Defines default agent and per-agent config (runner workflow, branch prefix, capabilities). |
| LangSmith is enabled. | ||
| """ | ||
| repo = repo or os.environ.get("GITHUB_REPOSITORY", "unknown") | ||
| run_id = run_id or os.environ.get("GITHUB_RUN_ID", "unknown") |
There was a problem hiding this comment.
build_langsmith_metadata() no longer mirrors the previous run-id resolution logic used by callers (they checked GITHUB_RUN_ID or RUN_ID). Since this helper is now the common path, consider resolving run_id via GITHUB_RUN_ID then falling back to RUN_ID before defaulting to unknown, to avoid losing run correlation in non-GitHub contexts/tests that set RUN_ID.
| run_id = run_id or os.environ.get("GITHUB_RUN_ID", "unknown") | |
| if run_id is None: | |
| run_id = os.environ.get("GITHUB_RUN_ID") or os.environ.get("RUN_ID") or "unknown" |
| const concurrencyGroup = concurrencyKey | ||
| ? (agentKey === 'codex' | ||
| ? `codex-belt-${concurrencyKey}` | ||
| : `belt-${agentKey}-${concurrencyKey}`) | ||
| : ''; |
There was a problem hiding this comment.
The worker computes a per-agent concurrency group (using belt-${agentKey}-... for non-codex), but the workflow-level concurrency.group is still hard-coded to codex-belt-... (see top of file). This can cause runs for different agents/keys to cancel each other and also makes the summary/output concurrency group disagree with actual concurrency behavior. Update the workflow concurrency.group expression to incorporate the normalized agent_key the same way this step does.
| (inputs.agent_key || 'codex') == 'codex' | ||
| && format('codex-belt-conveyor-{0}', inputs.branch || format('issue-{0}', inputs.issue) || github.run_id) | ||
| || format('belt-{0}-conveyor-{1}', | ||
| inputs.agent_key || 'codex', |
There was a problem hiding this comment.
Top-level concurrency grouping uses the raw inputs.agent_key value (case-sensitive). Since the JS steps normalize agent_key to lower-case, dispatches like Codex vs codex can end up in different concurrency groups (allowing parallel runs / unexpected cancellations) even though they represent the same agent. Normalize inputs.agent_key in the expression (e.g., via toLower(...)) or validate/force lower-case inputs consistently.
| (inputs.agent_key || 'codex') == 'codex' | |
| && format('codex-belt-conveyor-{0}', inputs.branch || format('issue-{0}', inputs.issue) || github.run_id) | |
| || format('belt-{0}-conveyor-{1}', | |
| inputs.agent_key || 'codex', | |
| toLower(inputs.agent_key || 'codex') == 'codex' | |
| && format('codex-belt-conveyor-{0}', inputs.branch || format('issue-{0}', inputs.issue) || github.run_id) | |
| || format('belt-{0}-conveyor-{1}', | |
| toLower(inputs.agent_key || 'codex'), |
|
Superseded by newer sync PR #143 |
Sync Summary
Files Updated
Files Skipped
Review Checklist
Source: stranske/Workflows
Manifest:
.github/sync-manifest.yml