Dogfooding finding (2026-05-23, PR #110; res scoped 2026-05-31).
Several predicates can be written either as an Expected Behavior or as a Hard Constraint. Example: triage-grooming's read-only default can be framed positively (default invocation is advisory; mutation requires --apply) or negatively (never mutate GitHub without --apply). Both can pass the 3-axis test.
Without a tie-breaker, two spec-grill sessions on the same capability can classify the same intent differently, creating avoidable diff churn.
Scope
Update skills/spec-grill/SKILL.md and/or skills/spec-grill/references/capabilities.md with the classification rule.
Proposed rule
- Positive normal outcome -> Expected Behavior.
- Bright-line negation / anti-Goodhart guard -> Hard Constraint.
- If both are valid, prefer the Hard Constraint only when the negative form protects against an optimization shortcut or data-loss shortcut.
- If explicit user consent is valid, avoid the loophole phrase "never X unless asked"; write the consent condition as a Behavior instead.
Acceptance Criteria
Dogfooding finding (2026-05-23, PR #110; res scoped 2026-05-31).
Several predicates can be written either as an Expected Behavior or as a Hard Constraint. Example: triage-grooming's read-only default can be framed positively (default invocation is advisory; mutation requires
--apply) or negatively (never mutate GitHub without--apply). Both can pass the 3-axis test.Without a tie-breaker, two
spec-grillsessions on the same capability can classify the same intent differently, creating avoidable diff churn.Scope
Update
skills/spec-grill/SKILL.mdand/orskills/spec-grill/references/capabilities.mdwith the classification rule.Proposed rule
Acceptance Criteria
spec-grilldocs include the Behavior vs. Hard Constraint tie-breaker.spec-grill/spec/capabilities.mdnames, not retiredbacklog-charterpaths.