Validate Sibling Dependency Law (ADR-020)
Purpose
Enforces the Sibling Dependency Law — a critical architectural constraint that prevents dependency spaghetti in the Xentri documentation hierarchy.
Core Rules
- •Single-Parent Inheritance: Every entity has exactly ONE parent, encoded in its requirement ID
- •Sibling-Only Dependencies:
requires_interfacescan only reference siblings (nodes with same parent) - •Inherited Access: Cross-branch dependencies must be declared at the common ancestor level
- •Violation = Redesign: If validation fails, STOP and redesign — do not create workarounds
Quick Validation
Run this command to check for violations:
bash
pnpm exec tsx scripts/validation/validate-dependencies.ts --path docs
Decision Tree
code
Is Target a sibling of Source? (same direct parent)
│
├─ YES → ✅ VALID: Declare requires_interfaces directly
│
└─ NO → Find common ancestor
│
├─ Ancestor already has access? → ✅ Use inherited_interfaces
│
└─ Ancestor lacks access?
│
├─ Can ancestor declare it? → Bubble up the dependency
│
└─ Structural problem? → Redesign required (or ADR exception)
Examples
✅ Valid: Sibling Dependency
yaml
# God-View depends on KPI-Center (both children of Pulse) Source: docs/strategy/pulse/god-view/ Target: docs/strategy/pulse/kpi-center/ Result: VALID — same parent (Pulse)
❌ Invalid: Cross-Branch Dependency
yaml
# God-View trying to depend directly on Shell Source: docs/strategy/pulse/god-view/ Target: docs/platform/shell/ Result: INVALID — different branches (Strategy vs Platform) Resolution: Strategy must declare dependency on Shell; God-View inherits
✅ Valid: Inherited Access
yaml
# God-View using Core-API via Constitution-level declaration Source: docs/strategy/pulse/god-view/ Target: docs/platform/core-api/ Context: Constitution (docs/platform/) declares IC-API-001 Result: VALID via inheritance
When to Use This Skill
Claude will automatically invoke this skill when you:
- •Ask about module dependencies
- •Create new
requires_interfacesdeclarations - •Review architecture for dependency violations
- •Add interfaces between entities
- •Mention "ADR-020", "sibling dependency", or "cross-module dependency"
Resolution Options
When a violation is detected:
- •Bubble Up: Declare the dependency at the common ancestor level
- •Redesign: Restructure entities to be siblings, or use events instead
- •Exception (last resort): Create ADR documenting the exception with remediation plan
Full Documentation
See docs/platform/architecture/adr-020-sibling-dependency-law.md for complete specification including:
- •Requirement file format
- •Dependency resolution algorithm
- •Escape hatch for exceptions
- •Enforcement mechanisms (CI, pre-commit, review)