Go2 · Cowork.ai

End of Day Brief

Friday — System Rework Day
March 20, 2026  |  Scott: ~10h human  •  Agents: ~31h compute  •  Leverage: 3.1x
SM
Scott Moran · Founder
~10h
Scott (Human)
~31h
Agent Compute
3.1x
Leverage Ratio
30.9K
Keystrokes
54
Commits
1 + infra
Shipped
Leverage Ratio
1 : 3.1
For every 1 hour of Scott’s human input, 3 AI agents generated 3.1 hours of parallel compute. Scott worked ~10 hours (10am–9pm minus airport). Agents logged ~31 hours across Larry, Moe, and Shemp — including 7 hours of overnight autonomous work while Scott slept.
Lower than Wednesday’s 6.4x — system rework days require more human-in-the-loop decisions and less autonomous execution.
~10h
Scott (human)
~18h
Larry [Claude]
~8h
Moe [Codex]
~5h
Shemp [Gemini]
0h
Curly (standby)
30,886 keystrokes by Scott • 54 commits across agents • 50 files of coordination infrastructure shipped
🌱
Compute Tree — Friday’s Force Multiplier

Each agent works independently and spawns sub-tasks. Scott orchestrates via voice + keystrokes. The tree shows who did what — individual contributions rolled up into the day’s output.

Scott (~10h human) 30.9K chars + voice + calls + decisions Larry [Claude] ~18h Lead • MacBook Pro Moe [Codex] ~8h Content & QA • MacBook Pro Shemp [Gemini] ~5h Sentry • MacBook Pro Relay v2.0.0 PWA + SQLite + SSE Brain Coord Layer 50 files + safe_push EOD Pipeline Skills + 4 scripts CF Tun VAPID QA x2 compile Tier 1 Article 7+ rewrites, voice mine Review Polish 112 records + emails Issue #45 Work graph design Critic Voice Repo Consolidation Anti-entropy sweep G Suite Daemon launchd + sync Sentry Patrols Cost leaks + compliance Friday’s Compute Topology 1 human → 3 primary agents → 9 work streams → sub-agents System rework day: high coordination overhead, lower autonomy ratio

Friday was a system rework day — tear down scaffolding, pour permanent foundations. Scott worked ~10 hours (10am–9pm minus airport pickup for mom). Three agents logged ~31 hours of compute, including 7 hours of overnight autonomous work.

What actually shipped: Claude Relay v2.0.0 (larry.moran.bot) — full PWA with interactive sessions, SQLite task queue, SSE streaming, and Cloudflare Tunnel. Plus the brain repo coordination layer — 50 files of per-agent handoffs, generated STATUS.md, safe_push.sh, and compile_status.sh. Access vault decisions were locked in (API keys in vault, bank/SSN never stored).

The signature move: GitHub-first declared the product layer. Slack demoted to broadcast-only. Per-agent handoff files replaced ad-hoc coordination. Moe polished 112 review records and wrestled a Tier 1 article through 7+ rewrites. Shemp consolidated scattered repos, stood up a G Suite sync daemon, and caught cost leaks on sentry patrol. By end of day the system was deterministic enough for all three agents to close out through the new flow — and Moe found a real bug in safe_push.sh during QA.

App Usage Breakdown
Screen Time (minutes)
Claude
519
Chrome
373
QuickTime
218
Codex
210
Terminal
27
ChatGPT
16
Notes
9
Typing Volume (characters)
30.9K TOTAL CHARS
Claude 11,140
Codex 10,318
Chrome 6,701
ChatGPT 1,048
Terminal 998
Notes 491
Hourly Activity Timeline
Activity Intensity by Hour — Bar width = minutes active — All times local
Active Airport pickup (offline)
Friday, March 20
12am
1am
2am
3am
4am
5am
6am
7am
8am
Airport pickup — offline
9am
10am
11am
12pm
1pm
2pm
Offline
3pm
4pm
5pm
6pm
7pm
8pm
9pm
10pm
11pm
💚
Oura Ring — Biometrics
Activity & Movement Summary
63 /100 ACTIVITY
2,676
Steps
224
Active Cal
3,671m
Equiv. Walk
1m
High Activity
12m
Medium
182m
Low Activity
694m
Sedentary
MET Spike — End of Day
8.2 MET ~1.0 MET (desk)
MET spike at end of day (values hitting 5.0–8.2) — likely the airport pickup. Sleep data not available (ring may not have been worn overnight).
🤖
Agent Work Summary
Larry [AI] — Lead Agent
Infrastructure
  • Shipped Claude Relay v2.0.0 (larry.moran.bot) — full PWA with interactive sessions, SQLite queue, SSE streaming, Cloudflare Tunnel
  • Prototyped brain.moran.bot concept — agent status dashboard (not confirmed live)
  • Designed brain repo coordination layer (50 files, QA’d by Gemini x2)1
  • Mar 19 EOD report through 12 iterations with Oura integration and multi-model debate
  • EOD infrastructure: eod-sweep skill + 4 data gathering scripts
  • Agent infra: self-update mechanism, inbox system, session digest, ai-comms watcher
  • Access vault: pushed API keys, registered as trusted agent, installed Porkbun DNS MCP
  • Competitive analysis: Go2 Memory Engine vs Supermemory/Mem0/Zep/Letta
  • Saturday preview: unified cross-system EOD, DMs on Scott’s behalf, proved Codex transcripts locally readable
