--- title: "1.15.11 — Fix the staging pre-filter 1.15.10 broke" description: "1.15.10 moved the `$connection_upgrade` map out of the rendered http base and into the node bootstrap, but did not add it to the staging harness — the self-contained config the unprivileged `nginx -t` pre-filter validates against, which stands in for the node's own nginx.conf. So on 1.15.10 every ed…" date: "2026-08-20" tags: ["release"] canonical: "https://django-mojo.sitesmojo.com/changelog/1-15-11/" --- 1.15.10 moved the `$connection_upgrade` map out of the rendered http base and into the node bootstrap, but did not add it to the staging harness — the self-contained config the unprivileged `nginx -t` pre-filter validates against, which stands in for the node's own nginx.conf. So on 1.15.10 every edge convergence fails its pre-filter with `unknown "connection_upgrade" variable` and installs nothing. Upgrade straight past it. ### Fixed - The staging `nginx -t` harness declares `$connection_upgrade`, alongside the `default_type` and `types_hash_max_size` it already declared. Without it, every generation rendered on 1.15.10 failed its pre-filter and no edge vhost could be installed. ### Added - A test pinning the invariant in both directions: whatever `render_http_base` stops rendering must appear in the staging harness, and whatever the harness declares must not be rendered in the base. Getting that pair out of step is what shipped 1.15.10 broken. ### Upgrade notes - Nothing to do beyond upgrading. If you are on 1.15.10 and an edge convergence has been failing with `unknown "connection_upgrade" variable`, this is why; the next convergence after upgrading succeeds on its own.