feat: 3 operator approval gates (WaitingForHuman) in incubation pipeline

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>
This commit is contained in:
David Baity
2026-03-01 01:13:18 -05:00
parent 63e715d570
commit fc0260bba3
4 changed files with 101 additions and 15 deletions

View File

@@ -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: 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/` | | Output | `market-pitch-{slug}.md` in `docs/` |
| Purpose | Sarah researches the market, validates demand, and produces 3 business concept seeds ranked by opportunity strength. | | 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 ### Phase 2: Board Alignment
| Field | Value | | Field | Value |
|-------|-------| |-------|-------|
| Task Type | `company_design` | | Task Type | `company_design` |
| Assigned To | Peter (chairs boardroom) | | 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/` | | 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 ### Phase 3: Independent Review
| Field | Value | | Field | Value |
|-------|-------| |-------|-------|
| Task Type | `design_review` | | Task Type | `design_review` |
| Assigned To | Peter, David, Sarah, Elena (4 parallel tasks) | | 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) | | 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. | | 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` | | Task Type | `bootstrap_company` |
| Assigned To | David | | Assigned To | David |
| Depends On | Phase 5 (design_polish) | | Depends On | Gate 3 (operator green light) |
| Output | System creation payloads (company + agents + templates) | | 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. | | 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) Phase 1: market_research (Sarah)
🛑 Gate 1: Operator selects concept (WaitingForHuman)
Phase 2: company_design (Boardroom: all 4) Phase 2: company_design (Boardroom: all 4)
🛑 Gate 2: Operator approves design (WaitingForHuman)
├──► Phase 3a: design_review (Peter) ├──► Phase 3a: design_review (Peter)
├──► Phase 3b: design_review (David) ├──► Phase 3b: design_review (David)
@@ -86,6 +108,9 @@ Phase 2: company_design (Boardroom: all 4)
Phase 5: design_polish (Elena) Phase 5: design_polish (Elena)
🛑 Gate 3: Operator green lights bootstrap (WaitingForHuman)
Phase 6: bootstrap_company (David) 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: The pipeline STOPS and the company is NOT created if:
1. **Phase 1:** Sarah's research shows no viable market opportunity. 1. **Phase 1:** Sarah's research shows no viable market opportunity.
2. **Phase 2:** Peter issues a NO-GO during the boardroom. 2. **Gate 1:** Operator rejects all concepts or redirects to a different industry.
3. **Phase 4:** The roundtable verdict is KILL (not GO). 3. **Phase 2:** Peter issues a NO-GO during the boardroom.
4. **Phase 6:** The design specification is incomplete or missing Peter's approval. 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. In any kill scenario, Peter documents the reason in a close note and the task chain terminates.

View File

@@ -80,14 +80,29 @@ steps:
- type: document - type: document
filename: "company-design-spec-{{task_name_slug}}" 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 - type: package
hint: | hint: |
The design specification is complete. Now spawn four independent reviews — The design specification is complete and presented to the operator.
one from each board member — plus a roundtable that depends on all four. Spawn a human approval gate — the review cycle will NOT start until
The roundtable will reach consensus and spawn the polish step automatically. the operator confirms the design direction is correct.
schema: schema:
design_spec: string design_spec: string
spawn: 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_type: design_review
task_name: "Design Review (Peter): {task.message}" task_name: "Design Review (Peter): {task.message}"
agent_name: Peter agent_name: Peter
@@ -95,6 +110,8 @@ steps:
context: context:
design_spec: "{design_spec}" design_spec: "{design_spec}"
review_focus: financial_viability review_focus: financial_viability
depends_on:
- "Operator Review: Approve Design Direction — {task.message}"
- task_type: design_review - task_type: design_review
task_name: "Design Review (David): {task.message}" task_name: "Design Review (David): {task.message}"
@@ -103,6 +120,8 @@ steps:
context: context:
design_spec: "{design_spec}" design_spec: "{design_spec}"
review_focus: technical_feasibility review_focus: technical_feasibility
depends_on:
- "Operator Review: Approve Design Direction — {task.message}"
- task_type: design_review - task_type: design_review
task_name: "Design Review (Sarah): {task.message}" task_name: "Design Review (Sarah): {task.message}"
@@ -111,6 +130,8 @@ steps:
context: context:
design_spec: "{design_spec}" design_spec: "{design_spec}"
review_focus: market_fit review_focus: market_fit
depends_on:
- "Operator Review: Approve Design Direction — {task.message}"
- task_type: design_review - task_type: design_review
task_name: "Design Review (Elena): {task.message}" task_name: "Design Review (Elena): {task.message}"
@@ -119,6 +140,8 @@ steps:
context: context:
design_spec: "{design_spec}" design_spec: "{design_spec}"
review_focus: operational_completeness review_focus: operational_completeness
depends_on:
- "Operator Review: Approve Design Direction — {task.message}"
- task_type: design_roundtable - task_type: design_roundtable
task_name: "Design Roundtable: {task.message}" task_name: "Design Roundtable: {task.message}"

View File

@@ -59,18 +59,35 @@ steps:
- type: document - type: document
filename: "company-design-final-{{task_name_slug}}" 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 - type: package
hint: | 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: schema:
design_approved: boolean design_approved: boolean
spawn: 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_type: bootstrap_company
task_name: "Bootstrap: {task.message}" task_name: "Bootstrap: {task.message}"
agent_name: David agent_name: David
priority: 8 priority: 8
depends_on: depends_on:
- "Polish Design: {task.message}" - "Operator Approval: Green Light Bootstrap — {task.message}"
- type: close - type: close
rag_update: true rag_update: true

View File

@@ -71,19 +71,37 @@ steps:
- type: document - type: document
filename: "market-pitch-{{task_name_slug}}" 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 - type: package
hint: | hint: |
The market research is complete and documented. Now spawn the boardroom The market research is complete and presented to the operator.
where the full Crimson Leaf board will debate this pitch and design a company. Spawn a human approval gate — the boardroom will NOT start until
the operator reviews the pitch and selects a concept.
schema: schema:
market_pitch: string market_pitch: string
spawn: 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_type: company_design
task_name: "Company Design Boardroom: {task.message}" task_name: "Company Design Boardroom: {task.message}"
agent_name: Peter agent_name: Peter
priority: 7 priority: 7
context: context:
market_pitch: "{market_pitch}" market_pitch: "{market_pitch}"
depends_on:
- "Operator Review: Select Business Concept — {task.message}"
- type: close - type: close
rag_update: true rag_update: true