Skip to content

Make the Model Tiers Tool Fallback Agree With the No-Model Rule - #3546

Merged
ptr727 merged 1 commit into
developfrom
feature/3537-tier-fallback-agree
Oct 28, 2026
Merged

ptr727 merged 1 commit into
developfrom
feature/3537-tier-fallback-agree

Conversation

@ptr727

@ptr727 ptr727 commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Summary

The paragraph under the AGENTS.md "Model Tiers" 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. A tool with no row whose agent definitions pin a model therefore got two different answers.

  • AGENTS.md "Model Tiers": the sentence now says only that a dispatch on such a tool names no model. The highest bullet alone decides what it runs at.
  • spec/model-tiers.json: the note says the same thing in the same words.
  • The three skills carrying "Model Tiers" as a generated include are regenerated, with their distributed copies.

Verification

  • spec/validate.py: OK, the tier table and spec/model-tiers.json still agree.
  • scripts/build_dist.py --check: generated distributions are current.
  • tests/test_spec_validate.py: 187 tests OK. host-setup/agent-safety/claude/test_model_tier_guard.py: 18 tests OK.
  • No test or host-setup/agent-safety/ file pins the old note text.

Pre-existing findings, not filed

  • AGENTS.md "Model Tiers", highest bullet, pre-existing: on a tool with no row, no tier can be named. A session launched on highest there cannot follow "names a tier on every dispatch meant to run below it". The old sentence had the same gap.

Closes on promotion: #3537

🤖 Generated with Claude Code

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 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 28, 2026 01:08
@ptr727

ptr727 commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 4d38c1792a09df9ea0316ed336ec06b4d9e0d343, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@coderabbitai

coderabbitai Bot commented Oct 28, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain, and the tool-fallback wording in AGENTS.md, spec/model-tiers.json, and the generated skill copies now consistently states that a dispatch on a tool with no tier row names no model.

No open issues 🎉

What changed in this PR

This PR removes a conflict in the model-tier guidance. The AGENTS.md "Model Tiers" paragraph said that a tool with no row in the tier table runs every tier at the session's own model. The highest bullet says that a dispatch naming no model runs at the agent definition's pinned model. For a tool with no row whose agent definitions pin a model, these two rules gave different answers. The fix makes the paragraph say only that a dispatch on such a tool names no model, so the highest bullet alone decides what runs. The same wording is applied to the note in spec/model-tiers.json, and to the generated skill copies that carry the "Model Tiers" section.

Changes:

  • AGENTS.md: the tool-fallback sentence under the tier table now says that a dispatch on a tool with no row, or on one that cannot name a model per subagent, names no model.
  • spec/model-tiers.json: the note carries the same wording, so the data file and the prose state the same rule.
  • Generated skill copies (unattended-handoff, local-strict-review, backlog-burndown) are updated in the authored, distributed, and .agents trees, with their .source-digests values refreshed to match.
File Description
spec/​model-tiers.json Rewords the note to match the new no-model rule for tools with no tier row.
AGENTS.md Replaces the unconditional "session's own model" fallback with the no-model wording.
.github/​skills/​unattended-handoff/​SKILL.md Carries the regenerated "Model Tiers" include with the new wording.
.github/​skills/​local-strict-review/​SKILL.md Carries the regenerated "Model Tiers" include with the new wording.
.github/​skills/​backlog-burndown/​SKILL.md Carries the regenerated "Model Tiers" include with the new wording.
.claude-plugin/​fleet-skills/​skills/​unattended-handoff/​SKILL.md Distributed copy of the regenerated "Model Tiers" include.
.claude-plugin/​fleet-skills/​skills/​local-strict-review/​SKILL.md Distributed copy of the regenerated "Model Tiers" include.
.claude-plugin/​fleet-skills/​skills/​backlog-burndown/​SKILL.md Distributed copy of the regenerated "Model Tiers" include.
.claude-plugin/​fleet-skills/​.source-digests/​unattended-handoff Digest updated to match the regenerated skill tree.
.claude-plugin/​fleet-skills/​.source-digests/​local-strict-review Digest updated to match the regenerated skill tree.
.claude-plugin/​fleet-skills/​.source-digests/​backlog-burndown Digest updated to match the regenerated skill tree.
.agents/​skills/​unattended-handoff/​SKILL.md Hand-authored source of the regenerated "Model Tiers" include.
.agents/​skills/​local-strict-review/​SKILL.md Hand-authored source of the regenerated "Model Tiers" include.
.agents/​skills/​backlog-burndown/​SKILL.md Hand-authored source of the regenerated "Model Tiers" include.

Review effort: Lite

@codecov

codecov Bot commented Oct 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.50%. Comparing base (e1c3a01) to head (4d38c17).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #3546   +/-   ##
========================================
  Coverage    81.50%   81.50%           
========================================
  Files           26       26           
  Lines         9065     9065           
========================================
  Hits          7388     7388           
  Misses        1677     1677           
Flag Coverage Δ
python-3.13 81.50% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ptr727
ptr727 merged commit 7a37dee into develop Oct 28, 2026
14 checks passed
@ptr727
ptr727 deleted the feature/3537-tier-fallback-agree branch October 28, 2026 01:29
ptr727 added a commit that referenced this pull request Oct 28, 2026
…irectories, and GOVERNANCE.md Sentence Length (#3553)

## Summary

Promotes `develop` to `main`, carrying round 2 of the resync-issue
burndown:

- #3546: the paragraph under `AGENTS.md`'s tier table and the
`spec/model-tiers.json` note no longer claim a no-model dispatch runs at
the session's own model. The `highest` bullet is the one statement of
that rule. Three skills are regenerated.
- #3547: `AUDIT.md`, `RESYNC.md` section 4 and the
`carried.hubonly.absent` assertion now name all three hub-only
exclusions. They are the baseline, the paths a `trees` entry covers, and
the repo-owned trees.
- #3549: `python-codestyle` `profiles.md` and `CODESTYLE.md` state that
a profile belongs to a declared directory. Each deliverable takes one
build-profile directory, lint-only Python may sit beside the component
it serves, and only a split by purpose alone is forbidden.
- #3551: every `GOVERNANCE.md` sentence is 25 words or fewer, except two
in "PR Review Etiquette" that other carried files copy. This is the
first slice of the #3531 cleanup, so it does not close that issue.
- #3555: promotion fix for Copilot's finding on this pull request.
`profiles.md` says an undeclared root is gated only where it tracks a
root `pyproject.toml`.

Every carried `GOVERNANCE.md` section changes wording here, so each
fleet repository's verbatim copy differs from the hub until its next
resync.

Fixes #3537
Fixes #3543
Fixes #3492

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants