Rules File
The rules file decides how Limier turns low-level findings into an operator recommendation.
It is where you define what should:
- block an upgrade immediately
- require a human review
- be suppressed as known benign noise
Example
version: 1
hard_block:
- id: hard-block-new-curl-fetch
finding: new_process_exec
message_contains: "curl "
reason: candidate introduced a new outbound fetch command.
review:
- id: review-new-process
finding: new_process_exec
reason: candidate introduced a new process and needs a human explanation.
suppress:
- id: suppress-known-banner
finding: step_stdout_changed
step: exercise package
reason: this fixture prints a known version banner that is allowed to drift.Top-Level Sections
version
Required. Must be 1.
hard_block
If a finding matches a rule here, Limier recommends block.
Use this for behavior you want to stop immediately, such as a new fetch command or shell pipe.
review
If a finding matches a rule here, Limier recommends needs_review.
Use this for differences that may be legitimate but still deserve a human explanation.
suppress
If a finding matches a suppression rule, Limier treats that finding as known benign noise.
Use suppressions carefully. They are most useful when one specific step has repeatable, understood noise.
Rule Fields
Each rule supports:
id: required unique identifierfinding: required finding kind to matchstep: optional step name filtermessage_contains: optional substring matchreason: optional human-readable explanation
Common Finding Kinds
Current findings you are most likely to write rules for include:
new_process_execmissing_process_execprocess_exec_count_changedcandidate_failed_or_divergedscenario_exit_code_changedstep_exit_code_changedstep_stdout_changedstep_stderr_changedstep_count_changed
Recommended Workflow
For most teams:
- start with
rules/default.yml - run Limier on real upgrades
- add narrow suppressions only where the output is consistently noisy
- add hard-block rules for patterns your team never wants to allow
That approach preserves signal while still letting the ruleset adapt to your environment.
