Skip to content

docs: retire F5Bot sourcing, fix review findings, optimize the business OS - #440

Merged
pftg merged 3 commits into
masterfrom
claude/cement-status-next-steps-i9b8i1
Aug 8, 2026
Merged

docs: retire F5Bot sourcing, fix review findings, optimize the business OS#440
pftg merged 3 commits into
masterfrom
claude/cement-status-next-steps-i9b8i1

Conversation

@pftg

@pftg pftg commented Aug 8, 2026

Copy link
Copy Markdown
Member

Commit 1 — purge the passive keyword monitor from the sourcing machinery

Paul: "remove f5bot, it's not working as you wanted." It was marked retired 2026-08-08 but half-done — a doc survived as a "keep the keywords" stub, and two boards still carried "paste the v2 keywords into F5Bot" as a load-bearing ask on Paul's desk. Deleted the doc, scrubbed every reference, preserved the keyword derivation (re-verified against the corpus) into p7-search-sweep.md, compressed the rationale into two reusable structural tests (active-not-passive, ranked-not-substring) so the lesson outlives the tool name. Corrected a false status: card #29 is BLOCKED-ON-TOOLING, not agent-runnable — its sweep already ran and returned zero rows because every thread-open hit EGRESS_BLOCKED.

Commit 2 — fix 8 CodeRabbit findings, decline 1 with reasoning

Verified each finding against the actual file content before acting. Eight were real (a Reddit-monitoring gate mismatch, an "IH+Reddit both required" overclaim I'd propagated into 3 files when the source doc only requires one venue, a stale runbook heading, a T5 status that read as if P7 had produced rows, an excerpt-only doc not stating its rows can't become leads without re-verification, my own added text glossing over a doc's pre-existing Trigger-3 caveat, and a completion-threshold ambiguity). Declined one: CodeRabbit wanted X's Snowflake-derived date exception removed to match a "always open the thread" rule — checked the mechanism, it's deterministic and more reliable than a manual read, so removing it would trade a working mechanism for compliance with a rule aimed at a different failure mode. Explained in-thread; CodeRabbit withdrew the finding after checking the math itself.

Commit 3 — optimize the business operating system

docs/business/operating-system.md was well-designed and never actually running: one commit since inception, zero updates in 7 days despite its own "Review: weekly." Root cause: the weekly scorecard had no Actual column, and the pipeline ledger's "fill each Friday" tally has been empty since creation — nowhere to write a real number, so nothing got written, so an 18-day zero-touch distribution failure sat unflagged.

Rewrote it (110 → 85 lines): §1 now reads pipeline.md's tally directly instead of authoring a second, ungrounded scorecard (and filled the sheet's first real row — all zeros, today, so the binding has something to point at). Fixed a KR2 date conflict (Nov 15 vs Nov 30). Replaced three stale "all resolved" issues with the five that are actually open, including that the kill-criteria is untestable, not "not fired" — zero touches have ever been sent, not just zero calls. Cut a rock superseded by last week's content re-plan. Deleted a stale state snapshot in favor of linking the runbook as the single source, and added a changelog so resolved items have somewhere to land instead of accumulating as dead rows.

Gates

Docs-only across all three commits — zero files under content/ or themes/, so the visual suites don't apply. Course validators 8/8 green on each commit. Hugo binary unavailable in this container; no rendered page is touched regardless.

…nery

Paul: "remove f5bot, it's not working as you wanted." It was marked retired
on 2026-08-08 but the retirement was half-done - the doc survived as a
"kept for the keyword derivation" stub, and two boards still carried
"paste the v2 keywords" as a load-bearing ~2-minute ask on Paul's desk
(runbook Sprint-3 header + START HERE, and 20.09 P0). A dead blocker on the
CEO's desk is worse than none: it reads as the cheapest available unblock,
so it displaces the real one.

Deleted prospects/p7-f5bot.md and scrubbed every instructional reference
across the runbook, backlog, RUN prompts, grooming, sourcing pipeline,
trigger taxonomy, reply-monitor, prospect list and the OKF playbook. One
dated record survives in backlog.md #29 status plus the OKF log - the
lesson is durable, the tool is not.

Preserved and re-verified the keyword derivation in p7-search-sweep.md §3:
non-technical 20x, replit 16x, lovable 8x, cursor 5x, vibe coded 2x (vs
the gerund at 10x, rejected - it floods with commentary, not distress).

