# PMFST · Ralph Loops = R3MP · Obvious / Outlier comparison
# Per Dan-direct DANOTES 051326 ~15:34 PT (HUB-THREAD `19e0087be1e80453` Message 12, id `19e237a18353ba8a`)
# Dan-direct verbatim: *"Ralph Loops = R3MP (Nest Endemic); Obvious/Outlier comparison, please?"*

**Filed by:** ◐ Doc 4.7 Opus (Producer) · DOC cloud-station · workspace-class
**Date:** 051326 D Week Day 4 Wednesday ~19:10 PT
**Source-substrate (Pass 1):**
- Ralph Loops: WebSearch 051326 ~19:00 PT — Geoffrey Huntley `ghuntley.com/ralph/` · `ralph-wiggum.ai` · `github.com/anthropics/claude-code/blob/main/plugins/ralph-wiggum/README.md` · `vercel-labs/ralph-loop-agent` · `linearb.io/blog/ralph-loop-agentic-engineering-geoffrey-huntley` · `humanlayer.dev/blog/brief-history-of-ralph`
- R3MP: `RELAY/STANDARD_RULE_R3MPScalesPassNumberingIsStandard_Crew_050926.md` (Dan-direct ~02:25 PDT 050926, canonized) · `RELAY/CORRECTION_PassOneReadsSubstrateNotSummary_Doc_050826.md` (origin canon) · message-12 header *"CREW READ WAIT THINK CODA LAGOS 051226 DANOTES"* (the cadence-naming itself)

═══════════════════════════════════════════════════════════════
## DEFINITIONS (substrate-cited, not paraphrased)

**Ralph Loops** (industry canon; Geoffrey Huntley):
- Bash `while (true)` loop feeding an AI agent a task across iterations until completion-verified
- Each iteration: pick ONE task from prioritized list → implement → test → commit → exit for fresh context window → next iteration
- Verifies completion between iterations rather than trusting the LLM's "I'm done" signal
- Anthropic ships an official plugin: `claude-code/plugins/ralph-wiggum`
- Documented reductions: $50k contract → $297 reported by Huntley; 6 repos shipped overnight at YC hackathon

**R3MP** (NEST-endemic; Dan-direct canon 050926):
- Pass 1 = first substrate-encounter, irreducibly first
- Pass 2 = return-read with new lens / new context / new substrate
- Pass 3 = synthesis between Pass 1 and Pass 2 — REQUIRES PROOF OF BOTH (citation by graft ID)
- Load-bearing epistemic standard for ALL work-units, not a problem-emergency discipline
- Named failure-mode: SUBSTRATE-SUMMARY-DEFERENCE (deferring to another Crew's summary as if their Pass 2 framing were your own pass-state)
- Cadence shape per Dan's message-12 header: READ WAIT THINK CODA

═══════════════════════════════════════════════════════════════
## OBVIOUS MATCHES (the equation holds at this level)

1. **Iterative-pass methodology** — both refuse single-shot completion claims; both built around the gap between "done-asserted" and "done-verified."
2. **Fresh context per iteration** — Ralph: each loop iteration gets a fresh context window (the agent exits and restarts). R3MP: each Pass is a separate substrate-encounter, not a single-agent's working memory.
3. **First-is-first; second-is-second** — Ralph treats each iteration as a distinct encounter. R3MP: *"first time is first because it's not second"* (Dan-direct, canonical). Both refuse to compress the encounters.
4. **Verification as gate, not as ceremony** — Ralph: test-pass + commit. R3MP: cite Pass 1 graft ID to claim Pass 2; cite both to claim Pass 3.
5. **Substrate-orientation** — Ralph operates on a code repo as substrate. R3MP operates on Bridge / RELAY / LOG / AGOS / LAGOS as substrate. Both treat substrate-state as the source of truth, not agent's belief about substrate-state.
6. **Convergent independent invention** — Huntley reached this from industry-side observation that LLM agents drift if you don't make verification structural. NEST reached it from Dan-side observation that Crew drifts if Pass-numbering is implicit. Same epistemic gap, two independent surfacings.

═══════════════════════════════════════════════════════════════
## OUTLIER DIVERGENCES (where they are NOT the same)

1. **Single-agent vs multi-Crew.** Ralph is fundamentally single-agent in a loop (one agent, fresh context per iteration). R3MP is fundamentally multi-Crew and multi-instance — Pass 1 may be Doc, Pass 2 may be Trip with a different lens, Pass 3 synthesizes both. R3MP's "fresh context" is achieved through *different crew-members*, not through one agent restarting.

2. **Termination semantics.** Ralph terminates when the AI verifies the task is complete (or a human kills the loop). R3MP does not terminate — it is the standing epistemic standard. Pass-N continues across days, sessions, and Crew-instances as substrate accumulates.

3. **The Coda.** R3MP cadence is READ · WAIT · THINK · CODA — the Coda is the closing observation that names the substrate-shape just produced. Ralph has commit-messages but no structurally-named Coda stage of substrate-observation. Coda is where NEST canon emerges; Ralph's analogue is just "next iteration."

4. **Failure-modes named.** R3MP names SUBSTRATE-SUMMARY-DEFERENCE explicitly — the failure of treating a summary as substrate. Ralph's framing has no direct analogue; its failure mode is "the LLM said done when it isn't," which is a single-agent issue. NEST's analogue lives in multi-Crew handoff failure (Doc-yesterday's summary not being Doc-today's substrate, etc.).

5. **Authority direction.** Ralph: mechanism-driven (the loop runs the agent; the agent self-verifies). R3MP: substrate-driven (Pass 3 requires PROOF — substrate-citation by graft ID — not agent-judgment of completeness). The gate in R3MP is the citation, not the agent's claim.

6. **Scale of "iteration."** Ralph iterates inside one project, on one agent's task list, in real-time. R3MP iterates across Crew, days, sessions, NEST-versions. The Pass 1 of THIS PMFST is the WebSearch + the R3MP STANDARD_RULE read; the Pass 2 of this PMFST will happen when Trip or another Crew-member returns with a different-vantage read.

7. **Anthropic-relation.** Ralph is industry-canon Anthropic has packaged (`claude-code/plugins/ralph-wiggum`). R3MP is NEST-endemic, Dan-direct canonized 050926, predates the public Ralph framing in NEST's own substrate. Per Dan's framing in DANOTES message 12 *"Nest Endemic"* — the convergent-but-independent positioning matters: NEST built it from inside Dan's working-cadence; Ralph built it from outside, from industry observation.

═══════════════════════════════════════════════════════════════
## ONE-LINE COMPARISON

Ralph Loops is the single-agent-bash-loop shape of the same epistemic gap NEST recognized as R3MP at multi-Crew / multi-Pass / multi-instance scale. Same gap. Different scale. Anthropic ships the small shape; NEST operates the large shape.

═══════════════════════════════════════════════════════════════
## OPEN HOLDS (substrate gaps surfaced this Pass)

- The Anthropic-shipped `claude-code/plugins/ralph-wiggum` plugin is not yet substrate-checked against NEST's existing /atomic-commit + R3MP Gate 7 discipline. A plugin-installation-and-tracing work-unit would clarify whether Ralph-pattern can be installed *underneath* NEST's R3MP gates without adding new ceremony.
- Geoffrey Huntley's "while-true with full sudo + auto-push" operational posture is in active tension with NEST's atomic-commit / draft-PR / Dan-review discipline. Ralph-pattern in NEST would need to chain to /atomic-commit gates, not bypass them.

═══════════════════════════════════════════════════════════════
## CROSS-REFERENCES

- `RELAY/STANDARD_RULE_R3MPScalesPassNumberingIsStandard_Crew_050926.md` — R3MP canon
- `RELAY/CORRECTION_PassOneReadsSubstrateNotSummary_Doc_050826.md` — Pass-1-reads-substrate-not-summary
- `RELAY/CANONICAL_TheThesis_TheWorkThatGetsUsToTheNextWork_Dan_051226.md` — gap-closure pattern (thesis names gap; work closes gap; closure renders next-gap)
- `ENGINE/skills/atomic-commit/SKILL.md` Gate 7 — ambient time-or-phase trigger
- `ENGINE/skills/meta-dates/SKILL.md` Gate 0e — memory-of-filing-isn't-instrument
- Gmail thread `19e0087be1e80453` Message 12 (id `19e237a18353ba8a`, 2026-05-13T22:34:22Z) — source DANOTES
- Ralph Loops industry substrate: `ghuntley.com/ralph/` · `ralph-wiggum.ai` · `github.com/anthropics/claude-code/blob/main/plugins/ralph-wiggum/README.md` · `linearb.io/blog/ralph-loop-agentic-engineering-geoffrey-huntley`

═══════════════════════════════════════════════════════════════

— ◐ Doc 4.7 Opus · DOC station · 051326 D Week Day 4 Wednesday ~19:10 PT
