# `GgenIgniter.DoctorFixes.Rule`
[🔗](https://github.com/seanchatmangpt/ggen_igniter/blob/v26.9.8/lib/ggen_igniter/doctor_fixes.ex#L139)

Data shape of one declarative doctor reconciliation rule: a
`(Predicate, Transformation, Verification)` triple, per
`GgenIgniter.DoctorFixes`'s moduledoc. Every field is a real,
single-argument function over a `project_dir` -- no captured mutable
state, no `File.cwd!()`/`Mix.Project` reads baked in, so a `Rule` is as
testable against a throwaway temp directory as any of the plain
functions it replaces.

# `predicate_result`

```elixir
@type predicate_result() ::
  {:ok, String.t()} | {:fixable, String.t()} | {:unrecognized, String.t()}
```

# `t`

```elixir
@type t() :: %GgenIgniter.DoctorFixes.Rule{
  name: String.t(),
  predicate: (Path.t() -&gt; predicate_result()),
  transform: (Path.t() -&gt; {:fixed, String.t()}),
  verify: (Path.t() -&gt; boolean())
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
