Commit 6595262
An agent definition with no `model:` in its frontmatter INHERITS the dispatching
session's model, so the role's tier becomes a property of whoever dispatched it
and when, rather than a property of the role. `os-dev.md` already carries
`model: opus` (#6686 / PR #6688) — this adds the mechanism that keeps it there
and covers the next definition someone adds.
Why the assertion belongs on the definition rather than at the call site: the
caller-side half already existed and did not hold. `.claude/skills/pm-dispatch/
SKILL.md` §5 has said "pass `model: \"opus\"` on every dev dispatch" since before
the incident, and a seat that had read it still dispatched twelve os-dev agents
in a row without passing it, with no signal. The frontmatter holds regardless of
caller compliance.
The gate asserts PRESENCE, never which tier. Which model a role runs on is
maintainer policy (#6803 puts changing it out of scope), and a policy change
should not have to edit a gate to land. `model: inherit` stays legal for a role
that genuinely follows its caller, but only with a written justification the
script re-checks against the live file — so a deliberate inherit is a recorded
decision and a silent one is red.
Every absence is red, never a skip (#4690): missing directory, no .md files, no
frontmatter, empty value, unresolvable value, unjustified inherit, and stale or
dead INHERIT_JUSTIFIED entries. 18 self-test cases pin those red paths.
Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 958cc13 commit 6595262
3 files changed
Lines changed: 586 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
878 | 878 | | |
879 | 879 | | |
880 | 880 | | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
881 | 908 | | |
882 | 909 | | |
883 | 910 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| |||
0 commit comments