💰
Moe [AI] — Sales & Content
Sales
  • review.moran.bot: 112 records polished, 3 email copy rounds, subject line overhaul, durability docs2
  • access.moran.bot: Google OAuth, vault population, intake API, bot tokens
  • Tier 1 article “Stop Paying the Copy-Paste Tax”: 7+ rewrites, multi-model voice mining
  • Brain repo coordination QA: caught safe_push.sh staging bug, fixed it3
  • Opened Issue #45: live work graph / course view design
  • Identified stale-session edge case as systems insight
🛡
Shemp [AI] — Sentry
Sentry
  • Completed onboarding under new brain architecture
  • G Suite Sync Daemon live — hourly transcript sync
  • Repo consolidation: unified all repos to ~/workspace/code/
  • Sentry patrols: caught handoff non-compliance, transcript sync failure, stale April onboarding4
🔴
Curly [AI] — Mac Mini
Standby
  • No active Friday work (machine available but not tasked)
  • Ready for weekend dispatch if needed
  • Blocked on GitHub auth for brain repo access
💬
Human Communications
  • 💵
    2+ hour cash flow review with Michelle + Rosanna — formula errors found and corrected in real time
  • 💳
    Payroll: TMs and EMs completed. Remaining Brex → Gusto/TD transfers queued for Monday.
  • 📣
    Crew update posted in #-crew_go2: transparent message about fund availability and timeline
  • 🔍
    Requested worst-ROI customer list — still pending response
  • 📩
    Olan reached out about delayed payroll — acknowledged Saturday via Larry
Key Decisions Made
  • 1
    GitHub-first is the product layer — not database, not Slack. The brain repo is the source of truth for all coordination.
  • 2
    Per-agent handoff files — structured markdown, not YAML. Each agent reads/writes its own handoff state.
  • 3
    STATUS.md is generated — compile_status.sh builds it. Never hand-edited, always deterministic.
  • 4
    safe_push.sh — pull --rebase, abort on conflict, no auto-stash. Prevents silent merge disasters.
  • 5
    “Town Hall” replaces “Council” for multi-model deliberation sessions.
  • 6
    Data sensitivity posture encoded — API keys acceptable in vault, bank/SSN never stored.
  • 7
    Claude Relay over Slack triggers — full interactive sessions via PWA, not webhook pings.
  • 8
    Slack demoted to broadcast-only — brain repo is canonical. Slack is notification surface only.
🧭
Architecture Diagrams
Friday’s biggest output was architecture. The decisions above are easier to audit visually than as bullets, so the diagrams below show the current GitHub-native operating model that this day locked in. This is the lightweight version meant to work for real teams and eventually for small businesses that can operate on GitHub before a heavier database/event layer arrives.

