# 2026-07-15 — Taylen ER-X UISP onboarding + Cascades CARF tech-plan verification

## User
- **User:** Mike Swanson (mike)
- **Machine:** GURU-5070
- **Role:** admin

## Session Summary

Two distinct workstreams from the Taylen client site. First, brought a newly-installed
EdgeRouter X under UISP remote management. The ER-X was already reaching the self-hosted
UISP controller (unms.azcomputerguru.com) and checking in every minute, but sat in the
`unauthorized` pending queue with no site — so it was reachable but not actually manageable
(no config/firmware/backup push). Authenticated to the UISP v2.1 API with the vaulted admin
account, created a new endpoint site "Taylen" (address 1141 W Calle Concordia, Tucson AZ),
and authorized the device into it. Verified it flipped to authorized/active. UISP had already
auto-queued the EdgeOS firmware upgrade 1.10.11 -> 3.0.1 on authorization (auto-firmware
policy); flagged to Mike that it is a major-version jump that reboots the router. Created the
Taylen client wiki page and index row.

Second, analyzed the finalized Cascades of Tucson CARF Technology & System Plan
(docs/proposals/cascades-technology-plan-2026-07-15.md, authored by Howard, pulled in via
sync). Read it against the CARF intake worksheet and the project memory. Assessment: strong
8-area action document but missing several CARF conformance elements, plus two "Done"-style
claims that needed live verification. Mike chose to verify the two live facts first.

Ran two parallel read-only verification agents. (1) Datto EDR console: CS-SERVER is genuinely
protected (Datto EDR sensor + Datto AV, live heartbeat, current defs) — the Area 8 claim holds,
and the wiki's "Datto removed from CS-SERVER 2026-06-26" note is stale. (2) M365 Graph on the
Cascades tenant: the Area 2 claim that relicensing "reduces monthly cost" is WRONG — Business
Premium is 45 owned / 41 assigned / 4 free, the ~30 office staff sit on a suspended Business
Standard sub and none hold Premium, so relicensing is ~$572/mo new spend (26 net-new seats),
best case ~$374/mo after converting shared mailboxes. Sent Howard a coord message with the
findings and recommended edits, then saved.

Also resolved a sync issue: the first `/sync` from the Taylen network couldn't reach the
internal Gitea host (172.16.3.20) — no route from the client LAN. Mike brought up Tailscale;
the retry hit the usual errorlog.md rebase conflict (everyone appends), which was resolved by
keeping both sides in newest-first order, and the push completed.

## Key Decisions

- Used the UISP REST API (login -> x-auth-token -> devices/sites) rather than SSHing the
  EdgeRouter or the controller. UISP is the source of truth for "remotely manageable," and the
  admin account was already vaulted — simplest path that directly answers the question.
- Authorized the ER-X into a NEW site "Taylen" (vs an existing site) per Mike's choice, matching
  how other clients are organized (one endpoint site per client/location).
- Did NOT re-trigger or cancel the firmware upgrade — UISP had already queued 3.0.1 to the correct
  platform (e50); re-POSTing risked interfering with the in-flight task. Flagged the reboot/major-
  jump to Mike and offered to hold/cancel rather than acting unilaterally on a production reboot.
- For the Cascades plan, verified the two soft claims with live data BEFORE proposing edits — an
  inaccurate "Done" in a CARF survey file is worse than an honest "in progress." Ran the two checks
  as parallel read-only agents (independent, high-output skill investigations).
- errorlog.md conflict resolved by union (keep both sides) in newest-on-top order — the file is
  append-only and both sides were new entries; no content dropped.

## Problems Encountered

- **UISP site create schema differed from the read schema.** POST /sites rejected `maximumEndpoints`
  and empty `address`; the write body is flat (`name`/`address`/`note`). Site UPDATE needed the full
  nested read-shape via PUT (PATCH 404'd; flat PUT 400'd "SiteDescription required") — resolved by
  GET -> edit description.address -> PUT the whole object.
- **First sync failed: no route to internal Gitea** (172.16.3.20:3000 timed out) because the session
  was on the Taylen client network. Resolved by Mike starting Tailscale, then re-running sync.
- **errorlog.md rebase conflict** on the retry (Howard's 7/15-7/14 entries vs my 7/13 GURU-5070
  entries). Resolved by keeping both, markers stripped, newest-first; rebase --continue succeeded.
- **Stale repo docs surfaced during verification:** the wiki CS-SERVER "Datto removed 6/26" line and
  docs/cloud/m365.md ("34 Business Standard", no mention of the 45 Premium now owned). Flagged, not
  yet fixed.

## Configuration Changes

