{
  "schema": "vedokrok.public-item.v1",
  "release_id": "MHC-RPUB-20260920-75ad787a",
  "url": "/knowledge/hide-volatile-decisions-behind-stable-interfaces",
  "id": "MHC-D-RESEARCH-9140",
  "version": "0.1.0",
  "title": "Hide volatile decisions behind stable interfaces",
  "summary": "Information hiding protects the rest of the system from volatility.",
  "kind": "protocol",
  "body": "Define an interface around the capability and keep likely-to-change representation or rules inside. Expose only what consumers need for stable use.",
  "limits": [
    "Modularity trades coordination inside a boundary for coordination across interfaces. Do not split systems simply to make diagrams or org charts look cleaner."
  ],
  "topics": [
    "union-systems-strategy-and-leverage-thinking"
  ],
  "intents": [],
  "source_ids": [
    "RS-E3F5E2F94A0C75BB"
  ],
  "evidence": [
    {
      "claim": "Parnas showed that modularization outcomes depend on decomposition criteria and argued for boundaries that hide changeable design decisions to improve flexibility and comprehensibility.",
      "source_id": "RS-E3F5E2F94A0C75BB",
      "role": "supports",
      "note": "This is foundational software-design reasoning; organizational adaptations require separate validation.",
      "locator": "Abstract and design comparison"
    }
  ],
  "use_when": [
    "When callers depend directly on internal details that change often."
  ],
  "avoid_when": [
    "Modularity trades coordination inside a boundary for coordination across interfaces. Do not split systems simply to make diagrams or org charts look cleaner."
  ],
  "example": "Downstream consumers request a canonical customer status rather than reading several internal tables whose representation may change.",
  "check": "A representative internal change can be made without coordinated edits to every consumer.",
  "steps": [
    "Name the volatile design decision.",
    "Define what consumers actually need.",
    "Create a stable contract around that need.",
    "Test whether internal change can occur without caller changes."
  ],
  "sources": [
    {
      "id": "RS-E3F5E2F94A0C75BB",
      "title": "On the Criteria To Be Used in Decomposing Systems into Modules",
      "url": "https://doi.org/10.1145/361598.361623"
    }
  ],
  "relations": [
    {
      "from": "MHC-D-RESEARCH-9140",
      "to": "MHC-D-RESEARCH-9141",
      "type": "useful_with",
      "url": "/knowledge/minimize-the-number-of-teams-that-must-change-together"
    }
  ],
  "collections": [
    {
      "id": "RC-28D91C30CEA1CB4A",
      "title": "Systems and strategic leverage: feedback, flow, modularity, robust options, and information value",
      "url": "/collections/systems-and-strategic-leverage-feedback-flow-modularity-robust-options-and-information-value"
    }
  ]
}
