Rehearsing the deploy against a full copy of prod surfaced 40+ cardinality violations that would have failed the seed. Since api/scheduler/notifier all depend on `seed: service_completed_successfully`, and this change alters the seed files (so the content hash changes and a full re-ingest runs for the first time in months), that failure would have stopped those services from starting at all. None of them are new. The foreign-key bug in checkdefaults was aborting the ingest earlier, during entity ingest, so ValidateCardinality at the end never got the chance to run. Fixing the first failure revealed the next. - `documents` was declared many-to-one, meaning a document may document at most one entity. Nomos has been writing docs that cover several (a fleet-wide apt audit documents every host it touched) for months, which is reasonable — the ontology was the strict one. Now many-to-many. - The mcp ingress still routed to service:homelab-mcp, which prod marks deprecated: the Python MCP server on apps/105 was stopped at the Go cutover. Nomos re-pointed it at service:oikos on 2026-07-12 and was right; the seed was stale, and re-asserting the old edge alongside the new one is what made it a violation. Remaining after this: one genuine drift, `hosts target=lxc:caddy (2 edges)`, which needs a prod data fix rather than a code change — see the follow-up. Co-Authored-By: Claude <noreply@anthropic.com>
36 KiB
36 KiB