Files
correx/docs/reference/example.yaml
T

115 lines
2.5 KiB
YAML

state_schema:
# fixed, system-owned
artifacts:
discovery_result: {}
plan: {}
execution_result: {}
critic_decision: {}
signals:
tests: { status: "unknown" } # pass | fail | unknown
failure: "none" # none | schema_fail | test_fail | hallucination | timeout
complexity: 0.0 # 0..1 (heuristic)
retries: 0
iteration: 0
pointers:
current_agent: null
last_agent: null
last_artifact: null
limits:
max_total_steps: 12
max_retries_per_agent: 3
agents:
discovery:
models: [small]
prompt: prompts/discovery.md
needs: []
produces: [discovery_result]
planner:
models: [small, medium]
prompt: prompts/planner.md
needs: [discovery_result]
produces: [plan]
executor:
models: [medium]
prompt: prompts/executor.md
needs: [plan]
produces: [execution_result]
critic:
models: [small]
prompt: prompts/critic_struct.md
needs: [execution_result]
produces: [critic_decision]
fixer_minimal:
models: [medium, large]
prompt: prompts/fix_minimal.md
needs: [execution_result]
produces: [execution_result]
selection:
default: smallest_sufficient
overrides:
- when: complexity > 0.6
pick: medium
- when: failure == "hallucination"
pick: large
- when: retries >= 2
pick: large
routing:
start: discovery
rules:
# initial flow
- when: !has(discovery_result)
next: discovery
- when: has(discovery_result) && !has(plan)
next: planner
- when: has(plan) && !has(execution_result)
next: executor
- when: has(execution_result) && !has(critic_decision)
next: critic
# success exit
- when: critic_decision.decision == "pass" || tests.status == "pass"
next: done
# retry loops
- when: critic_decision.decision == "retry" && failure == "test_fail"
next: executor
mutate:
- inject_failure_reason
- increment_retries
- when: critic_decision.decision == "retry" && failure == "schema_fail"
next: executor
mutate:
- tighten_constraints
- increment_retries
- when: critic_decision.decision == "retry" && failure == "hallucination"
next: fixer_minimal
mutate:
- restrict_to_provided_context
- increment_retries
# escalation
- when: retries >= 2 && tests.status == "fail"
next: fixer_minimal
# fallback
- when: iteration >= 10
next: done