Surfaced by the move: `dev shop` has ZERO corpus occurrences (0 for
dev shop/devshop, 1 for agency). It carries the Trigger-3 ownership lane
and its only prior coverage argument WAS passive monitoring, so our
second-strongest trigger now rides an unevidenced term in a lane grooming
already proved unfindable via open search. Marked as a lane gap to
escalate, not a quiet zero. bolt.new/base44 are likewise unevidenced.

Also corrects a false status while here: #29 was described as agent-runnable
with zero Paul input. It is not - its sweep ran 2026-08-08 and returned zero
rows because every thread-open hit EGRESS_BLOCKED and Reddit rejected the
user agent. Qualification needs a timestamp read from the opened thread, so
no sourcing method can produce a lead until thread-open access is restored.
That replaces the keyword ask as P0 in both boards.

Compressed p7-search-sweep §1 from a 5-row comparison against a dead tool
into the two structural tests any sourcing tool must pass (active not
passive; ranked retrieval not literal substring), so the lesson outlives
the name.

Gates: docs-only diff, zero files under content/ or themes/. Course
validators 8/8 green; Hugo binary unavailable in this container, but no
rendered page is touched. The Sam-facing F5Bot mention in the course
reference is deliberately untouched - founders monitoring their own
keywords forward-in-time is a different use case from our backfill need.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LtDh9gdEPMZjaFKauRaRRs
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR retires F5Bot sourcing and monitoring references. It defines ranked, date-filtered active search, records keyword evidence and tooling limits, updates card #29 prerequisites, and retains only NeetoCal mailbox monitoring.

Changes

Active sourcing workflow

Layer / File(s) Summary
Active search method
docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-search-sweep.md, docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/RUN.md, docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p4-reddit.md
P7 now uses ranked, date-filtered active search. Keyword evidence, unsupported terms, escalation rules, and thread-access requirements are documented.
Sourcing execution and tooling status
docs/projects/2607-vibe-code-rescue/...
Runbooks, grooming notes, taxonomy, backlog, and prospect records replace F5Bot with active searches and document zero-row results caused by blocked thread access and egress.
Card gating and sourcing records
docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md, .okf/log.md
Card #29 now requires browser-based sourcing access. The log records the F5Bot retirement and the updated sourcing criteria.
Mail monitoring cleanup
.okf/workflows/outbound-sprint.md, docs/projects/2607-vibe-code-rescue/rescue-sprint/reply-monitor-prompt.md
Gmail monitoring now uses only neetocal. The F5Bot filter and F5BOT-MATCH classification were removed.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change, retiring F5Bot sourcing, and also references related review updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/cement-status-next-steps-i9b8i1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pftg
pftg marked this pull request as ready for review August 8, 2026 11:32

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.okf/workflows/outbound-sprint.md:
- Around line 25-27: Update the morning sweep description in outbound-sprint.md
so Reddit monitoring is conditional on batch 2 being live, matching the gate in
reply-monitor-prompt.md. Keep IH notifications, LinkedIn, and Gmail in the
unconditional sweep, and retain the existing reply classification, drafting, and
ledger-update steps.

In
`@docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md`:
- Around line 52-53: Align the card `#29` unblock contract across all three
affected documents:
docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md
(lines 52-53), docs/projects/2607-vibe-code-rescue/operation-runbook.md (lines
46-47), and
docs/projects/2607-vibe-code-rescue/rescue-sprint/cold-prospect-list.md (lines
78-79). Use one shared prerequisite consistent with the P7 gate’s
single-openable-venue requirement, or explicitly justify requiring both Indie
Hackers and Reddit egress as the acceptance condition for `#29`.

In `@docs/projects/2607-vibe-code-rescue/operation-runbook.md`:
- Line 91: Update the T5 status entry to avoid marking it Done while P7 is
blocked or has zero verified rows: use Blocked/Partial, or explicitly redefine
Done as method execution and align the stage gate with that definition. Preserve
the existing T5 scope and output references.
- Around line 17-18: Update the “Current state” heading in the runbook to use
2026-08-08 and indicate that Sprint 3 is blocked on tooling, while preserving
the existing paragraph content and status details.

