mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The convergence check compared the stored service element to the declared one with jsonb equality, and the deploy failed on "The Agents plugin still stores a service or bot that differs from the deployed gateway contract". The sequence is write via SQL, cycle the plugin, read back. Cycling is exactly when the plugin rewrites that structure, and it owns it. Any field it adds of its own makes byte-identical equality impossible, permanently, while the contract itself holds. Containment says what the task means. Its own name asks whether the stored config still matches the gateway contract, not whether it is the same object: the deployed keys must be present with the deployed values, and what the plugin keeps besides is its business. Only that one condition changes. The bot check, the legacy-bot check, the FROM clause and the per-active-row semantics stay as they were -- a first attempt restructured the whole query into CTEs, which would have aggregated across active rows instead of evaluating each, and reported converged as soon as any one of them matched. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>