Skip to main content

Doctrine · Constants

Every number, and who set it

One table of named values. Each row says which layer supplied it, including the rows nobody has touched.

The constants registry as a table
The constants registry as a table
Rows are registry keys, grouped by namespace. Each says the layer that set its value, and a value owned by a rule or by posture is shown as that, with a link to where it belongs.

The cascade

Resolution is a single pass over layers. Highest wins, then the result is clamped. It runs once, before a decision pass, and does not move during it.

LayerWritten byOverridable
Doctrine boundscompilednever. Clamps every layer above.
Defaultsthe buildyes
Baselineyou, savedyes
Siteyou, per siteyes
Operator overridea live declaration, time-boxedwins, and is still clamped

A clamp is recorded, not silently applied. Careless authoring is possible; unsafe authoring is not.

Posture and rules are not layers

Posture gates. Rules derive. A rule that wants a different number for one pass emits a derivation that lives inside that decision and dies with it. The constant never moves, so the screen showing it never lies about what is configured.

This is why a value owned by a rule is displayed here rather than hidden. Removing it would change behaviour; showing it as a plain editable number would be a lie about who controls it. It appears as what it is, with a link to the rule.

Total attribution

A trace entry is emitted for every key, always, including keys no layer touched, which resolve to their default and say so.

A trace with holes in it is a trace an operator learns to distrust, and an operator who distrusts the trace stops reading it.

You can name your own

This is the one table where creating a row means something. A site can name a constant of its own, because only a rule can consume a value nobody wrote code for.

A constant you invent and no rule reads is inert. That is the correct behaviour and it is worth knowing before you add ten of them.

What lives elsewhere

Each subsystem owns its own numbers, and they are shown on that subsystem's page rather than here. Alerting has a page. Fusion has a page, gaining a block per algorithm. A value in two places is a value two people can set differently.

Where to go next