The import of slice 3 (ADR 0275) was checked against every folder: no report changed since the commit it read, and the tracker holds each report's status, owner, fix, design amendment, replay and closing day. The keys are removed from all 361 reports, cycle.py refuses them in any report, and the playbooks, skills and READMEs that still pointed at them name the tracker instead.
23 lines
980 B
Markdown
23 lines
980 B
Markdown
---
|
|
opened: 2026-09-30
|
|
---
|
|
|
|
# 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.
|
|
|
|
Re-checked 2026-10-08: still holds. A manifest's `requires` is still a list of hard requirements; no
|
|
optional form exists in the controller's catalogue.
|