AI Harnesses
Central management board for the fleet's AI harnesses and schedules — deployments, throughput vs caps, cost trends and forecasts, and the gaps the fan-out can close.
Table of Contents
🛠️ AI Harnesses
The fleet’s AI harness + schedule control board. Every registry repo is scanned daily for claude-code-action call sites and cron schedules by dash-gen harnesses (in fleet-pulse.yml) into _data/harness_registry.yml, graded against the contract in _data/fleet.yml → harnesses:. This page is read-only observation; the levers are harness-fanout (deploy/upgrade the kit), token-rotation (secrets), and the fleet-pulse doctor (failures). Operator guide: docs/HARNESS-OPS.md · the hub’s own six-layer scorecard lives at /harness/.
62
33 + 17
11.6 / 30
$36.75
29 / 32
17
Snapshot 2026-09-08 06:48 UTC · scan live (2026-09-08 06:48 UTC) · contract kit agent-context v0.4.0 · usage joins carry the committed ledgers' windows.
Attention
Ranked findings, strongest first, each naming its lever. A finding is an observation for a human or a dry-run fan-out — nothing on this board writes to a fleet repo.
| Kind | Repo | Finding | Lever | |
|---|---|---|---|---|
| 75 | harness-failing |
bashconsultants |
.github/workflows/content-gardener.yml last run failed | the fleet-pulse doctor queue owns the fix; see /triage/ |
| 75 | harness-failing |
bashconsultants |
.github/workflows/content-review.yml last run failed | the fleet-pulse doctor queue owns the fix; see /triage/ |
| 75 | harness-failing |
bashconsultants |
.github/workflows/preacher.yml last run failed | the fleet-pulse doctor queue owns the fix; see /triage/ |
| 75 | harness-failing |
githubai |
.github/workflows/claude-maintenance.yml last run failed | the fleet-pulse doctor queue owns the fix; see /triage/ |
| 75 | harness-failing |
gitorio |
.github/workflows/factory--gitorio-factory-1.yml last run failed | the fleet-pulse doctor queue owns the fix; see /triage/ |
| 70 | schedule-collision |
fleet | 4 AI crons share 06:00 UTC: bamr87:🩺 Fleet Pulse, githubai:Claude Maintenance, gitorio:Factory: Gitorio Factory 3, lifehacker.dev:Factory: Issue Factory 1 | stagger the crons — the Claude loops share one OAuth account's rate limit |
| 70 | schedule-collision |
fleet | 4 AI crons share 14:00 UTC: bashconsultants:Content gardener, bashconsultants:Content loop, bashconsultants:Content review (weekly), bashconsultants:Preacher (weekly doctrine) | stagger the crons — the Claude loops share one OAuth account's rate limit |
| 58 | coverage-gap |
.github |
baseline artifact missing: mention-handler | dispatch harness-fanout (target: gaps), or `dash harnesses deploy --gaps` |
| 58 | coverage-gap |
git-with-the-program |
baseline artifact missing: mention-handler | dispatch harness-fanout (target: gaps), or `dash harnesses deploy --gaps` |
| 58 | coverage-gap |
irony-works |
baseline artifact missing: mention-handler | dispatch harness-fanout (target: gaps), or `dash harnesses deploy --gaps` |
| 55 | coverage-gap |
.github |
baseline artifact missing: agent-context | dispatch harness-fanout (target: gaps), or `dash harnesses deploy --gaps` |
| 50 | cost-trend |
fleet | Claude CI spend grew 67.0% week-over-week (last 7d: 8.45 USD) | check /harnesses/ trends and the actions/ai-usage boards for the driver |
| 50 | cost-trend |
fleet | Actions minutes grew 732.5% week-over-week (last 7d: 5534.2 min) | check /harnesses/ trends and the actions/ai-usage boards for the driver |
| 45 | switch-missing |
bamr87 |
scheduled agent without a vars.*_ENABLED kill switch: .github/workflows/fleet-pulse.yml, .github/workflows/issue-pipeline.yml, .github/workflows/repo-evolution.yml | gate the line on a repo variable (GitFactory's `gate` job pattern) so it can be disarmed without a commit |
| 45 | switch-missing |
bashconsultants |
scheduled agent without a vars.*_ENABLED kill switch: .github/workflows/preacher.yml | gate the line on a repo variable (GitFactory's `gate` job pattern) so it can be disarmed without a commit |
| 45 | switch-missing |
githubai |
scheduled agent without a vars.*_ENABLED kill switch: .github/workflows/claude-maintenance.yml | gate the line on a repo variable (GitFactory's `gate` job pattern) so it can be disarmed without a commit |
| 45 | switch-missing |
gitorio |
scheduled agent without a vars.*_ENABLED kill switch: .github/workflows/factory--gitorio-factory-2.yml, .github/workflows/factory--gitorio-factory-3.yml | gate the line on a repo variable (GitFactory's `gate` job pattern) so it can be disarmed without a commit |
Cost trends & forecast
| Window total | |
| Last 7d / prior 7d | / |
| Week-over-week | — |
| Projected monthly | vs ceiling |
| Window total | |
| Last 7d / prior 7d | / |
| Week-over-week | — |
| Projected monthly | vs ceiling |
Projection = last-7-day daily average × 30.44; the driver detail lives on /ai-usage/ and /actions/. Ceilings and the growth threshold are harnesses.budget in _data/fleet.yml.
Throughput
- Estimated scheduled AI runs/day (from cron math): 11.6 vs fleet cap 30 — per-repo cap 8, max 3 AI crons per UTC hour.
- Observed AI runs/day, all triggers (ai_usage window): 30.9 — mention/PR traffic rides on top of the scheduled floor.
UTC-hour collisions (the Claude loops share one OAuth account's rate limit):
- 360.0 — 4 crons:
bamr87:🩺 Fleet Pulsegithubai:Claude Maintenancegitorio:Factory: Gitorio Factory 3lifehacker.dev:Factory: Issue Factory 1 - 14:00 — 4 crons:
bashconsultants:Content gardenerbashconsultants:Content loopbashconsultants:Content review (weekly)bashconsultants:Preacher (weekly doctrine)
Deployment matrix
Which repo carries which harness, on which auth shape and kit version. exempt = external, archived, or excused in harnesses.exempt. Gaps sort first — they are what harness-fanout's gaps target deploys to.
| Repo | Harness workflows | Auth | Kit | Context | OAuth secret | Sched AI/day | AI cost (win) | Baseline |
|---|---|---|---|---|---|---|---|---|
.github |
— | — | ok | 0.0 | — | mention-handler agent-context | ||
git-with-the-program |
— | CLAUDE.md |
ok | 0.0 | $0.0 | mention-handler | ||
irony-works 📜 |
— | CLAUDE.md |
ok | 0.0 | — | mention-handler | ||
bamr87 📜 |
💬 claude.yml⏰ fleet-pulse.yml opus/160t⏰ issue-pipeline.yml opus/250t⏰ repo-evolution.yml opus⚙️ schema-fanout.yml⚙️ standardize-fanout.yml⚙️ unified-evolution.yml |
oauth-first oauth-first oauth-first oauth-first oauth-first oauth-first oauth-first |
unstamped unstamped unstamped unstamped unstamped unstamped unstamped |
CLAUDE.md |
hub | 2.143 | — | ok |
githubai |
⚙️ claude-auto-merge.yml⚙️ claude-implement.yml⏰ claude-maintenance.yml failing⚙️ claude-release.yml⚙️ claude-review.yml⚙️ claude-triage.yml💬 claude.yml |
oauth-first oauth-first oauth-first oauth-first oauth-first oauth-first oauth-first |
unstamped unstamped unstamped unstamped unstamped unstamped unstamped |
CLAUDE.md |
ok | 0.143 | $2.8099 | ok |
ai-seed |
⚙️ seed-evolve.yml⚙️ seed-germinate.yml⏰ seed-grow.yml💬 seed-steward.yml⏰ seed-tend.yml |
oauth-first oauth-first oauth-first oauth-first oauth-first |
unstamped unstamped unstamped unstamped unstamped |
CLAUDE.md |
unknown | 4.143 | $0.0 | exempt |
bashconsultants |
💬 claude.yml⏰ content-gardener.yml failing⏰ content-loop.yml⏰ content-review.yml failing⏰ preacher.yml failing |
oauth-first oauth-first oauth-first oauth-first oauth-first |
v0.4.0 unstamped unstamped unstamped unstamped |
CLAUDE.md |
ok | 1.429 | $5.5124 | ok |
gitorio 📜 ⚙ |
💬 claude.yml⏰ factory--docs-gardener.yml claude-opus-5/24t⚙️ factory--gitorio-factory-1.yml claude-sonnet-4-6/8t failing⏰ factory--gitorio-factory-2.yml claude-sonnet-4-6/12t⏰ factory--gitorio-factory-3.yml claude-sonnet-4-6/25t |
oauth-first oauth-first oauth-first oauth-first oauth-first |
v0.4.0 unstamped unstamped unstamped unstamped |
CLAUDE.md |
ok | 2.143 | $3.1865 | ok |
law-ai ⚙ |
💬 claude.yml⏰ factory--backlog-triage.yml claude-sonnet-4-6/30t⏰ factory--evolve-pilot.yml claude-opus-4-8/40t⚙️ factory--issue-concierge.yml claude-sonnet-4-6/10t |
oauth-first oauth-first oauth-first oauth-first |
v0.4.0 unstamped unstamped unstamped |
CLAUDE.md |
ok | 0.176 | $0.0 | ok |
lifehacker.dev 📜 ⚙ |
💬 claude.yml⏰ factory--issue-factory-1.yml claude-sonnet-4-6/50t⏰ factory--issue-factory-2.yml claude-opus-4-8/100t |
oauth-first oauth-first oauth-first |
unstamped unstamped unstamped |
CLAUDE.md |
ok | 1.428 | $2.0075 | ok |
1987 |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
README |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
SCHEMA |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
aieo |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
bamr87.github.io |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
barodybroject |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
bashcrawl |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
books |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
csv-vscoode |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
unknown | 0.0 | $0.0 | exempt |
cv |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
cv-builder-pro |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
djangoerp |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
drsai |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
edgar-data-parse |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
it-journey |
💬 claude.yml |
oauth-first |
unstamped |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
lawmode |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
scripts |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
vs-sonic-pi |
💬 claude.yml |
oauth-first |
v0.4.0 |
.github/copilot-instructions.md |
ok | 0.0 | — | ok |
vscode-front-matter |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
wargames |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
wtd 📜 |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
unknown | 0.0 | $0.0 | exempt |
zer0-image-generator |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
zer0-mistakes |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
zer0-pages |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | — | ok |
zer0-pages-remote |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
unknown | 0.0 | — | exempt |
zpl-viewer |
💬 claude.yml |
oauth-first |
v0.4.0 |
CLAUDE.md |
ok | 0.0 | $0.0 | ok |
2005 |
— | — | unknown | 0.0 | — | exempt | ||
archify |
— | — | unknown | 0.0 | $0.0 | exempt | ||
skills |
— | — | unknown | 0.0 | — | exempt |
Fleet schedule (UTC)
Every cron the scan found — AI first, then by standing load. Estimated fires/day is cron arithmetic (weekly ≈ 0.14), a load-planning figure rather than a fire predictor.
| Repo | Workflow | Cron | Schedule | est/day | |
|---|---|---|---|---|---|
| 🤖 | ai-seed |
seed-tend | 47 */6 * * * |
every 6h at :47 | 4.0 |
| 🤖 | bamr87 |
🩺 Fleet Pulse | 0 6 * * * |
daily 06:00 UTC | 1.0 |
| 🤖 | bamr87 |
🧭 Issue Pipeline | 0 8 * * * |
daily 08:00 UTC | 1.0 |
| 🤖 | bashconsultants |
Content loop | 11 14 * * * |
daily 14:11 UTC | 1.0 |
| 🤖 | gitorio |
Factory: Docs Gardener | 0 8 * * * |
daily 08:00 UTC | 1.0 |
| 🤖 | gitorio |
Factory: Gitorio Factory 2 | 0 3 * * * |
daily 03:00 UTC | 1.0 |
| 🤖 | lifehacker.dev |
Factory: Issue Factory 1 | 0 6 * * 1-5 |
06:00 UTC (0 6 * * 1-5) | 0.714 |
| 🤖 | lifehacker.dev |
Factory: Issue Factory 2 | 0 7 * * 1-5 |
07:00 UTC (0 7 * * 1-5) | 0.714 |
| 🤖 | ai-seed |
seed-grow | 17 4 * * 1 |
Mon 04:17 UTC weekly | 0.143 |
| 🤖 | bamr87 |
🌿 Repo Evolution | 0 9 * * 1 |
Mon 09:00 UTC weekly | 0.143 |
| 🤖 | bashconsultants |
Content gardener | 23 14 * * 1 |
Mon 14:23 UTC weekly | 0.143 |
| 🤖 | bashconsultants |
Content review (weekly) | 37 14 * * 4 |
Thu 14:37 UTC weekly | 0.143 |
| 🤖 | bashconsultants |
Preacher (weekly doctrine) | 42 14 * * 6 |
Sat 14:42 UTC weekly | 0.143 |
| 🤖 | githubai |
Claude Maintenance | 17 6 * * 1 |
Mon 06:17 UTC weekly | 0.143 |
| 🤖 | gitorio |
Factory: Gitorio Factory 3 | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 |
| 🤖 | law-ai |
Factory: Evolve Pilot | 0 15 * * 1 |
Mon 15:00 UTC weekly | 0.143 |
| 🤖 | law-ai |
Factory: Backlog Triage | 0 9 1 * * |
day 1 09:00 UTC monthly | 0.033 |
lifehacker.dev |
auto-merge | 13 */4 * * * |
every 4h at :13 | 6.0 | |
lifehacker.dev |
auto-update | 43 */4 * * * |
every 4h at :43 | 6.0 | |
wtd |
Fleet Loop | 23 */4 * * * |
every 4h at :23 | 6.0 | |
it-journey |
🔄 Automated PR Freshness | 37 */6 * * * |
every 6h at :37 | 4.0 | |
it-journey |
🚀 Sync gh-pages from main | 20 2,14 * * * |
20 2,14 * * * | 2.0 | |
bamr87 |
🛰️ Build & Deploy Dash | 0 7 * * * |
daily 07:00 UTC | 1.0 | |
bamr87 |
🧭 Reconcile Registry | 0 5 * * * |
daily 05:00 UTC | 1.0 | |
bamr87 |
🔄 Refresh Dash | 0 4 * * * |
daily 04:00 UTC | 1.0 | |
bamr87 |
🔀 Update Submodules | 0 3 * * * |
daily 03:00 UTC | 1.0 | |
bamr87.github.io |
Regenerate site indexes | 0 2 * * * |
daily 02:00 UTC | 1.0 | |
bashconsultants |
Site health | 17 9 * * * |
daily 09:17 UTC | 1.0 | |
it-journey |
🧭 CMS Daily Content Loop | 0 9 * * * |
daily 09:00 UTC | 1.0 | |
it-journey |
🏭 Content Factory | 0 8 * * * |
daily 08:00 UTC | 1.0 | |
it-journey |
🧭 Issue Autopilot | 0 7 * * * |
daily 07:00 UTC | 1.0 | |
it-journey |
♾️ Quest Perfection Loop | 0 11 * * * |
daily 11:00 UTC | 1.0 | |
it-journey |
Sync GitHub Profile Data | 0 6 * * * |
daily 06:00 UTC | 1.0 | |
lifehacker.dev |
content-factory | 0 9 * * * |
daily 09:00 UTC | 1.0 | |
lifehacker.dev |
content-scout | 7 8 * * * |
daily 08:07 UTC | 1.0 | |
lifehacker.dev |
nightly | 17 7 * * * |
daily 07:17 UTC | 1.0 | |
lifehacker.dev |
triage | 47 7 * * * |
daily 07:47 UTC | 1.0 | |
lifehacker.dev |
wire-scout | 27 8 * * * |
daily 08:27 UTC | 1.0 | |
wtd |
Fleet Daily | 17 7 * * * |
daily 07:17 UTC | 1.0 | |
zer0-mistakes |
Nightly Extended Tests | 17 8 * * * |
daily 08:17 UTC | 1.0 | |
zer0-mistakes |
TEST (Latest Dependencies) | 0 6 * * * |
daily 06:00 UTC | 1.0 | |
it-journey |
🔧 Quest Fix Loop | 0 15 */2 * * |
15:00 UTC (0 15 */2 * *) | 0.526 | |
README |
Aggregate Documentation | 0 3 * * 1 |
Mon 03:00 UTC weekly | 0.143 | |
SCHEMA |
maintenance | 13 7 * * 1 |
Mon 07:13 UTC weekly | 0.143 | |
bamr87 |
🔺 Schema Vendor Sync | 0 8 * * 1 |
Mon 08:00 UTC weekly | 0.143 | |
bamr87 |
🔑 Token Rotation | 0 2 * * 1 |
Mon 02:00 UTC weekly | 0.143 | |
barodybroject |
Maintenance and Infrastructure | 0 8 * * 1 |
Mon 08:00 UTC weekly | 0.143 | |
bashconsultants |
LinkedIn token health | 41 13 * * 1 |
Mon 13:41 UTC weekly | 0.143 | |
bashconsultants |
PR to upstream (amr-bash) | 0 15 * * 1 |
Mon 15:00 UTC weekly | 0.143 | |
bashcrawl |
Blank-Slate Audit | 0 5 * * 1 |
Mon 05:00 UTC weekly | 0.143 | |
cv |
publish | 23 9 * * 1 |
Mon 09:23 UTC weekly | 0.143 | |
edgar-data-parse |
Publish static site | 17 11 * * 1 |
Mon 11:17 UTC weekly | 0.143 | |
edgar-data-parse |
Refresh warehouse dataset | 17 10 * * 1 |
Mon 10:17 UTC weekly | 0.143 | |
gitorio |
Evolve (weekly autopilot) | 0 14 * * 1 |
Mon 14:00 UTC weekly | 0.143 | |
irony-works |
Germinate | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
it-journey |
🔍 Agent Audit | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
it-journey |
CodeQL | 31 14 * * 4 |
Thu 14:31 UTC weekly | 0.143 | |
it-journey |
🔍 Dependency Security Checker | 0 7 * * 1 |
Mon 07:00 UTC weekly | 0.143 | |
it-journey |
🔗 Link Health Guardian | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
it-journey |
🎯 Quest Content Validation | 0 3 * * 0 |
Sun 03:00 UTC weekly | 0.143 | |
it-journey |
🔭 Theme Scout | 0 6 * * 2 |
Tue 06:00 UTC weekly | 0.143 | |
it-journey |
Update Contributor Profiles | 0 5 * * 1 |
Mon 05:00 UTC weekly | 0.143 | |
law-ai |
Evolve (weekly autopilot) | 0 13 * * 1 |
Mon 13:00 UTC weekly | 0.143 | |
law-ai |
Nightly Tests & Autonomy | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
lifehacker.dev |
loop-tuner | 23 6 * * 1 |
Mon 06:23 UTC weekly | 0.143 | |
lifehacker.dev |
theme-scout | 41 6 * * 1 |
Mon 06:41 UTC weekly | 0.143 | |
lifehacker.dev |
weekly-epic | 45 7 * * 1 |
Mon 07:45 UTC weekly | 0.143 | |
vscode-front-matter |
CodeQL | 24 14 * * 5 |
Fri 14:24 UTC weekly | 0.143 | |
zer0-mistakes |
CodeQL Security Scanning | 37 1 * * 0 |
Sun 01:37 UTC weekly | 0.143 | |
zer0-mistakes |
Giscus comment digest | 0 13 * * 1 |
Mon 13:00 UTC weekly | 0.143 | |
zer0-mistakes |
Install Matrix | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
zer0-mistakes |
🧭 Issue Autopilot | 0 8 * * 1 |
Mon 08:00 UTC weekly | 0.143 | |
zer0-mistakes |
Propagate Theme | 0 6 * * 1 |
Mon 06:00 UTC weekly | 0.143 | |
zer0-mistakes |
UI/UX Audit | 23 7 * * 1 |
Mon 07:23 UTC weekly | 0.143 | |
zer0-mistakes |
Update Dependencies | 0 9 * * 1 |
Mon 09:00 UTC weekly | 0.143 | |
lifehacker.dev |
agent-review | 17 5 1 * * |
day 1 05:17 UTC monthly | 0.033 |
Operate
tools/dash harnesses # rebuild the inventory now (offline degrade without a token)
tools/dash harnesses gaps # the repos the fan-out can fix, one per line
tools/dash harnesses deploy --gaps # dry-run kit PRs for exactly those repos
tools/dash harnesses deploy --gaps --apply --upgrade # open the PRs, refresh machine seeds
tools/dash config show harnesses # the contract in force
CI equivalents: the daily refresh rides fleet-pulse.yml; mass deploy/update is the harness-fanout dispatch (target: gaps, dry-run default). Full runbook — including the local Docker stack and the enterprise/cloud architecture — in docs/HARNESS-OPS.md.