Shared dependency without redundancy

errorshared-dependency-without-redundancy

The design requires redundant discovery, but this DNS or coordination service, which everything depends on, runs on a single provider or a single replica. Its failure is the whole system's failure.

Severity
error
Selects
every node of kind dns or coordination-service
Components in scope
52
What it checks

It looks at every node of kind dns or coordination-service, and fires when:

  • — all of these hold:
  • — the design requirement `availability.discoveryRedundant` is true
  • — any of these hold:
  • — the node's `redundantProviders` is false
  • — the node's `replicated` is false
Message
Shared dependency '{{node.id}}' is not redundant, but the design requires redundant discovery.

{{node.id}} style paths are filled in from the node, the edge or the design the finding is about.

Applies to · 52 components
Tripped by · 17

Reference designs whose broken twin names this rule in its header. The gate reads the same header, and fails when a rule no design trips.

Source
# yaml-language-server: $schema=../schema/rule.schema.json
# The design requires redundant discovery, but a DNS or coordination service that every
# component depends on has a single provider or a single replica.
# Tripped by: designs/object-storage.broken.yaml
schemaVersion: "1"
type: "rule"
id: "shared-dependency-without-redundancy"
severity: "error"
select:
  node:
    kind: ["dns", "coordination-service"]
when:
  all:
    - requirement: "availability.discoveryRedundant"
      equals: true
    - any:
        - prop: "redundantProviders"
          equals: false
        - prop: "replicated"
          equals: false
message: "Shared dependency '{{node.id}}' is not redundant, but the design requires redundant discovery."

The same page as markdown, for an agent: /catalogue/rules/shared-dependency-without-redundancy.md