# 2026-05-06

## Plan
- 

## Sessions

## HH:MM — claude-code-coo — Drafted SKILLS.md master index

**Decisions made:**
- Created `_System/SKILLS.md` as the cross-lane skill index (10_RateRight + 11_OpsMan_LFCS + 12_SiteOps + cross-lane plugin skills). Triggered by Rocky's review of Chase AI's Agentic OS video — gap identified was discoverability of existing skills, not infrastructure.
- Format: per-lane tables with Trigger / When-to-use / Status. LFCS section split into bid-intake pipeline (numbered 0–7 to make run order self-documenting), orchestrator (`lfcs-project-init`), and programmatic (`lfcs-airtable-sync`, `chat-bootstrap`).
- Added drift rule cross-referencing the existing LFCS-side `Operations/skills/_README.md` + `_Log.md` so the two catalogs stay aligned: SKILLS.md = cross-lane index, `_README.md` = LFCS-detail catalog with Airtable behaviour + regression fixture rule.
- Kept `_System/AgentLog/Skills-Log.md` (already existed, created today by HQ session) as the append-only audit trail for SKILLS.md changes.

**Insights:**
- Chase AI video oversold the dashboard piece; the keeper concept was domains → tasks → skills → automations as the architecture spine. Vault already implements all four layers — the missing piece was a master index for handoff/onboarding.
- 12_SiteOps has zero skills currently. Worth flagging if any site-ops sequence runs ≥2× to codify it.
- 10_RateRight skills (`hunt`, `matchmaker`, `post`, `pulse`) live at `~/.claude/skills/` (user-level) rather than vault-scoped. Acceptable because they're cross-project growth tooling, but consider migrating to `10_RateRight/Skills/` if they grow project-specific.

**Action items:**
- Bump `Last updated` line in SKILLS.md when adding/retiring any skill.
- Next agent retiring or adding a skill: append to both `SKILLS.md` row AND `_System/AgentLog/Skills-Log.md`.

**Resume notes:**
- If picking this up in a month: SKILLS.md + Skills-Log.md are the entry points. LFCS-detail catalog is at `11_OpsMan_LFCS/Operations/skills/_README.md`. The two must agree on skill existence; details live only in the LFCS catalog.

## Wins
- Master skill index now exists. New agents (or Rocky onboarding a teammate) can scan one page and see every codified workflow.

## Blockers
- 

## Tomorrow
- 

## 22:15 — cowork-hq — Multi-Hermes v0.12 strategy drafted

**Decisions made:**
- Drafted full multi-profile rollout strategy at [[Multi-Hermes-Strategy-2026-05-06]]. Six-profile roster (`hermes-coo` orchestrator + `hermes-opsman` / `hermes-rr` / `hermes-siteops` / `hermes-claw` workers + `hermes-curator`) using v0.12.0's native multi-agent Kanban primitive.
- Recommended **NOT upgrading immediately**. Run the 4 outstanding COO items (nginx buffer, rivet dual-mapping, Stripe smoke, flodeliffre provenance — all in [[HQQueue]] from 2026-05-03) through v0.11 single-profile `hermes-opsman` over the next week to measure punt rate before scaling profiles. Re-decide week of 2026-05-11.

**Context:**
- Hermes v0.12.0 dropped 2026-04-30 — 1,096 commits, 550 PRs since v0.11. Headline: native multi-agent Kanban (SQLite-backed durable task board, profiles claim atomically, dispatcher spawns each as OS process), autonomous Curator (skill-library hygiene on cron), +4 inference providers, ~57% TUI cold-start cut.
- Wave 1.3 today locked Architecture A on v0.11 (Hermes as own executor). v0.12's Kanban arguably makes A-vs-B moot — dispatcher pattern is now native, no CC CLI on VPS needed.

**Insights:**
- Pacing question is the load-bearing decision, not the strategy itself. Whip-flipping to a 6-profile setup 8 hours after locking Architecture A is decision noise. v0.12 is 6 days old — bug discovery curve still steep.
- Real bottleneck isn't agent count, it's site time. More autonomous agents help only if they can *finish* work without escalation. MiniMax-quality triage punt rate on novel problems is unknown — could be 80%, in which case 6 profiles = 6× punt volume.
- One-bot-per-profile (proposed: `@hq_coo_bot`, `@opsman_lfcs_bot`, `@rr_ops_bot`, `@siteops_bot`, `@claw_bot`) kills the two-agent-one-chat problem flagged in [[hermes-2026-04-30-self-audit]].

