Maintain the UIKitPlus Constraint System
Use this LOCAL contributor skill when changing UIKitPlus constraint implementation or built-in constraint DSL behavior.
Load the smallest decision-complete context
- Start from UIKitPlus
AGENTS.mdandSKILL_INDEX.md. - Use
LAYOUT_SYSTEM.mdas the primary architecture owner. - Add only the supporting contract needed by the change:
RUNTIME_MODEL.mdfor deferred activation/lifecycle;STATE_SYSTEM.mdfor State-backed constants;MUTATION_MODEL.mdfor re-entrant/update flows;FLUENT_CHAIN_CONTRACT.mdfor public fluent API changes.
- Use
SOURCE_MAP.mdbefore broad source discovery.
Do not bulk-load every supporting owner merely because constraints can touch them.
Plan checklist
- Classify the affected channel: solo, super, relative, or mixed.
- Identify the current activation owner and whether
movedToSuperview/deferred activation is involved. - Check relative/tag resolution and
AddedViewWithTagretry behavior when applicable. - Check State listener/link ownership when constants are reactive.
- Record public fluent/State-surface effects before mutation.
Implementation rules
- Keep pre-constraint queue ownership explicit (
notApplied*/applied*). - Preserve existing activation helpers when deferred behavior is required.
- Keep replacement/deactivation semantics explicit; do not leave duplicate active constraints hidden behind convenience APIs.
- Preserve explicit listener ownership for State-backed constants.
- Do not introduce a second layout/activation engine to compensate for a local edge case.
Audit
Verify the final source/diff against the selected architecture owners and prove:
- no hidden constraint duplication or orphaned deactivation path;
- relative/tag constraints retain retry and eventual activation behavior;
- immediate and deferred activation remain consistent;
- State propagation follows the current State contract when in scope;
- fluent
Selfsemantics remain intact for changed public APIs; - unrelated source and governance are untouched.
Stop and re-plan if the change requires a new layout lifecycle/ownership mechanism rather than an implementation inside the existing constraint architecture.