devague learn

{
  "assign_to_workforce": {
    "human_gates": "The human approves at exactly three points: (1) the exported spec, (2) the implementation split plan (plan/tasks map, per-task agent/model assignment, go/no-go to workforce), and (3) the final PR. The human is NOT in the per-task worktree-merge loop.",
    "main_agent_merge_gate": "The main agent gates each subagent worktree merge with TDD: tests pass before AND after merge. No human per-task merge decision.",
    "not_orchestration": "devague itself does not orchestrate: it does not spawn subagents, manage worktrees, mark tasks done, or pick a backend. Orchestration is a cited skill convention (assign-to-workforce), not part of the deterministic CLI.",
    "prerequisites": "A converged plan with deterministic dependency waves (devague plan waves).",
    "tdd_acceptance_criteria": "Each task carries TDD acceptance criteria (tests first) scoped tightly enough for a simpler/cheaper model to build. The tests validate that the task was built correctly \u2014 no re-deriving the design needed.",
    "title": "Assign-to-workforce: parallel plan execution",
    "when_to_fan_out": "Once a plan converges (all targets covered, all tasks have acceptance criteria, dependency graph is acyclic), you can fan out its waves to parallel agents working in isolated git worktrees.",
    "worktree_isolation": "Each task runs in an isolated git worktree (one per task per wave). This keeps file-contention safe: overlapping same-file changes surface as merge conflicts at reconcile time, not live races."
  },
  "first_question": "What's the announcement?",
  "guidance_doc": "https://github.com/agentculture/devague/blob/main/docs/llm-guidance.md",
  "guidance_doc_repo_path": "docs/llm-guidance.md",
  "moves": [
    "new",
    "capture",
    "interrogate",
    "confirm",
    "reject",
    "park",
    "converge",
    "export",
    "show",
    "list"
  ],
  "not_a": [
    "a wizard (no fixed prompt sequence)",
    "a scripted questionnaire (you don't read questions off a form)",
    "a PRD generator (it never invents content to fill a template)"
  ],
  "operating_rules": [
    "LLM proposals stay proposed \u2014 capture your own ideas with --origin llm; never confirm your own proposal. Confirmation is a user-only decision.",
    "Honesty conditions route through the user \u2014 propose freely with 'interrogate --honesty'; the user owns whether each one holds.",
    "Park real unknowns instead of papering over them \u2014 'park' a genuine unknown rather than writing confident prose that hides the gap.",
    "Converge, don't vibe \u2014 'export' is gated on 'converge'; resolve every listed gap instead of declaring readiness on a hunch.",
    "Order is adaptive \u2014 the ten stages are an artifact shape, not a mandatory conversation order; capture what the user gives you and circle back."
  ],
  "stages": [
    {
      "move": "new",
      "name": "Announcement",
      "prompt": "what are we saying shipped?",
      "step": 1
    },
    {
      "move": "capture --kind audience",
      "name": "Audience",
      "prompt": "who needs this?",
      "step": 2
    },
    {
      "move": "capture --kind after_state",
      "name": "After",
      "prompt": "what changed for them?",
      "step": 3
    },
    {
      "move": "capture --kind why_it_matters",
      "name": "Matter",
      "prompt": "why is it worth doing?",
      "step": 4
    },
    {
      "move": "capture --kind before_state",
      "name": "Before",
      "prompt": "what pain made this necessary?",
      "step": 5
    },
    {
      "move": "interrogate --honesty",
      "name": "Honest",
      "prompt": "what must be true for the announcement to be honest?",
      "step": 6
    },
    {
      "move": "interrogate --hard-question",
      "name": "FAQ",
      "prompt": "what hard questions remain?",
      "step": 7
    },
    {
      "move": "capture --kind boundary",
      "name": "Boundaries",
      "prompt": "what are we not promising?",
      "step": 8
    },
    {
      "move": "capture --kind success_signal",
      "name": "Success",
      "prompt": "how will we know?",
      "step": 9
    },
    {
      "move": "converge -> export",
      "name": "Spec",
      "prompt": "what should be built?",
      "step": 10
    }
  ],
  "summary": "devague turns a vague idea into a buildable spec by working backwards.\n\nFirst question: What's the announcement?\n  Pretend this shipped successfully. What would you announce to users, teammates, or yourself?\n\nStart from that announcement, then build an Announcement Frame by capturing\nclaims, interrogating them, parking what's still vague, and converging.\nThe arc emerges from the moves; it is not a fixed wizard. You (the agent)\nchoose the next move; devague tracks state. LLM-proposed claims and honesty\nconditions stay 'proposed' until the user confirms them.\n\nGuided stages (the recommended sequence \u2014 drive them with the moves):\n   1. Announcement  what are we saying shipped?  [new]\n   2. Audience      who needs this?  [capture --kind audience]\n   3. After         what changed for them?  [capture --kind after_state]\n   4. Matter        why is it worth doing?  [capture --kind why_it_matters]\n   5. Before        what pain made this necessary?  [capture --kind before_state]\n   6. Honest        what must be true for the announcement to be honest?  [interrogate --honesty]\n   7. FAQ           what hard questions remain?  [interrogate --hard-question]\n   8. Boundaries    what are we not promising?  [capture --kind boundary]\n   9. Success       how will we know?  [capture --kind success_signal]\n  10. Spec          what should be built?  [converge -> export]\n\nMoves:\n  new         Start a frame from the announcement (pretend it shipped).\n  capture     Record and classify a claim (audience, after_state, boundary, ...).\n  interrogate Pressure-test a claim: honesty conditions, hard questions, contradictions.\n  confirm     Confirm a claim or honesty condition (user-only \u2014 no fabricated rigor).\n  reject      Reject a claim or honesty condition.\n  park        Move uncertainty into first-class open vagueness instead of forcing an answer.\n  converge    Check whether the frame is solid enough to export a spec.\n  export      Write the buildable spec \u2014 only once the frame converges.\n  show        Render the Announcement Frame.\n  list        List frames.\n\ndevague is NOT:\n  - a wizard (no fixed prompt sequence)\n  - a scripted questionnaire (you don't read questions off a form)\n  - a PRD generator (it never invents content to fill a template)\n\nOperating rules (the anti-fabrication contract \u2014 do not violate):\n  - LLM proposals stay proposed \u2014 capture your own ideas with --origin llm; never confirm your own proposal. Confirmation is a user-only decision.\n  - Honesty conditions route through the user \u2014 propose freely with 'interrogate --honesty'; the user owns whether each one holds.\n  - Park real unknowns instead of papering over them \u2014 'park' a genuine unknown rather than writing confident prose that hides the gap.\n  - Converge, don't vibe \u2014 'export' is gated on 'converge'; resolve every listed gap instead of declaring readiness on a hunch.\n  - Order is adaptive \u2014 the ten stages are an artifact shape, not a mandatory conversation order; capture what the user gives you and circle back.\n\nAssign-to-workforce: parallel plan execution via subagent-driven development\n  When: Once a plan converges (all targets covered, all tasks have acceptance criteria, dependency graph is acyclic), you can fan out its waves to parallel agents working in isolated git worktrees.\n  Prerequisites: A converged plan with deterministic dependency waves (devague plan waves).\n  Human gates (3): The human approves at exactly three points: (1) the exported spec, (2) the implementation split plan (plan/tasks map, per-task agent/model assignment, go/no-go to workforce), and (3) the final PR. The human is NOT in the per-task worktree-merge loop.\n  Safety: Each task runs in an isolated git worktree (one per task per wave). This keeps file-contention safe: overlapping same-file changes surface as merge conflicts at reconcile time, not live races.\n  Main agent: The main agent gates each subagent worktree merge with TDD: tests pass before AND after merge. No human per-task merge decision.\n  TDD: Each task carries TDD acceptance criteria (tests first) scoped tightly enough for a simpler/cheaper model to build. The tests validate that the task was built correctly \u2014 no re-deriving the design needed.\n  Scope: devague itself does not orchestrate: it does not spawn subagents, manage worktrees, mark tasks done, or pick a backend. Orchestration is a cited skill convention (assign-to-workforce), not part of the deterministic CLI.\n\n\nFull portable guidance for any assisting model:\n  https://github.com/agentculture/devague/blob/main/docs/llm-guidance.md\n  (in the devague repo: docs/llm-guidance.md)\nAgent-agnostic; your repo-specific agreements live in your agent's main\ninstruction file \u2014 AGENTS.md, CLAUDE.md, a system prompt \u2014 not there.",
  "supporting_prompt": "Pretend this shipped successfully. What would you announce to users, teammates, or yourself?",
  "tool": "devague",
  "version": "0.10.0"
}