Skip to content

feat(consulting): Rob BODi fitness-lane operating floor — get, talk, move clients - #656

Merged
4444J99 merged 1 commit into
mainfrom
feat/rob-bodi-operating-floor
Jul 4, 2026
Merged

feat(consulting): Rob BODi fitness-lane operating floor — get, talk, move clients#656
4444J99 merged 1 commit into
mainfrom
feat/rob-bodi-operating-floor

Conversation

@4444J99

@4444J99 4444J99 commented Jul 4, 2026

Copy link
Copy Markdown
Owner

What this is

The first landed increment the niche-funnel engine promised (#649): Rob's BODi fitness lane as a runnable operating floor — how he gets clients, what he says to them, and how each one moves L0→L4. Built from Rob's own recovered substrate (Archive4T:/workspace-backup/organvm/_agent/hokage-chess/docs/substrate/bodi/ — gap map, production stack, attractor law, residual-blockers ledger), not invented.

Contents

File Role
organs/consulting/funnel/ROB-BODI-OPERATING-FLOOR.md the playbook: hunting→farming acquisition, six conversation tracks, stage cadence + KPIs
organs/consulting/funnel/instances/rob-fitness.yaml machine-readable instance: offer ladder (affiliate-disclosed), gated L0-L4 stages, Teamzy attribution fields, owed slots
organs/consulting/funnel/templates/talk-tracks-fitness.md the six tracks + disqualify-gracefully branches; affiliate link is a declared slot, never fabricated
organs/consulting/funnel/templates/capture-form-fitness.md the promised L2 capture-form template + niche swap-table (Jessica / John F. reuse)
organs/consulting/funnel/validate-funnel.py Engine Rules #1-7 predicate; negative-tested (12 violations fire on a bad instance)
organs/consulting/FUNNEL-ENGINE.md register + done predicate extended to include the funnel fleet
organs/consulting/engagements/rob.yaml 2 newly recovered owed atoms homed (Teamzy schema, reel/short links) + floor pointer

Boundary (unchanged, enforced by predicate)

Every outbound act is fired by Rob's own hand; scraping/bulk-DM tactics are formally retired_tactics and Rule #4 rejects them in any live config; the offer track carries plain affiliate disclosure (BODi is 1-level affiliate since 2025-01-01).

Gates (all local, all green)

  • ruff check + ruff format --check on the new script: clean
  • validate-funnel.py --fleet: 1/1 PASS (+ negative test exits 1 with all rule classes firing)
  • validate-consulting.py --fleet: 5/5 PASS — Concordia
  • git diff --check: clean

Non-website-sensitive (organs/** only — no deploy-trigger paths).

🤖 Generated with Claude Code

…move

The first landed increment of the niche-funnel engine (FUNNEL-ENGINE.md):
Rob's fitness lane rebuilt as a runnable floor from his own recovered BODi
substrate (Archive4T, 2026-04-25 corpus — gap map, production stack,
attractor law, agent fleet, residual-blockers ledger).

- ROB-BODI-OPERATING-FLOOR.md — get clients (content-led, inbound-only;
  hashtag scraping formally retired), talk to clients (six conversation
  tracks, all human-fired), move them (stage map + daily/weekly/monthly
  cadence + Rob's own KPIs)
- instances/rob-fitness.yaml — machine-readable instance config: offer
  ladder w/ affiliate disclosure, L0-L4 stages each with entry/exit/
  artifact/human-gate, Teamzy attribution fields, owed slots
- templates/talk-tracks-fitness.md — the six tracks + graceful exits;
  affiliate link stays a declared {{slot}} until Rob provides it
- templates/capture-form-fitness.md — the promised L2 capture-form
  template, with the niche swap-table for Jessica/John F. reuse
- validate-funnel.py — Engine Rules #1-7 (completeness, gated stages,
  manual mode, no cold-pressure tactics, slot integrity, offer integrity,
  engagement link); negative-tested; wired into the engine done predicate
- rob.yaml — two newly recovered owed atoms homed (Teamzy field schema,
  reel/short links for the L0 inventory) + operating-floor pointer

Gates: ruff check+format clean; validate-funnel 1/1; validate-consulting
5/5; git diff --check clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@4444J99
4444J99 merged commit 778a750 into main Jul 4, 2026
1 check passed
@4444J99
4444J99 deleted the feat/rob-bodi-operating-floor branch July 4, 2026 19:35

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 87a6cb41cd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

def _negated(line: str) -> bool:
"""A line that forbids a tactic is not a violation of it."""
stripped = line.strip().strip("-\"' ").lower()
return stripped.startswith(("no ", "not ", "never ")) or "never" in stripped

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Negate only the matched keyword clause

If a live YAML scalar contains both a disclaimer and an unsafe instruction, e.g. Never scrape; enable auto-send for warm leads, _negated returns true for the entire value, so the Rule #3/#4 loops skip every matched keyword in that scalar and --fleet can report a pass. That makes the new predicate unable to enforce the manual/no-cold-pressure boundary whenever configs are written as paragraphs or combined sentences.

Useful? React with 👍 / 👎.

## Done predicate (this floor)

```bash
python organs/consulting/funnel/validate-funnel.py --quiet \

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Pass a target to the funnel validator

As written, this done predicate invokes the new funnel validator with neither --fleet nor an instance path; the script's argument handling only builds targets in those cases, so --quiet alone exits through the no-target branch with status 2 before the consulting validation runs. Anyone following this floor's predicate from the repo root will get a failing check even when the shipped instance is valid.

Useful? React with 👍 / 👎.

Comment on lines +184 to +185
for token in sorted(set(SLOT_RE.findall(raw))):
if token not in owed_set:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Verify owed slots against the engagement record

When an instance adds a placeholder and also lists that name in owed_slots, this check passes without confirming the linked engagement actually records the owed human atom. That lets a future config satisfy Rule #5 entirely inside the same file (and silently fabricate a missing affiliate/link/form slot), even though the schema comment requires each slot to correspond to an owed atom in the engagement record.

Useful? React with 👍 / 👎.

Comment on lines +109 to +111
elif isinstance(node, dict):
for value in node.values():
out.extend(_walk_strings(value))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Include YAML keys in prohibited-term scans

If a live tactic is encoded in a key name, e.g. cadence: {auto_send: daily} or a stage field named bulk_dm, _walk_strings only descends into mapping values, so Rule #3/#4 never sees the prohibited term and --fleet can pass. Since these instance files are configuration, key names are part of the live config surface and need to be scanned or schema-validated too.

Useful? React with 👍 / 👎.

delivery: "{{ROB_AFFILIATE_LINK}} — slot stays empty until Rob provides his personal link"
- tier: "vip"
name: "VIP coaching group"
price: "monthly, set by Rob"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Specify the paid VIP offer price

For Rob's current instance, the committed engine and engagement records still name concrete L3 prices ($300/mo cohort and $500 physical+app), but the machine-readable offer config leaves the VIP price as monthly, set by Rob. Anything consuming this instance as the authoritative offer ladder cannot render or compare that paid tier, and Rule #6 still considers it fully specified, so the shipped config is not actually executable for this offer.

Useful? React with 👍 / 👎.

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.

1 participant