Skip to content

Preserve controller ACL across firmware upgrades and recover missing access - #46

Merged
aiden0rchad merged 1 commit into
mainfrom
codex/fix-45-acl-preservation
Oct 20, 2026
Merged

aiden0rchad merged 1 commit into
mainfrom
codex/fix-45-acl-preservation

Conversation

@aiden0rchad

@aiden0rchad aiden0rchad commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Firmware upgrades that keep settings retain the controller's rpcd login but discard its manually installed ACL, leaving adopted devices permanently denied. Register the ACL in /etc/sysupgrade.conf during adoption and refresh, and remove that entry during rollback and unadoption. Backup-list edits are atomic, preserve permissions and unrelated entries, and avoid duplicates.

Restore a missing ACL through the existing refresh action only when the saved SSH host key matches before administrator authentication. Verify a fresh controller session, device MAC, and capabilities afterward. Managed and monitor-only scopes remain distinct. Add filesystem and SSH/ubus regression tests, update the router-change disclosures, and document recovery for existing devices.

Local validation:

  • go test -count=1 ./...
  • go test -race -count=1 ./internal/adoption ./internal/daemon -run 'Test(ACL|RefreshACL|Adopt|Unadopt|Cleanup)'
  • go vet ./...
  • npm --prefix ui test — 563 tests passed in the isolated checkout
  • npm --prefix ui run build
  • ./tools/secret-scan.sh --tree

Related to #45. Keep the issue open pending reporter confirmation of recovery and preservation across a real firmware upgrade. No physical firmware upgrade was performed for this change.

Rebased onto main at f8d21d8 after #47. Full CI and documentation checks pass on 2e2cc7e, including the full race suite, browser tests, dependency scans, reproducible release archives, container backup/restore, and multi-platform image build. The ACL patch is unchanged by the rebase. The full Go suite and 563 UI unit tests also passed locally after rebasing.

Copilot AI balanced review requested due to automatic review settings October 20, 2026 20:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@aiden0rchad
aiden0rchad force-pushed the codex/fix-45-acl-preservation branch from bfefe0d to 2e2cc7e Compare October 20, 2026 20:47
@aiden0rchad
aiden0rchad merged commit 4af920f into main Oct 20, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants