v1.8.0 — deploy-path repair after the v1.7 hardening
The v1.8 line continues in v1.8.1, which adds agent peer identity and the identity map at admission — the agent half of the canonical-peer work. It is not contained in this tag; it landed after v1.8.0 was cut. If you are adopting v1.8, take v1.8.1.
A repair release, not a feature one. v1.7 hardened the platform's security posture; applying that hardening to a real subscription then broke the paths that install and update it. Every item here is a defect found by running the thing, plus the guard that makes it fail loudly next time.
No new features, no new flags, no migrations. If your environment is deployed and healthy, v1.8 changes what happens the next time you build an image, seed a vault, or deploy from scratch.
Deploy-path repair
- Fresh deploys work again after the
Deny-by-default firewalls (#122). A clean-subscription apply died mid-Pass-2 withForbiddenByFirewallon the Key Vault data sources and a 403 on file-share reads — after plan-time reads had succeeded, so it failed with billable resources standing. Azure Container Apps is not a Key Vault trusted service, so an IP allowlist alone never covers in-VNet callers: the app subnet now carriesMicrosoft.KeyVault/Microsoft.Storageservice endpoints and is allowlisted. Storageip_rulesrejects/32. PostgreSQL 15 names the throttling parameterconnection_throttle.enable. - The paperclip image is buildable again (#128).
scripts/build-and-push.shhardcoded its own copy of the vendored PaperClip pin, which stopped matching the Dockerfile at thev2026.707.0bump — and--build-argbeats anARGdefault, so every build silently cloned the old upstream and then aborted on a workspace package that version does not ship. Both values now come from one place. - CI green again (#127, #130). Two gitleaks false positives in
docs/notes/, allowlisted withcondition = "AND"so only those literals are exempt and only there.
Drift guards
- A DSN whose user is not the server admin now fails at seed time (#129). Postgres answers a username mismatch with
FATAL: password authentication failed for user "..."— the message names the password and sends you to the wrong secret. In the reference deployment that cost a six-day outage.seed-keyvault.shnow validates both DSN secrets against the expectedadministrator_login, including values kept from an earlier run, which is the path the drift actually took. Offline--self-checkruns it in CI.
Dependencies
services/honcho→python:3.14-slim-bookworm(#125), reversing the v1.7 revert now thatlocal-stack-smokepasses on 3.14;astral-sh/uv0.11.29 (#126);actions/setup-node7 (#123).- The
services/paperclip3.14 bump (#124) is not in this release — its smoke job still fails.
Scope note
The v1.7 tag was cut 2026-07-11, before the reliability-hardening merges (#112–#117) reached main. Those are documented under the v1.7 milestone and are contained in this tag; the v1.8 notes cover only what is new since that documentation.
Full notes: docs/releases/v1.8.0.md