[PR #155] [MERGED] fix(sop): restore per-step gate constraints to PDD SOP #170

Closed
opened 2026-02-27 10:22:30 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/mikeyobrien/ralph-orchestrator/pull/155
Author: @mikeyobrien
Created: 2/5/2026
Status: Merged
Merged: 2/5/2026
Merged by: @mikeyobrien

Base: mainHead: fix/restore-pdd-step-guards


📝 Commits (1)

  • 809c0a1 fix(sop): restore per-step gate constraints to PDD SOP

📊 Changes

2 files changed (+42 additions, -4 deletions)

View changed files

📝 .claude/skills/pdd/SKILL.md (+21 -2)
📝 crates/ralph-cli/sops/pdd.md (+21 -2)

📄 Description

Problem

PR #146 condensed the PDD SOP from v1.0 (309 lines) to v1.1 (146 lines), removing per-step blocking constraints that prevented the model from auto-piloting through phases. This caused the regression in #154: ralph plan runs the full pipeline (planning + implementation) instead of stopping at planning artifacts.

The old SOP had ~10 explicit MUST NOT proceed constraints anchored at specific phase transitions. The rewrite replaced all of them with a single generic bullet in "Important Notes." LLMs are much more likely to respect a constraint embedded in the step they're currently executing than a global instruction at the top.

Changes (v1.1 → v1.2)

  • Add explicit Gate: blocks after Steps 1-7 and 9 requiring user confirmation before proceeding
  • Add top-level "Planning only" constraint: MUST NOT implement code, run containers, or execute scripts
  • Add terminal gate at Step 9: MUST NOT run ralph run or begin implementation
  • Fix Step 9 wording from "set up Ralph" → "create a PROMPT.md" (avoids model interpreting it as an instruction to execute)
  • Add "If the user declines, acknowledge and conclude the session" guard

Design

Rather than restoring the old verbose style, this uses a consistent **Gate:** pattern at each step boundary. This is:

  • Scannable — easy to audit which steps have gates
  • Anchored — placed right where the model finishes a step and is deciding what to do next
  • Concise — keeps the v1.1 readability improvements

Fixes #154


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/mikeyobrien/ralph-orchestrator/pull/155 **Author:** [@mikeyobrien](https://github.com/mikeyobrien) **Created:** 2/5/2026 **Status:** ✅ Merged **Merged:** 2/5/2026 **Merged by:** [@mikeyobrien](https://github.com/mikeyobrien) **Base:** `main` ← **Head:** `fix/restore-pdd-step-guards` --- ### 📝 Commits (1) - [`809c0a1`](https://github.com/mikeyobrien/ralph-orchestrator/commit/809c0a1f5d67a132a43c933a8f16a92c6b0f9c86) fix(sop): restore per-step gate constraints to PDD SOP ### 📊 Changes **2 files changed** (+42 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `.claude/skills/pdd/SKILL.md` (+21 -2) 📝 `crates/ralph-cli/sops/pdd.md` (+21 -2) </details> ### 📄 Description ## Problem PR #146 condensed the PDD SOP from v1.0 (309 lines) to v1.1 (146 lines), removing per-step blocking constraints that prevented the model from auto-piloting through phases. This caused the regression in #154: `ralph plan` runs the full pipeline (planning + implementation) instead of stopping at planning artifacts. The old SOP had ~10 explicit `MUST NOT proceed` constraints anchored at specific phase transitions. The rewrite replaced all of them with a single generic bullet in "Important Notes." LLMs are much more likely to respect a constraint embedded in the step they're currently executing than a global instruction at the top. ## Changes (v1.1 → v1.2) - Add explicit **Gate:** blocks after Steps 1-7 and 9 requiring user confirmation before proceeding - Add top-level "Planning only" constraint: MUST NOT implement code, run containers, or execute scripts - Add terminal gate at Step 9: MUST NOT run `ralph run` or begin implementation - Fix Step 9 wording from "set up Ralph" → "create a PROMPT.md" (avoids model interpreting it as an instruction to execute) - Add "If the user declines, acknowledge and conclude the session" guard ## Design Rather than restoring the old verbose style, this uses a consistent `**Gate:**` pattern at each step boundary. This is: - **Scannable** — easy to audit which steps have gates - **Anchored** — placed right where the model finishes a step and is deciding what to do next - **Concise** — keeps the v1.1 readability improvements Fixes #154 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 10:22:30 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ralph-orchestrator#170
No description provided.