|
D-113 (PROPOSED): is OPNsense the right edge platform? -- and a confound in D-112
Operator asked, after a five-bug day, whether something is better suited than OPNsense for the simulated edges. Written up with alternatives; NOT RULED. Honest cost accounting: of the five bugs, TWO (DOCFIX-188 memory_unit, DOCFIX-190 ACPI) were libvirt module bugs that would have hit any guest and whose fixes now protect every VR1 VM -- not OPNsense's fault. The other three (DOCFIX-191 no sshd/key, DOCFIX-192 no console, DOCFIX-193 no DHCP) share ONE root cause: hand-authoring the appliance's internal, GUI-owned config.xml. 2026-07-13 adds a fourth of the same kind -- a full-config push drops ~667 migration-populated elements including the only two firewall pass rules, and works ONLY because OPNsense regenerates them on boot. We depend on an undocumented self-heal of an internal format. That, not the boot bugs, is the ongoing cost. THE CONFOUND, and the reason this is worth ruling rather than waving through: D-112 adopted option (c) with the explicit rationale "C since it is the way people automate opnsense" -- i.e. the REST API (opn-cli, the Ansible collection). What we actually BUILT is config.xml templating delivered over scp. That satisfies (c)'s letter (provision over the network, post boot) but NOT the rationale it was ruled on. Every OPNsense-specific bug we are charging against the platform is an artifact of hand-authoring XML -- precisely what the API exists to avoid. So the fair comparison is not OPNsense vs VyOS; it is: (a1) OPNsense + config.xml templating -- status quo; cost COMPOUNDS per feature (a2) OPNsense + REST API -- what D-112's rationale actually called for (b) VyOS -- blank-sheet best; discards a working edge (c) plain Linux (nftables/Kea/FRR + cloud-init) -- max fidelity to our own tooling (d) pfSense -- REJECT, same config-format lineage Recommendation (operator rules): stay on OPNsense, and the real choice is a1 vs a2 -- I lean a2. The hard part is done and measured working, and edges 2/3 reuse the module, so the cost paid was one-time. But (a1) compounds, and (a2) is the honest reading of D-112's own ruling. Rule BEFORE Stage 3: it builds two more edges from this module, so ruling later means migrating three edges instead of one. Revert: git revert this commit (docs only; nothing built or migrated). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6Fzre1CxCY8tzwFCudu57 |
|---|
|
|
| docs/design-decisions.md |
|---|
| docs/session-ledger.md |
|---|