sync: auto-sync from HOWARD-HOME at 2026-06-16 17:03:02
Author: Howard Enos Machine: HOWARD-HOME Timestamp: 2026-06-16 17:03:02
This commit is contained in:
@@ -636,3 +636,52 @@ Howard-Home by the home UniFi `.0.0/24` overlap, so first live validation must r
|
|||||||
|
|
||||||
Filed coord todo (project unifi-wifi): upgrade Cascades pfSense -> install RESTAPI -> mint key -> vault
|
Filed coord todo (project unifi-wifi): upgrade Cascades pfSense -> install RESTAPI -> mint key -> vault
|
||||||
`clients/cascades-tucson/pfsense-api` -> first live `gw-audit cascades`. Resume trigger + steps in ROADMAP §E.
|
`clients/cascades-tucson/pfsense-api` -> first live `gw-audit cascades`. Resume trigger + steps in ROADMAP §E.
|
||||||
|
|
||||||
|
## Update: 17:02 PT (2026-06-16) — unifi-wifi skill health pass + 2.4 usage/coverage tools + tonight's runbook
|
||||||
|
|
||||||
|
### Skill health pass
|
||||||
|
Verified all 19 unifi-wifi scripts. Controller-side read-only (sites, audit-site, switch-audit, live-stats,
|
||||||
|
model-rank, optimize-radios, monitor-run, gw-audit) validated LIVE on Cascades; dry-run apply (apply-radio,
|
||||||
|
apply-wlan, client-control, device-control) correct; AP-side mechanism (SSH + /proc/ui_neighbor) confirmed +
|
||||||
|
full neighbor-collect (74-AP SNR sweep) -> channel-plan end-to-end. Fixes: optimize-radios stray mongo REPL
|
||||||
|
echo (`for(k in prof)` numeric completion -> `void 0`); ASCII-cleaned printed output (em-dash/arrow/§ that
|
||||||
|
rendered as mojibake on Windows console) across 10 scripts. Commit e1031ae.
|
||||||
|
|
||||||
|
### Question chain: "can we see 2.4 device history -> which 2.4 radios to disable"
|
||||||
|
1. radio-usage.sh (NEW, commit 659c3a2): per-AP 2.4 client history from ace_stat.stat_daily (~77d) — time-avg
|
||||||
|
concurrent users (`<radio>-num_sta_avg`) + peak snapshot (`ng-num_sta`). Finding: only AP 108 (offline)
|
||||||
|
has peak==0 over 77d; every other 2.4 radio takes real bursts at low avg -> confirms POWER-DOWN not disable.
|
||||||
|
NEIGHBOR_JSON adds a safe-to-disable shortlist.
|
||||||
|
2. radio-usage.sh --ap mode (commit 80384a7): per-DEVICE — devices on an AP's 2.4 (live stat/sta + recent
|
||||||
|
assoc events) tagged steerable (dual-band / randomized MAC) vs legacy/IoT (fixed OUI). Data finding:
|
||||||
|
wifi_connectivity_event retention on the UOS is ~1 DAY (current+recent, not long history); MAC-randomization
|
||||||
|
heuristic fills the gap.
|
||||||
|
3. coverage-thin.sh (NEW, commit f936224 + hint fix + mesh fix): the real deliverable — "which 2.4 radios to
|
||||||
|
disable given over-coverage, by AP proximity." Greedy dominating-set on the 2.4 SNR layer; only ACTIVE-2.4
|
||||||
|
neighbors count as coverage. Exposed + avoided an optimize-radios flaw (band-AGNOSTIC adjacency counted the
|
||||||
|
ng-DISABLED AP 128 as 'coverer' for 127/229/330/428 -> would be 2.4 holes; flagged to Mike).
|
||||||
|
|
||||||
|
### Howard caught two hazards (pre-execution review) -> fixes
|
||||||
|
- MESH: 2nd Floor Atrium is the wireless-mesh PARENT for CC Bridge + salon (backhaul ch36/5GHz); 206 U7 Pro
|
||||||
|
carries 108. coverage-thin was mesh-blind and had listed 2nd Floor Atrium/CC Bridge/206 as disable targets.
|
||||||
|
FIX: coverage-thin now fetches live uplink topology and auto-excludes wireless-mesh APs + their parents
|
||||||
|
(108, 206 U7 Pro, 2nd Floor Atrium, CC Bridge, salon). resilient plan 34->33.
|
||||||
|
- SSID/device pinning: verified NONE — CSC ENT/CSCNet/Guest broadcast on all APs (broadcasting_aps off), and
|
||||||
|
UniFi doesn't lock clients to an AP -> disabling a radio orphans nothing; clients roam. No pinning risk.
|
||||||
|
- Also fixed coverage-thin apply HINT: was emitting `apply-radio ng disable --zone "<floor>"` (would disable
|
||||||
|
a WHOLE floor) -> now per `--ap "<name>"`.
|
||||||
|
|
||||||
|
### Tonight's runbook (committed 8c048c3)
|
||||||
|
clients/cascades-tucson/reports/2026-06-16-2.4ghz-remediation-runbook.md. Phases: 0 pre-flight+baseline;
|
||||||
|
1 power-down all non-mesh 2.4 -> Low (per-zone clean floors, per-AP on mesh-containing Floor 2/misc; re-disable
|
||||||
|
128 after Floor 1); 2 settle+re-measure (valid stop point); 3 disable 25 mesh-safe low-client radios per floor
|
||||||
|
with gates (F1:7 F2:8 F3:5 F4:5); 4 wrap. Excluded: 7 high-client redundant (power-down instead: 3rd/4th
|
||||||
|
Atrium,318,303,406-408,505,Dining Room); Memcare TV room (memcare hold); companion levers (min-rate/band-steer/
|
||||||
|
min-RSSI) deferred. Recovery: device-control poe-cycle (never force-provision). Rollback JSONs in .claude/tmp.
|
||||||
|
|
||||||
|
### Open decision (awaiting Howard)
|
||||||
|
Scope for tonight: recommended = power-down-all + pilot ONE floor's disables, validate ~15min, expand if clean
|
||||||
|
(vs all 25 at once). And whether I stay live during execution to run the per-floor validation gates.
|
||||||
|
|
||||||
|
### Note: mesh data is from .claude/tmp/cascades-nbr.json (fresh tonight, gitignored) — regenerate via
|
||||||
|
neighbor-collect before execution if stale.
|
||||||
|
|||||||
Reference in New Issue
Block a user