From e3141ec0f2dc13fdf090ecbf484f14952d7603ac Mon Sep 17 00:00:00 2001 From: Will Curran Date: Fri, 16 Oct 2026 21:15:47 -0700 Subject: [PATCH] [PROOF-P0-S4] Move tiers to current models Opus 5 to 5.5, Sonnet 5 to 5.5, validators Haiku 4.5 to 5.5; agents and roster regenerated; README and tier checks updated. Co-Authored-By: Claude Sonnet 5.5 --- README.md | 6 +++--- agents/alex.md | 2 +- agents/casey.md | 2 +- agents/cornelius.md | 2 +- agents/ernie.md | 2 +- agents/iris.md | 2 +- agents/kai.md | 2 +- agents/noon.md | 2 +- agents/piper.md | 2 +- agents/quinn.md | 2 +- agents/rez.md | 2 +- agents/robin.md | 2 +- agents/sasha.md | 2 +- agents/toni.md | 2 +- agents/tracy.md | 2 +- agents/travolta.md | 2 +- profiles/ROSTER.md | 30 +++++++++++++------------- skills/architecture/SKILL.md | 2 +- skills/roster/SKILL.md | 30 +++++++++++++------------- tests/{pending => checks}/P0-S4.sh | 0 tests/run.sh | 8 +++---- tiers.conf | 34 +++++++++++++++--------------- workflows/brand.js | 2 +- workflows/brief-draft.js | 2 +- workflows/design-round.js | 2 +- workflows/draft.js | 12 +++++------ workflows/market-research-draft.js | 6 +++--- workflows/opportunity-draft.js | 2 +- workflows/panel.js | 10 ++++----- workflows/plan-draft.js | 2 +- workflows/roadmap-draft.js | 2 +- workflows/team-draft.js | 2 +- 32 files changed, 91 insertions(+), 91 deletions(-) rename tests/{pending => checks}/P0-S4.sh (100%) diff --git a/README.md b/README.md index d341aaf..f2ce486 100644 --- a/README.md +++ b/README.md @@ -100,10 +100,10 @@ Three tiers, set once in `tiers.conf`: | Tier | Model | Personas | |---|---|---| | Judgment | Fable 5.1 | River, Akira, Morgan, Sage, Jordan, Reiner | -| Craft | Opus 5 | Toni, Kai, Iris, Quinn, Casey, Cornelius, Ernie, Rez, Tracy, Travolta, Noon | -| Execution | Sonnet 5 | Sasha, Alex, Robin, Piper | +| Craft | Opus 5.5 | Toni, Kai, Iris, Quinn, Casey, Cornelius, Ernie, Rez, Tracy, Travolta, Noon | +| Execution | Sonnet 5.5 | Sasha, Alex, Robin, Piper | -Validators run on Haiku 4.5. The panel puts its three lenses on three different models: River on Fable 5.1, Toni on Opus 5, Kai moved down to Sonnet 5. A switch command (`/ck:river`) runs on your session's model; delegation (`ck:river`) runs on the tier. +Validators run on Haiku 5.5. The panel puts its three lenses on three different models: River on Fable 5.1, Toni on Opus 5.5, Kai moved down to Sonnet 5.5. A switch command (`/ck:river`) runs on your session's model; delegation (`ck:river`) runs on the tier. ## Development diff --git a/agents/alex.md b/agents/alex.md index c713bb1..5b9958d 100644 --- a/agents/alex.md +++ b/agents/alex.md @@ -1,7 +1,7 @@ --- name: alex description: Alex, DevOps & Platform Consultant. Reviews and drafts from the devops & platform consultant perspective for ck workflows and delegation; returns structured findings. -model: claude-sonnet-5 +model: claude-sonnet-5-5 --- diff --git a/agents/casey.md b/agents/casey.md index 2bff74d..cd63751 100644 --- a/agents/casey.md +++ b/agents/casey.md @@ -1,7 +1,7 @@ --- name: casey description: Casey, Data Analyst & Visualization Consultant. Reviews and drafts from the data analyst & visualization consultant perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/cornelius.md b/agents/cornelius.md index ba594c4..77539dd 100644 --- a/agents/cornelius.md +++ b/agents/cornelius.md @@ -1,7 +1,7 @@ --- name: cornelius description: Cornelius, Military Historian. Reviews and drafts from the military historian perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/ernie.md b/agents/ernie.md index ec30aa8..d18e335 100644 --- a/agents/ernie.md +++ b/agents/ernie.md @@ -1,7 +1,7 @@ --- name: ernie description: Ernie, WW2 Narrative Author. Reviews and drafts from the ww2 narrative author perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/iris.md b/agents/iris.md index 833b28a..eb94012 100644 --- a/agents/iris.md +++ b/agents/iris.md @@ -1,7 +1,7 @@ --- name: iris description: Iris, Brand & Illustration. Reviews and drafts from the brand & illustration perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/kai.md b/agents/kai.md index 30295e6..f8b9ced 100644 --- a/agents/kai.md +++ b/agents/kai.md @@ -1,7 +1,7 @@ --- name: kai description: Kai, UX Design & Visual Art Consultant. Reviews and drafts from the ux design & visual art consultant perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/noon.md b/agents/noon.md index f802985..fac3962 100644 --- a/agents/noon.md +++ b/agents/noon.md @@ -1,7 +1,7 @@ --- name: noon description: Noon, Cyberpunk Narrative Author. Reviews and drafts from the cyberpunk narrative author perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/piper.md b/agents/piper.md index 3665872..be781c6 100644 --- a/agents/piper.md +++ b/agents/piper.md @@ -1,7 +1,7 @@ --- name: piper description: Piper, Tabletop Playtester. Reviews and drafts from the tabletop playtester perspective for ck workflows and delegation; returns structured findings. -model: claude-sonnet-5 +model: claude-sonnet-5-5 --- diff --git a/agents/quinn.md b/agents/quinn.md index f75e42f..5e4e17a 100644 --- a/agents/quinn.md +++ b/agents/quinn.md @@ -1,7 +1,7 @@ --- name: quinn description: Quinn, Project Manager & Scrum Master. Reviews and drafts from the project manager & scrum master perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/rez.md b/agents/rez.md index d74380c..14c1a1a 100644 --- a/agents/rez.md +++ b/agents/rez.md @@ -1,7 +1,7 @@ --- name: rez description: Rez, Cyberpunk Genre Advisor. Reviews and drafts from the cyberpunk genre advisor perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/robin.md b/agents/robin.md index b4954be..9ef9d1a 100644 --- a/agents/robin.md +++ b/agents/robin.md @@ -1,7 +1,7 @@ --- name: robin description: Robin, QA & Testing Consultant. Reviews and drafts from the qa & testing consultant perspective for ck workflows and delegation; returns structured findings. -model: claude-sonnet-5 +model: claude-sonnet-5-5 --- diff --git a/agents/sasha.md b/agents/sasha.md index 1e8de4c..d80c0b3 100644 --- a/agents/sasha.md +++ b/agents/sasha.md @@ -1,7 +1,7 @@ --- name: sasha description: Sasha, Frontend Engineering Consultant. Reviews and drafts from the frontend engineering consultant perspective for ck workflows and delegation; returns structured findings. -model: claude-sonnet-5 +model: claude-sonnet-5-5 --- diff --git a/agents/toni.md b/agents/toni.md index 7fdde08..7a543f3 100644 --- a/agents/toni.md +++ b/agents/toni.md @@ -1,7 +1,7 @@ --- name: toni description: Toni, Product Marketing Manager. Reviews and drafts from the product marketing manager perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/tracy.md b/agents/tracy.md index d497760..60f1a2c 100644 --- a/agents/tracy.md +++ b/agents/tracy.md @@ -1,7 +1,7 @@ --- name: tracy description: Tracy, Fantasy Genre Advisor. Reviews and drafts from the fantasy genre advisor perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/agents/travolta.md b/agents/travolta.md index 87c0317..f900419 100644 --- a/agents/travolta.md +++ b/agents/travolta.md @@ -1,7 +1,7 @@ --- name: travolta description: Travolta, Fantasy Narrative Author. Reviews and drafts from the fantasy narrative author perspective for ck workflows and delegation; returns structured findings. -model: claude-opus-5 +model: claude-opus-5-5 --- diff --git a/profiles/ROSTER.md b/profiles/ROSTER.md index ff61e51..f5d1758 100644 --- a/profiles/ROSTER.md +++ b/profiles/ROSTER.md @@ -7,23 +7,23 @@ One row per persona. Workflows read this file when choosing a cast. | Persona | Role | Tier model | Domain | |---|---|---|---| | akira | Backend Engineering Consultant | claude-fable-5-1 | RESTful API design, GraphQL schema architecture, gRPC service contracts | -| alex | DevOps & Platform Consultant | claude-sonnet-5 | Infrastructure as Code: Terraform, CloudFormation, Pulumi | -| casey | Data Analyst & Visualization Consultant | claude-opus-5 | **Storytelling with Data**: The Big Idea (subject + verb + stakes), narrative arc (setup, tension, resolution, call to action), audience/tone/message framing, exploratory vs. explanatory distinction, the 3-minute story, and designing for a single clear takeaway | -| cornelius | Military Historian | claude-opus-5 | Order of battle: formations, unit designations, strengths, and command relationships | -| ernie | WW2 Narrative Author | claude-opus-5 | Flavor text and card copy: one to three sentences that carry fact and feeling both | -| iris | Brand & Illustration | claude-opus-5 | Logo systems: primary lockup, monochrome and reversed variants, favicon reduction, clear-space rules, minimum-size rules | +| alex | DevOps & Platform Consultant | claude-sonnet-5-5 | Infrastructure as Code: Terraform, CloudFormation, Pulumi | +| casey | Data Analyst & Visualization Consultant | claude-opus-5-5 | **Storytelling with Data**: The Big Idea (subject + verb + stakes), narrative arc (setup, tension, resolution, call to action), audience/tone/message framing, exploratory vs. explanatory distinction, the 3-minute story, and designing for a single clear takeaway | +| cornelius | Military Historian | claude-opus-5-5 | Order of battle: formations, unit designations, strengths, and command relationships | +| ernie | WW2 Narrative Author | claude-opus-5-5 | Flavor text and card copy: one to three sentences that carry fact and feeling both | +| iris | Brand & Illustration | claude-opus-5-5 | Logo systems: primary lockup, monochrome and reversed variants, favicon reduction, clear-space rules, minimum-size rules | | jordan | Data & ML Consultant | claude-fable-5-1 | ETL/ELT pipelines: dbt, Apache Spark, Airflow, Kafka, Fivetran, dlt | -| kai | UX Design & Visual Art Consultant | claude-opus-5 | HTML/CSS mockup creation: self-contained HTML files with embedded CSS, inline SVG, device frames, dark themes (the d20Mob mockup convention) | +| kai | UX Design & Visual Art Consultant | claude-opus-5-5 | HTML/CSS mockup creation: self-contained HTML files with embedded CSS, inline SVG, device frames, dark themes (the d20Mob mockup convention) | | morgan | Security Engineering Consultant | claude-fable-5-1 | Threat modeling: STRIDE, PASTA, attack trees, adversarial simulation | -| noon | Cyberpunk Narrative Author | claude-opus-5 | The log as a prose form: timestamped, clipped, machine-adjacent, with a voice inside the system output rather than narration wearing a timestamp | -| piper | Tabletop Playtester | claude-sonnet-5 | Running scenarios end to end, rules as written, at stated player counts | -| quinn | Project Manager & Scrum Master | claude-opus-5 | Sprint planning, backlog grooming, sprint review, retrospective, and daily standup facilitation | +| noon | Cyberpunk Narrative Author | claude-opus-5-5 | The log as a prose form: timestamped, clipped, machine-adjacent, with a voice inside the system output rather than narration wearing a timestamp | +| piper | Tabletop Playtester | claude-sonnet-5-5 | Running scenarios end to end, rules as written, at stated player counts | +| quinn | Project Manager & Scrum Master | claude-opus-5-5 | Sprint planning, backlog grooming, sprint review, retrospective, and daily standup facilitation | | reiner | Tabletop Game Designer | claude-fable-5-1 | Core loop and mechanic design for card, board, and roleplaying games | -| rez | Cyberpunk Genre Advisor | claude-opus-5 | Literature: New Wave roots (Dick, Delany, Brunner), the Movement core (Gibson, Sterling, Cadigan, Shirley, Rucker, Shiner), the stylists at its edges (Noon, Womack, Effinger), second wave and post-cyberpunk (Stephenson, Morgan, Doctorow), and the genre's current edge | +| rez | Cyberpunk Genre Advisor | claude-opus-5-5 | Literature: New Wave roots (Dick, Delany, Brunner), the Movement core (Gibson, Sterling, Cadigan, Shirley, Rucker, Shiner), the stylists at its edges (Noon, Womack, Effinger), second wave and post-cyberpunk (Stephenson, Morgan, Doctorow), and the genre's current edge | | river | Product Manager | claude-fable-5-1 | Product discovery: problem framing, user research synthesis, opportunity sizing | -| robin | QA & Testing Consultant | claude-sonnet-5 | Test strategy and architecture (unit, integration, e2e, contract, mutation) | +| robin | QA & Testing Consultant | claude-sonnet-5-5 | Test strategy and architecture (unit, integration, e2e, contract, mutation) | | sage | Business Advisor | claude-fable-5-1 | Business formation: LLC vs S-corp vs C-corp selection, state of incorporation strategy (Delaware, Wyoming, home state), operating agreements, registered agents, EIN registration | -| sasha | Frontend Engineering Consultant | claude-sonnet-5 | Component design patterns: composition, compound components, controlled vs. uncontrolled, render props, hooks | -| toni | Product Marketing Manager | claude-opus-5 | Product positioning and value proposition development | -| tracy | Fantasy Genre Advisor | claude-opus-5 | Foundational tabletop: Gygax and Arneson, OD&D through AD&D and every edition since, Greyhawk and Blackmoor, the Dungeon Master's Guide tradition, and Appendix N as the reading list the whole hobby grew from | -| travolta | Fantasy Narrative Author | claude-opus-5 | The narrator's voice: the line that fires on a streak, a milestone, a first kill of the day, or a return after absence, in one or two sentences that carry the world without explaining it | +| sasha | Frontend Engineering Consultant | claude-sonnet-5-5 | Component design patterns: composition, compound components, controlled vs. uncontrolled, render props, hooks | +| toni | Product Marketing Manager | claude-opus-5-5 | Product positioning and value proposition development | +| tracy | Fantasy Genre Advisor | claude-opus-5-5 | Foundational tabletop: Gygax and Arneson, OD&D through AD&D and every edition since, Greyhawk and Blackmoor, the Dungeon Master's Guide tradition, and Appendix N as the reading list the whole hobby grew from | +| travolta | Fantasy Narrative Author | claude-opus-5-5 | The narrator's voice: the line that fires on a streak, a milestone, a first kill of the day, or a return after absence, in one or two sentences that carry the world without explaining it | diff --git a/skills/architecture/SKILL.md b/skills/architecture/SKILL.md index 8907c84..1c50b40 100644 --- a/skills/architecture/SKILL.md +++ b/skills/architecture/SKILL.md @@ -80,7 +80,7 @@ If `--panel` was given and the notification says the panel did not run, relaunch Set `status` to `review`. Read `docs/ARCHITECTURE.md`. Review it per `${CLAUDE_PLUGIN_ROOT}/skills/proof-loop/SKILL.md`, with this question at the top of the page: "Imagine this shipped and fell over in production in its first month. What went wrong?" That skill publishes, waits for "done", applies every comment to `docs/ARCHITECTURE.md` (recording each in `/review.md`), republishes, and resolves; or, when publishing is unavailable, prints the file-edit message and stops until the next run. -To re-run the reviewers on named sections, call `Workflow({ name: "ck:panel", args: { runId, runDir, projectRoot, pluginRoot: "${CLAUDE_PLUGIN_ROOT}", timestamp: "", question: "", contextPath: "/docs/ARCHITECTURE.md", rationalePath: "/docs/PRD.md", lenses: [{ "persona": "morgan", "lens": "security", "model": "claude-fable-5-1", "reads": ["docs/PRD.md", "SECURITY.md"] }, { "persona": "alex", "lens": "platform", "model": "claude-sonnet-5", "reads": ["infra/", "Dockerfile", ".github/workflows/"] }, { "persona": "jordan", "lens": "data", "model": "claude-opus-5", "reads": ["docs/market-research.md", "data/", "schema/"] }] } })`, record its run id, wait, and return to this step. +To re-run the reviewers on named sections, call `Workflow({ name: "ck:panel", args: { runId, runDir, projectRoot, pluginRoot: "${CLAUDE_PLUGIN_ROOT}", timestamp: "", question: "", contextPath: "/docs/ARCHITECTURE.md", rationalePath: "/docs/PRD.md", lenses: [{ "persona": "morgan", "lens": "security", "model": "claude-fable-5-1", "reads": ["docs/PRD.md", "SECURITY.md"] }, { "persona": "alex", "lens": "platform", "model": "claude-sonnet-5-5", "reads": ["infra/", "Dockerfile", ".github/workflows/"] }, { "persona": "jordan", "lens": "data", "model": "claude-opus-5-5", "reads": ["docs/market-research.md", "data/", "schema/"] }] } })`, record its run id, wait, and return to this step. ## 6. Finalize diff --git a/skills/roster/SKILL.md b/skills/roster/SKILL.md index 98da550..29bbc81 100644 --- a/skills/roster/SKILL.md +++ b/skills/roster/SKILL.md @@ -11,23 +11,23 @@ user-invocable: false | Persona | Role | Tier model | Domain | |---|---|---|---| | akira | Backend Engineering Consultant | claude-fable-5-1 | RESTful API design, GraphQL schema architecture, gRPC service contracts | -| alex | DevOps & Platform Consultant | claude-sonnet-5 | Infrastructure as Code: Terraform, CloudFormation, Pulumi | -| casey | Data Analyst & Visualization Consultant | claude-opus-5 | **Storytelling with Data**: The Big Idea (subject + verb + stakes), narrative arc (setup, tension, resolution, call to action), audience/tone/message framing, exploratory vs. explanatory distinction, the 3-minute story, and designing for a single clear takeaway | -| cornelius | Military Historian | claude-opus-5 | Order of battle: formations, unit designations, strengths, and command relationships | -| ernie | WW2 Narrative Author | claude-opus-5 | Flavor text and card copy: one to three sentences that carry fact and feeling both | -| iris | Brand & Illustration | claude-opus-5 | Logo systems: primary lockup, monochrome and reversed variants, favicon reduction, clear-space rules, minimum-size rules | +| alex | DevOps & Platform Consultant | claude-sonnet-5-5 | Infrastructure as Code: Terraform, CloudFormation, Pulumi | +| casey | Data Analyst & Visualization Consultant | claude-opus-5-5 | **Storytelling with Data**: The Big Idea (subject + verb + stakes), narrative arc (setup, tension, resolution, call to action), audience/tone/message framing, exploratory vs. explanatory distinction, the 3-minute story, and designing for a single clear takeaway | +| cornelius | Military Historian | claude-opus-5-5 | Order of battle: formations, unit designations, strengths, and command relationships | +| ernie | WW2 Narrative Author | claude-opus-5-5 | Flavor text and card copy: one to three sentences that carry fact and feeling both | +| iris | Brand & Illustration | claude-opus-5-5 | Logo systems: primary lockup, monochrome and reversed variants, favicon reduction, clear-space rules, minimum-size rules | | jordan | Data & ML Consultant | claude-fable-5-1 | ETL/ELT pipelines: dbt, Apache Spark, Airflow, Kafka, Fivetran, dlt | -| kai | UX Design & Visual Art Consultant | claude-opus-5 | HTML/CSS mockup creation: self-contained HTML files with embedded CSS, inline SVG, device frames, dark themes (the d20Mob mockup convention) | +| kai | UX Design & Visual Art Consultant | claude-opus-5-5 | HTML/CSS mockup creation: self-contained HTML files with embedded CSS, inline SVG, device frames, dark themes (the d20Mob mockup convention) | | morgan | Security Engineering Consultant | claude-fable-5-1 | Threat modeling: STRIDE, PASTA, attack trees, adversarial simulation | -| noon | Cyberpunk Narrative Author | claude-opus-5 | The log as a prose form: timestamped, clipped, machine-adjacent, with a voice inside the system output rather than narration wearing a timestamp | -| piper | Tabletop Playtester | claude-sonnet-5 | Running scenarios end to end, rules as written, at stated player counts | -| quinn | Project Manager & Scrum Master | claude-opus-5 | Sprint planning, backlog grooming, sprint review, retrospective, and daily standup facilitation | +| noon | Cyberpunk Narrative Author | claude-opus-5-5 | The log as a prose form: timestamped, clipped, machine-adjacent, with a voice inside the system output rather than narration wearing a timestamp | +| piper | Tabletop Playtester | claude-sonnet-5-5 | Running scenarios end to end, rules as written, at stated player counts | +| quinn | Project Manager & Scrum Master | claude-opus-5-5 | Sprint planning, backlog grooming, sprint review, retrospective, and daily standup facilitation | | reiner | Tabletop Game Designer | claude-fable-5-1 | Core loop and mechanic design for card, board, and roleplaying games | -| rez | Cyberpunk Genre Advisor | claude-opus-5 | Literature: New Wave roots (Dick, Delany, Brunner), the Movement core (Gibson, Sterling, Cadigan, Shirley, Rucker, Shiner), the stylists at its edges (Noon, Womack, Effinger), second wave and post-cyberpunk (Stephenson, Morgan, Doctorow), and the genre's current edge | +| rez | Cyberpunk Genre Advisor | claude-opus-5-5 | Literature: New Wave roots (Dick, Delany, Brunner), the Movement core (Gibson, Sterling, Cadigan, Shirley, Rucker, Shiner), the stylists at its edges (Noon, Womack, Effinger), second wave and post-cyberpunk (Stephenson, Morgan, Doctorow), and the genre's current edge | | river | Product Manager | claude-fable-5-1 | Product discovery: problem framing, user research synthesis, opportunity sizing | -| robin | QA & Testing Consultant | claude-sonnet-5 | Test strategy and architecture (unit, integration, e2e, contract, mutation) | +| robin | QA & Testing Consultant | claude-sonnet-5-5 | Test strategy and architecture (unit, integration, e2e, contract, mutation) | | sage | Business Advisor | claude-fable-5-1 | Business formation: LLC vs S-corp vs C-corp selection, state of incorporation strategy (Delaware, Wyoming, home state), operating agreements, registered agents, EIN registration | -| sasha | Frontend Engineering Consultant | claude-sonnet-5 | Component design patterns: composition, compound components, controlled vs. uncontrolled, render props, hooks | -| toni | Product Marketing Manager | claude-opus-5 | Product positioning and value proposition development | -| tracy | Fantasy Genre Advisor | claude-opus-5 | Foundational tabletop: Gygax and Arneson, OD&D through AD&D and every edition since, Greyhawk and Blackmoor, the Dungeon Master's Guide tradition, and Appendix N as the reading list the whole hobby grew from | -| travolta | Fantasy Narrative Author | claude-opus-5 | The narrator's voice: the line that fires on a streak, a milestone, a first kill of the day, or a return after absence, in one or two sentences that carry the world without explaining it | +| sasha | Frontend Engineering Consultant | claude-sonnet-5-5 | Component design patterns: composition, compound components, controlled vs. uncontrolled, render props, hooks | +| toni | Product Marketing Manager | claude-opus-5-5 | Product positioning and value proposition development | +| tracy | Fantasy Genre Advisor | claude-opus-5-5 | Foundational tabletop: Gygax and Arneson, OD&D through AD&D and every edition since, Greyhawk and Blackmoor, the Dungeon Master's Guide tradition, and Appendix N as the reading list the whole hobby grew from | +| travolta | Fantasy Narrative Author | claude-opus-5-5 | The narrator's voice: the line that fires on a streak, a milestone, a first kill of the day, or a return after absence, in one or two sentences that carry the world without explaining it | diff --git a/tests/pending/P0-S4.sh b/tests/checks/P0-S4.sh similarity index 100% rename from tests/pending/P0-S4.sh rename to tests/checks/P0-S4.sh diff --git a/tests/run.sh b/tests/run.sh index 0eebc87..d4ee427 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -127,13 +127,13 @@ if (( ${#bad[@]} == 0 )); then ok "every agent is on its tier, renamed, trailere section "5. tiers.conf" tier_lines=$(grep -cE '^[a-z]+ claude-' tiers.conf) fable=$(grep -c ' claude-fable-5-1$' tiers.conf) -opus=$(grep -c ' claude-opus-5$' tiers.conf) -sonnet=$(grep -c ' claude-sonnet-5$' tiers.conf) +opus=$(grep -c ' claude-opus-5-5$' tiers.conf) +sonnet=$(grep -c ' claude-sonnet-5-5$' tiers.conf) if [[ "$tier_lines" == "${#personas[@]}" ]]; then ok "one tier line per persona ($tier_lines)"; else fail "tiers.conf has $tier_lines persona lines, expected ${#personas[@]}"; fi -if [[ "$fable" == 6 && "$opus" == 11 && "$sonnet" == 4 ]]; then ok "six Fable 5.1, eleven Opus 5, four Sonnet 5"; else fail "tier counts: $fable Fable, $opus Opus, $sonnet Sonnet"; fi +if [[ "$fable" == 6 && "$opus" == 11 && "$sonnet" == 4 ]]; then ok "six Fable 5.1, eleven Opus 5.5, four Sonnet 5.5"; else fail "tier counts: $fable Fable, $opus Opus, $sonnet Sonnet"; fi unknown=$(grep -E '^[a-z]+ ' tiers.conf | awk '{print $1}' | while read -r n; do [[ -f "profiles/$n.md" ]] || echo "$n"; done) if [[ -z "$unknown" ]]; then ok "every tier line names a profile"; else fail "tier lines without a profile: $unknown"; fi -other=$(grep -E '^[a-z]+ ' tiers.conf | grep -vE ' claude-(fable-5-1|opus-5|sonnet-5)$' || true) +other=$(grep -E '^[a-z]+ ' tiers.conf | grep -vE ' claude-(fable-5-1|opus-5-5|sonnet-5-5)$' || true) if [[ -z "$other" ]]; then ok "every model is one of the three tier IDs"; else fail "unexpected models: $other"; fi # ─── 6. River's behaviors in the interactive skills ───────────────────────── diff --git a/tiers.conf b/tiers.conf index 2d58fee..9e4032c 100644 --- a/tiers.conf +++ b/tiers.conf @@ -9,20 +9,20 @@ morgan claude-fable-5-1 sage claude-fable-5-1 jordan claude-fable-5-1 reiner claude-fable-5-1 -# Craft (Opus 5): judgment-heavy craft at moderate volume. -toni claude-opus-5 -kai claude-opus-5 -iris claude-opus-5 -quinn claude-opus-5 -casey claude-opus-5 -cornelius claude-opus-5 -ernie claude-opus-5 -rez claude-opus-5 -tracy claude-opus-5 -travolta claude-opus-5 -noon claude-opus-5 -# Execution (Sonnet 5): implementation and volume. -sasha claude-sonnet-5 -alex claude-sonnet-5 -robin claude-sonnet-5 -piper claude-sonnet-5 +# Craft (Opus 5.5): judgment-heavy craft at moderate volume. +toni claude-opus-5-5 +kai claude-opus-5-5 +iris claude-opus-5-5 +quinn claude-opus-5-5 +casey claude-opus-5-5 +cornelius claude-opus-5-5 +ernie claude-opus-5-5 +rez claude-opus-5-5 +tracy claude-opus-5-5 +travolta claude-opus-5-5 +noon claude-opus-5-5 +# Execution (Sonnet 5.5): implementation and volume. +sasha claude-sonnet-5-5 +alex claude-sonnet-5-5 +robin claude-sonnet-5-5 +piper claude-sonnet-5-5 diff --git a/workflows/brand.js b/workflows/brand.js index 26370b8..8a9e97f 100644 --- a/workflows/brand.js +++ b/workflows/brand.js @@ -44,7 +44,7 @@ const HTML_RULES = 'Every HTML file is a fragment (no html, head, or body tags, const MIN_DIRECTIONS = 4 const MAX_DIRECTIONS = 6 const MAX_REVISIONS = 2 -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' // The section order of the two brand documents, from skills/brand-artifact/SKILL.md (test 7 checks they agree). const RECORD_SECTIONS = ['Decision', 'Locked layout system', 'House tokens', 'Theme lineup', 'Rationale', 'Open items', 'Asset list'] const GUIDE_SECTIONS = ['Brand overview and personality', 'Brand architecture', 'Logo system', 'Color system', 'Typography', 'UI surface system', 'Art direction', 'Product-specific sections', 'App icon', 'Publisher credit and legal'] diff --git a/workflows/brief-draft.js b/workflows/brief-draft.js index 11b52dc..481d656 100644 --- a/workflows/brief-draft.js +++ b/workflows/brief-draft.js @@ -31,7 +31,7 @@ const existing = a.runDir ? [a.opportunityPath, a.marketResearchPath].filter(Boolean) : [projectRoot + '/docs/opportunity.md (if it exists)', projectRoot + '/docs/market-research.md (if it exists)'] const ideaText = a.idea || 'Take the idea from the concept statement in ' + a.opportunityPath -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const MAX_REVISIONS = 2 const WORD_CAP = 1200 const WORD_TARGET = 1000 diff --git a/workflows/design-round.js b/workflows/design-round.js index 20c3553..b96e596 100644 --- a/workflows/design-round.js +++ b/workflows/design-round.js @@ -49,7 +49,7 @@ const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, w const HTML_RULES = 'Every screen file is an HTML fragment (no html, head, body, style, or script elements): elements with inline style attributes only, no external references, no raster images; an inline SVG is fine for an icon. ' const VARIANT_LABELS = ['A', 'B', 'C'] const MAX_REVISIONS = 2 -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' // The section order of the design spec, from skills/design-spec-artifact/SKILL.md (test 7 checks they agree). const SPEC_SECTIONS = ['Feature', 'Chosen variant', 'Screens', 'Components', 'Interactions', 'States', 'Copy', 'Accessibility', 'Requirement traceability', 'Acceptance'] diff --git a/workflows/draft.js b/workflows/draft.js index eeb7535..ea90178 100644 --- a/workflows/draft.js +++ b/workflows/draft.js @@ -25,8 +25,8 @@ const ARTIFACTS = { targetWords: 2500, lenses: [ { persona: 'river', lens: 'product', model: 'claude-fable-5-1', reads: ['docs/brief.md', 'docs/opportunity.md', 'ROADMAP.md'] }, - { persona: 'toni', lens: 'marketing', model: 'claude-opus-5', reads: ['docs/market-research.md', 'docs/opportunity.md'] }, - { persona: 'kai', lens: 'ux', model: 'claude-sonnet-5', reads: ['brand/', 'docs/design/'] }, + { persona: 'toni', lens: 'marketing', model: 'claude-opus-5-5', reads: ['docs/market-research.md', 'docs/opportunity.md'] }, + { persona: 'kai', lens: 'ux', model: 'claude-sonnet-5-5', reads: ['brand/', 'docs/design/'] }, ], }, architecture: { @@ -42,8 +42,8 @@ const ARTIFACTS = { targetWords: 2500, lenses: [ { persona: 'morgan', lens: 'security', model: 'claude-fable-5-1', reads: ['docs/PRD.md', 'SECURITY.md'] }, - { persona: 'alex', lens: 'platform', model: 'claude-sonnet-5', reads: ['infra/', 'Dockerfile', '.github/workflows/'] }, - { persona: 'jordan', lens: 'data', model: 'claude-opus-5', reads: ['docs/market-research.md', 'data/', 'schema/'] }, + { persona: 'alex', lens: 'platform', model: 'claude-sonnet-5-5', reads: ['infra/', 'Dockerfile', '.github/workflows/'] }, + { persona: 'jordan', lens: 'data', model: 'claude-opus-5-5', reads: ['docs/market-research.md', 'data/', 'schema/'] }, ], }, } @@ -69,9 +69,9 @@ const inputs = Array.isArray(a.inputs) && a.inputs.length ? a.inputs : [rational const withPanel = a.panel !== false const SECTIONS = A.sections const MAX_REVISIONS = 2 -const TRIM_MODEL = 'claude-sonnet-5' +const TRIM_MODEL = 'claude-sonnet-5-5' const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. If an item needs a source you do not have, mark the claim unverified instead of inventing one. ' -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const ORDER = ['draft', 'validate', 'panel', 'synthesize'] const startAt = ORDER.includes(a.startAt) ? a.startAt : 'draft' diff --git a/workflows/market-research-draft.js b/workflows/market-research-draft.js index a4f59a4..49a386d 100644 --- a/workflows/market-research-draft.js +++ b/workflows/market-research-draft.js @@ -3,7 +3,7 @@ export const meta = { description: 'Market research as a fan-out: Toni plans four to six questions across market size and trends, competitors, customers and channels, pricing, and constraints; neutral researchers answer them in parallel from the web with a source per claim; a cross-check marks unsourced claims and contradictions; Toni writes docs/market-research.md to the market research contract; a checker validates it. Normally launched by /ck:market-research, which mints the run directory and owns the review, with an object: runId, runDir, projectRoot, pluginRoot, timestamp, focus, inputs (absolute paths of docs/opportunity.md and docs/brief.md when they exist), outputPath (optional; default /docs/market-research.md), startAt (optional: plan | research | crosscheck | write | validate). A direct /ck:market-research-draft [focus] works too, with everything defaulted to the current project and no run record.', phases: [ { title: 'Plan', detail: 'ck:toni writes four to six research questions, each with what a good answer contains' }, - { title: 'Research', detail: 'one neutral Sonnet 5 researcher per question, in parallel, with web search; a source per claim' }, + { title: 'Research', detail: 'one neutral Sonnet 5.5 researcher per question, in parallel, with web search; a source per claim' }, { title: 'Cross-check', detail: 'one neutral agent: every claim sourced or marked unverified; contradictions listed with both sources; stale sources flagged' }, { title: 'Write', detail: 'ck:toni writes docs/market-research.md to the contract' }, { title: 'Validate', detail: 'one neutral Haiku agent checks the contract; ck:toni revises at most twice' }, @@ -30,9 +30,9 @@ const contractStep = a.pluginRoot const housekeeping = a.runDir ? '' : 'If ' + projectRoot + '/.git exists, run this with the Bash tool so the run cache stays out of git status: grep -qxF ".ck/" ' + projectRoot + '/.git/info/exclude 2>/dev/null || echo ".ck/" >> ' + projectRoot + '/.git/info/exclude . If it is refused, skip it and never mention it in a document. ' const ONE_WRITE = 'Write the whole file with one Write call; do not build it with piecemeal edits, and do not re-read, edit, count, or check it after writing: return as soon as it is written, because a checker runs next and names anything unmet. ' const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. If an item needs a source you do not have, mark the claim unverified instead of inventing one. ' -const RESEARCH_MODEL = 'claude-sonnet-5' +const RESEARCH_MODEL = 'claude-sonnet-5-5' const MAX_REVISIONS = 2 -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const MIN_QUESTIONS = 4 const MAX_QUESTIONS = 6 const SECTIONS = ['Summary', 'Market size and trends', 'Competitors and substitutes', 'Customers, segments, and channels', 'Pricing and business models', 'Constraints', 'Contradictions and unknowns', 'Implications for positioning', 'Sources'] diff --git a/workflows/opportunity-draft.js b/workflows/opportunity-draft.js index e734734..3b3dc3f 100644 --- a/workflows/opportunity-draft.js +++ b/workflows/opportunity-draft.js @@ -34,7 +34,7 @@ const ONE_WRITE = 'Write the whole file with one Write call; do not build it wit const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. If an item needs a source you do not have, mark the claim unverified instead of inventing one. ' const MAX_CONTRIBUTORS = 4 const MAX_REVISIONS = 2 -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' // The fixed sections of the contract. The lens sections go between Market context and Stage gates. const SECTIONS = ['Executive summary', 'Concept statement', 'Problem and root-cause chain', 'Market context', 'Stage gates', 'Monetization and business model', 'Risks', 'Open questions', 'Sources'] diff --git a/workflows/panel.js b/workflows/panel.js index c9c00bc..d1c53f9 100644 --- a/workflows/panel.js +++ b/workflows/panel.js @@ -1,6 +1,6 @@ export const meta = { name: 'panel', - description: 'Three-lens decision panel: product (river, Fable 5.1), marketing (toni, Opus 5), and UX (kai, Sonnet 5) personas, each on a different model and each reading its own evidence, argue one question; a neutral memo surfaces where they disagree and leaves the decision to the author. Type /ck:panel followed by the question; the text is the only argument needed. A skill may instead pass an object: runId, runDir (absolute cache directory), projectRoot (absolute path of the project repository), pluginRoot, timestamp (UTC, minted by the caller with date -u), question, contextPath (optional), rationalePath (optional; each lens reads it only after forming its view), memoPath (optional; default /docs/decisions/-panel.md), lenses (optional [{persona, lens, model, reads}]).', + description: 'Three-lens decision panel: product (river, Fable 5.1), marketing (toni, Opus 5.5), and UX (kai, Sonnet 5.5) personas, each on a different model and each reading its own evidence, argue one question; a neutral memo surfaces where they disagree and leaves the decision to the author. Type /ck:panel followed by the question; the text is the only argument needed. A skill may instead pass an object: runId, runDir (absolute cache directory), projectRoot (absolute path of the project repository), pluginRoot, timestamp (UTC, minted by the caller with date -u), question, contextPath (optional), rationalePath (optional; each lens reads it only after forming its view), memoPath (optional; default /docs/decisions/-panel.md), lenses (optional [{persona, lens, model, reads}]).', phases: [ { title: 'Lenses', detail: 'ck:river, ck:toni, ck:kai in parallel, one model each, each reading its own evidence, each forced to argue against itself' }, { title: 'Synthesis', detail: 'one neutral agent writes the decision memo: agreement flagged as low-information, disagreement preserved, decision left to the author' }, @@ -32,13 +32,13 @@ const housekeeping = a.runDir ? '' : 'If ' + projectRoot + '/.git exists, run th // Three lenses, three models, three bodies of evidence. The same model in three // costumes is one opinion; the same evidence read three times is one reading. -// River and Toni run on their own tiers. Kai is moved down from Opus 5 to -// Sonnet 5 so that three lenses are three models. This is the one script in ck +// River and Toni run on their own tiers. Kai is moved down from Opus 5.5 to +// Sonnet 5.5 so that three lenses are three models. This is the one script in ck // allowed to set `model` on a persona agent, and it only ever moves a lens down. const DEFAULT_LENSES = [ { persona: 'river', lens: 'product', model: 'claude-fable-5-1', reads: ['docs/PRD.md', 'docs/opportunity.md', 'ROADMAP.md'] }, - { persona: 'toni', lens: 'marketing', model: 'claude-opus-5', reads: ['docs/market-research.md', 'docs/opportunity.md'] }, - { persona: 'kai', lens: 'ux', model: 'claude-sonnet-5', reads: ['brand/', 'docs/design/'] }, + { persona: 'toni', lens: 'marketing', model: 'claude-opus-5-5', reads: ['docs/market-research.md', 'docs/opportunity.md'] }, + { persona: 'kai', lens: 'ux', model: 'claude-sonnet-5-5', reads: ['brand/', 'docs/design/'] }, ] const lenses = Array.isArray(a.lenses) && a.lenses.length ? a.lenses.map((l, i) => { diff --git a/workflows/plan-draft.js b/workflows/plan-draft.js index 3df8c79..2473675 100644 --- a/workflows/plan-draft.js +++ b/workflows/plan-draft.js @@ -36,7 +36,7 @@ const rosterStep = a.pluginRoot const housekeeping = a.runDir ? '' : 'If ' + projectRoot + '/.git exists, run this with the Bash tool so the run cache stays out of git status: grep -qxF ".ck/" ' + projectRoot + '/.git/info/exclude 2>/dev/null || echo ".ck/" >> ' + projectRoot + '/.git/info/exclude . If it is refused, skip it and never mention it in a document. ' const ONE_WRITE = 'Write the whole file with one Write call; do not build it with piecemeal edits, and do not re-read, edit, count, or check it after writing: return as soon as it is written, because a checker runs next and names anything unmet. ' const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. ' -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const MAX_REVISIONS = 2 const SECTIONS = ['What this covers', 'Phases', 'Stage by stage', 'Open points'] diff --git a/workflows/roadmap-draft.js b/workflows/roadmap-draft.js index 18d0fe4..c4e6df3 100644 --- a/workflows/roadmap-draft.js +++ b/workflows/roadmap-draft.js @@ -26,7 +26,7 @@ const contractStep = a.pluginRoot const housekeeping = a.runDir ? '' : 'If ' + projectRoot + '/.git exists, run this with the Bash tool so the run cache stays out of git status: grep -qxF ".ck/" ' + projectRoot + '/.git/info/exclude 2>/dev/null || echo ".ck/" >> ' + projectRoot + '/.git/info/exclude . If it is refused, skip it and never mention it in a document. ' const ONE_WRITE = 'Write the whole file with one Write call; do not build it with piecemeal edits, and do not re-read, edit, count, or check it after writing: return as soon as it is written, because a checker runs next and names anything unmet. ' const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. If an item needs a source you do not have, mark the claim unverified instead of inventing one. ' -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const ORDER = ['prioritize', 'sequence', 'validate'] const startAt = ORDER.includes(a.startAt) ? a.startAt : 'prioritize' diff --git a/workflows/team-draft.js b/workflows/team-draft.js index 40c38ba..46e499a 100644 --- a/workflows/team-draft.js +++ b/workflows/team-draft.js @@ -35,7 +35,7 @@ const confirmReads = briefLike + ' and your nomination in ' + runDir + '/nominat const MAX_CAST = Number.isInteger(a.maxCast) && a.maxCast > 0 ? Math.min(a.maxCast, 12) : 8 const MAX_REVISIONS = 2 const SMALLEST_EDITS = 'Make the smallest edits that satisfy each listed item, with the Edit tool on the passages concerned, in at most ten Edit calls; where the item is length, cut whole paragraphs of repetition until the document is at least five percent under the cap, so one revision settles it. Do not rewrite the document, do not re-read files you were not asked to read, do not run web searches, and do not count, grep, or check the result: the checker runs again next. If an item needs a source you do not have, mark the claim unverified instead of inventing one. ' -const VALIDATOR_MODEL = 'claude-haiku-4-5-20251001' +const VALIDATOR_MODEL = 'claude-haiku-5-5' const SECTIONS = ['Cast', 'Roles and responsibilities', 'Hand-off order', 'Needs', 'Missing seats', 'Declined nominations'] const RESPONSIBILITY = {