**Action items:**
- Rocky: review [[Multi-Hermes-Strategy-2026-05-06]] in The Window. Decision on upgrade timing.
- If holding on v0.11: actually push the 4 COO items into the existing pipeline this week. They've sat in [[HQQueue]] since 2026-05-03 untouched.
- Either way: define what "punt rate <30%" means operationally — what counts as a punt vs a successful close?
- If upgrading: Phase 0 backup (`~/.hermes/` dump + git tag v0.11 state) before anything else.

**Resume notes (a month from now):**
- [[Multi-Hermes-Strategy-2026-05-06]] is the load-bearing artifact. Read its Pacing pushback section first — that's where the actual decision lives. The 6-profile roster table tells you what to build IF you decide to upgrade. The phased rollout (Phase 0 → 5, 5-7 evenings, ~11 hours focused VPS work) is the execution plan.
- Default if Rocky never re-engages: stay on v0.11, single-profile, run COO items as-they-come; revisit if Hermes v0.13+ ships another step-change.

## HH:MM — cowork (HQ-side) — Cross-Claude vault audit + 5 system merges

**Decisions made:**
- Set up cross-Claude comms folder at `H:\My Drive\Cross-Claude-Comms\` on opsman.systems Drive (synced via Drive for Desktop after adding opsman as 2nd account in DfD). Two outbox files (`Rocky-Outbox.md`, `Friend-Outbox.md`) + `Audit-Handoff-Brief.md` for Hasibul's Claude.
- Read-only audit completed of Hasibul Khan's `LF Construction Services PTY Ltd / LFCS Obsidian Vault` (admin@lfcs.com.au, accessed via Drive shortcut path `H:\.shortcut-targets-by-id\1V8OJUh9QsYYZbF4Jic2W0ssRhe7GkbnC\`). Editor permission held but treated as read-only-by-policy — zero writes. 25 files read across all 11 numbered folders.
- Audit output: `_System/Audits/Friend-Vault-Audit-2026-05-06.md` — 9 dimensions, side-by-side gap table, top recommendations + action plan.
- Verdict: vaults complementary, not competing. Hasibul's strengths = numbered taxonomy + per-scope rate buildups + signed rate-card register + auto chat diary + new-job auto-trigger + per-job Quick Links table. Rocky's strengths = Phase 0 pricing grill + Common Misses log + multi-agent AI Team Protocol + cross-cutting concepts/specs folders + git versioning + per-job CLAUDE.md with Patterns wikilinks + skill catalog with regression fixture.
- Executed 5 system merges per Rocky go-ahead — bringing Rocky's vault to parity-or-better on the gaps:
  1. **Note-shaped templates** (Site-Diary-Entry, Issue-Entry, Client-Note, Quick-Capture + README) at `Operations/templates/notes/`
  2. **Per-job CLAUDE.md v5 orientation layer** — Quick Links + Status + What I Know + Documents Completed + What's Pending + Site Team — added to `lfcs-job-scaffold/SKILL.md`, backported to 2602 (canonical fixture), 2626 (canonical fixture), 2631 (live Hornsby — cross-reference to Hasibul's 01-2275)
  3. **Scope benchmarks** (complementary to existing pricing-history/, different granularity) — 6 scope buildups seeded from Hasibul's FRP Rates Development at `Operations/lfcs-standards/scope-benchmarks/`: stormwater pit ($10,770) · culvert pit ($16,830) · lightpole footing ($3,128) · stair flight ($5,610) · footpath 120mm ($6,970/120m) · footpath 160mm ($8,330/120m). Labour rate basis $85/hr ordinary confirmed consistent with Rate Card V1.7
  4. **Per-client knowledge files MVP** at `Operations/Clients/` — README + INDEX + 11 active LFCS client stubs ranked by 8-month revenue: Ford Civil (49.6%), Solutions Plus Built (28.4%), TCE Contracting (5.4%), FKR, SJCI, Unita, OakTree (⚠ INV#941 overdue 2+ months), Cerak, MLP (⚠ INV#960 overdue), Anthony Albetta, Girvan
  5. **`cowork-session-writeback` skill scaffolded** at `Operations/skills/cowork-session-writeback/SKILL.md` — auto-write daily-note entry at session end (this entry is the proof-of-concept). Trigger 1 (session-end hook) + Trigger 3 (scheduled curator) gated on env wiring; Trigger 2 (explicit) live now.

**Blockers hit (and current workaround):**
- Drive MCP connector wired to opsman.systems but Drive for Desktop initially syncing only admin@rateright.com.au (G:). Workaround: Rocky added opsman.systems as 2nd account in DfD → mounted at H:.
- Bash sandbox sees Drive-streamed folders as empty (Drive stream mode = host placeholders only). Workaround: use Read/Write/Edit on host paths, not bash, for any work in `H:\` mounts.
- `pricing-history/` schema is strict (validates `element` against `element-taxonomy.md`); Hasibul's data is whole-scope not per-BOQ-line — different granularity. Workaround: created complementary `scope-benchmarks/` folder rather than forcing data into wrong schema.

**Insights:**
- The two vaults are different SHAPES because the roles are different. Hasibul = office estimator/admin; Rocky = Site PM with multi-agent stack. Building parallel rather than merge.
- Top compounding gap closed: per-client knowledge files. Rocky had 25+ active LFCS clients with zero per-client knowledge consolidation. Now has 11 stubs with Hasibul's revenue data + payment flags pre-populated.
- Top quick-win: 5-second job orientation via the new per-job CLAUDE.md v5 layer. Quick Links + What I Know/Pending/Done sections beat the previous reference-card-only layout.
- The reciprocal half (Hasibul's Claude reverse-auditing Rocky's vault) is gated on Rocky sharing his vault to admin@lfcs.com.au. Not done in this session.

**Action items:**
- Rocky: share `H:\My Drive\Cross-Claude-Comms\` to admin@lfcs.com.au as Editor so Hasibul's Claude can write to Friend-Outbox.md
- Rocky: decide scope of his vault to share with Hasibul (recommendation: `11_OpsMan_LFCS/` + `_System/` only) and share to admin@lfcs.com.au as Viewer
- Rocky: WhatsApp Hasibul that the brief landed in the comms folder
- Rocky: enrich the 11 per-client files with tacit knowledge (variation behaviour, communication patterns, red flags) over The Window sessions
- Rocky: backport per-job CLAUDE.md v5 orientation layer to 2628 + 2630 organically (deferred — different frontmatter style on 2628; 2630 is a stub)
- Rocky: investigate Cowork session-end hook for `cowork-session-writeback` Trigger 1 — current session shows the explicit trigger 2 works
- Rocky/Hasibul (joint): rate-card version drift — most Hasibul-tracked clients on V1.4, your checklist references V1.7. Rolling out?

**Resume notes (a month from now):**
- Audit doc at `_System/Audits/Friend-Vault-Audit-2026-05-06.md` is the load-bearing artefact — 9 dimensions, side-by-side table, action plan ranked by impact.
- 5 merges executed are ready-to-use today. Per-client files MVP grows with Rocky's tacit knowledge inputs. Per-job CLAUDE.md template is in lfcs-job-scaffold v5 — future jobs auto-inherit the orientation layer.
- Cross-Claude-Comms folder is the durable channel. Even if Rocky/Hasibul don't actively use it day-to-day, leaving it in place lets either Claude leave async notes for the other.
- If Rocky wants to deepen the pricing system: ingest the FRP slab benchmarks (PV1-PV10) once Hasibul shares unredacted values; populate `Operations/lessons-learned/by-topic/` with patterns from real close-outs.

## 22:55 — claude-code-opsman — Wave 4 closeout + 7 follow-up items + diagnostics

**Decisions made:**
- Wave 4 batch shipped: Hermes Airtable schema-out-of-lane rule live in `/root/.hermes/SOUL.md` + mirrored into `11_OpsMan_LFCS/_Brain/CLAUDE.md`; `.obsidian/` churn ignored (HQ-Vault/.obsidian/{graph,workspace}.json + whole `vault/.obsidian/`); pre-commit append-only hook activated locally via `core.hooksPath`; `log-event.sh` degrades cleanly when `flock` is absent on Windows; Git LFS armed for `03a/*.pdf` + `_Archive/**/*.pdf` (forward-looking only — existing 58.86 MB Hornsby drawing stays in regular git).
- Stripe security_finding from earlier today downgraded to false positive — Open-Threads.md only contains truncated prefixes (`sk_live_51Rx...`), no full keys in repo or git history. Real keys live in sibling `the-50-dollar-app/.env.local` on VPS — out of repo scope. Logged correction event to events.ndjson.
- Airtable PAT rotation (`hermes-vps-rw-v1`) ABANDONED per Rocky despite 2026-05-05 transcript leak + over-broad scopes still granted. SOP at `docs/sop/airtable-pat-rotation.md` retained for future reactivation. Decision logged.
- 2 of 4 stale 2026-05-03 HQQueue items pushed through pipeline:
  - nginx `proxy_buffer_size` on rateright.com.au: RESOLVED MOOT (main location already has `proxy_buffering off;`, buffer-size directives are no-op there). Reopen if 502 recurs with correlated logs.
  - rivet.rateright.com.au dual-mapping: STATUS confirmed real (both domains proxy to :3000). 3 options surfaced for Rocky's Window-time call.
- Local divergence resolved earlier in session: 270-file commit `8c6899af` (Bluebeam renames + 3 new jobs + concept notes + skills + archive material). AB-Test-Tracker Round 9 collision resolved by keeping cowork-lfcs wing wall as Round 9 (chronological priority + filed first per _Log line 57); claude-code-coo submission-pack format pass renumbered to **Round 10** with explanatory note. _Log.md merge preserved both agents' entries.
- Auto-pull script bug fixed: prior version logged "Up-to-date" when `git pull --ff-only` failed silently due to local tracked-file modifications. Fixed to fetch first + compare local HEAD vs origin/main + detect non-zero exit + tighten blocker regex. Replaced em-dashes with `--` (PowerShell 5.1 UTF-8 parse-fail). Verified against today's 17:13-21:43 silent-failure window.
- 7 stale pre-hibernation stashes dropped (rivet/clawdbot/RateRight-HQ era refs).

**Blockers hit + workaround:**
- `git stash push -u` failed with "Filename too long" on a 280+ char `_Archive/` path. Set `git config core.longpaths true` for this clone; stash succeeded. Should consider making this default on fresh clones — append to setup docs.
- Push warned about 58.86 MB PDF exceeding GitHub's 50 MB soft limit. Set up LFS forward-only; existing big PDFs stay in regular git history (migration would require force-push).
- Hermes prompt edit on VPS hit bash backtick interpolation: `Never call \`create_table\`...` → bash ate the backticks as command substitution. Reran the substitution with literal text, then verified the rendered rule. Lesson: don't use heredoc python with embedded backticks via SSH — quote-escape pain. Use file copy or python -c with single-quoted strings.

