Skip to main content

Constants

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 a rule reads is shown with the rule that reads it, with unread ones marked unused.

The resolution 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.

Rules and the constants they read​

Constants bound. 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.

Provenance​

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.

Adding your own constants​

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.

Values that live on other pages​

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​