- Created `wiki/clients/taylen.md` (new client wiki page — ER-X/UISP record).
- Modified `wiki/index.md` — added Taylen client row (auto-merged with Howard's incoming edits during rebase).
- Modified `errorlog.md` — conflict resolution (kept both sides); prior GURU-5070 7/13 entries retained.
- Created `session-logs/2026-07/2026-07-15-mike-taylen-uisp-cascades-techplan.md` (this log).
- UISP (external system, not repo): created endpoint site "Taylen"; authorized device "Taylen" ER-X
  into it; set site address. Firmware upgrade 1.10.11->3.0.1 queued (auto).

## Credentials & Secrets

- No new credentials created or discovered. Used the existing vaulted UISP admin account
  (`infrastructure/uisp-server`, web_admin_user `azcomputerguru`) for the API session; token was
  ephemeral and temp files were cleaned up.
- Cascades M365 verification used the remediation-tool investigator app (App ID
  bfbc12a4-f0dd-4e12-b06d-997e7271e10c) against tenant 207fa277-e9d8-4eb7-ada1-1064d2221498 — no creds surfaced.

## Infrastructure & Servers

### Taylen — EdgeRouter X (UISP-managed)
- Device "Taylen": ER-X EdgeRouter X, platform e50, MAC 60:22:32:54:91:c8, EdgeOS 1.10.11.
- WAN IP 24.23.65.18/23. Site address 1141 W Calle Concordia, Tucson AZ.
- UISP device id `199f1226-8053-4220-9928-0d0d733e27e0`; UISP site "Taylen" id
  `6d44a2a7-942a-433b-bd50-072e3499e765`.
- UISP controller: unms.azcomputerguru.com -> 172.16.3.25 (DockerUISP on Jupiter 172.16.3.20).
- Status: authorized / active. Firmware upgrade to EdgeOS 3.0.1 queued.

### Cascades of Tucson — verification targets
- Datto EDR: tenant azcomp4587, org "Cascades of Tucson" id 2d5ea96e-3228-461b-9c60-13ae464b61d8.
  CS-SERVER agent b41befcf-e418-4d0d-8552-bc7662364d07 (WS2019, 192.168.2.248, public 72.211.21.217).
  35 enrolled agents, all Datto AV enabled; 28 online / 7 stale.
- M365 tenant cascadestucson.com (207fa277-e9d8-4eb7-ada1-1064d2221498): SPB (Business Premium)
  45 owned / 41 assigned / 4 free; O365_BUSINESS_PREMIUM (Business Standard) SUSPENDED, 30 consumed.

## Commands & Outputs

- UISP login: `POST /nms/api/v2.1/user/login` (JSON body) -> `x-auth-token` response header.
- List devices: `GET /nms/api/v2.1/devices` (header `x-auth-token`). Filtered for name "Taylen".
- Create site: `POST /nms/api/v2.1/sites` body `{"name","address","note"}` (flat) -> 200 + site id.
- Authorize: `POST /nms/api/v2.1/devices/{id}/authorize` body `{"siteId":"<id>"}` -> `{"result":true,"message":"Authorized"}`.
- Update site: `GET /sites/{id}` -> edit `description.address` -> `PUT /sites/{id}` (full object).
- Sync fail: `fatal: unable to access 'http://172.16.3.20:3000/...': Failed to connect ... Could not connect to server` — resolved via `tailscale up` (was stopped).
- Coord: message id `6c0abc15-a590-450d-b3e6-a74b9ef174e6` -> Howard-Home/claude-main.

## Pending / Incomplete Tasks

- **Taylen firmware upgrade 1.10.11 -> 3.0.1 is QUEUED** and will fire on the router's next ready
  window, rebooting it (~3-5 min outage). Mike to decide: let it ride or cancel/defer to after-hours.
  Verify config survived the major jump and the device re-checks-in green afterward.
- **Taylen open items:** ISP not confirmed (WAN 24.23.65.18/23); EdgeOS admin creds not captured
  (vault under clients/taylen/ if custom); no GuruRMM/Syncro/endpoints documented.
- **Cascades tech-plan edits (option B, not yet done):** (1) correct Area 2 M365 cost framing to the
  verified ~$374-572/mo new spend; (2) reword Area 8 "every device" -> "every managed/enrolled device
  (35), incl. server"; (3) add missing CARF elements (standard citation + manual edition, needs-basis
  paragraph, strategic-alignment paragraph, named plan owner, completion-date column) from the intake
  worksheet; (4) refresh stale docs (wiki CS-SERVER line + docs/cloud/m365.md). Sent to Howard via coord.
- **Cascades cleanup:** DESKTOP-TRCIEJA still active in Datto (off-site 10.0.20.x) — legacy cleanup
  open. Two very-stale Datto agents (desktop-kqsl232 ~47d, maintenance-pc ~26d) — confirm off vs decommissioned.
- **Cascades M365:** consider converting 8 role/shared mailboxes (accounting@, hr@, frontdesk@, etc.)
  to free shared + removing former employee jodi.ramstack to cut the net-new Premium count.

## Reference Information

- Tech plan: `clients/cascades-tucson/docs/proposals/cascades-technology-plan-2026-07-15.md`
- CARF intake worksheet: `clients/cascades-tucson/docs/proposals/carf-technology-plan-intake.md`
- Project memory: `.claude/memory/project_cascades_carf_tech_plan.md`
- Taylen wiki: `wiki/clients/taylen.md`
- UISP vault entry: `infrastructure/uisp-server`
- UISP web: https://unms.azcomputerguru.com
- Coord message to Howard: `6c0abc15-a590-450d-b3e6-a74b9ef174e6`
