mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Run 34421944328 Snipe-IT#1 (swarm) failed its CLI contract with "UNREACHABLE read call snipeit_get_license_summary: the provider answered 500". The mint ran provision_mcp_identity.php through container exec as root, so the first deploy's passport:keys wrote the key files root-owned (0660/0600), and the NFS export's No_Root_Squash kept them that way. Apache serves as apache and could not read the public key, so every token-checked request failed with 500 on every replica. The image's startup script chowns the keys to apache:root, but only when a container starts, and the mint ran after that. mcp_mint.yml now runs the same chown in the resolved container before minting, which also heals keys an earlier deploy left root-owned, and runs the mint itself with -u apache so keys it creates start out readable. The PHP script checks the token it just minted against its own API and exits 1 on anything but 200, so a broken mint fails the task that made it, within its retries, instead of surfacing as an unreachable provider in the CLI contract. Each retry revokes the same-name token before minting, so retries do not pile up live tokens. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>