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 @@ />
-

Showing 29 loops

+

Showing 30 loops

@@ -1710,6 +1716,49 @@

+ + 030 + +
+ Engineering + By Peter Steinberger +
+

+ + The five-minute repository maintainer loop + +

+

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. + + + + + + diff --git a/site/loops/100-percent-test-coverage-loop/index.html b/site/loops/100-percent-test-coverage-loop/index.html index 6d57b4f..c7af50f 100644 --- a/site/loops/100-percent-test-coverage-loop/index.html +++ b/site/loops/100-percent-test-coverage-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -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 }, diff --git a/site/loops/architecture-satisfaction-loop/index.html b/site/loops/architecture-satisfaction-loop/index.html index 27fe871..ae6131b 100644 --- a/site/loops/architecture-satisfaction-loop/index.html +++ b/site/loops/architecture-satisfaction-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/architecture-satisfaction-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/architecture-satisfaction-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/autonomy-loop/index.html b/site/loops/autonomy-loop/index.html index 144ebc8..55c8b3f 100644 --- a/site/loops/autonomy-loop/index.html +++ b/site/loops/autonomy-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/inferencegod/autonomy-loop", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/autonomy-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/autonomy-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/boeing-747-benchmark/index.html b/site/loops/boeing-747-benchmark/index.html index ce583a3..b16436d 100644 --- a/site/loops/boeing-747-benchmark/index.html +++ b/site/loops/boeing-747-benchmark/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://x.com/victormustar/status/2064449741685968967", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/boeing-747-benchmark-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/boeing-747-benchmark-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/clodex-adversarial-review-loop/index.html b/site/loops/clodex-adversarial-review-loop/index.html index 3269789..f37e8d7 100644 --- a/site/loops/clodex-adversarial-review-loop/index.html +++ b/site/loops/clodex-adversarial-review-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/lukaskucinski/clodex", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/clodex-adversarial-review-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/clodex-adversarial-review-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/codex-completion-contract-loop/index.html b/site/loops/codex-completion-contract-loop/index.html index 72d7416..9f8e39a 100644 --- a/site/loops/codex-completion-contract-loop/index.html +++ b/site/loops/codex-completion-contract-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/ranvier2d2/skills-share/tree/main/skills/goal-planner-codex", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/codex-completion-contract-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/codex-completion-contract-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/customer-ai-deployment-loop/index.html b/site/loops/customer-ai-deployment-loop/index.html index f2c2e27..d399e34 100644 --- a/site/loops/customer-ai-deployment-loop/index.html +++ b/site/loops/customer-ai-deployment-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://www.agentled.ai/en/blog/post/beginners-buy-ai-automations-experts-build-ai-deployment-loops", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/customer-ai-deployment-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/customer-ai-deployment-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/devils-advocate-design-loop/index.html b/site/loops/devils-advocate-design-loop/index.html index 1968354..6e4df3d 100644 --- a/site/loops/devils-advocate-design-loop/index.html +++ b/site/loops/devils-advocate-design-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/devils-advocate-design-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/devils-advocate-design-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/exhaustive-logging-coverage-loop/index.html b/site/loops/exhaustive-logging-coverage-loop/index.html index 8f7ab7c..e14f641 100644 --- a/site/loops/exhaustive-logging-coverage-loop/index.html +++ b/site/loops/exhaustive-logging-coverage-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/exhaustive-logging-coverage-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/exhaustive-logging-coverage-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/five-minute-repository-maintainer-loop/index.html b/site/loops/five-minute-repository-maintainer-loop/index.html new file mode 100644 index 0000000..50b48d8 --- /dev/null +++ b/site/loops/five-minute-repository-maintainer-loop/index.html @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Five-Minute Repository Maintainer Loop | Loop Library + + + + + + +
+ + +
+
+

Loop 030

+

The five-minute repository maintainer loop

+

A five-minute Codex workflow that triages repositories, directs bounded maintenance to dedicated threads, and requires proof and permission before work lands.

+ +
+ +
+
+
+
+

Ready-to-use prompt

+

Copy the loop

