<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>2026 on Deevnet Infrastructure Platform</title><link>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/</link><description>Recent content in 2026 on Deevnet Infrastructure Platform</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deevnet.github.io/deevnet-docs/docs/incidents/2026/index.xml" rel="self" type="application/rss+xml"/><item><title>INC-0001: Firewall Policy Deleted, Total Connectivity Loss</title><link>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0001-firewall-policy-deletion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0001-firewall-policy-deletion/</guid><description>&lt;h1 id="inc-0001-firewall-policy-deleted-total-connectivity-loss">
 INC-0001: Firewall Policy Deleted, Total Connectivity Loss
 &lt;a class="anchor" href="#inc-0001-firewall-policy-deleted-total-connectivity-loss">#&lt;/a>
&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Date&lt;/strong>&lt;/td>
 &lt;td>2026-09-07&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Site&lt;/strong>&lt;/td>
 &lt;td>mobile (&lt;code>dvntm&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Systems&lt;/strong>&lt;/td>
 &lt;td>Core router &lt;code>dv02cor002p01&lt;/code> (OPNsense); the &lt;code>opnsense_firewall&lt;/code> role in &lt;code>ansible-collection-deevnet.net&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Severity&lt;/strong>&lt;/td>
 &lt;td>Total site outage; physical console access required to recover&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Status&lt;/strong>&lt;/td>
 &lt;td>Root cause confirmed. Service restored from config backup. Corrective and preventive actions 1–8 done as of 2026-09-08. Of five open items, two were settled on 2026-09-14 and one narrowed; three remain, planned as 
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/changes/2026/0007-core-router-zone-policy/">CHG-0007&lt;/a>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Times&lt;/strong>&lt;/td>
 &lt;td>UTC (local is UTC−4), as recorded in the session transcript&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;blockquote class="book-hint warning">
 
**The guards are in, but have not yet met the live router.** Since 2026-09-08,
`opnsense_firewall` refuses to reconcile from a broken discovery, withholds deletions by
default, protects the operator's path, and applies behind a rollback savepoint
([Corrective actions](#corrective-actions), [Preventive actions](#preventive-actions)). They
were verified offline against this incident's own input. The zone policy has still never been
applied, so its first real application remains a watched change with the console open.

&lt;/blockquote>

&lt;hr>
&lt;h2 id="summary">
 Summary
 &lt;a class="anchor" href="#summary">#&lt;/a>
&lt;/h2>
&lt;p>Four ad-hoc runs of the &lt;code>opnsense_firewall&lt;/code> role against the core router deleted &lt;strong>every&lt;/strong>
&lt;code>ansible:&lt;/code>-prefixed filter rule on it: 18 zone policies, the internet rules for 8 zones, the
per-zone conntrack rules, and both anti-lockout rules. That is the entire inter-VLAN policy.
The role reported success on every run.&lt;/p></description></item><item><title>INC-0002: Controller VM Silent — Running but Off the Network</title><link>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0002-controller-vm-network-hang/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0002-controller-vm-network-hang/</guid><description>&lt;h1 id="inc-0002-controller-vm-silent--running-but-off-the-network">
 INC-0002: Controller VM Silent — Running but Off the Network
 &lt;a class="anchor" href="#inc-0002-controller-vm-silent--running-but-off-the-network">#&lt;/a>
&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Date&lt;/strong>&lt;/td>
 &lt;td>2026-09-15&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Site&lt;/strong>&lt;/td>
 &lt;td>mobile (&lt;code>dvntm&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Systems&lt;/strong>&lt;/td>
 &lt;td>Network-management VM &lt;code>dv02nms001v01&lt;/code> (VMID 204 on &lt;code>dv02hyp001p01&lt;/code>), running the Omada controller container&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Severity&lt;/strong>&lt;/td>
 &lt;td>Management-plane only. The controller was unreachable, which &lt;strong>blocked 
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/changes/2026/0005-wireless-ap-firmware-and-adoption/">CHG-0005&lt;/a>&lt;/strong>. No client-facing outage: the AP was still standalone on its old firmware, so wireless kept serving.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Status&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>Service restored by a guest reboot; root cause not established.&lt;/strong> The controller and its Omada data (local Owner, Open API client) came back intact. Corrective and preventive actions are open.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Times&lt;/strong>&lt;/td>
 &lt;td>Local (EDT, UTC−4), as observed from the builder during the CHG-0005 window&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="summary">
 Summary
 &lt;a class="anchor" href="#summary">#&lt;/a>
&lt;/h2>
&lt;p>At the start of the 
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/changes/2026/0005-wireless-ap-firmware-and-adoption/">CHG-0005&lt;/a>
window, the controller VM &lt;code>dv02nms001v01&lt;/code> reported &lt;code>status: running&lt;/code> to Proxmox but had no
presence on the network at all — no ARP reply, no QEMU guest-agent response, and nothing
answering on &lt;code>10.20.99.40:8043&lt;/code>. The guest was wedged in a way that Proxmox&amp;rsquo;s own &amp;ldquo;running&amp;rdquo;
status did not reflect.&lt;/p></description></item><item><title>INC-0003: OpenBao's Recovery Key and AppRole Destroyed by a Git Reset</title><link>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0003-openbao-credential-loss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/incidents/2026/0003-openbao-credential-loss/</guid><description>&lt;h1 id="inc-0003-openbaos-recovery-key-and-approle-destroyed-by-a-git-reset">
 INC-0003: OpenBao&amp;rsquo;s Recovery Key and AppRole Destroyed by a Git Reset
 &lt;a class="anchor" href="#inc-0003-openbaos-recovery-key-and-approle-destroyed-by-a-git-reset">#&lt;/a>
&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Date&lt;/strong>&lt;/td>
 &lt;td>2026-09-17&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Site&lt;/strong>&lt;/td>
 &lt;td>mobile (&lt;code>dvntm&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Systems&lt;/strong>&lt;/td>
 &lt;td>OpenBao on &lt;code>dv02idn001v01&lt;/code>; the Deevnet API on &lt;code>dv02prv001v01&lt;/code>; the inventory repository &lt;code>ansible-inventory-deevnet&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Severity&lt;/strong>&lt;/td>
 &lt;td>Provisioning only. OpenBao kept running and self-unsealing, the Deevnet API kept serving, and both live tenants — &lt;code>tdemo&lt;/code> and &lt;code>eds&lt;/code> — were unaffected throughout, including during the rebuild. No client-facing outage.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Status&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>Resolved.&lt;/strong> OpenBao was rebuilt, both tenants resupplied their secrets, and the practice that allowed it is now written down and enforced by a checklist. Three code defects the rebuild exposed are fixed.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Cause&lt;/strong>&lt;/td>
 &lt;td>&lt;code>git reset --hard&lt;/code> run in a repository whose vault files were decrypted, eight minutes after an initialisation wrote once-only credentials into one of them&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="summary">
 Summary
 &lt;a class="anchor" href="#summary">#&lt;/a>
&lt;/h2>
&lt;p>During 
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/changes/2026/0010-tenant-api-cutover/">CHG-0010&lt;/a>, step 3 initialised OpenBao. That run
produces three values that exist nowhere else: the &lt;strong>recovery key&lt;/strong>, and the &lt;strong>role ID and secret ID
of Ansible&amp;rsquo;s AppRole&lt;/strong>. It writes them to &lt;code>.openbao/&amp;lt;host&amp;gt;-init.json&lt;/code> on the control node, and the
change record instructs the operator to move them into the inventory vault and delete that file.&lt;/p></description></item></channel></rss>