diff --git a/scripts/check.mjs b/scripts/check.mjs
index c559c8c..4f1a703 100644
--- a/scripts/check.mjs
+++ b/scripts/check.mjs
@@ -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"]],
@@ -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);
@@ -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);
diff --git a/scripts/loop-data.mjs b/scripts/loop-data.mjs
index 5461cf9..4007cbc 100644
--- a/scripts/loop-data.mjs
+++ b/scripts/loop-data.mjs
@@ -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",
};
@@ -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"],
+ },
];
diff --git a/site/assets/social/100-percent-test-coverage-loop-20260619-7.png b/site/assets/social/100-percent-test-coverage-loop-20260619-7.png
new file mode 100644
index 0000000..68f66ac
Binary files /dev/null and b/site/assets/social/100-percent-test-coverage-loop-20260619-7.png differ
diff --git a/site/assets/social/architecture-satisfaction-loop-20260619-7.png b/site/assets/social/architecture-satisfaction-loop-20260619-7.png
new file mode 100644
index 0000000..0a9af2d
Binary files /dev/null and b/site/assets/social/architecture-satisfaction-loop-20260619-7.png differ
diff --git a/site/assets/social/autonomy-loop-20260619-7.png b/site/assets/social/autonomy-loop-20260619-7.png
new file mode 100644
index 0000000..839dbe4
Binary files /dev/null and b/site/assets/social/autonomy-loop-20260619-7.png differ
diff --git a/site/assets/social/boeing-747-benchmark-20260619-7.png b/site/assets/social/boeing-747-benchmark-20260619-7.png
new file mode 100644
index 0000000..e861ccc
Binary files /dev/null and b/site/assets/social/boeing-747-benchmark-20260619-7.png differ
diff --git a/site/assets/social/clodex-adversarial-review-loop-20260619-7.png b/site/assets/social/clodex-adversarial-review-loop-20260619-7.png
new file mode 100644
index 0000000..8c6685b
Binary files /dev/null and b/site/assets/social/clodex-adversarial-review-loop-20260619-7.png differ
diff --git a/site/assets/social/codex-completion-contract-loop-20260619-7.png b/site/assets/social/codex-completion-contract-loop-20260619-7.png
new file mode 100644
index 0000000..ab94214
Binary files /dev/null and b/site/assets/social/codex-completion-contract-loop-20260619-7.png differ
diff --git a/site/assets/social/customer-ai-deployment-loop-20260619-7.png b/site/assets/social/customer-ai-deployment-loop-20260619-7.png
new file mode 100644
index 0000000..0f6c5d0
Binary files /dev/null and b/site/assets/social/customer-ai-deployment-loop-20260619-7.png differ
diff --git a/site/assets/social/devils-advocate-design-loop-20260619-7.png b/site/assets/social/devils-advocate-design-loop-20260619-7.png
new file mode 100644
index 0000000..8ff655c
Binary files /dev/null and b/site/assets/social/devils-advocate-design-loop-20260619-7.png differ
diff --git a/site/assets/social/exhaustive-logging-coverage-loop-20260619-7.png b/site/assets/social/exhaustive-logging-coverage-loop-20260619-7.png
new file mode 100644
index 0000000..d1f37a1
Binary files /dev/null and b/site/assets/social/exhaustive-logging-coverage-loop-20260619-7.png differ
diff --git a/site/assets/social/five-minute-repository-maintainer-loop-20260619-7.png b/site/assets/social/five-minute-repository-maintainer-loop-20260619-7.png
new file mode 100644
index 0000000..7ed3858
Binary files /dev/null and b/site/assets/social/five-minute-repository-maintainer-loop-20260619-7.png differ
diff --git a/site/assets/social/fresh-clone-loop-20260619-7.png b/site/assets/social/fresh-clone-loop-20260619-7.png
new file mode 100644
index 0000000..344fa02
Binary files /dev/null and b/site/assets/social/fresh-clone-loop-20260619-7.png differ
diff --git a/site/assets/social/full-product-evaluation-loop-20260619-7.png b/site/assets/social/full-product-evaluation-loop-20260619-7.png
new file mode 100644
index 0000000..f784e8c
Binary files /dev/null and b/site/assets/social/full-product-evaluation-loop-20260619-7.png differ
diff --git a/site/assets/social/infinite-clickbait-loop-20260619-7.png b/site/assets/social/infinite-clickbait-loop-20260619-7.png
new file mode 100644
index 0000000..4201d61
Binary files /dev/null and b/site/assets/social/infinite-clickbait-loop-20260619-7.png differ
diff --git a/site/assets/social/loop-harness-verification-loop-20260619-7.png b/site/assets/social/loop-harness-verification-loop-20260619-7.png
new file mode 100644
index 0000000..670a529
Binary files /dev/null and b/site/assets/social/loop-harness-verification-loop-20260619-7.png differ
diff --git a/site/assets/social/loop-library-20260619-7.png b/site/assets/social/loop-library-20260619-7.png
new file mode 100644
index 0000000..2cc901c
Binary files /dev/null and b/site/assets/social/loop-library-20260619-7.png differ
diff --git a/site/assets/social/nightly-changelog-sweep-20260619-7.png b/site/assets/social/nightly-changelog-sweep-20260619-7.png
new file mode 100644
index 0000000..d8f2dc0
Binary files /dev/null and b/site/assets/social/nightly-changelog-sweep-20260619-7.png differ
diff --git a/site/assets/social/overnight-docs-sweep-20260619-7.png b/site/assets/social/overnight-docs-sweep-20260619-7.png
new file mode 100644
index 0000000..e903bdc
Binary files /dev/null and b/site/assets/social/overnight-docs-sweep-20260619-7.png differ
diff --git a/site/assets/social/post-release-baseline-loop-20260619-7.png b/site/assets/social/post-release-baseline-loop-20260619-7.png
new file mode 100644
index 0000000..bb4f108
Binary files /dev/null and b/site/assets/social/post-release-baseline-loop-20260619-7.png differ
diff --git a/site/assets/social/product-update-podcast-loop-20260619-7.png b/site/assets/social/product-update-podcast-loop-20260619-7.png
new file mode 100644
index 0000000..3ad2e37
Binary files /dev/null and b/site/assets/social/product-update-podcast-loop-20260619-7.png differ
diff --git a/site/assets/social/production-data-cleanup-loop-20260619-7.png b/site/assets/social/production-data-cleanup-loop-20260619-7.png
new file mode 100644
index 0000000..de3a04d
Binary files /dev/null and b/site/assets/social/production-data-cleanup-loop-20260619-7.png differ
diff --git a/site/assets/social/production-error-sweep-20260619-7.png b/site/assets/social/production-error-sweep-20260619-7.png
new file mode 100644
index 0000000..16db19c
Binary files /dev/null and b/site/assets/social/production-error-sweep-20260619-7.png differ
diff --git a/site/assets/social/quality-streak-loop-20260619-7.png b/site/assets/social/quality-streak-loop-20260619-7.png
new file mode 100644
index 0000000..385c7b7
Binary files /dev/null and b/site/assets/social/quality-streak-loop-20260619-7.png differ
diff --git a/site/assets/social/repository-cleanup-loop-20260619-7.png b/site/assets/social/repository-cleanup-loop-20260619-7.png
new file mode 100644
index 0000000..9b6ca56
Binary files /dev/null and b/site/assets/social/repository-cleanup-loop-20260619-7.png differ
diff --git a/site/assets/social/revolve-self-improvement-loop-20260619-7.png b/site/assets/social/revolve-self-improvement-loop-20260619-7.png
new file mode 100644
index 0000000..4e4c6d8
Binary files /dev/null and b/site/assets/social/revolve-self-improvement-loop-20260619-7.png differ
diff --git a/site/assets/social/self-improving-champion-loop-20260619-7.png b/site/assets/social/self-improving-champion-loop-20260619-7.png
new file mode 100644
index 0000000..4cc43e0
Binary files /dev/null and b/site/assets/social/self-improving-champion-loop-20260619-7.png differ
diff --git a/site/assets/social/seo-geo-visibility-loop-20260619-7.png b/site/assets/social/seo-geo-visibility-loop-20260619-7.png
new file mode 100644
index 0000000..8e15673
Binary files /dev/null and b/site/assets/social/seo-geo-visibility-loop-20260619-7.png differ
diff --git a/site/assets/social/stale-safe-batch-release-loop-20260619-7.png b/site/assets/social/stale-safe-batch-release-loop-20260619-7.png
new file mode 100644
index 0000000..c00ba26
Binary files /dev/null and b/site/assets/social/stale-safe-batch-release-loop-20260619-7.png differ
diff --git a/site/assets/social/sub-50ms-page-load-loop-20260619-7.png b/site/assets/social/sub-50ms-page-load-loop-20260619-7.png
new file mode 100644
index 0000000..d89dc30
Binary files /dev/null and b/site/assets/social/sub-50ms-page-load-loop-20260619-7.png differ
diff --git a/site/assets/social/test-suite-speed-loop-20260619-7.png b/site/assets/social/test-suite-speed-loop-20260619-7.png
new file mode 100644
index 0000000..ec5ff25
Binary files /dev/null and b/site/assets/social/test-suite-speed-loop-20260619-7.png differ
diff --git a/site/assets/social/ticket-to-pr-ready-loop-20260619-7.png b/site/assets/social/ticket-to-pr-ready-loop-20260619-7.png
new file mode 100644
index 0000000..5ff4dac
Binary files /dev/null and b/site/assets/social/ticket-to-pr-ready-loop-20260619-7.png differ
diff --git a/site/assets/social/war-loops-frontend-designer-20260619-7.png b/site/assets/social/war-loops-frontend-designer-20260619-7.png
new file mode 100644
index 0000000..3550683
Binary files /dev/null and b/site/assets/social/war-loops-frontend-designer-20260619-7.png differ
diff --git a/site/catalog.json b/site/catalog.json
index 78288b4..5c7c359 100644
--- a/site/catalog.json
+++ b/site/catalog.json
@@ -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",
@@ -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"
}
]
}
diff --git a/site/catalog.md b/site/catalog.md
index 32d184c..9923a4e 100644
--- a/site/catalog.md
+++ b/site/catalog.md
@@ -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/)
diff --git a/site/feed.xml b/site/feed.xml
index 1b0dac0..d8fa0c2 100644
--- a/site/feed.xml
+++ b/site/feed.xml
@@ -329,4 +329,15 @@
A Revolve workflow that improves prompts, code, or configurations through checkpointed experiments whose scores remain comparable across sessions.
+
+ The five-minute repository maintainer loop
+ https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/
+
+ 2026-06-19T00:00:00-07:00
+ 2026-06-19T00:00:00-07:00
+
+ Peter Steinberger
+
+ A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.
+
diff --git a/site/index.html b/site/index.html
index c40bc37..2cc583d 100644
--- a/site/index.html
+++ b/site/index.html
@@ -58,11 +58,11 @@
/>
Keeps repository work moving through dedicated threads without interrupting active agents.
+
+ 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 / stop
+ 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.
+
A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.
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 / stop
+
+
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.
+
+
+
+
+
+ Context and guidance
+ When to use it, steps, safety notes, and related loops
+
+
+
+
+
+
Published
+
+
+
+
Updated
+
+
+
+
+
+
Use this 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.
+
+
+
+
How to run it
+
+
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 it works
+
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.
+
+
+
+
Implementation 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.