+
+ +
+

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

+
    +
  1. Define the repository scope, exclusions, and separate permissions for triage, delegation, implementation, push, CI repair, merge, and release.
  2. +
  3. Every five minutes, refresh each repository queue and read the latest state of its existing thread before choosing the highest-value eligible item.
  4. +
  5. Reuse one thread per repository, assign one bounded task, and let coherent active work continue unless it is blocked, stalled, unsafe, or off course.
  6. +
  7. Require tests, live proof, autoreview, and green CI; record the evidence, then route the next item or present the owner with one exact decision.
  8. +
+
+ +
+

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.

+
+ + +
+
+
+
+
+ + + +
+ + diff --git a/site/loops/fresh-clone-loop/index.html b/site/loops/fresh-clone-loop/index.html index 132e0e1..d5ff2d3 100644 --- a/site/loops/fresh-clone-loop/index.html +++ b/site/loops/fresh-clone-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/fresh-clone-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/fresh-clone-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/full-product-evaluation-loop/index.html b/site/loops/full-product-evaluation-loop/index.html index 9489828..c75f573 100644 --- a/site/loops/full-product-evaluation-loop/index.html +++ b/site/loops/full-product-evaluation-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/full-product-evaluation-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/full-product-evaluation-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/infinite-clickbait-loop/index.html b/site/loops/infinite-clickbait-loop/index.html index fa7161b..afc2b9c 100644 --- a/site/loops/infinite-clickbait-loop/index.html +++ b/site/loops/infinite-clickbait-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/infinite-clickbait-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/infinite-clickbait-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/loop-harness-verification-loop/index.html b/site/loops/loop-harness-verification-loop/index.html index fdda11f..c5e3888 100644 --- a/site/loops/loop-harness-verification-loop/index.html +++ b/site/loops/loop-harness-verification-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/lSAAGl/loop-harness", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-harness-verification-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/loop-harness-verification-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/nightly-changelog-sweep/index.html b/site/loops/nightly-changelog-sweep/index.html index d1a2eb6..eac5278 100644 --- a/site/loops/nightly-changelog-sweep/index.html +++ b/site/loops/nightly-changelog-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/nightly-changelog-sweep-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/nightly-changelog-sweep-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/overnight-docs-sweep/index.html b/site/loops/overnight-docs-sweep/index.html index d92eb31..71548c1 100644 --- a/site/loops/overnight-docs-sweep/index.html +++ b/site/loops/overnight-docs-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/overnight-docs-sweep-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/overnight-docs-sweep-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/post-release-baseline-loop/index.html b/site/loops/post-release-baseline-loop/index.html index 46178a5..c5250ee 100644 --- a/site/loops/post-release-baseline-loop/index.html +++ b/site/loops/post-release-baseline-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/post-release-baseline-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/post-release-baseline-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/product-update-podcast-loop/index.html b/site/loops/product-update-podcast-loop/index.html index d0d96f9..dd27d56 100644 --- a/site/loops/product-update-podcast-loop/index.html +++ b/site/loops/product-update-podcast-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://www.jellypod.com/mcp", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/product-update-podcast-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/product-update-podcast-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/production-data-cleanup-loop/index.html b/site/loops/production-data-cleanup-loop/index.html index 423b876..bc4bd03 100644 --- a/site/loops/production-data-cleanup-loop/index.html +++ b/site/loops/production-data-cleanup-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-data-cleanup-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-data-cleanup-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/production-error-sweep/index.html b/site/loops/production-error-sweep/index.html index f9a0fd9..5a2e26d 100644 --- a/site/loops/production-error-sweep/index.html +++ b/site/loops/production-error-sweep/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-error-sweep-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/production-error-sweep-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/quality-streak-loop/index.html b/site/loops/quality-streak-loop/index.html index c864020..f7e4006 100644 --- a/site/loops/quality-streak-loop/index.html +++ b/site/loops/quality-streak-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/quality-streak-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/quality-streak-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/repository-cleanup-loop/index.html b/site/loops/repository-cleanup-loop/index.html index 0f85917..5968ec6 100644 --- a/site/loops/repository-cleanup-loop/index.html +++ b/site/loops/repository-cleanup-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/repository-cleanup-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/repository-cleanup-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/revolve-self-improvement-loop/index.html b/site/loops/revolve-self-improvement-loop/index.html index ed2b132..016fce6 100644 --- a/site/loops/revolve-self-improvement-loop/index.html +++ b/site/loops/revolve-self-improvement-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/agent0ai/revolve", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/revolve-self-improvement-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/revolve-self-improvement-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/self-improving-champion-loop/index.html b/site/loops/self-improving-champion-loop/index.html index f07daac..225e9d7 100644 --- a/site/loops/self-improving-champion-loop/index.html +++ b/site/loops/self-improving-champion-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/self-improving-champion-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/self-improving-champion-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/seo-geo-visibility-loop/index.html b/site/loops/seo-geo-visibility-loop/index.html index 0626f45..3d91b07 100644 --- a/site/loops/seo-geo-visibility-loop/index.html +++ b/site/loops/seo-geo-visibility-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/seo-geo-visibility-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/seo-geo-visibility-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/stale-safe-batch-release-loop/index.html b/site/loops/stale-safe-batch-release-loop/index.html index ef71fdf..6437567 100644 --- a/site/loops/stale-safe-batch-release-loop/index.html +++ b/site/loops/stale-safe-batch-release-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/stale-safe-batch-release-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/stale-safe-batch-release-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/sub-50ms-page-load-loop/index.html b/site/loops/sub-50ms-page-load-loop/index.html index d8de6f0..b4c6bf1 100644 --- a/site/loops/sub-50ms-page-load-loop/index.html +++ b/site/loops/sub-50ms-page-load-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/sub-50ms-page-load-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/sub-50ms-page-load-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/test-suite-speed-loop/index.html b/site/loops/test-suite-speed-loop/index.html index 7e8bc98..4644d14 100644 --- a/site/loops/test-suite-speed-loop/index.html +++ b/site/loops/test-suite-speed-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -99,7 +99,7 @@ ], "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-suite-speed-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/test-suite-speed-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/ticket-to-pr-ready-loop/index.html b/site/loops/ticket-to-pr-ready-loop/index.html index 8be9a3a..6ba2a9a 100644 --- a/site/loops/ticket-to-pr-ready-loop/index.html +++ b/site/loops/ticket-to-pr-ready-loop/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://docs.google.com/document/d/1PjkOSfGaww1k_NJjswovfCdSHl31w8sxIEzXilU92gg/edit?tab=t.0", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ticket-to-pr-ready-loop-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/ticket-to-pr-ready-loop-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/loops/war-loops-frontend-designer/index.html b/site/loops/war-loops-frontend-designer/index.html index 5206f18..ba3108a 100644 --- a/site/loops/war-loops-frontend-designer/index.html +++ b/site/loops/war-loops-frontend-designer/index.html @@ -38,8 +38,8 @@ - - + + @@ -49,7 +49,7 @@ - + @@ -100,7 +100,7 @@ "isBasedOn": "https://github.com/0xtigerclaw/war_loops", "image": { "@type": "ImageObject", - "url": "https://signals.forwardfuture.ai/loop-library/assets/social/war-loops-frontend-designer-20260619-6.png", + "url": "https://signals.forwardfuture.ai/loop-library/assets/social/war-loops-frontend-designer-20260619-7.png", "width": 1200, "height": 630 }, diff --git a/site/sitemap.xml b/site/sitemap.xml index 9e823f8..1afa34b 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -124,4 +124,8 @@ https://signals.forwardfuture.ai/loop-library/loops/revolve-self-improvement-loop/ 2026-06-19 + + https://signals.forwardfuture.ai/loop-library/loops/five-minute-repository-maintainer-loop/ + 2026-06-19 + diff --git a/skills/loop-library/references/catalog.md b/skills/loop-library/references/catalog.md index 32d184c..9923a4e 100644 --- a/skills/loop-library/references/catalog.md +++ b/skills/loop-library/references/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/)