What "Enforced" and "Guidance only" mean on a context rule
A context rule can be read by two different parts of preset AI, and they do not always agree. The AI rules page states both facts separately, because a rule that guides your coding agent does not necessarily fail your build, and the difference decides what you should do about it.
The two readers
The build gate is the validator behind validate_code and the CI action. It is the thing that can fail a build.
Agent guidance is what gets sent to a coding agent when it asks preset AI what applies to a file. It shapes what the agent writes; it never blocks anything on its own.
A rule reaches both, one, or neither.
The four states
Every context rule shows one of these next to its name.
Enforced
The build gate evaluates this rule. It can produce a finding and, depending on the rule's enforcement level, fail a build. Agents may receive it too.
Guidance only
The gate does not evaluate this rule, but agents still receive it. Your agent will be told about the rule and will tend to follow it; nothing will stop a build if it does not.
This is the most common reason a rule sits here: the constraint names its target under a key the gate does not currently read. Nothing is wrong with how you wrote it, and there is nothing to fix on your side: the rule is real, it is being sent, and gate support is a change on our side rather than yours.
Inactive
Nothing consumes this rule. Either it has no constraints and no recommended components, patterns to avoid, or suggested presets, or it has been switched off with the Active toggle.
If you expected this rule to do something, this is the state to look at first. A rule with no constraints has nothing to act on.
Invalid
The rule's stored configuration was rejected. This is different from Inactive: the rule is not empty, it is malformed, and the payload is usually still visible in the detail panel so you can see what was intended.
Open the rule and read the constraints section. Each constraint says whether it could be decoded and, if not, why.
Why a rule you set to "block" can still say Guidance only
Enforcement level and enforcement capability are different things.
The level (suggest, warn, or block) says how loud a finding should be if one is produced. The state above says whether one can be produced at all. A rule set to block still needs a constraint the gate can act on.
The one case that surprises people: a rule set to suggest is shown as Guidance only even when the gate reads its constraints perfectly. That is correct. A suggestion is surfaced and never fails a build, so calling it Enforced would overstate what it does.
Partial coverage
A rule can carry several constraints while the gate acts on only some of them. When that happens the row says so, for example 1 of 7 evaluated, and the detail panel marks each constraint individually.
The rule is genuinely Enforced, and can fail a build, but only through the constraints that are evaluated. The others are guidance.
Finding the rules that are not enforced
On the AI rules page:
- The counts under the page title are clickable. Selecting one filters the list to exactly the rules it counts.
- The Build enforcement filter in the left sidebar has a value for each state.
- Guidance only is also available as a saved view in the view menu.
Constraints, and what each one is doing
Open any context rule to see its constraints. Each line shows the constraint's type, what it targets, and, when it is not evaluated by the gate, the reason:
- Sent to agents. The constraint decodes and agents receive it; the gate does not read this shape.
- Not sent to agents: could not be decoded. The constraint was rejected, and the decoder's reason is shown.
- Not sent: the rule is disabled. The Active toggle is off.
For an allowOnlyIn constraint the panel also lists the allowed paths, since the element and the paths together decide what is flagged. A rule allowing every path can never flag anything, and says so.
A note on disabled rules
Turning a rule off stops it being sent to agents. It does not currently stop the build gate evaluating it, so a disabled rule may still show Build enforcement: Active. The detail panel shows both facts separately so the difference is visible rather than assumed.