These diagrams are the current-state reference, not the future-state database design. The maintained source is docs/current-state-architecture.md.
Important: this is the current-state architecture. The future database/event layer comes next and is intentionally not mixed into this section.
Also important: a few notes reflect Saturday QA context where that clarified Friday’s architectural decisions, especially the real safe_push.sh bug that Moe found by actually running the save flow.
1. Platform Entry Points
Messy Today
flowchart TB
    Scott["Scott / operator"] --> Invoke["Invoke agent / redirect work / wake session"]

    Invoke --> Claude["Claude Code sessions
platform wrapper / startup file"] Invoke --> Codex["Codex sessions
explicit prompt / shared startup skill / current thread context"] Invoke --> Gemini["Gemini CLI sessions
wrapper instructions / CLI prompt"] Claude --> Identity["Identity anchoring
who am I / what role am I in"] Codex --> Identity Gemini --> Identity Identity --> Shared["Shared brain contract begins
git pull -> STARTUP.md -> AGENTS.md -> decisions.md -> STATUS.md -> relevant state"]
All runtimes are supposed to converge into the same shared contract, but they do not enter it in exactly the same way yet. Claude and Gemini have cleaner wrapper mechanics than Codex today. That mess is real current state, not a mistake in the drawing.
2. Startup Flow
Current Contract Skills Partial
flowchart TB
    Entry["Agent anchored in shared brain context"] --> Pull["git pull --ff-only origin main"]
    Pull --> Startup["Read STARTUP.md"]
    Startup --> Agents["Read AGENTS.md"]
    Agents --> Decisions["Read decisions.md"]
    Decisions --> Status["Read STATUS.md"]
    Status --> Project["Read relevant projects/*/ACTIVE.md"]

    Project --> HandoffScope{"Which handoffs?"}
    HandoffScope -->|Default agents| Relevant["Read relevant handoffs only
internal + external"] HandoffScope -->|Shemp sentry exception| All["Read all handoffs"] Relevant --> Issues["Check GitHub Issues
pickup / blocked / unlabeled"] All --> Issues Issues --> Replies["Check pending-replies.json"] Replies --> ProfileCheck["Profiles on demand
check profiles/people or profiles/agents when a person or agent matters"] ProfileCheck --> AccessAware["Access awareness
use access.moran.bot when the task needs service context"] AccessAware --> SkillRefresh{"Refresh / install runtime-local skills?"} SkillRefresh -->|Partially real today| LocalSkills["Local wrapper / skill sync if this runtime supports it"] SkillRefresh -->|Otherwise| Work["Begin work"] LocalSkills --> Work
Startup reads the last saved durable state, not live presence. `OBSERVATIONS.md` is intentionally not part of this waterfall. Shemp is the exception because sentry duty means reading all handoffs, not only the ones relevant to one project.
3. End-of-Session Save Flow
Current Contract
flowchart TB
    Stop["Stopping point / end of session"] --> Handoff["Write handoff
handoffs/internal|external"] Handoff --> StatusGen["Run compile_status.sh
rebuild STATUS.md"] StatusGen --> Done["Append relevant projects/*/DONE.md"] Done --> Active["Update relevant projects/*/ACTIVE.md"] Active --> Observation{"Discovered something about how the system behaves?"} Observation -->|Yes| ObsWrite["Write OBSERVATIONS.md"] Observation -->|No| Push["Run safe_push.sh"] ObsWrite --> Push Push --> Result{"Rebase / push outcome"} Result -->|Success| Slack["Post summary to #ai-comms"] Slack --> Sound["Sound notification
psst.sh or done.sh"] Result -->|Conflict / failure| Abort["Abort rebase / fail loudly"] Abort --> Alert["Alert Scott / leave clear state
do not hide or auto-stash work"]
This is where the shared memory compounds or breaks. Friday’s architecture got stronger because Saturday QA exposed a real bug: safe_push.sh originally did not stage project ACTIVE.md / DONE.md. That is now fixed, and the failure path is part of the model.
4. Information Routing Map
Most Important
flowchart LR
    Info["New information"] --> Kind{"What kind of information is it?"}

    Kind -->|Settled global rule / Scott-approved strategic decision| Decisions["decisions.md"]
    Kind -->|Operational system learning| Observations["OBSERVATIONS.md"]
    Kind -->|Cross-agent session continuity| Handoffs["handoffs/internal|external"]
    Kind -->|Live project state / blockers / next steps| Active["projects/*/ACTIVE.md"]
    Kind -->|Completed project history / why / gotchas| Done["projects/*/DONE.md"]
    Kind -->|Pickup / blocked / owner / proposal / active design container| Issues["GitHub Issues"]
    Kind -->|Urgent human visibility / interrupt / decision now| Slack["#ai-comms"]
    Kind -->|Reusable capability / procedure / exact usage| Skills["skills / runbooks
source-of-truth TBD (#46)"] Kind -->|Service context / key / note / linked resource| Access["access.moran.bot"] Kind -->|Human or agent context / relationship / preferences| People["profiles/people|agents/*.md"]
This is the routing logic the system needs most. It explains why `OBSERVATIONS.md` exists, why proposals can just be GitHub Issues, and why Slack is not where durable coordination belongs.
5. Durable vs Live Architecture
Core Mental Model Future Layer Exists Only As Design
flowchart TB
    subgraph Humans["Humans + Agent Sessions"]
        Scott["Scott / humans"]
        Sessions["Larry / Moe / Curly / Shemp / external agent sessions"]
    end

    subgraph Durable["Durable shared state"]
        Brain["~/brain repo
STARTUP / AGENTS / decisions / handoffs / STATUS / ACTIVE / DONE / OBSERVATIONS"] Profiles["profiles/
people + agents + relationship context"] Queue["GitHub Issues
queue / ownership / blocked / proposals"] Access["access.moran.bot
service context / keys / notes"] end subgraph Local["Local-only replay / recovery"] Claude["Claude session logs"] Codex["Codex state_5.sqlite + rollout JSONL"] Telemetry["cowork.db / transcripts / voice / Oura / local machine state"] Mini["Mac Mini local state
not inherently accessible from Pro"] end subgraph Broadcast["Broadcast / visibility"] Slack["#ai-comms"] Sound["psst.sh / done.sh"] end subgraph Future["Future live layer (not built yet)"] Event["Event / heartbeat layer"] WorkGraph["Live work graph / course view"] end Scott --> Sessions Sessions --> Brain Sessions --> Profiles Sessions --> Queue Sessions --> Access Sessions --> Local Sessions --> Slack Sessions --> Sound Sessions -. live presence should flow through .-> Event Event -. powers .-> WorkGraph
This is the key separation: the repo tells you what happened at last save, not what is happening right now. That is why GitHub works as the first product layer for now, and why the database/event layer comes next instead of replacing this report retroactively.
6. Observability / Work Graph Visibility
Visibility Uneven Design Constraint
flowchart LR
    subgraph Tracked["Tracked"]
        T1["Terminal agents we spawn ourselves"]
        T2["Managed workers we control"]
        T3["Headless/browser workers we launch"]
    end

    subgraph Reported["Reported"]
        R1["Top-level agents via handoffs"]
        R2["External agents through repo updates"]
        R3["Humans through explicit updates"]
    end

    subgraph Inferred["Inferred"]
        I1["Human focus from telemetry"]
        I2["Work state from git / issues / logs after the fact"]
        I3["Possible child work from parent behavior"]
    end

    subgraph Opaque["Opaque"]
        O1["Vendor-native hidden child agents"]
        O2["Internal model reasoning"]
        O3["Unlogged or unregistered sub-work"]
    end

    Tracked --> Graph["Future live work graph / course view"]
    Reported --> Graph
    Inferred --> Graph
    Opaque -. limited / partial .-> Graph
      
This is why the future live work graph cannot just be Git plus polling. If you do not own the orchestrator or get structured events, a huge chunk of the system stays reported, inferred, or opaque.
7. Replay / EOD / Audit Input Sources
Current Capability Machine-Bound
flowchart TB
    Claude["Claude logs
~/.claude/projects/*/*.jsonl"] ClaudeSub["Claude sub-agents
~/.claude/projects/*/subagents/*.jsonl"] CodexDB["Codex thread metadata
~/.codex/state_5.sqlite"] CodexRoll["Codex rollout transcripts
~/.codex/sessions/.../rollout-*.jsonl"] Cowork["cowork.db telemetry"] Whisper["Superwhisper voice transcripts"] Meet["Meeting transcripts / operator transcripts"] Oura["Oura API / biometrics"] Git["Git history"] Handoffs["Handoffs / STATUS"] Issues["GitHub Issues"] Claude --> Synthesis["Replay / recap / EOD / audit synthesis"] ClaudeSub --> Synthesis CodexDB --> Synthesis CodexRoll --> Synthesis Cowork --> Synthesis Whisper --> Synthesis Meet --> Synthesis Oura --> Synthesis Git --> Synthesis Handoffs --> Synthesis Issues --> Synthesis Synthesis --> Reports["Reports / summaries / audits / follow-up context"]
This is the replay/history layer, not the live system. It matters because the team proved Codex local transcript recovery is real and because stale-session drift means old logs may describe a session accurately while still reflecting an outdated operating system.
Open Items & Blockers
  • April blocked — needs GitHub auth for brain repo access
  • Worst-ROI customer list — requested, no response yet
  • Olan payroll — awaiting PayPal DM to Scott
  • Juan Chacon — payout timeline question unanswered
  • Product demo video — sole blocker for Katie send flow
  • Town Hall rename — approved but not executed in codebase
  • Shemp closeout pushresolved (commit 03af797, pushed Saturday)
“The relay is dead. All agents now have a deterministic dashboard to follow.”
— Shemp [AI], Sentry Patrol Report