164 a credential that must be accepted is minted anyway 165 one accepted value must be accepted once per consumer 166 a requirement cannot be optional 167 code several modules share has no home 168 a setting reaches every file and every contribution
25 lines
958 B
Markdown
25 lines
958 B
Markdown
---
|
|
status: open
|
|
opened: 2026-09-30
|
|
located-in:
|
|
- mesh-controller internal/catalogue (requires is a list of hard requirements)
|
|
fixed-by:
|
|
amended-design:
|
|
---
|
|
|
|
# 166 — A requirement cannot be optional
|
|
|
|
## What was observed
|
|
|
|
Making every dependency on ace a provision turned soft dependencies into hard ones. grafana now
|
|
requires `influxdb-api` (a data source), ombi requires `sonarr-api`, `radarr-api` and `lidarr-api`,
|
|
home-assistant requires the Servarr APIs and `mqtt-topic`. Each is optional to the software — grafana
|
|
runs without a data source, ombi without lidarr — but a mesh without influxdb cannot assign grafana at
|
|
all, and a mesh without lidarr cannot run ombi.
|
|
|
|
## What would be right
|
|
|
|
A requirement a module can run without: resolved and bound when a provider exists, absent (with its
|
|
`${bound:…}` placeholders refused or defaulted explicitly, never rendered empty) when none does — so
|
|
the module description stays true on every mesh.
|