fix-test-fixture-sonnet@1, review-spec-opus@1, replan-spec-opus@1 — the dangling escalation refs from airouter-impl-*/spec-draft/feature-delivery-loop. Sonnet-authored, Opus-reviewed; review HIGH fixes applied (explicit model: opus on both opus nodes — node model: sets runtime model, composite name does not). Known gap filed in work-items epic (E1-escalation-state-gap.md): escalation edges from non-primary states 422 state_mismatch pending escalation_input_states. concept-intake@1: optional idea-elaboration pre-stage (output state idea-elaborated — not yet wired into spec-draft-opus input). All four validate against controlplane WorkflowTemplate schema.
70 lines
3.1 KiB
YAML
70 lines
3.1 KiB
YAML
# SCHEMA NOTE (see report): WorkflowOutput has only a `state` field — there is no
|
|
# way to express "same state, tag removed" or "same state, artifact attached" in the
|
|
# M27 typed-workflow schema (controlplane/typed_workflows/schema.py). This template
|
|
# therefore transitions the item to a new state `idea-elaborated` rather than leaving
|
|
# it at `idea` with `needs-elaboration` removed. If a same-state transition becomes
|
|
# expressible in a future schema revision, this template should be updated to use it
|
|
# instead, and `spec-draft-opus@1.yaml`'s `input.state` should gain `idea-elaborated`
|
|
# as an accepted state (currently only `idea`).
|
|
name: concept-intake
|
|
version: 1
|
|
description: Triage and elaborate a raw idea before spec-draft — restate, surface unknowns, scope
|
|
runtime: planning-opus-repo
|
|
input:
|
|
state: idea
|
|
tags_required: [needs-elaboration]
|
|
tags_forbidden: []
|
|
required_artifacts: []
|
|
output:
|
|
state: idea-elaborated
|
|
scope_budget:
|
|
files_modified_max: 1
|
|
lines_diff_max: 150
|
|
wall_clock_seconds_max: 1200
|
|
nodes:
|
|
- id: agent
|
|
kind: agent
|
|
template: planning-opus-repo
|
|
prompt: |
|
|
The agent-runtimes project repo is cloned at /workspace/project (if this
|
|
runtime provides agent-repo mode). Change to that directory before doing
|
|
any work.
|
|
|
|
You are triaging a raw, unrefined idea before it goes to the spec-draft
|
|
stage. Your job is elaboration, not implementation and not spec-writing —
|
|
do not draft a spec.
|
|
|
|
**Title**: ${item.title}
|
|
|
|
**Raw idea**:
|
|
${item.body}
|
|
|
|
Produce an elaboration covering exactly these sections, in order:
|
|
|
|
1. **Restatement** — restate the idea in one paragraph, in your own words,
|
|
to confirm what is actually being asked for.
|
|
2. **Open Questions** — list every unknown that would materially change the
|
|
design as a numbered question. Do not answer them; that is what
|
|
spec-draft and review stages are for. If there are none, write "None."
|
|
3. **Affected Subsystems** — list the subsystems/components this idea
|
|
touches (e.g. `controlplane/`, `dispatcher/`, a specific harness
|
|
context). Use the actual directory names from the repo, not guesses.
|
|
4. **Proposed Scope Boundaries** — one paragraph stating what is explicitly
|
|
IN scope and one stating what is explicitly OUT of scope for the first
|
|
spec draft. Be concrete — "out of scope: multi-tenant support" not
|
|
"out of scope: edge cases."
|
|
|
|
Steps:
|
|
1. cd /workspace/project (if present)
|
|
2. Create a slug from the title (lowercase, hyphens instead of spaces)
|
|
3. Write the elaboration to spec/ideas/<slug>-elaboration.md — this is the
|
|
artifact the spec-draft stage reads (it looks for a file matching the
|
|
concept's slug under spec/ideas/)
|
|
4. git add spec/ideas/<slug>-elaboration.md && git commit -m "elaborate: ${item.title}" && git push
|
|
5. Call task_complete with a one-sentence summary
|
|
|
|
Keep the whole document under 150 lines — this is triage, not a spec. Do
|
|
not write code, do not modify any file outside spec/ideas/.
|
|
escalation:
|
|
scope_exceeded: null
|