{
  "schema": "vedokrok.public-item.v1",
  "release_id": "MHC-RPUB-20260920-75ad787a",
  "url": "/knowledge/design-a-fallback-at-the-interface",
  "id": "MHC-D-RESEARCH-9146",
  "version": "0.1.0",
  "title": "Design a fallback at the interface",
  "summary": "Interfaces are natural places to define degraded behavior.",
  "kind": "protocol",
  "body": "Specify timeout, retry, cached value, manual route or safe stop at the dependency boundary, plus the conditions where degraded operation is unacceptable.",
  "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 one dependency can fail and take the whole service or process with it."
  ],
  "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": "If an external credit check is unavailable, the process routes to manual review rather than hanging indefinitely or silently approving.",
  "check": "A dependency failure produces a known bounded state instead of an improvised reaction.",
  "steps": [
    "Name the dependency failure mode.",
    "Choose safe degraded behavior.",
    "Define timeout and recovery ownership.",
    "Test the fallback before needing it."
  ],
  "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-9146",
      "to": "MHC-D-RESEARCH-9147",
      "type": "use_before",
      "url": "/knowledge/count-coordination-edges-before-adding-a-component"
    }
  ],
  "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"
    }
  ]
}
