claude-profile: bump opus to 4.8, add fable driver

- driver_model_id(): opus -> claude-opus-4-8, opus-1m -> claude-opus-4-8[1m]
- driver_model_id(): add fable -> claude-fable-5
- error message updated: Valid: haiku sonnet opus opus-1m fable
- spec: driver->model table updated (opus 4.8, fable added); frontmatter
  driver enum includes fable; note that opus-1m retained for [1m] convention
- tests: add Test 13 (deep-fable dryrun asserting claude-fable-5);
  add Test 14 (unknown driver exits 1) — 47 assertions total
  Note: deep-fable mode file lands in the next commit
This commit is contained in:
Paul O'Reilly
2026-06-12 21:33:58 +12:00
parent 9e13b7f096
commit 16586541ea
3 changed files with 66 additions and 7 deletions

View File

@@ -177,6 +177,63 @@ rc=$?
assert_exit_code "unknown flag exits 1" 1 "$rc"
assert_contains "unknown flag error message" "Unknown flag" "$out"
# === Test 13: deep-fable dryrun (deep-fable mode file lands in the next commit) ===
echo
echo "Test 13: deep-fable mode dryrun"
out=$(run --dryrun oreillyit-anthropic --mode deep-fable)
rc=$?
assert_exit_code "deep-fable dryrun exits 0" 0 "$rc"
assert_contains "deep-fable uses fable driver" "Driver: fable" "$out"
assert_contains "deep-fable shows fable model ID" "Model ID: claude-fable-5" "$out"
assert_contains "deep-fable shows model in exec command" "claude --model claude-fable-5" "$out"
# === Test 14: error — unknown driver produces exit 1 ===
echo
echo "Test 14: error path — unknown driver"
# Create a temporary mode file with an unknown driver in the actual modes dir,
# run the test, then remove it immediately.
baddriver_file="$REPO_ROOT/data/claude-profile/modes/_test-baddriver.md"
cat > "$baddriver_file" <<'MEOF'
---
name: _test-baddriver
tag: bad
driver: notadriver
async_ok: no
autoloop: none
plan_mode_auto: no
spec_driven: no
escalates_to: none
---
# Mode: Bad Driver Test
## Purpose
Temporary test fixture — do not use.
## Driver constraint
Unused.
## Subagent policy
Unused.
## Reasoning posture
Unused.
## Async policy
Unused.
## Workflow stance
Unused.
## Auto-fire at session start
none
## Status line format
none
## Escalation triggers
none
## Out of scope
none
## On context wipe (/clear)
none
MEOF
out=$(run --dryrun oreillyit-anthropic --mode _test-baddriver 2>&1); rc=$?
rm -f "$baddriver_file"
assert_exit_code "unknown driver exits 1" 1 "$rc"
assert_contains "unknown driver error message" "Unknown driver" "$out"
# === Summary ===
echo
echo "================================"