diff --git a/.claude/memory/reference_ecosense_wifi.md b/.claude/memory/reference_ecosense_wifi.md new file mode 100644 index 00000000..033f13b1 --- /dev/null +++ b/.claude/memory/reference_ecosense_wifi.md @@ -0,0 +1,20 @@ +--- +name: reference_ecosense_wifi +description: EcoSense UOS WiFi site — 4x U7-Mesh topology, wired root, and the remote 5GHz mesh-channel-hop gotcha +metadata: + type: reference +--- + +EcoSense on the UOS controller (`172.16.3.29`), site_id `6193fb3ff91fdd012516118a`, short `ja3n6cs5`. **4x UniFi U7 Mesh APs** (dual-band WiFi 7, **NO 6GHz radio** — 6E steering is not an option here), ~15 clients, third-party (pfSense) gateway, 2 switches. + +**Topology (as of 2026-07-22):** +- **South Office** = WIRED root (the mesh anchor, ~11 clients). Mongo `last_uplink` can be stale-wireless; the LIVE `stat/device uplink.type` is authoritative (`wire`). +- **Eli's Office** = wireless mesh child of South Office (backhaul ~162 Mbps on ch36 / ~108 Mbps on ch149, rssi ~19-24 — a bit marginal). +- **North Office** = came back on a WIRED uplink (was down 98 min during this work) — no longer mesh-dependent. +- **Mobile Park** = weakest link (rssi ~19 / 54-81 Mbps). Went ISOLATED during a channel change and would NOT recover remotely (wireless-isolated = controller can't reach it to restart, and no switch port so no poe-cycle). **Needs an on-site power-cycle.** + +**Tuning applied 2026-07-22:** +- 2.4GHz 1/6/11 plan: South Office ch6, Eli's ch11, Mobile Park ch1 (Eli's/South were both co-channel on 11). Safe — 2.4 is NOT the mesh backhaul. South Office 2.4 retry 34%→31%. +- 5GHz mesh moved off congested ch36 (worst channel here: neighbors at −74/−75; measured scan showed 149/153 + DFS clean) → **ch149** (non-DFS on purpose; a DFS radar hit would drop mesh backhaul). + +**LESSON — remote 5GHz channel hop on a WIRELESS mesh is fragile.** Changing the wired-root's 5GHz channel forces every wireless child to blind-rescan and re-acquire on the new channel. First attempt = OUTAGE: Eli's re-attached then fell off, Mobile Park never re-acquired → rolled back to 36 (rollback auto-saved at `.claude/tmp/apply-rollback--na-channel.json`). Retry SUCCEEDED only after the destabilizers were out of the mesh (North Office went wired, Mobile Park already isolated). Do wired-root mesh 5GHz hops **with on-site hands**, or fix the weak child's backhaul (wire it) first. See [[reference_unifi_site_manager_api]]; skill = `unifi-wifi`. diff --git a/errorlog.md b/errorlog.md index f6a7e13c..73f51991 100644 --- a/errorlog.md +++ b/errorlog.md @@ -19,6 +19,12 @@ Categories (the `[type]` tag): _(none)_ = skill/command execution failure · +2026-07-22 | GURU-5070 | unifi-wifi/apply-radio | [friction] remote 5GHz channel move on a wireless mesh (wired-root U7-Mesh, EcoSense) dropped both mesh children on 1st attempt (Eli's re-attached then fell off, Mobile Park never re-acquired -> outage, rolled back to 36); succeeded on retry only after the flapping/churning nodes were out of the mesh. Marginal-backhaul children can't blind-rescan+re-acquire a channel-hopped root reliably. Fix: do wired-root mesh 5GHz channel hops with onsite hands, or fix weak backhaul first [ctx: site=EcoSense band=na from=36 to=149 root=South-Office weaklink=Mobile-Park] + +2026-07-22 | GURU-5070 | grok | grok review returned no result [ctx: mode=review-files session= stopReason=] + +2026-07-22 | GURU-5070 | grok | grok returned no text [ctx: mode=text stopReason=] + 2026-07-22 | GURU-5070 | syncro | add_line_item returns {"errors":"Description can't be blank"} when only 'name' is sent - the 'description' field is ALSO required (skill hard-rules only mention name + price_retail). Include description on every add_line_item. No partial line created on the clean validation error. [ctx: ticket=32574 endpoint=add_line_item] 2026-07-22 | Howard-Home | remediation-tool | get-token: AADSTS7000229 — app not consented in tenant [ctx: tenant=65adab75-f1fd-4ef9-b2b4-c24f595393e3 tier=user-manager auth=cert]