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
7 changes: 6 additions & 1 deletion scripts/check.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ const requestedConceptSlugs = [
"autonomy-loop",
"codex-completion-contract-loop",
"revolve-self-improvement-loop",
"five-minute-repository-maintainer-loop",
];
const submissionPromptAnchors = new Map([
["ticket-to-pr-ready-loop", ["bug report", "customer complaint"]],
Expand All @@ -172,6 +173,10 @@ const submissionPromptAnchors = new Map([
["autonomy-loop", ["autonomy-loop", "LOOP-STATE.md", "red-before"]],
["codex-completion-contract-loop", ["$goal-planner-codex", "landing a PR"]],
["revolve-self-improvement-loop", ["Revolve", "revolve/", "support prompt"]],
[
"five-minute-repository-maintainer-loop",
["every five minutes", "one thread per repository", "autoreview"],
],
]);

assert.equal(collection.mainEntity.numberOfItems, loops.length);
Expand All @@ -189,7 +194,7 @@ assert.deepEqual(agentLoopTerm.sameAs, [
"https://code.claude.com/docs/en/agent-sdk/agent-loop",
"https://arxiv.org/abs/2210.03629",
]);
assert.equal(loops.length, 29);
assert.equal(loops.length, 30);
assert.equal(slugs.size, loops.length);
assert.equal(titles.size, loops.length);
assert.equal(prompts.size, loops.length);
Expand Down
44 changes: 43 additions & 1 deletion scripts/loop-data.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export const site = {
description:
"Practical AI agent workflows for engineering, research, editorial work, evaluation, and operations.",
updated: "2026-06-19",
socialImageVersion: "20260619-6",
socialImageVersion: "20260619-7",
socialImageExtension: "png",
socialImageMimeType: "image/png",
};
Expand Down Expand Up @@ -1184,4 +1184,46 @@ export const loops = [
],
related: ["self-improving-champion-loop", "full-product-evaluation-loop"],
},
{
number: "030",
slug: "five-minute-repository-maintainer-loop",
title: "The five-minute repository maintainer loop",
summary:
"Keeps repository work moving through dedicated threads without interrupting active agents.",
seoTitle: "Five-Minute Repository Maintainer Loop | Loop Library",
description:
"A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.",
categoryLabel: "AI repository operations workflow",
author: "Peter Steinberger",
sourceUrl:
"https://github.com/steipete/agent-scripts/blob/main/skills/maintainer-orchestrator/SKILL.md",
published: "2026-06-19",
modified: "2026-06-19",
prompt:
"While repository maintenance is active, wake every five minutes. Triage [repositories] and read each repository thread's latest state. Reuse one thread per repository; assign its highest-value bounded task only within granted permissions, and do not interrupt coherent active work. Require tests, live proof, autoreview, and green CI before work can land. Escalate product, access, security, or irreversible decisions. Record meaningful changes and stop when every item is landed, decision-ready, blocked, or has no work.",
verifyTitle:
"Every repository item reaches a proven handoff or terminal state.",
verifyDetail:
"Authorized autonomous work lands with evidence; other items are decision-ready, blocked with one exact ask, or recorded as a clean no-op.",
useWhen:
"Use this when Codex may coordinate maintenance across several active repositories and you want parallel work to stay steerable without duplicating or micromanaging threads.",
steps: [
"Define the repository scope, exclusions, and separate permissions for triage, delegation, implementation, push, CI repair, merge, and release.",
"Every five minutes, refresh each repository queue and read the latest state of its existing thread before choosing the highest-value eligible item.",
"Reuse one thread per repository, assign one bounded task, and let coherent active work continue unless it is blocked, stalled, unsafe, or off course.",
"Require tests, live proof, autoreview, and green CI; record the evidence, then route the next item or present the owner with one exact decision.",
],
why:
"A five-minute heartbeat keeps the control plane current without turning polling into micromanagement. One thread per repository preserves context, while proof and authorization gates make autonomous landing auditable.",
note:
"The source pairs Maintainer Orchestrator with github-project-triage, autoreview, and computer use for live proof. A heartbeat automates observation, not authority: triage, delegation, implementation, push, merge, and release remain separate permissions. Read current thread state before steering, and never duplicate or interrupt active work.",
keywords: [
"Codex repository maintenance",
"multi-repository orchestration",
"five minute agent loop",
"GitHub project triage",
"thread delegation",
],
related: ["ticket-to-pr-ready-loop", "stale-safe-batch-release-loop"],
},
];
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/assets/social/autonomy-loop-20260619-7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added site/assets/social/loop-library-20260619-7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 49 additions & 1 deletion site/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"catalogUrl": "https://signals.forwardfuture.ai/loop-library/catalog.json",
"markdownUrl": "https://signals.forwardfuture.ai/loop-library/catalog.md",
"updated": "2026-06-19",
"loopCount": 29,
"loopCount": 30,
"categories": [
{
"slug": "engineering",
Expand Down Expand Up @@ -1403,6 +1403,54 @@
}
],
"sourceUrl": "https://github.com/agent0ai/revolve"
},
{
"number": "030",
"slug": "five-minute-repository-maintainer-loop",
"title": "The five-minute repository maintainer loop",
"url": "https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/",
"category": {
"slug": "engineering",
"label": "Engineering"
},
"author": "Peter Steinberger",
"published": "2026-06-19",
"modified": "2026-06-19",
"description": "A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.",
"useWhen": "Use this when Codex may coordinate maintenance across several active repositories and you want parallel work to stay steerable without duplicating or micromanaging threads.",
"prompt": "While repository maintenance is active, wake every five minutes. Triage [repositories] and read each repository thread's latest state. Reuse one thread per repository; assign its highest-value bounded task only within granted permissions, and do not interrupt coherent active work. Require tests, live proof, autoreview, and green CI before work can land. Escalate product, access, security, or irreversible decisions. Record meaningful changes and stop when every item is landed, decision-ready, blocked, or has no work.",
"verification": {
"title": "Every repository item reaches a proven handoff or terminal state.",
"detail": "Authorized autonomous work lands with evidence; other items are decision-ready, blocked with one exact ask, or recorded as a clean no-op."
},
"steps": [
"Define the repository scope, exclusions, and separate permissions for triage, delegation, implementation, push, CI repair, merge, and release.",
"Every five minutes, refresh each repository queue and read the latest state of its existing thread before choosing the highest-value eligible item.",
"Reuse one thread per repository, assign one bounded task, and let coherent active work continue unless it is blocked, stalled, unsafe, or off course.",
"Require tests, live proof, autoreview, and green CI; record the evidence, then route the next item or present the owner with one exact decision."
],
"why": "A five-minute heartbeat keeps the control plane current without turning polling into micromanagement. One thread per repository preserves context, while proof and authorization gates make autonomous landing auditable.",
"implementationNote": "The source pairs Maintainer Orchestrator with github-project-triage, autoreview, and computer use for live proof. A heartbeat automates observation, not authority: triage, delegation, implementation, push, merge, and release remain separate permissions. Read current thread state before steering, and never duplicate or interrupt active work.",
"keywords": [
"Codex repository maintenance",
"multi-repository orchestration",
"five minute agent loop",
"GitHub project triage",
"thread delegation"
],
"related": [
{
"slug": "ticket-to-pr-ready-loop",
"title": "The ticket-to-PR-ready loop",
"url": "https://signals.forwardfuture.ai/loop-library/loops/ticket-to-pr-ready-loop/"
},
{
"slug": "stale-safe-batch-release-loop",
"title": "The stale-safe batch release loop",
"url": "https://signals.forwardfuture.ai/loop-library/loops/stale-safe-batch-release-loop/"
}
],
"sourceUrl": "https://github.com/steipete/agent-scripts/blob/main/skills/maintainer-orchestrator/SKILL.md"
}
]
}
9 changes: 9 additions & 0 deletions site/catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,3 +268,12 @@ URL above.
- Verify: The best Revolve checkpoint wins within one evaluation revision. The incumbent and candidates have comparable recorded runs, accepted changes pass every guard, rollback is available, and live promotion has approval.
- Keywords: Revolve, agent self improvement, checkpoint evaluation, revisioned experiments, evidence based promotion
- Related: [The self-improving champion loop](https://signals.forwardfuture.ai/loop-library/loops/self-improving-champion-loop/), [The full product evaluation loop](https://signals.forwardfuture.ai/loop-library/loops/full-product-evaluation-loop/)

## 030 — [The five-minute repository maintainer loop](https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/)

- Category: Engineering
- Use when: Use this when Codex may coordinate maintenance across several active repositories and you want parallel work to stay steerable without duplicating or micromanaging threads.
- Prompt: While repository maintenance is active, wake every five minutes. Triage [repositories] and read each repository thread's latest state. Reuse one thread per repository; assign its highest-value bounded task only within granted permissions, and do not interrupt coherent active work. Require tests, live proof, autoreview, and green CI before work can land. Escalate product, access, security, or irreversible decisions. Record meaningful changes and stop when every item is landed, decision-ready, blocked, or has no work.
- Verify: Every repository item reaches a proven handoff or terminal state. Authorized autonomous work lands with evidence; other items are decision-ready, blocked with one exact ask, or recorded as a clean no-op.
- Keywords: Codex repository maintenance, multi-repository orchestration, five minute agent loop, GitHub project triage, thread delegation
- Related: [The ticket-to-PR-ready loop](https://signals.forwardfuture.ai/loop-library/loops/ticket-to-pr-ready-loop/), [The stale-safe batch release loop](https://signals.forwardfuture.ai/loop-library/loops/stale-safe-batch-release-loop/)
11 changes: 11 additions & 0 deletions site/feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -329,4 +329,15 @@
</author>
<summary>A Revolve workflow that improves prompts, code, or configurations through checkpointed experiments whose scores remain comparable across sessions.</summary>
</entry>
<entry>
<title>The five-minute repository maintainer loop</title>
<id>https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/</id>
<link href="https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/" />
<published>2026-06-19T00:00:00-07:00</published>
<updated>2026-06-19T00:00:00-07:00</updated>
<author>
<name>Peter Steinberger</name>
</author>
<summary>A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.</summary>
</entry>
</feed>
61 changes: 55 additions & 6 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,11 @@
/>
<meta
property="og:image"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-6.png"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-7.png"
/>
<meta
property="og:image:secure_url"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-6.png"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-7.png"
/>
<meta property="og:image:type" content="image/png" />
<meta
Expand All @@ -82,7 +82,7 @@
/>
<meta
name="twitter:image"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-6.png"
content="https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-7.png"
/>
<meta
name="twitter:image:alt"
Expand Down Expand Up @@ -152,7 +152,7 @@
"dateModified": "2026-06-19",
"primaryImageOfPage": {
"@type": "ImageObject",
"url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-6.png",
"url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-library-20260619-7.png",
"width": 1200,
"height": 630
},
Expand All @@ -164,7 +164,7 @@
},
"mainEntity": {
"@type": "ItemList",
"numberOfItems": 29,
"numberOfItems": 30,
"itemListElement": [
{
"@type": "ListItem",
Expand Down Expand Up @@ -339,6 +339,12 @@
"position": 29,
"name": "The Revolve versioned-experiment loop",
"url": "https://signals.forwardfuture.ai/loop-library/loops/revolve-self-improvement-loop/"
},
{
"@type": "ListItem",
"position": 30,
"name": "The five-minute repository maintainer loop",
"url": "https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/"
}
]
}
Expand Down Expand Up @@ -545,7 +551,7 @@ <h2 id="agent-skill-title">
</div>

<div class="results-line">
<p id="results-count" aria-live="polite">Showing 29 loops</p>
<p id="results-count" aria-live="polite">Showing 30 loops</p>
<time datetime="2026-06-19">Updated June 19, 2026</time>
</div>

Expand Down Expand Up @@ -1710,6 +1716,49 @@ <h3>
</td>
</tr>

<tr
class="loop-row"
data-copy-root
data-category="engineering"
data-search="five minute repository maintainer codex orchestration triage threads autoreview live proof peter steinberger"
>
<td class="cell-number">030</td>
<td class="cell-loop">
<div class="loop-meta">
<span class="loop-category">Engineering</span>
<span class="loop-attribution">By Peter Steinberger</span>
</div>
<h3>
<a class="loop-title-link" href="./loops/five-minute-repository-maintainer-loop/">
The five-minute repository maintainer loop
</a>
</h3>
<p class="loop-summary">Keeps repository work moving through dedicated threads without interrupting active agents.</p>
<p data-prompt>
While repository maintenance is active, wake every five
minutes. Triage [repositories] and read each repository
thread's latest state. Reuse one thread per repository;
assign its highest-value bounded task only within granted
permissions, and do not interrupt coherent active work.
Require tests, live proof, autoreview, and green CI before
work can land. Escalate product, access, security, or
irreversible decisions. Record meaningful changes and stop
when every item is landed, decision-ready, blocked, or has
no work.
</p>
</td>
<td class="cell-check">
<span class="cell-label">Verify / stop</span>
<strong>Every repository item reaches a proven handoff or terminal state.</strong>
<span>Authorized autonomous work lands with evidence; other items are decision-ready, blocked with one exact ask, or recorded as a clean no-op.</span>
</td>
<td class="cell-action">
<button class="copy-button" type="button">
<span>Copy</span>
</button>
</td>
</tr>

</tbody>
</table>
</div>
Expand Down
8 changes: 4 additions & 4 deletions site/loops/100-percent-test-coverage-loop/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
<meta property="og:title" content="100% Test Coverage Loop for Coding Agents | Loop Library" />
<meta property="og:description" content="A goal-based coding-agent workflow that identifies uncovered behavior, adds meaningful tests, and stops when the full suite passes at 100% coverage." />
<meta property="og:url" content="https://signals.forwardfuture.ai/loop-library/loops/100-percent-test-coverage-loop/" />
<meta property="og:image" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-6.png" />
<meta property="og:image:secure_url" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-6.png" />
<meta property="og:image" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-7.png" />
<meta property="og:image:secure_url" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-7.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
Expand All @@ -49,7 +49,7 @@
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="100% Test Coverage Loop for Coding Agents | Loop Library" />
<meta name="twitter:description" content="A goal-based coding-agent workflow that identifies uncovered behavior, adds meaningful tests, and stops when the full suite passes at 100% coverage." />
<meta name="twitter:image" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-6.png" />
<meta name="twitter:image" content="https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-7.png" />
<meta name="twitter:image:alt" content="The 100% test coverage loop — Forward Future Loop Library" />
<link rel="canonical" href="https://signals.forwardfuture.ai/loop-library/loops/100-percent-test-coverage-loop/" />
<link rel="sitemap" type="application/xml" href="https://signals.forwardfuture.ai/loop-library/sitemap.xml" />
Expand Down Expand Up @@ -99,7 +99,7 @@
],
"image": {
"@type": "ImageObject",
"url": "https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-6.png",
"url": "https://signals.forwardfuture.ai/loop-library/assets/social/100-percent-test-coverage-loop-20260619-7.png",
"width": 1200,
"height": 630
},
Expand Down
Loading
Loading