Fundamentals · Unit 2 of 4
Contracts before coupling
A plugin declares what it provides and what it requires. The resolver can validate the whole set before boot because it works with an explicit graph, not with hidden side effects.
By the end, you'll be able to
- Recognize provides/requires
- Detect a missing capability and a cycle
Understand
A plugin declares what it provides and what it requires. The resolver can validate the whole set before boot because it works with an explicit graph, not with hidden side effects.
Boot order is a consequence of the graph. If a capability is missing or a cycle exists, the system must fail with evidence and before it serves traffic. The resolver's report names the cycle in its own vocabulary: in a cycle nobody can go first, so the cycle members are excluded from loadOrder[] and the graph blocks (MILPA_DEPENDENCY_CYCLE) until the cycle is broken.
When several providers claim the same id, the resolver separates two cases. An exclusive id claimed by two or more providers blocks the graph (MILPA_CAPABILITY_CONFLICT): the resolver refuses to pick silently, because a hidden choice is exactly the invisible architecture it exists to prevent. Among multiple NON-exclusive providers the choice is legitimate, and priority makes it deterministic: the highest priority wins (absent = 0). priority orders a permitted choice; it does not rescue an exclusive conflict.
See
Break and repair the planting
Trigger a cycle, inspect the block and return to a valid order.
Do
Run the practice in your checkout and keep the output as evidence.
Verify
Show that you can apply the unit. Progress only advances once you pass the assessment.
Criteria assessed
- Place validation before boot.
- Justify the valid order from the graph, not from a manual list.
Primary sources
Content verified: 2026-07-12