Move the harness-config files out of the mixed .specify/level5 and .specify/agentops
dirs (which also hold governance/domain/state) into packages/casan-harness, leaving a
per-file compat symlink at each old path. Runtime state and governance stay in place.
Moved (+ .specify symlink each):
level5: drift-policy.yaml kpi-schema.yaml model-fallback.yaml tool-registry.yaml
harness-package.json project-registry.json provider-usage-sample.json
agentops: alerts.yaml hallucination-tracking.yaml metrics.yaml rate-limits.yaml tracking.yaml
top: init-options.json
Stays in .specify: level5/central-governance (governance), level5/golden-runs (domain,
Phase 3), agentops/alerts.log (state), traceability-map.json (domain, Phase 3).
Full gate: PASS=64 FAIL=0 SKIP=3 (CASAN_CI_STEP_TIMEOUT_SEC=1200).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
722 B
YAML
34 lines
722 B
YAML
version: 1.0
|
|
description: CASAN Level 5 model/tool fallback policy
|
|
|
|
routes:
|
|
- step_pattern: "review|test|security"
|
|
primary: primary-model
|
|
fallback: verifier-model
|
|
max_attempts: 2
|
|
fallback_on:
|
|
- nonzero_exit
|
|
- empty_output
|
|
- timeout
|
|
|
|
- step_pattern: "implement|write_code|deploy"
|
|
primary: primary-model
|
|
fallback: conservative-model
|
|
max_attempts: 1
|
|
fallback_on:
|
|
- nonzero_exit
|
|
- policy_reject
|
|
governance_required: true
|
|
|
|
default_route:
|
|
primary: primary-model
|
|
fallback: fallback-model
|
|
max_attempts: 2
|
|
fallback_on:
|
|
- nonzero_exit
|
|
- empty_output
|
|
|
|
evidence:
|
|
trace_dir: .specify/logs/trace
|
|
fallback_log: .specify/logs/level5/fallback.jsonl
|