Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .okf/log.md
Original file line number Diff line number Diff line change
Expand Up @@ -1054,3 +1054,36 @@ nowhere); AGENTS.md lines 77-621 (the same rules concatenated verbatim).
**Deferred (documented, not done):** the six duplicate 60.xx JD numbers in
60-69-project-management + moving its four testing docs to 20-29 (M effort,
inbound-link risk); .junie/ + GEMINI.md/QWEN.md mirrors (other tools' files).

## 2026-08-08 — Warm lane demoted: C1 premise partially falsified, lanes re-weighted

Paul: "I would not be able to provide 10 warm names." The A0 C1 pick (warm =
primary channel) leaned on an enumeration he can't produce - exactly the risk
the register's devil's-advocate pre-registered ("C1 assumes Paul's network
actually contains ICP-adjacent founders"). Handled per runbook rule 7: a dated
ADDENDUM in the register's §C, not a silent rewrite.

**New lane order** (mirrored in OS Rock 1, runbook C0/C1/sprint map, strategy,
executive summary): LinkedIn PRIMARY (agent drafts, Paul posts 3-4/wk; posting
packet ready - his total effort is copy/paste/post) → cold #29 load-bearing
secondary (tooling unblock back on the critical path) → inbound floor LIVE
(verified: all 6 founder-intent posts link to /services/vibe-code-rescue/,
shipped in yesterday's 20.09 execution) → referral-ask OPTIONAL side lane
(2-3 past clients; a referral source need not be the ICP; nothing gates on it).

**Kill-criteria re-based** everywhere it appears (register, OS §1/§3,
portfolio, executive summary): "2 weeks of warm outreach" → "2 weeks of active
outreach across live lanes (LinkedIn posts and/or verified sends), 0 booked
calls → pause, re-open A + C." Clock starts at first post or first send.

**Durable rules:**
1. **When a human says they can't do the ask, the ask is dead - re-plan the
lane, don't shrink the ask.** The F5Bot lesson generalized: a dead ask
parked on the CEO's desk displaces the real unblock.
2. **A pre-registered risk firing is the register working.** The
devil's-advocate note made this a 30-minute re-weight instead of a crisis -
record premise changes as dated addenda so the vote history stays honest.
3. **Distinguish the ask from its cheapest satisfiable form**: "10 warm ICP
names" was unsatisfiable; "2-3 past-client referral asks" survives because
a referral source need not be the ICP. Demote, don't delete, when a weaker
form retains value.
19 changes: 10 additions & 9 deletions docs/business/operating-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Source of truth: [`rescue-sprint/pipeline.md`](../projects/2607-vibe-code-rescue
| 2026-08-08 | 0 | 0 | 0 (target 8-12 by Nov 30) | 0 (target 3-5) | 0 (target 1) | 2 (Aug, target ~6/mo) |

**Verdict: 🔴 red.** Not "zero calls" - **zero touches have ever been sent.** Batch-1 has been HOLD since 2026-07-26 (stale rows); the Sprint-3 re-source ran 2026-08-08 and is now BLOCKED-ON-TOOLING (`operation-runbook.md` §Card #29). 18 days since Sprint 3 kicked off (2026-07-26), the bottleneck hasn't moved past sourcing.
**Kill-check**: the C1 kill-criteria ("2 weeks of warm outreach yields 0 booked calls → pause, re-open A+C") has **not fired** - its precondition is 2 weeks of *actual* outreach, and none has gone out yet. Don't read that as safe: it means we don't even have the data the criteria needs. See Issue 2.
**Kill-check**: the re-based C1 kill-criteria (register addendum 2026-08-08: "2 weeks of active outreach across live lanes yields 0 booked calls → pause, re-open A + C") has **not fired** - its clock starts at the first LinkedIn post or first send, and neither has happened. Don't read that as safe: it means we don't even have the data the criteria needs. See Issue 2.
**Where sessions went this week**: mostly 2605 (course wave completion, W1-W5) and 2510 (content re-plan), plus this session's 2607 sourcing-tool diagnosis. That allocation is why a distribution failure sat unflagged for 18 days - nobody was in the pipeline sheet.

---
Expand All @@ -40,16 +40,17 @@ Source of truth: [`rescue-sprint/pipeline.md`](../projects/2607-vibe-code-rescue
| KR3 - Audits delivered | 3-5 free Rescue Audits | 🔴 0 - blocked behind KR2 |
| KR4 - Rescue signed | 1 by Nov 30 | 🔴 0 - blocked behind KR3 |

**Kill-criteria (from the assumptions register, evaluated here weekly - this is the "runs automatically via OS-WEEKLY" promise, made real):** C1 warm-channel test - 0 calls after 2 weeks of *actual sent* outreach → pause, re-open ICP/channel. Currently **untestable**, see §1. A0 ICP test - if ≥half of early interest is technical or pre-launch founders, re-open the ICP vote. Not yet evaluable - zero interest of any kind so far.
**Kill-criteria (from the assumptions register, evaluated here weekly - this is the "runs automatically via OS-WEEKLY" promise, made real):** C1 test (re-based 2026-08-08) - 0 calls after 2 weeks of *active outreach across live lanes* (LinkedIn posts and/or verified sends) → pause, re-open A + C. Currently **untestable** - the clock hasn't started, see §1. A0 ICP test - if ≥half of early interest is technical or pre-launch founders, re-open the ICP vote. Not yet evaluable - zero interest of any kind so far.

## 4. Rocks (open only — realigned 2026-08-08 so the lanes SUM to KR2)

The arithmetic that forced the realignment: KR2 needs 8-12 calls; the cold lane at full success (10-15 verified rows, generous 20% reply-to-call) yields ~2-3. The cold lane cannot carry the KR alone — the voted-primary warm lane and LinkedIn must carry the rest, and both were idle.
The arithmetic that forced the realignment: KR2 needs 8-12 calls; the cold lane at full success (10-15 verified rows, generous 20% reply-to-call) yields ~2-3. The cold lane cannot carry the KR alone — LinkedIn (now primary) plus inbound must carry the rest, with cold unblocked as the secondary and referral-asks as optional upside.

1. **Demand flowing from three lanes** (now):
- **Warm (PRIMARY, per A0 C1 vote)** - blocked ONLY on Paul: ~10 names from memory into `warm-intro-referral-kit.md` (or Gmail consent for T3). No tooling needed. Fastest path to a sendable touch.
- **LinkedIn Stream 0** - agent drafts, Paul posts, 3-4/wk total (20.09 §7); campaign vehicle is `linkedin-icp-validation-plan.md` (paused at 3/10 drafts, revivable on Paul's go).
- **Cold #29 (top-up)** - still BLOCKED-ON-TOOLING (`chrome-devtools` + egress to at least one of indiehackers.com / reddit.com). Worth unblocking; not the critical path anymore.
1. **Demand flowing from the live lanes** (re-weighted 2026-08-08 — Paul cannot enumerate 10 warm names, so the A0 C1 warm-primary premise is partially falsified; recorded as a dated addendum in the assumptions register):
- **LinkedIn Stream 0 (PRIMARY)** - agent drafts, Paul posts, 3-4/wk total (20.09 §7). Cheapest unblock on the board: **Paul posts ICP post #1** (`linkedin-posts/icp-validation/POSTING-PACKET.md` - copy, paste, post). Reaches his network passively without naming anyone.
- **Cold #29 (load-bearing again)** - BLOCKED-ON-TOOLING (`chrome-devtools` + egress to at least one of indiehackers.com / reddit.com). With warm gone this unblock is back on the critical path.
- **Inbound (live floor)** - 6 funnel-linked founder-intent posts → `/services/vibe-code-rescue/` + the booking link; B1 landing is the capacity-blocked amplifier.
- **Referral-ask (OPTIONAL side lane, not a gate)** - 2-3 past clients as referral sources via the kit templates, or T3 Gmail consent, or skip. Nothing waits on it.
2. **Landing page** (Aug) - card B1, blocked on nothing but capacity; booking link already live standalone.
3. **First send → first call** (Aug-Sep) - batch-1 from whichever lane opens first, then the daily reply-monitor.
4. **First audit → first signing** (Oct) - gated on Rock 3.
Expand All @@ -62,8 +63,8 @@ The arithmetic that forced the realignment: KR2 needs 8-12 calls; the cold lane

| # | Issue | Owner | Status |
|---|---|---|---|
| 1 | Sourcing BLOCKED-ON-TOOLING - #29's sweep can't open any thread to verify a timestamp | Infra/Paul | 🔴 Open since 2026-08-08 - see runbook §Card #29. Demoted from sole-blocker: the warm + LinkedIn lanes don't need it (Rock 1) |
| 2 | Kill-criteria untestable AND the primary lane never started - 18 days, zero touches sent; the voted-primary warm channel has an empty target list. The cheapest unblock on the whole board is Paul's ~10 warm names | Paul | 🔴 Open - the C1 clock starts at first send |
| 1 | Sourcing BLOCKED-ON-TOOLING - #29's sweep can't open any thread to verify a timestamp | Infra/Paul | 🔴 Open since 2026-08-08 - see runbook §Card #29. **Load-bearing again** (2026-08-08): with the warm lane demoted, cold is the secondary demand lane and this unblock is back on the critical path |
| 2 | Kill-criteria untestable - zero posts posted, zero touches sent. Warm lane demoted 2026-08-08 (Paul can't enumerate 10 warm names - register addendum). **The cheapest unblock is now Paul posting LinkedIn ICP post #1** (packet ready: copy, paste, post); the re-based clock starts at first post or first send | Paul | 🔴 Open |
| 3 | Joy Adamson override - only survivor of batch-1, 5mo old, still publicly unanswered | Paul | 🟡 Open - **decide before first send** (she rides batch-1 or not at all) |
| 4 | Pricing vs. thesis tension - JT undercuts at $7,500 against $25-55K competitors one week after publishing "cheap developers are expensive," which argues against its own thesis to a twice-shy founder. Related: the category name "vibe code rescue" is now a competitor's page title, page 1 occupied - fight for it or differentiate? | Paul | 🟡 Open - **decide both before first send** (openers and the landing quote the offer) |
| 5 | vision-mission.md still stamped DRAFT, 18 days on, while other docs cite it as settled | Paul | 🟡 Open - 1-line decision: ship it or say what's wrong |
Expand Down
2 changes: 1 addition & 1 deletion docs/business/opportunity-portfolio.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Discipline: **one bet is Validating at a time.** Spreading the company across se

| # | Opportunity | State | Project | Thesis (one line) | Kill-criteria (short) |
|---|---|---|---|---|---|
| 1 | **Vibe Code Rescue** | 🔵 **Validating** | [`2607-vibe-code-rescue`](../projects/2607-vibe-code-rescue/) | Funded non-technical founders will pay a fixed price to rescue a broken AI/dev-shop MVP and get ownership back. | If 2 weeks of warm outreach yields 0 booked calls → **pause and re-open A + C** (ICP *and* channel), per the [assumptions register](../projects/2607-vibe-code-rescue/rescue-sprint/assumptions-register.md) C1. **Status: untestable — zero touches have ever been sent** (see [OS §1](operating-system.md)); the clock starts at first send. |
| 1 | **Vibe Code Rescue** | 🔵 **Validating** | [`2607-vibe-code-rescue`](../projects/2607-vibe-code-rescue/) | Funded non-technical founders will pay a fixed price to rescue a broken AI/dev-shop MVP and get ownership back. | If 2 weeks of **active outreach across live lanes** (LinkedIn posts and/or verified sends) yields 0 booked calls → **pause and re-open A + C** (ICP *and* channel), per the [assumptions register](../projects/2607-vibe-code-rescue/rescue-sprint/assumptions-register.md) C1 addendum (2026-08-08 — re-based after the warm lane was demoted). **Status: untestable — the clock starts at the first post or first send**, neither of which has happened (see [OS §1](operating-system.md)). |

**Parking lot (candidates, not resourced)**: none yet. Add a row here when a new wedge earns a one-page thesis; do NOT start validating it while bet #1 is still open.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,14 @@ configuration the bet prohibits.

| Action | Owner | Cost | Why it is P0 |
|---|---|---|---|
| Restore **thread-open access** for sourcing (`chrome-devtools` + egress to **at least one** of indiehackers.com / reddit.com) | Paul / infra | - | Card #29's sweep ran 2026-08-08 and returned zero rows purely on tooling: every thread-open hit `EGRESS_BLOCKED`. Qualification needs a timestamp read from the opened thread, so **no sourcing method can produce a lead until this lands.** |
| **Post LinkedIn ICP post #1** from `linkedin-posts/icp-validation/POSTING-PACKET.md` (copy, paste, post) | Paul | ~2 min | The PRIMARY demand lane since the 2026-08-08 re-weight (warm-names premise fell). Activates the campaign and starts the kill-criteria clock. Cheapest unblock on the whole board. |
| Restore **thread-open access** for sourcing (`chrome-devtools` + egress to **at least one** of indiehackers.com / reddit.com) | Paul / infra | - | Card #29's sweep ran 2026-08-08 and returned zero rows purely on tooling: every thread-open hit `EGRESS_BLOCKED`. Cold is the load-bearing secondary lane — no sourcing method can produce a lead until this lands. |
| Run card **#29** - re-source prospects against the fixed v2 rubric | Agent | 1 session | Unblocks #12 and every send after it. **Gated on the row above.** |
| Decide the **Joy Adamson override** (5mo old, still publicly unanswered) | Paul | 1 min | Only survivor of batch 1 |

If a session has capacity for exactly one thing this week, it is #29 - not a post.
✅ **DONE (verified 2026-08-08): P1 funnel links** — all six founder-intent posts now link to `/services/vibe-code-rescue/` (§3 below is executed; the inbound floor is live).

If a session has capacity for exactly one thing this week, it is keeping the LinkedIn drafts flowing + #29 the moment tooling lands - not a new post.

---

Expand All @@ -80,7 +83,7 @@ overdue rows and the Aug 1-6 silence.

---

## 3. P1 — Wire existing traffic to the offer (zero new content)
## 3. P1 — Wire existing traffic to the offer (zero new content) — ✅ EXECUTED (verified 2026-08-08: all six posts link to the offer)

**The single highest-leverage fix in the entire content operation.**

Expand Down
4 changes: 2 additions & 2 deletions docs/projects/2607-vibe-code-rescue/executive-summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@ Four independent signals, not one hopeful reading:

This is a fixed-time bet, not an open-ended growth program. We are not building a pipeline machine or ranking in search. We are proving, end to end, that one motion works: a founder in pain finds us, books a free audit, and signs a fixed-price rescue. One signing produces the first case study and the confidence to scale in Q1 2027.

**Circuit breaker**: if two weeks of warm outreach produce zero booked calls, we stop and re-open the ICP bet before spending another hour - the machine is wrong, not under-fed.
**Circuit breaker** (re-based 2026-08-08, register C1 addendum): if two weeks of active outreach across the live lanes (LinkedIn posts and/or verified sends) produce zero booked calls, we stop and re-open the ICP *and* channel picks before spending another hour - the machine is wrong, not under-fed. The clock starts at the first post or first send.

## Solution

**The offer.** A free Rescue Audit in two steps: a 45-minute context call (understand the situation, collect read-only access to code/board/chats), then an intensive AI-assisted audit run offline - within 48 hours the founder gets a one-page, plain-English scorecard: what's solid, what's fragile, salvage or rebuild. No contract. If they move forward, a fixed-price Rails rescue (3 tiers, A2-confirmed: $2,500 triage / $7,500 rescue / $10,000 foundation reset), agreed up front so the number can't creep.

**The wedge.** Not "we fix broken code" - that lane is crowded. Ours is **ownership and trust**: you own the code and every account at each milestone, and Paul sits on every call as your fractional CTO translating what the developers are doing into decisions you can make. Trust is the product; the rebuild is how we deliver it.

**How we find them.** We listen for the founder's own words of pain (the "Push" - our trigger taxonomy) in the venues where they post it, and lead with their words plus the ownership wedge, never a cold pitch. Warm intros and past-client referrals first (they convert fastest for a burned buyer); agent-sourced cold community threads (IndieHackers, Reddit, HN, X) second; Paul working the high-value manual signals on LinkedIn.
**How we find them.** We listen for the founder's own words of pain (the "Push" - our trigger taxonomy) in the venues where they post it, and lead with their words plus the ownership wedge, never a cold pitch. LinkedIn first (Paul posting agent-drafted control-loss stories, 3-4/wk - re-weighted 2026-08-08 when the warm-names premise fell); agent-sourced cold community threads (IndieHackers, Reddit, HN, X) second; the funnel-linked blog posts and booking link as the always-on inbound floor; past-client referral asks as optional upside.

**Who does what.** A white-label partner builds the rescue under the JetThoughts brand, to our quality bar. Agents do all the prep - research, sourcing, drafting, the target list, the openers, the scripts. **Paul is reserved for the calls and the close.** A runbook plus an incremental task backlog holds the state so any session can pick up and execute without losing context.

Expand Down
Loading
Loading