the fleet at a glance β every section stamped with its OWN source freshness (honest per-source staleness). VIEW only Β· static prod snapshot Β· generated 2026-07-02T09:55:31.535Z
πΈ PROD snapshot taken 2026-07-02T09:55:31.535Z β this is a point-in-time capture, not live. Freshness stamps below are as-of the snapshot.
βhealthy β fresh, serving, within SLOβdegraded β working but partial / SLO at riskβfailing β errors, down, or unreachableβfrozen β heartbeat without progress β fresh log but only ticks, no new edgeβin-dev β building / not yet registered, no SLO held yetβblocked-on-human β waiting on a Jacob unblock (sign-in / OTP / decision)β’retired β quarantined β kept visible but dimmed (honest history)?unclassified β cannot classify honestly β shown without a color, never defaulted green
40 facts Β· last edge 50m Β· census live Β· ENGINE
conversation-refinery.skipped50m
itemId=768de063-45ca-4c74-865d-b1280cc3ef97
conversation-refinery.acted50m
itemId=63ec7603-7b30-40c3-85d2-0b6cd78ab91b
idea.refined50m
A gate must be wired and mutation-proven, or it's aspirational
click for full engine βΈ
librarian/librarianβ healthy
40 facts Β· last edge 53m Β· census live Β· ENGINE
librarian.tick_failed53m
reason=transcriber /api/view returned 502 (supplier unhealthy)
librarian.tick_failed4.2h
reason=transcriber /api/view returned 502 (supplier unhealthy)
librarian.tick_failed5.6h
reason=transcriber /api/view returned 502 (supplier unhealthy)
click for full engine βΈ
mission-control/reportsβ healthy
8 facts Β· last edge 1.2h Β· census live Β· ENGINE
report.landed1.2h
Overnight: the wiki compounded β 6 pages minted from tonight's conversations
report.landed1.3h
Sub-agent experience audit
report.landed1.5h
Consistent patterns across the corpus
click for full engine βΈ
ideas/ideasβ degraded
40 facts Β· last edge 7m Β· census live Β· PARTIAL
ideas.map7m
ideas=80
ideas.poll7m
ideas=80
ideas.thumbnail7m
Watch the Watchmen β the Backstop Audits the Supervisor
click for full engine βΈ
.driver/driverβ blocked-on-human
28 facts Β· last edge 48m
tick48m
CHARTER AMENDED (Item 7 SACRED SET keep-alive). First sacred pass over favorites.json (grown to 7: registry,librarian,ideas,engine-detector,youtube-watcher,tran
edge1.3h
#29 gate fix VERIFIED CLOSED @72ce404 β injection class + symlink both closed with defense-in-depth (re-parse proven load-bearing via independent A/B: input-gua
12 facts Β· last edge 1.3h Β· census live Β· ENGINE
decision.opened1.3h
SAX audit (report thread sax, seq 7): 128 sub-agents mined; top-3 struggles = expired op creds (54 hits, spiking, hard-blocks), host/env mismatch like missing t
decision.opened1.4h
The 9-week corpus audit (report: corpus-patterns, seq 6) found 8 consistent patterns and proposes 7 builds. Four are already live as of tonight (mission control
decision.opened1.6h
Ratify the auto-class edits from batch 2026-07-02T02-24-55Z through the door now, hold the assisted/schema classes for review, or reject the whole batch?
click for full engine βΈ
idea-librarian/idea-librarianβ failing
40 facts Β· last edge 21s Β· census unreachable Β· ENGINE
idea-librarian.acted21s
itemId=63ec7603-7b30-40c3-85d2-0b6cd78ab91b#5
idea-librarian.acted1m
itemId=63ec7603-7b30-40c3-85d2-0b6cd78ab91b#4
decided1m
Log Preservation Classes β classify per-log, not by blanket rule
click for full engine βΈ
acceptance-judge/verdictsβ failing
23 facts Β· last edge 1.2h Β· census stale Β· ENGINE
Nick's Google Ads Reality Is Locked Behind 3 Access Points He Can't Unify
fact6.7d
tag=ranking.resolved
click for full engine βΈ
story-engine/storiesβ’ retired
40 facts Β· last edge 7.1d
fact7.1d
No heartbeat: can't tell if an engine is writing without digging through logs
fact7.1d
Agent can't verify its own writes β optimistic updates go unconfirmed
fact7.1d
Every dev session starts blind β no canonical view of which engines are healthy
click for full engine βΈ
wiki-hooks/hooksβ’ retired
40 facts Β· last edge 7.2d
sensor.scanned7.2d
sha=f1f2d569eac2739e4a1024f0c12262e9a42a5d19
page:deleted7.2d
wiki/concepts/_TrustDemoTmp.md
sensor.scanned7.2d
sha=7a7639589afff6dea63b2b19a7d0fade9564a8b4
click for full engine βΈ
idea-capture/raw-ideasβ’ retired
40 facts Β· last edge 7.2d
fact7.2d
tag=idea.captured
fact7.2d
tag=idea.captured
fact7.2d
tag=idea.captured
click for full engine βΈ
github-source/gh-librarianβ’ retired
1 facts Β· last edge 8.1d
gh-librarian.wrote8.1d
repo=automate-friday/automate-friday-platform
click for full engine βΈ
github-source/githubβ’ retired
20 facts Β· last edge 8.1d
github.observed8.1d
Progressive-trust ramp: opt-in UI (toggle a skill to on_first_use + ratify button)
github.observed8.1d
Tool: System Manifest β the platform's living self-model (primitive grammar + intended topology + build-state)
github.observed8.1d
Tool: Convergence Auditor β diff the real system against the System Manifest, emit a drift report
click for full engine βΈ
Tasks 2 live Β· 0 orphaned
π’ 2 live Β· 0 orphaned Β· 12 tmux sessions
tasks-as-living-conversations β each task's owning Claude Code session (tmux), its TASK.md, and any decision card it maps to. A task whose session died shows orphaned, never hidden.
THE DRIVER β charter (agreed with Jacob 2026-07-01 evening)driver
β live β session up 8.2h
attach: tmux attach -t driver
/Users/jh/code/automate-friday/.driver/CHARTER.md
Prod deployment public snapshot on Cloudflare Pages
π’ prod live + verified Β· 12m ago
the live URL is a tailnet address for THIS machine; PROD is the published snapshot below (so agents can use it after this session ends). Verified = the deployed URL was fetched and its content hash matched.
a skill sub-agents can find, and we track if they use it. Adoption count IS the eval (incl. the standard-report skill itself).
tailscale-report14 total
today 0 Β· 7d 0 Β· last used 19.1d ago
make-engine9 total
today 0 Β· 7d 9 Β· last used 2.2d ago
automate-friday-wiki:wiki-publish3 total
today 0 Β· 7d 3 Β· last used 17.6h ago
chrome-devtools-axi3 total
today 0 Β· 7d 3 Β· last used 2.7d ago
spec-driven3 total
today 0 Β· 7d 0 Β· last used 21.6d ago
tts-on3 total
today 0 Β· 7d 0 Β· last used 13.5d ago
update-config3 total
today 0 Β· 7d 0 Β· last used 19.6d ago
tribunal-review-admin2 total
today 0 Β· 7d 0 Β· last used 21.6d ago
wiki-publish2 total
today 0 Β· 7d 2 Β· last used 18.2h ago
architecture-review1 total
today 0 Β· 7d 1 Β· last used 4.2d ago
auto-red-team1 total
today 0 Β· 7d 0 Β· last used 19.6d ago
calibrate-judge1 total
today 0 Β· 7d 1 Β· last used 3.4d ago
career-ops1 total
today 0 Β· 7d 1 Β· last used 2.7d ago
claude-in-chrome1 total
today 0 Β· 7d 1 Β· last used 2.7d ago
competitive-analysis-for-builders1 total
today 0 Β· 7d 0 Β· last used 40.0d ago
design-md-picker1 total
today 0 Β· 7d 0 Β· last used 27.2d ago
dev1 total
today 0 Β· 7d 1 Β· last used 2.8d ago
driving-tmux-claude-sessions1 total
today 0 Β· 7d 0 Β· last used 7.4d ago
effect-development1 total
today 0 Β· 7d 0 Β· last used 19.6d ago
engine1 total
today 0 Β· 7d 1 Β· last used 4.3d ago
harvest-conversation-type1 total
today 0 Β· 7d 0 Β· last used 9.7d ago
image-exploration1 total
today 0 Β· 7d 0 Β· last used 27.2d ago
loop1 total
today 1 Β· 7d 1 Β· last used 8.2h ago
request-approval1 total
today 0 Β· 7d 0 Β· last used 11.2d ago
transcribe-video1 total
today 0 Β· 7d 0 Β· last used 27.4d ago
validate1 total
today 0 Β· 7d 1 Β· last used 4.7d ago
vercel:deploy1 total
today 0 Β· 7d 0 Β· last used 22.1d ago
Decisions 12 open Β· your call
π’ own log Β· 12 open
sax fixes pick
GO?
What
SAX audit (report thread sax, seq 7): 128 sub-agents mined; top-3 struggles = expired op creds (54 hits, spiking, hard-blocks), host/env mismatch like missing timeout/vercel (36), concurrent-edit collisions (39% of checkins, 79% leave work uncommitted). One root cause: the game world does not signal its constraints in-world. Four designed fixes, all prototype-phase: creds preflight at SubagentStart; HostEnvironmentContract injection; observatory-fed collision warning + commit-on-done; SubagentStop terminal fact + defection log (the measurement seams).
The 9-week corpus audit (report: corpus-patterns, seq 6) found 8 consistent patterns and proposes 7 builds. Four are already live as of tonight (mission control, acceptance judge, driver trust-ledger, thread parking). Remaining prototypes to pick from: you-are-here code-surface census card; next-move card; sprawl gauge over the registry; full click-to-evidence pages (every card -> source conversation + exact quotes).
wiki-sweep (the wiki self-maintenance reactor) produced a ratifiable batch (2026-07-02T02-24-55Z): auto-class frontmatter edits (index-regen, graduate-seeds) that can land through the door, assisted-class LLM-authored fixes (broken-links, stale-refs, link-orphans, conformance-shape, graduate-reports), and one schema-class enum decision. Propose-then-ratify β the wiki is untouched until you rule.
Why now
The conversation->wiki self-managing loop is booted live tonight; wiki-sweep is its maintenance half. Its proposals sit unratified. Case AGAINST ratifying blind: an assisted LLM edit could degrade a curated page, and a bulk frontmatter sweep touches many files at once β a bad batch is worse than the mess it cleans. Friday market question: would a customer pay for a wiki that maintains itself if the maintenance still needs a human to eyeball every batch?
Source
wiki-sweep / overnight gate loop
Ratify the auto-class edits from batch 2026-07-02T02-24-55Z through the door now, hold the assisted/schema classes for review, or reject the whole batch?
Mission Control v1 linking: every card/report/engine/agent row links to its LIVING artifacts β the owning Claude Code conversation (tmux session or resume id), its TASK.md, the engine dashboard, and the wiki page. Tasks-as-conversations become a first-class column (the desk).
Build the model-routing service (monorepo-wide): task-class -> cheapest-capable model with caps + fallback order Fable (conductor/judge/hard-verify) -> Opus specialized CC plan (workhorse) -> Codex (cross-vendor red-team + bulk) -> Gemini (multimodal/judge diversity) -> OpenRouter (spot). Per-task $ telemetry lands on the board.
Send Nick the automated-marketing-campaign pitch. A dedicated Claude Code session (tmux: nick-pitch) holds the LIVING draft β attach to refine: tmux attach -t nick-pitch. Draft + rehearsal-vs-respond-as-nick registered as a report when ready.
A standard FREEZE DOOR: `control.freeze` / `control.resume` as FACTS an engine's supervisor honors (per the thermostat-real doctrine β disable/tune/halt are facts on the log, never out-of-band state), added to the engine template so every engine inherits a uniform way to be paused from the cockpit without a bespoke kill for each one. Mission control stays a VIEW; it would only render freeze STATE, never reach in to flip it.
Why now
Jacob asked for a way to freeze an engine from the grid. The honest way is a doctrine-conformant fact door in the template, not a one-off script β building it once in engines/_template makes freeze a first-class, auditable capability across the whole fleet.
Approve building the freeze door into engines/_template (control.freeze/control.resume facts + supervisor honor) and retrofitting the pipeline engines (youtube-watcher / transcriber / librarian)?
Mission Control is published to prod at af-mission-control.pages.dev β but the deploy token can't edit Cloudflare Access, so the URL is unlisted-but-PUBLIC until you gate it. It shows internal business state (threads, decisions, engine health).
Why now
It went to prod tonight so agents can use it after this session; the ~2-minute Access gate is the one thing only you can do (dashboard-only, the token can't).
Source
prod publisher / Cloudflare
Gate af-mission-control.pages.dev with Cloudflare Access (your email), and optionally add mission.automatefriday.com?
Open the Codex fan-out (10x compute) once mission control v1 is the intake surface. The business map's empty slots become the hole-list; the report intake becomes the register β so a wide fan-out has solid holes to contribute to instead of scattering.
Why now
The 10x compute exists but has had no solid hole to contribute to; mission control v1 (business map + report intake) is what turns that compute into filled slots and registered reports.
Source
codex fan-out / mission control v1
Once mission control v1 is the intake β go/no-go on the Codex fan-out, and how wide?
The Tier-1 onboarding-bench front-door reliability test was blocked on op reauth β now unblocked. An overnight run resumes frontier work; its GQM is already defined (pass/fail aha, pave-list as deliverable, observe-not-score).
Why now
The blocker is cleared and the GQM is already shown/agreed β the only thing missing is the word go.
Source
onboarding-bench
Dispatch the onboarding-bench overnight run tonight?
Interactive op (1Password) works now, but headless agents (driver loop, cron, overnight runs) can't use the desktop biometric session β they need the existing service-account token in their env once.
Why now
It unblocks agents self-serving keys, healthchecks.io self-provisioning, and RentRedi rung 2 β several threads are waiting on this one pointer.
Source
vault / headless agents
Where does the op service-account token live (a 1P item name), or is it OK to store it in the login keychain for agents?
The cc-control repo has a merge conflict on branch janitor-backup-2026-07-01 that an agent cannot safely resolve β it needs Jacob's hand to decide which side wins.
Why now
It is blocking a clean commit of cc-control work; the janitor pass flagged it as the one surface it could not reconcile itself.
Source
janitor pass / cc-control
Resolve the cc-control merge conflict on janitor-backup-2026-07-01 yourself, or tell the agent which side to take?
Business map 10 registered Β· 2 unregistered Β· 7 holes to fill
π’ registry census fresh Β· updated 23s ago
every business function is a slot β registered = a live engine in the census, unregistered = a real engine with no published card, PLACEHOLDER = a hole to fill (the fan-out's hole-list).
slot
engine
what fills this
Fleet mission control
mission-controllive Β· ENGINE
see the whole business at a glance + decide
Engine registry / discovery
registrylive Β· ENGINE
census + health of every engine
Content pipeline Β· watch
youtube-watcherlive Β· PARTIAL
watch sources for new material (frontier engine #1)
Content pipeline Β· transcribe
transcriberlive Β· ENGINE
turn media into text
Content pipeline Β· file to wiki
librarianlive Β· ENGINE
fold knowledge into the wiki
Wiki maintenance
wiki-sweeplive Β· ENGINE
keep the knowledge base clean + self-managing
Idea capture
ideaslive Β· PARTIAL
capture sparks into the flow
Conversation β knowledge
conversation-refinerylive Β· ENGINE
refine conversations into durable facts
Idea routing
idea-librarianunreachable Β· ENGINE
route ideas to the right home
Sub-agent telemetry
tool-telemetryunregistered
which agents/tools fire across the fleet
Personal finance
rentredi-expensesstale Β· ENGINE
trusted monthly expense book
Thread driver / conductor
.driver loopunregistered Β· not-yet-an-engine
drive open threads to done so Jacob stops driving
VPS / infra health
PLACEHOLDER
unattended box health w/ recovery ladder (frontier engine #2, HumbleBrands)
Nick CRM (barbershop + swim school)
PLACEHOLDER
reconcile + grow Nick's bottom line (frontier engine #3)
Social sensing (X bookmarks β ideas)
PLACEHOLDER
triage Jacob's bookmarks into the idea flow
Content pipeline Β· draft + ratify + post
PLACEHOLDER
reply in operator voice, one-tap human ratify (content-pipeline-shipping)
Taxes / CPA
PLACEHOLDER
keep the books tax-ready; 1040 + quarterlies
HumbleBrands client-health
PLACEHOLDER
$1k/mo support client β agent health monitor
Narra (audiobooks in your voice)
PLACEHOLDER
demand-validated product; concierge β engine
Reports 8 registered Β· latest first
π’ own log Β· 8 registered
reports get built anywhere β they REGISTER here. File one from any session: node engines/mission-control/report.mjs "title" "path-or-url" --thread X --depth L2
0 running now β last agent finished 52m ago: gate-overnight.
recently finished
gate-overnightlikely delivered
agate-over Β· finished 52m ago Β· 110 calls
sax-auditlikely delivered
asax-audit Β· finished 1.3h ago Β· 30 calls
wiki-sweep-redteamlikely delivered
awiki-swee Β· finished 1.3h ago Β· 39 calls
general-purposelikely delivered
a0d863fa0a Β· finished 1.4h ago Β· 74 calls
corpus-patternslikely delivered
acorpus-pa Β· finished 1.4h ago Β· 26 calls
Engines 9/12 live Β· sacred pipeline highlighted
π’ registry census fresh Β· updated 23s ago
sacred pipeline
youtube-watcherlive Β· PARTIAL
β
transcriberlive Β· ENGINE
β
librarianlive Β· ENGINE
rest of the fleet
acceptance-judgestale Β· ENGINE
conversation-refinerylive Β· ENGINE
effect-write-wikilive Β· ENGINE
idea-librarianunreachable Β· ENGINE
ideaslive Β· PARTIAL
mission-controllive Β· ENGINE
registrylive Β· ENGINE
rentredi-expensesstale Β· ENGINE
wiki-sweeplive Β· ENGINE
Driver tmux session alive
π’ driver alive Β· last advance 48m ago
tick 2026-07-02T09:07:33Z Β· paged Jacob
CHARTER AMENDED (Item 7 SACRED SET keep-alive). First sacred pass over favorites.json (grown to 7: registry,librarian,ideas,engine-detector,youtube-watcher,transcriber,pipeline-health). 5/7 green. pipeline-health = alive+healthy (reconcile.jsonl fresh 09:03, fleet all 200) but detectedΒ·unregistered (no registry card β registration gap, not distress). engine-detector = DOWN ~37h (last Jun-30 20:22, no process); ROOT CAUSE: manifest declares launchd com.automate-friday.engine-detector but NO plist exists + never loaded = never actually supervised, ran manual + died. Reversible restart ATTEMPTED -> auto-mode classifier DENIED (shared-daemon launch = his authorization). Could not card (mission-control decisions.jsonl = active single-writer, one-surface-one-writer). PAGED Jacob via ntfy (HTTP 200, id lq8xtjqVWYqs): restart cmd + durable plist ask.
edge 2026-07-02T08:36:04Z
#29 gate fix VERIFIED CLOSED @72ce404 β injection class + symlink both closed with defense-in-depth (re-parse proven load-bearing via independent A/B: input-guard downgraded, re-parse still refuses); 17/17 + red-team independent 19/19 HOLDS 0 BROKEN; both #29 branches SHIP. wiki-sweep coupling caveat now moot (sole-write-path gate is actually safe). #29 code lanes (a)+(b) DONE; (c) assisted-LLM authoring + (d) live-loop boot remain Jacob-gated. TRUNK line updated to 6 verified branches
#29 red-team: wiki-sweep decide-fold @a4d6b9a = SHIP (matches #40 exactly, 17/17, regression can-go-red, no scope leak); gate hardening @16918908 = NO-SHIP β value guard /[\r\n]/ only blocks ASCII newlines but wiki parser _frontmatter.py:56 uses Python splitlines() = ALSO breaks on U+0085/U+2028/U+2029 => arbitrary frontmatter-key injection still open (realistic via scraped/LLM values, no adversary needed; audit fact lies about fields changed). Also symlink escape (resolve() no deref). Builder resumed: full splitlines charset guard + canonical-parser re-parse assertion + symlink reject, red/green pins Β· REFINED live-exposure note: the running wiki checkout is exposed to Unicode-newline frontmatter injection on ANY caller patching scraped/LLM field values until the fixed gate branch merges β still ratify-gated + low-traffic, not paging-grade, but sharper than the ASCII-only hole first reported
edge 2026-07-02T08:11:21Z
#29 follow-ups (a)+(b) BUILT: gate --patch-frontmatter HARDENING (automate-friday-wiki feat/gate-patch-frontmatter @1691890 β closes a REAL live body-injection hole: CRLF-past-frontmatter + path traversal; red 6/9->green 9/9) + #40 lifecycle ruling folded into wiki-sweep decide+conformance (monorepo feat/wiki-sweep-followups @a4d6b9a; ruling=add ONLY seed enum + reconcile building/raw strays; 17/17 conformant, real llmwiki-lint regression can-go-red). Fixtures only, live wiki+:6943 untouched. Red-team dispatched (injection-escape focus: alt line terminators, YAML-in-fieldname, path symlinks, atomicity) Β· LIVE-EXPOSURE NOTE for Jacob: the running wiki checkout serves the UNHARDENED patch mode until feat/gate-patch-frontmatter merges β a real (if low-traffic, ratify-gated) injection surface
tick 2026-07-02T07:57:15Z
GQM plain statement: tick7->8 window had NO issue/commit state change (feasibility was read-only) β first strike; second consecutive => observation-only. Advance: dispatched #29 follow-ups (a)+(b) (gate --patch-frontmatter mode + fold closed-#40 lifecycle-enum ruling into wiki-sweep decide layer; fixtures only, live wiki+loop untouched, (d) boot stays Jacob-gated) on feat/wiki-sweep-followups β wiki-sweep tracked source verified clean (untracked=runtime data, #71 territory)