**Insights:**
- Append-only pre-commit hook + LFS pre-push hook coexist cleanly under shared `core.hooksPath = scripts/git-hooks` — LFS install drops its hooks into the configured path automatically.
- `git pull --ff-only` swallows conflict errors silently if the only signal you check is rev-parse before/after. Always check `$LASTEXITCODE` AND fetch-then-compare-with-origin separately.
- The "359 leads, only 1 sent" hunt bottleneck cited in `_Brain/CLAUDE.md` is a misattribution — actual state is "all scrapers + matchmaker stopped intentionally; pipes open, taps off". hunt-aggregator/contractors/workers/matchmaker all `stopped` in PM2; only hunt-monitor + hunt-outreach online (read-only). Diagnosis: not a broken approval gate — a deliberate dormant queue. Restarting needs Rocky's call (cost / scope / supply-side strategy).
- Friend-Vault-Audit (cowork-hq, 488 lines) ranked 15 cross-pollination steals. **5 quick wins (Rocky → action) + 4 mid-effort + 3 bigger plays + 3 long-game** (last 3 are Hasibul-side, route via outbox). Top quick wins: numbered `00-11` taxonomy inside `11_OpsMan_LFCS/Operations/`, steal Site Diary + Issue Entry templates, per-job Quick Links table on per-job CLAUDE.md, "What I Know / Pending / Done" sections, per-client knowledge files (Ford Civil / Solutions Plus / TCE / FKR / SJCI / Unita / OakTree / Cerak / MLP / Anthony Albetta / Girvan).

