Files
hq/04-ISSUES/166-a-requirement-cannot-be-optional/00-report.md
T
jochen daa9f171ae
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
Issue reports carry only opened: the tracker holds every status, so no copy can drift
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.
2026-10-10 17:44:18 +02:00

980 B

opened
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.