In `@docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p4-reddit.md`:
- Line 25: Mark the excerpt-only Reddit entries in this document as non-leads
that cannot enter cold-prospect-list.md. Label them as an excerpt queue and
VoC-only output, and state that they become leads only after the opened-thread
timestamp admission gate from t4-t5-grooming.md and RUN.md is satisfied.

In
`@docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-search-sweep.md`:
- Around line 64-67: Update the P7 search-sweep table and surrounding guidance
to remove Trigger 3 queries, including “dev shop” and its variants, or
explicitly label them as research-only escalation signals rather than P7 search
terms. Preserve §3.6’s ownership of Trigger 3 by P6 and avoid treating zero P7
results as a lane gap.
- Around line 64-67: Revise the removal guidance for `bolt.new` and `base44` so
they are dropped only after two sweeps pass the §4 sanity checks and reach an
openable target venue. Treat the 2026-08-08 zero-row run as tooling-blocked
evidence that cannot justify removal, while preserving the existing instruction
to remove these terms after valid empty sweeps.

In `@docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/RUN.md`:
- Line 24: Update the P7 workflow description so X follows the same
opened-thread timestamp requirement as every other venue: require each surviving
X candidate to be opened and its timestamp verified from the thread before
creating a P7 lead row. Remove any date-verification exception based on the X
post ID, while preserving the existing Reddit excerpt-only rule and VoC
handling.

In `@docs/projects/2607-vibe-code-rescue/rescue-sprint/t4-t5-grooming.md`:
- Around line 162-166: The documented mitigation conflicts with the P8 and `#29`
target by describing 8–10 verified rows as acceptable. Clarify in the referenced
verdict and associated `#29/runbook` completion criteria whether 8–10 is only a
fallback or an explicit passing threshold; if it is sufficient, update the
documented gate consistently, otherwise retain 10–15 as the completion target
and label 8–10 as fallback only.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 319942bd-136d-487d-8c0e-8352573fdea9

📥 Commits

Reviewing files that changed from the base of the PR and between aa8a1b2 and 82f3df7.

📒 Files selected for processing (14)
  • .okf/log.md
  • .okf/workflows/outbound-sprint.md
  • docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md
  • docs/projects/2607-vibe-code-rescue/backlog.md
  • docs/projects/2607-vibe-code-rescue/operation-runbook.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/cold-prospect-list.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/icp-trigger-taxonomy.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/RUN.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p4-reddit.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-f5bot.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-search-sweep.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/reply-monitor-prompt.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/sourcing-pipeline.md
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/t4-t5-grooming.md
💤 Files with no reviewable changes (1)
  • docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-f5bot.md