**Action items (for Rocky):**
- Window-time decision: Hermes v0.12 upgrade timing (cowork-hq's recommendation = hold v0.11, run 4 COO items first; concur).
- Window-time decision: rivet.rateright.com.au dual-mapping (3 options in HQQueue).
- Triage Friend-Vault-Audit Section 9 quick wins — 5 items × ~30 min each, all unblocked.
- Optional revisit: Airtable PAT rotation if posture changes (chat transcript surfacing externally / Airtable audit shows unauthorized writes).
- 2 remaining 2026-05-03 HQQueue items still open: Stripe Checkout end-to-end smoke (needs $0.50 real-card test) + flodeliffre@gmail.com signup provenance (Supabase user-table query).

**Resume notes (a month from now):**
- Repo state at end of session: HEAD = `fd69e4c6` (or whatever the daily-note commit lands as). Wave 4 closed; Wave 5+ scope undecided.
- Untracked clutter intentionally left: `cog/`, `harper/` (pre-hibernation fleet artefacts), `control-centre/`, `faq-work/`, `opsman-control-centre/` (exploratory), 4 root screenshots. Rocky to decide gitignore vs commit vs delete in his own time.
- The pre-commit hook is now active locally — first-run experience for any future fresh clone needs `git config core.hooksPath scripts/git-hooks` (already documented in `_System/CLAUDE.md` Append-only rule section).
- Auto-pull is running every 30 min via Task Scheduler `rateright-growth-auto-pull` — last run at 22:13 pulled `3bc312b4`, next at 22:43 will pick up everything from this session.
