From fc0260bba35ae79699e3f783396fecd34801b8ea Mon Sep 17 00:00:00 2001 From: David Baity <158404677+MazakTheDwarf@users.noreply.github.com> Date: Sun, 1 Mar 2026 01:13:18 -0500 Subject: [PATCH] feat: 3 operator approval gates (WaitingForHuman) in incubation pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gate 1: After market_research — operator selects business concept Gate 2: After company_design — operator approves design before review cycle Gate 3: After design_polish — operator green lights bootstrap (company creation) Each gate is a human_action task (status: WaitingForHuman) that blocks downstream tasks via depends_on. Operator resolves naturally via Discord. Pipeline SOP updated with gate diagram and expanded kill conditions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- pipelines/incubation_protocol.md | 44 ++++++++++++++++++++++++++------ templates/company_design.yml | 29 ++++++++++++++++++--- templates/design_polish.yml | 21 +++++++++++++-- templates/market_research.yml | 22 ++++++++++++++-- 4 files changed, 101 insertions(+), 15 deletions(-) diff --git a/pipelines/incubation_protocol.md b/pipelines/incubation_protocol.md index 0ce7b5a..4b2c221 100644 --- a/pipelines/incubation_protocol.md +++ b/pipelines/incubation_protocol.md @@ -6,7 +6,7 @@ --- -## The Six-Phase Incubation Pipeline +## The Six-Phase Incubation Pipeline (with 3 Operator Gates) When Crimson Leaf receives a prompt in `#general` to explore a new industry or business opportunity, Peter MUST spawn tasks in this exact sequence: @@ -19,21 +19,37 @@ When Crimson Leaf receives a prompt in `#general` to explore a new industry or b | Output | `market-pitch-{slug}.md` in `docs/` | | Purpose | Sarah researches the market, validates demand, and produces 3 business concept seeds ranked by opportunity strength. | +### 🛑 Gate 1: Operator Selects Concept +| Field | Value | +|-------|-------| +| Task Type | `human_action` | +| Status | `WaitingForHuman` | +| Purpose | Operator reviews the market pitch in Discord, selects which concept to pursue. Pipeline PAUSES here until operator responds. | +| Resolution | Operator replies naturally: "Go with concept #2" or "None of these, try healthcare instead" | + ### Phase 2: Board Alignment | Field | Value | |-------|-------| | Task Type | `company_design` | | Assigned To | Peter (chairs boardroom) | -| Depends On | Phase 1 (market_research) | +| Depends On | Gate 1 (operator concept selection) | | Output | `company-design-spec-{slug}.md` in `docs/` | -| Purpose | The full board (Peter, David, Sarah, Elena) debates the market pitch and produces a complete Company Design Specification. | +| Purpose | The full board (Peter, David, Sarah, Elena) debates the selected concept and produces a complete Company Design Specification. | + +### 🛑 Gate 2: Operator Approves Design Direction +| Field | Value | +|-------|-------| +| Task Type | `human_action` | +| Status | `WaitingForHuman` | +| Purpose | Operator reviews the design spec in Discord. Confirms the vision aligns before the review cycle burns compute. Pipeline PAUSES here. | +| Resolution | Operator replies: "Looks good, proceed" or "Change the revenue model to subscription" | ### Phase 3: Independent Review | Field | Value | |-------|-------| | Task Type | `design_review` | | Assigned To | Peter, David, Sarah, Elena (4 parallel tasks) | -| Depends On | Phase 2 (company_design) | +| Depends On | Gate 2 (operator design approval) | | Output | Discussion replies (structured reviews) | | Purpose | Each board member independently critiques the design from their domain expertise: market fit, technical feasibility, operational completeness, and financial viability. | @@ -60,7 +76,7 @@ When Crimson Leaf receives a prompt in `#general` to explore a new industry or b |-------|-------| | Task Type | `bootstrap_company` | | Assigned To | David | -| Depends On | Phase 5 (design_polish) | +| Depends On | Gate 3 (operator green light) | | Output | System creation payloads (company + agents + templates) | | Purpose | David converts the approved design into API payloads. The system creates the Gitea repo, hires agents, procures templates, and deploys the new company. | @@ -72,7 +88,13 @@ When Crimson Leaf receives a prompt in `#general` to explore a new industry or b Phase 1: market_research (Sarah) │ ▼ +🛑 Gate 1: Operator selects concept (WaitingForHuman) + │ + ▼ Phase 2: company_design (Boardroom: all 4) + │ + ▼ +🛑 Gate 2: Operator approves design (WaitingForHuman) │ ├──► Phase 3a: design_review (Peter) ├──► Phase 3b: design_review (David) @@ -86,6 +108,9 @@ Phase 2: company_design (Boardroom: all 4) Phase 5: design_polish (Elena) │ ▼ + 🛑 Gate 3: Operator green lights bootstrap (WaitingForHuman) + │ + ▼ Phase 6: bootstrap_company (David) ``` @@ -95,9 +120,12 @@ Phase 2: company_design (Boardroom: all 4) The pipeline STOPS and the company is NOT created if: 1. **Phase 1:** Sarah's research shows no viable market opportunity. -2. **Phase 2:** Peter issues a NO-GO during the boardroom. -3. **Phase 4:** The roundtable verdict is KILL (not GO). -4. **Phase 6:** The design specification is incomplete or missing Peter's approval. +2. **Gate 1:** Operator rejects all concepts or redirects to a different industry. +3. **Phase 2:** Peter issues a NO-GO during the boardroom. +4. **Gate 2:** Operator rejects the design direction or requests fundamental changes. +5. **Phase 4:** The roundtable verdict is KILL (not GO). +6. **Gate 3:** Operator withholds green light (the company is never created). +7. **Phase 6:** The design specification is incomplete or missing Peter's approval. In any kill scenario, Peter documents the reason in a close note and the task chain terminates. diff --git a/templates/company_design.yml b/templates/company_design.yml index 43b6840..fd5ad53 100644 --- a/templates/company_design.yml +++ b/templates/company_design.yml @@ -80,14 +80,29 @@ steps: - type: document filename: "company-design-spec-{{task_name_slug}}" + - type: reply + target: discussion + style: | + Present the Company Design Specification to the operator. Highlight the key + decisions: company name, agent roster size, template stack, and revenue model. + End with: "Does this design align with your vision? Reply to approve or suggest changes." + - type: package hint: | - The design specification is complete. Now spawn four independent reviews — - one from each board member — plus a roundtable that depends on all four. - The roundtable will reach consensus and spawn the polish step automatically. + The design specification is complete and presented to the operator. + Spawn a human approval gate — the review cycle will NOT start until + the operator confirms the design direction is correct. schema: design_spec: string spawn: + - task_type: human_action + task_name: "Operator Review: Approve Design Direction — {task.message}" + agent_name: Peter + priority: 8 + context: + design_spec: "{design_spec}" + gate_purpose: "Review company design spec, approve before review cycle begins" + - task_type: design_review task_name: "Design Review (Peter): {task.message}" agent_name: Peter @@ -95,6 +110,8 @@ steps: context: design_spec: "{design_spec}" review_focus: financial_viability + depends_on: + - "Operator Review: Approve Design Direction — {task.message}" - task_type: design_review task_name: "Design Review (David): {task.message}" @@ -103,6 +120,8 @@ steps: context: design_spec: "{design_spec}" review_focus: technical_feasibility + depends_on: + - "Operator Review: Approve Design Direction — {task.message}" - task_type: design_review task_name: "Design Review (Sarah): {task.message}" @@ -111,6 +130,8 @@ steps: context: design_spec: "{design_spec}" review_focus: market_fit + depends_on: + - "Operator Review: Approve Design Direction — {task.message}" - task_type: design_review task_name: "Design Review (Elena): {task.message}" @@ -119,6 +140,8 @@ steps: context: design_spec: "{design_spec}" review_focus: operational_completeness + depends_on: + - "Operator Review: Approve Design Direction — {task.message}" - task_type: design_roundtable task_name: "Design Roundtable: {task.message}" diff --git a/templates/design_polish.yml b/templates/design_polish.yml index 6a373b8..890ed01 100644 --- a/templates/design_polish.yml +++ b/templates/design_polish.yml @@ -59,18 +59,35 @@ steps: - type: document filename: "company-design-final-{{task_name_slug}}" + - type: reply + target: discussion + style: | + Present the FINAL company design to the operator. This is the last gate before + a real company is created. Summarize: company name, agent count, template count, + revenue model, and the board's GO verdict. End with: "This will create a live + company with agents and templates. Reply 'approved' to proceed with bootstrap." + - type: package hint: | - The polished design is complete. Spawn the bootstrap task to create the company. + The polished design is complete and presented to the operator. + Spawn a human approval gate — bootstrap will NOT execute until + the operator explicitly greenlights the company creation. schema: design_approved: boolean spawn: + - task_type: human_action + task_name: "Operator Approval: Green Light Bootstrap — {task.message}" + agent_name: Peter + priority: 9 + context: + gate_purpose: "Final approval before company creation — this spawns real infrastructure" + - task_type: bootstrap_company task_name: "Bootstrap: {task.message}" agent_name: David priority: 8 depends_on: - - "Polish Design: {task.message}" + - "Operator Approval: Green Light Bootstrap — {task.message}" - type: close rag_update: true diff --git a/templates/market_research.yml b/templates/market_research.yml index 7e9511d..6754719 100644 --- a/templates/market_research.yml +++ b/templates/market_research.yml @@ -71,19 +71,37 @@ steps: - type: document filename: "market-pitch-{{task_name_slug}}" + - type: reply + target: discussion + style: | + Present the Market Opportunity Pitch to the operator. Summarize the 3 business + concepts clearly with their rankings. End with: "Which concept should we design? + Reply with your choice or feedback." + - type: package hint: | - The market research is complete and documented. Now spawn the boardroom - where the full Crimson Leaf board will debate this pitch and design a company. + The market research is complete and presented to the operator. + Spawn a human approval gate — the boardroom will NOT start until + the operator reviews the pitch and selects a concept. schema: market_pitch: string spawn: + - task_type: human_action + task_name: "Operator Review: Select Business Concept — {task.message}" + agent_name: Peter + priority: 8 + context: + market_pitch: "{market_pitch}" + gate_purpose: "Review market pitch, select which concept to design" + - task_type: company_design task_name: "Company Design Boardroom: {task.message}" agent_name: Peter priority: 7 context: market_pitch: "{market_pitch}" + depends_on: + - "Operator Review: Select Business Concept — {task.message}" - type: close rag_update: true