Comment thread .okf/workflows/outbound-sprint.md Outdated
Comment thread docs/projects/2607-vibe-code-rescue/operation-runbook.md Outdated
Comment thread docs/projects/2607-vibe-code-rescue/operation-runbook.md Outdated
Comment thread docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/p7-search-sweep.md Outdated
Comment thread docs/projects/2607-vibe-code-rescue/rescue-sprint/prospects/RUN.md
Comment thread docs/projects/2607-vibe-code-rescue/rescue-sprint/t4-t5-grooming.md Outdated
claude added 2 commits August 8, 2026 11:41
Verified each finding against the actual file content before acting (per
the review's own instruction) rather than applying them blind. Eight were
real:

- outbound-sprint.md: Reddit swept unconditionally in the morning-monitor
  recipe, but reply-monitor-prompt.md only checks Reddit once batch 2 is
  live. Aligned the gate.
- Three files (runbook, cold-prospect-list, 20.09) claimed #29's tooling
  unblock needs egress to BOTH indiehackers.com and reddit.com, but
  p7-search-sweep.md's own conclusion is "at least one venue openable."
  I introduced this overclaim by copy-pasting the phrase into three places
  without checking it against the source doc. Corrected all three.
- runbook.md: the START HERE heading still read "2026-07-26, Sprint 3
  planned" one paragraph above text recording the 2026-08-08 tooling
  block - a fresh session could read the heading and think #29 is
  runnable. Dated it correctly.
- runbook.md T5 status: "Done (P4-P7 complete)" read as if P7 produced
  rows. Clarified P4/P5/P6 landed rows while P7's method shipped but its
  sweep is BLOCKED-ON-TOOLING, which is a #29 fact, not a T5 defect.
- p4-reddit.md: excerpt-only rows didn't explicitly say they can't enter
  cold-prospect-list.md as leads without a thread-open re-verification.
  Added the line - Vote 3 already requires this, the doc just didn't say
  so locally.
- p7-search-sweep.md: my own added text ("lane gap to escalate") glossed
  over the doc's pre-existing §3.6, which already explains why P7 has no
  reliable Trigger-3 discovery lane. Reconciled: dev shop still runs in
  the query bank as a cheap catch, a zero there is expected per §3.6 not
  a fresh signal, and escalation is now conditioned on P6 (which DOES own
  Trigger 3) also running dry. Also tightened bolt.new/base44 removal to
  require two VALID (non-blocked) empty sweeps, not two attempts of any
  kind - the 2026-08-08 run was tooling-blocked and can't count.
- t4-t5-grooming.md: "8-10 rows is acceptable" read as a completion
  target, conflicting with T6/backlog's stated 10-15+. Labeled 8-10 as a
  fallback floor, not the target, without touching the other docs'
  numbers.

One finding declined with a reply (not a fix): CodeRabbit wants X's
snowflake-derived date exception removed to match Vote 3's "always open
the thread" rule. Checked p7-search-sweep.md §3.4 - a status ID encodes
its timestamp deterministically (Twitter Snowflake), so it's more
reliable than a manual read, not less, and it's the one venue immune to
the egress block. The exception is deliberate and correct; removing it
would trade a working mechanism for compliance with a rule aimed at a
different failure (excerpt-guessing). Explained in-thread.

Gates: docs-only, zero files under content/ or themes/.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LtDh9gdEPMZjaFKauRaRRs
The OS was well-designed and never actually running. docs/business/ had
exactly one commit (Aug 1, riding in as a passenger on an unrelated course
PR) and zero updates in the 7 days since, despite "Review: weekly" in its
own header. Root cause: the weekly scorecard had no Actual column and
pipeline.md's "fill each Friday" tally has been empty since it was
created - there was nowhere to write a real number, so nothing got
written, so nobody was looking, so an 18-day zero-touch distribution
failure sat unflagged.

What changed (110 -> 85 lines, same file):

- New §1 "This week" reads pipeline.md's tally directly instead of
  authoring a second, ungrounded scorecard - filled in the sheet's first
  real row (all zeros, today) so the binding has something to point at
  on day one.
- Fixed KR2's Nov-15/Nov-30 date conflict against the portfolio's single
  Nov-30 deadline.
- Replaced the Issues list's three "all resolved" rows (the newest dated
  2026-07-22, over two weeks stale) with the five that are actually open:
  sourcing blocked-on-tooling, the kill-criteria being untestable (not
  "not fired" - zero touches sent, not just zero calls), the unresolved
  Joy Adamson override, the pricing-vs-thesis tension 20.09 flagged, and
  vision-mission.md's stale DRAFT stamp.
- Cut the paid-pilot rock (superseded 2026-08-07 by 20.09 - the bet
  currently forbids a content sprint, paid budget waits on an organic
  reply signal).
- Deleted the stale §0 snapshot (dated 2026-07-21, contradicted the
  runbook) in favor of linking the runbook as the single state source;
  collapsed meeting-cadence and pipeline-stage prose to one line each;
  folded "definition of operating" into the changelog discipline instead
  of a paragraph nobody re-reads.
- Added a Changelog so resolved issues/closed rocks have a landing spot
  instead of accumulating as dead rows in the live tables.

Explicitly not touched: vision-mission.md's DRAFT stamp (flagged as
Issue 5, not mine to flip) and the actual OKR targets/pricing (Paul's
calls, not restructuring calls).

Gates: docs-only, zero files under content/ or themes/. Course
validators 8/8 green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LtDh9gdEPMZjaFKauRaRRs
@pftg pftg changed the title docs(2607): purge the passive keyword monitor from the sourcing machinery docs: retire F5Bot sourcing, fix review findings, optimize the business OS Aug 8, 2026
@pftg
pftg merged commit 2da1ce3 into master Aug 8, 2026
4 checks passed
@pftg
pftg deleted the claude/cement-status-next-steps-i9b8i1 branch August 8, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants