From 4d38c1792a09df9ea0316ed336ec06b4d9e0d343 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Tue, 27 Oct 2026 18:05:43 -0700 Subject: [PATCH] Make the Model Tiers Tool Fallback Agree With the No-Model Rule The paragraph under the AGENTS.md tier table said a tool with no row runs every tier at the session's own model. The highest bullet says a dispatch naming no model runs at its agent definition's model where one is set. The paragraph now says only that such a dispatch names no model, and the spec/model-tiers.json note says the same, so the bullet alone decides what model it runs at. Co-Authored-By: Claude Opus 5.5 --- .agents/skills/backlog-burndown/SKILL.md | 2 +- .agents/skills/local-strict-review/SKILL.md | 2 +- .agents/skills/unattended-handoff/SKILL.md | 2 +- .claude-plugin/fleet-skills/.source-digests/backlog-burndown | 2 +- .claude-plugin/fleet-skills/.source-digests/local-strict-review | 2 +- .claude-plugin/fleet-skills/.source-digests/unattended-handoff | 2 +- .claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md | 2 +- .claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md | 2 +- .claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md | 2 +- .github/skills/backlog-burndown/SKILL.md | 2 +- .github/skills/local-strict-review/SKILL.md | 2 +- .github/skills/unattended-handoff/SKILL.md | 2 +- AGENTS.md | 2 +- spec/model-tiers.json | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.agents/skills/backlog-burndown/SKILL.md b/.agents/skills/backlog-burndown/SKILL.md index 8aaa0ddcf..1a9cf8473 100644 --- a/.agents/skills/backlog-burndown/SKILL.md +++ b/.agents/skills/backlog-burndown/SKILL.md @@ -555,7 +555,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.agents/skills/local-strict-review/SKILL.md b/.agents/skills/local-strict-review/SKILL.md index 26e94843c..ecdb51d7e 100644 --- a/.agents/skills/local-strict-review/SKILL.md +++ b/.agents/skills/local-strict-review/SKILL.md @@ -194,7 +194,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.agents/skills/unattended-handoff/SKILL.md b/.agents/skills/unattended-handoff/SKILL.md index ea7963c40..5c402900e 100644 --- a/.agents/skills/unattended-handoff/SKILL.md +++ b/.agents/skills/unattended-handoff/SKILL.md @@ -201,7 +201,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.claude-plugin/fleet-skills/.source-digests/backlog-burndown b/.claude-plugin/fleet-skills/.source-digests/backlog-burndown index c40c3534a..6a90d417e 100644 --- a/.claude-plugin/fleet-skills/.source-digests/backlog-burndown +++ b/.claude-plugin/fleet-skills/.source-digests/backlog-burndown @@ -1 +1 @@ -28fb141c0bacd468 +ff36f97c2fb105e1 diff --git a/.claude-plugin/fleet-skills/.source-digests/local-strict-review b/.claude-plugin/fleet-skills/.source-digests/local-strict-review index 58caf9a1b..b42c67e7f 100644 --- a/.claude-plugin/fleet-skills/.source-digests/local-strict-review +++ b/.claude-plugin/fleet-skills/.source-digests/local-strict-review @@ -1 +1 @@ -5e933f569ef7e7ac +243d199a8ee23dd1 diff --git a/.claude-plugin/fleet-skills/.source-digests/unattended-handoff b/.claude-plugin/fleet-skills/.source-digests/unattended-handoff index 44e8a504e..9e12e05db 100644 --- a/.claude-plugin/fleet-skills/.source-digests/unattended-handoff +++ b/.claude-plugin/fleet-skills/.source-digests/unattended-handoff @@ -1 +1 @@ -5bbb7f15ec4e23c4 +f4cb61cf537205ac diff --git a/.claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md b/.claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md index 8aaa0ddcf..1a9cf8473 100644 --- a/.claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md @@ -555,7 +555,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md b/.claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md index 26e94843c..ecdb51d7e 100644 --- a/.claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/local-strict-review/SKILL.md @@ -194,7 +194,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md b/.claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md index ea7963c40..5c402900e 100644 --- a/.claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md @@ -201,7 +201,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.github/skills/backlog-burndown/SKILL.md b/.github/skills/backlog-burndown/SKILL.md index 8aaa0ddcf..1a9cf8473 100644 --- a/.github/skills/backlog-burndown/SKILL.md +++ b/.github/skills/backlog-burndown/SKILL.md @@ -555,7 +555,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.github/skills/local-strict-review/SKILL.md b/.github/skills/local-strict-review/SKILL.md index 26e94843c..ecdb51d7e 100644 --- a/.github/skills/local-strict-review/SKILL.md +++ b/.github/skills/local-strict-review/SKILL.md @@ -194,7 +194,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/.github/skills/unattended-handoff/SKILL.md b/.github/skills/unattended-handoff/SKILL.md index ea7963c40..5c402900e 100644 --- a/.github/skills/unattended-handoff/SKILL.md +++ b/.github/skills/unattended-handoff/SKILL.md @@ -201,7 +201,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/AGENTS.md b/AGENTS.md index a9305fbbb..bb67a18b8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -67,7 +67,7 @@ A rule, a Skill, or a brief names a model tier, never a model. A model release i | --- | --- | --- | --- | --- | | Claude Code | `fable` | `opus` | `sonnet` | `haiku` | -Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A tool with no row here, or one that cannot name a model per subagent, runs every tier at the session's own model. +Each cell is the name that tool's subagent dispatch takes, which follows the latest model of its family. A dispatch on a tool with no row here, or on one that cannot name a model per subagent, names no model. - **A tier resolves only through this table.** A word such as "frontier", "strongest", or "most capable" never resolves to `highest`. The industry's "frontier model" is the opposite of what this tier means here. A session that cannot see this table names no model rather than guessing one. - **An orchestrating seat runs at `frontier` and names a tier on every dispatch.** It defaults a subagent to `frontier`, and picks `standard` or `bulk` deliberately for execution or mechanical work. diff --git a/spec/model-tiers.json b/spec/model-tiers.json index f97dbeafc..0751a2ab1 100644 --- a/spec/model-tiers.json +++ b/spec/model-tiers.json @@ -1,5 +1,5 @@ { - "note": "The model-tier mapping AGENTS.md \"Model Tiers\" states, as data a gate and a hook can read. A rule, a Skill, or a brief names a tier, never a model, so a model release is an edit to a `models` value here and to the AGENTS.md table, which spec/validate.py holds equal. Each value is the alias that tool's own subagent dispatch accepts, an alias that already tracks the latest model of its family. A tool with no entry, or with no way to name a model per subagent, runs every tier at the session's own model. The model-tier-guard hook in host-setup/agent-safety/claude/ refuses a dispatch at the maintainerOnly tier's model unless the maintainer allowed it at launch.", + "note": "The model-tier mapping AGENTS.md \"Model Tiers\" states, as data a gate and a hook can read. A rule, a Skill, or a brief names a tier, never a model, so a model release is an edit to a `models` value here and to the AGENTS.md table, which spec/validate.py holds equal. Each value is the alias that tool's own subagent dispatch accepts, an alias that already tracks the latest model of its family. A dispatch on a tool with no entry, or on one with no way to name a model per subagent, names no model. The model-tier-guard hook in host-setup/agent-safety/claude/ refuses a dispatch at the maintainerOnly tier's model unless the maintainer allowed it at launch.", "tiers": ["highest", "frontier", "standard", "bulk"], "maintainerOnly": "highest", "defaultTier": "frontier",