Status
contract
Conceptual layer
④ Decision
Repo layer
L4 knowledge-reasoning
Source
architecture section 3.6.4, section 8
Kernel constraint rules
00-kernel.md section 5
Siblings
03-plant-situation-model.md · 09-portfolio.md · 22-missed-opportunities.md

Purpose#

“Code withholds on a known constraint conflict” is only true if code can evaluate the constraint. Plant constraints are mostly unwritten. This doc defines a minimal typed vocabulary, how rows are stored, how the evaluator works, and how tacit constraints become typed without an LLM deciding the gate.


Constraint kinds (registry)#

Admitted when a family or pattern uses one:

KindIntent
forbidNamed action / state must not occur in scope
must-runAsset or resource must remain available / running
time_windowOnly valid inside / outside a window
bounde.g. feeder max kW
cumulative_capacityShared resource capacity over a window
mutual_exclusionTwo footprints cannot both hold
precedence / min separationA before B, or minimum gap
reserve_marginHeadroom that must remain
availabilityCrew, material, fixture
do_not_disturb_orderOrder / due as do-not-disturb context

New kinds are registry entries + evaluator binding + replay — not a kernel edit (21-registries-and-stage-graph.md).


Constraint row#

FieldMeaning
scopeasset, flow edge, shared resource, area, plant
applicabilitymode, product, shift, state
effective_time / recorded_timebitemporal
severityhard · conditional-hard · advisory
ownernamed plant role
sourcesite pack, owner edit, proposed-from-rejection
expiryoptional
versionrow version

Evaluator (code)#

Returns satisfied | violated | unknown, plus the smallest conflicting fact set, recorded in the DecisionTraceAlways-on record: observed, context, action, policy, approval, outcome (and seam decisions).

ResultKernel
violatedwithhold
unknown on hard / conditional-hard treated as hard for the neighbourhoodwithhold (reason=constraint_unknown)
satisfiedcontinue

The Constraint analysis model explains results and may flag possible conflicts. It never decides satisfied / violated / unknown. An LLM “possible conflict” without a code result → withhold (00-kernel.md).

Missing structure needed for a cross-asset check → unknown (02-plant-structure.md).


Tacit constraints#

Rejection reasons and owner edits become proposed constraint rows, routed to the named plant owner. Most real plant constraints are unwritten; this is how they become typed. Proposed rows are advisory until confirmed. Rejected proposals are remembered (same spirit as topology suggestions).


Action footprint#

Every candidate and open card carries:

  • assets
  • shared resources
  • crew / role
  • material
  • time window with start, end, and lag

Portfolio conflict = footprint overlap and/or constraint evaluation conflict (09-portfolio.md). The claims index in the PSMPlant Situation Model holds open-card footprints for that check.


Hard vs soft (do not confuse)#

Constraint severityKernel gate
Hard constraint violated / unknownseverity on the rowHard gate — never tunable
Soft gates (agreement, attention, …)not constraint kindsSoft gate registry (22-missed-opportunities.md)

Advisory constraint severity may inform ranking and explanations; it does not by itself force withhold unless a family maps it into a hard neighbourhood.


Why typed#

Constraint-programming practice (precedence, no-overlap, cumulative resources) covers most shared-resource cases without a scheduler or a plant ontology. Prose in a prompt is not a gate.


v1 slice vs later#

v1Later
Kinds needed by Pilot families (forbid, bound, time window, availability, do-not-disturb, mutual exclusion where topology exists)Full kind set as families commission
Code evaluator + unknown→withhold on hardSame
Tacit → proposed rows → owner confirmSame; richer suggestion UX
Advisory severity informs rank/explain onlyOptional family maps of advisory→hard neighbourhoods
Page history: last 2 changes
  1. 2026-10-07 docs(technical): rewrite l4 00-10 to the architecture c52a111
  2. 2026-09-25 docs(l4): agentic decision architecture, ADRs, and production hardness 8275e7c

Diagram

100%

Search the architecture