Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ test('runKeepaliveGate skips when keepalive is paused by label', async () => {
const { runKeepaliveGate, restore } = loadRunnerWithGate(gateStub);

const pr = makePullRequest({
labels: ['agents:pause', 'agents:keepalive', 'agent:codex'],
labels: ['agents:paused', 'agents:keepalive', 'agent:codex'],
});

await runKeepaliveGate({
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/keepalive_gate.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const AGENT_LABEL_PREFIX = 'agent:';
const MAX_RUNS_PREFIX = 'agents:max-runs:';
const SYNC_REQUIRED_LABEL = 'agents:sync-required';
const ACTIVATED_LABEL = 'agents:activated';
const PAUSE_LABEL = 'agents:pause';
const PAUSE_LABEL = 'agents:paused';
const DEFAULT_RUN_CAP = 1;
const MIN_RUN_CAP = 1;
const MAX_RUN_CAP = 5;
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/keepalive_orchestrator_gate_runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ async function runKeepaliveGate({ core, github, context, env }) {
.filter(Boolean)
);

if (currentLabels.has('agents:pause')) {
if (currentLabels.has('agents:paused')) {
addReason('keepalive-paused');
summary.addRaw('Keepalive paused by agents:pause label.').addEOL();
summary.addRaw('Keepalive paused by agents:paused label.').addEOL();
}

const requiredLabels = ['agents:keepalive'];
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ The nested job 'job_name' is requesting 'contents: write', but is only allowed '
- Check PR has `agent:codex` label
- Check Gate workflow passed
- Check PR body has unchecked tasks in Automated Status Summary
- Check `agents:pause` label is NOT present
- Check `agents:paused` label is NOT present

## Documentation Index

Expand Down
2 changes: 1 addition & 1 deletion docs/keepalive/GoalsAndPlumbing.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ If any requirement fails, keepalive stays silent—no PR comments. Operators may
## 4. Pause & Stop Controls

- Removing the `agent:*` label halts new dispatches until a label is re-applied and all guardrails pass again.
- Respect the stronger `agents:pause` label, which blocks *all* keepalive activity.
- Respect the `agents:paused` label, which blocks *all* keepalive activity.
- After repeated failures (default: 3), the loop pauses and adds `needs-human` label.

**To resume after failure:**
Expand Down
831 changes: 801 additions & 30 deletions docs/plans/langchain-post-code-rollout.md

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions templates/consumer-repo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ The keepalive system uses PR labels for routing and control:
### Control Labels
| Label | Effect |
|-------|--------|
| `agents:pause` | Halts all agent activity on PR |
| `agents:paused` | Halts all agent activity on PR |
| `agents:max-parallel:N` | Overrides concurrent run limit (default: 1) |
| `needs-human` | Auto-added after repeated failures, blocks keepalive |

Expand All @@ -208,7 +208,7 @@ Keepalive dispatches an agent only when **ALL** conditions are met:
2. Gate workflow completed successfully
3. PR body contains unchecked tasks in Automated Status Summary
4. Not at concurrency limit (default: 1 concurrent run per PR)
5. No `agents:pause` or `needs-human` labels present
5. No `agents:paused` or `needs-human` labels present

### Progress Tracking
- Agent updates checkboxes in PR body after completing tasks
Expand All @@ -222,8 +222,8 @@ After 3 consecutive failures:
3. Fix issues, then remove `needs-human` label to resume

### Manual Control
- **Pause**: Add `agents:pause` label
- **Resume**: Remove `agents:pause` or `needs-human` label
- **Pause**: Add `agents:paused` label
- **Resume**: Remove `agents:paused` or `needs-human` label
- **Restart**: Remove and re-add the `agent:*` label
- **Force retry**: Use workflow_dispatch with PR number

Expand Down Expand Up @@ -302,7 +302,7 @@ When using agent workflows, the recommended flow is:
- Check PR has `agent:*` label
- Verify Gate workflow passed
- Ensure PR body has Automated Status Summary with unchecked tasks
- Check for `agents:pause` or `needs-human` labels
- Check for `agents:paused` or `needs-human` labels
- Review keepalive summary comment for skip reasons

**2. No Automated Status Summary**
Expand Down
Loading