# Cascades of Tucson Technology Plan — built and finalized (client deliverable) ## User - **User:** Howard Enos (howard) - **Machine:** Howard-Home - **Role:** tech ## Session Summary Built the client-facing Technology Plan for Cascades of Tucson (FY 2026–2027), starting from the June 2026 CARF-oriented drafts and reconciling them against the wiki (current truth) via a delegated fact-check. Howard directed a plain, Done / To-do structure per area with an Action/Owner/Cost/Target table — no fluff, no negative framing of ACG, no CARF-intake blockers (governance fields left as *[at adoption]* placeholders). The plan covers the 8 core areas (Hardware, Software, Security/HIPAA, Confidentiality, Backup, Assistive technology, Disaster recovery, Virus & threat protection) plus supplementary areas (Communication technology, Services purchased, Use of AI) and a review/revision block. Rendered as a branded 3-page PDF via headless Chrome from a hand-built HTML using the ACG design tokens (paper/ink/orange palette, Barlow Condensed / Lexend / JetBrains Mono). Iterated to final on Howard's live corrections: backup section reworded to plain Synology-syncs-to-server + online off-site backup (no MSP360/license talk); all "outdated server" age references removed; offline switches recognized as by-design (wiki updated + errorlog correction); workstation replacement list expanded from hardware evidence in the March 2026 fleet audit (workstations.md); server power-supply row dropped (unit just not connected); M365 licensing changed to a right-sizing item (not everyone needs full Office); Synology NAS repurpose-as-onsite-backup added to area 5; the two remaining legacy-agent machines named (DESKTOP-TRCIEJA, DESKTOP-F94M8UT); Ashley Jensen's name removed from the document entirely; CHEF-PC changed from rebuild to full replace (list now 5 + spare); UPS coverage moved to Done (installed on all switches) and the verify to-do removed. Howard confirmed the "scope and quote a server refresh project" row stays as written. Final deliverable: 3-page PDF, no Chrome header/footer, verified visually page-by-page. The .md (master content), .html (render source), and .pdf are in sync. ## Key Decisions - Done / To-do per-area structure at Howard's request; positive professional tone, no self-criticism of ACG, minimal prose. - Governance fields (adopted by/date, next review) intentionally left as *[at adoption]* placeholders rather than blocking on CARF intake answers. - Workstation replacement list built strictly from the March 2026 hardware audit evidence (Win11 CPU support, RAM, machine age) — no guessed machines. - Final replacement list (5 + spare): DESKTOP-TRCIEJA (Lupe Sanchez, EOL), ASSISTMAN-PC (Meredith Kuhn, i5-6200U cannot run Win11), MDIRECTOR-PC (Shelby Trozzi, 3.9 GB RAM), MEMRECEPT-PC (Pentium E5500, oldest in fleet), CHEF-PC (Culinary — Howard upgraded it from rebuild to replace), plus spare deployed to a new hire. - M365: right-size licensing instead of consolidate-everyone-onto-Business-Premium — Howard: not everyone needs the full Office license; framed as "reduces monthly cost". - Synology NAS will be repurposed as the server's ONSITE backup target (off-site online backup continues) — added as a 60–90 day Backup to-do. - Server power supply is NOT a work item (likely just not connected) — removed. - UPS: installed on all switches — moved to Done in area 7; verify-coverage to-do removed. - No client staff names in the deliverable (Ashley Jensen removed; masthead now "Attn: Business Office"). Note: replacement-list user names (Lupe/Meredith/Shelby) were kept — only Ashley's was requested removed. - "Scope and quote a server refresh project" kept as-is after explaining it to Howard (it means produce a formal quote within 90 days, not committed spend; pairs with area 7 server redundancy). ## Problems Encountered - Headless Chrome render intermittently no-ops on first invocation after taskkill (exit path produces no PDF, or leaves the stale file untouched — caught once by identical byte size + old timestamp). Fix: retry the same command; verify freshness by timestamp/byte-size change before trusting the output. - First render in the earlier segment had Chrome's default header/footer — fixed with `--no-pdf-header-footer` (kept in all subsequent renders). - PDF text-extraction check (zlib streams) found nothing — text is drawn with subset-encoded glyphs; verification must be visual (Read the PDF) not grep-based. - `pdftoppm` not available on this machine — Read the PDF without the pages param instead. - Wiki article too large to Read directly (~70k tokens) — fact-check delegated to an Explore agent with an itemized claim checklist. ## Configuration Changes - [created/edited] `clients/cascades-tucson/docs/proposals/cascades-technology-plan-2026-07-15.md` — master plan content (final). - [created/edited] `clients/cascades-tucson/docs/proposals/cascades-technology-plan-2026-07-15.html` — branded render source (final, in sync with .md). - [created/rendered] `clients/cascades-tucson/docs/proposals/cascades-technology-plan-2026-07-15.pdf` — 3-page deliverable, 400,341 bytes, rendered 2026-07-15 11:14. - [edited] `clients/cascades-tucson/docs/proposals/carf-technology-plan-intake.md` — backup wording plain (Synology syncs to server, server backed up online); MSP360 removed. - [edited] `wiki/clients/cascades-tucson.md` — offline switches (Switch 4th Floor #2, USW Pro Max 16) marked "offline by design — not an issue (Howard, 2026-07-15). Do not flag or investigate." - [appended] `errorlog.md` — `--correction`: assumed offline UniFi switches were an issue; correct is offline by design. ## Credentials & Secrets None touched this session. ## Infrastructure & Servers - CS-SERVER: EDR covered since 2026-07-13; Datto EDR is the endpoint standard (~35 agents). - Legacy-agent stragglers: DESKTOP-TRCIEJA (Bitdefender BD_ACTIVE; GravityZone console-only uninstall; retires with its hardware replacement) and DESKTOP-F94M8UT (Alma Montt's old machine, powered off; BD-aware EDR install queued, fires on power-on). - Network: UniFi 77 APs / 12 managed switches; pfSense dual-WAN (Cox); UPS now on all switches. - M365 tenant cascadestucson.com — Business Premium 45 seats enabled; licensing right-size planned. ## Commands & Outputs - PDF render (proven, flaky on first run — retry if no fresh file): `"/c/Program Files/Google/Chrome/Application/chrome.exe" --headless --disable-gpu --no-sandbox --no-pdf-header-footer --virtual-time-budget=8000 --print-to-pdf=".pdf" "file:///C:/claudetools/clients/cascades-tucson/docs/proposals/cascades-technology-plan-2026-07-15.html"` - Page count: `py -c "import re;d=open('','rb').read();print(max(int(m) for m in re.findall(rb'/Count\s+(\d+)',d)))"` → 3. - Freshness check: compare byte size + mtime after render; identical size/old mtime = stale, re-run. ## Pending / Incomplete Tasks - Deliver the PDF to Cascades (Business Office) — Howard to send. - Borderline replacement candidates NOT added (offered, not confirmed): ACCT2-PC (i3-1005G1, 118 GB disk), LAPTOP-DRQ5L558 + LAPTOP-E0STJJE8 (Ryzen 3500U, 6 GB). - Governance placeholders (*[at adoption]*, adopted-by date, next annual review) to be filled when Cascades formally adopts the plan. - Synology onsite-backup repurpose is now a committed plan item (60–90 days) — actual implementation work not started. - Standing items from 7/14 session remain: Juan Andrade offboarding (7/16 PM), break-glass accounts, audit logging build, BAA inventory. ## Reference Information - Deliverable dir: `clients/cascades-tucson/docs/proposals/` - Fleet audit source: `clients/cascades-tucson/docs/workstations.md` (March 2026) - Remaining-work plan: `clients/cascades-tucson/docs/REMAINING-WORK-PLAN.md` - Straggler pass log: `clients/cascades-tucson/session-logs/2026-06/2026-06-26-howard-edr-bd-straggler-9am-pass.md` - Prepaid balance shown in footer: 37.5 hrs as of 2026-07-10 ## Update: 12:21 PT — Mike's verification edits applied Applied all 4 items from Mike's coord message (6c0abc15) per Howard's "fix the cost wording and update the docs, and do as mike wants": 1. **Area 2 cost correction** — Mike's live Graph check showed the relicensing claim was wrong (office staff sit on a SUSPENDED Business Standard sub, no Premium seats). Reworded to "new licensing, ~$375–575/mo depending on mix" (net-new spend, not savings). 2. **Area 8 wording** — "every device" -> "every managed, enrolled device (35), including the main server (verified live July 2026)". Dropped DESKTOP-F94M8UT from the legacy-agent row (already gone from the Datto console); DESKTOP-TRCIEJA remains. 3. **CARF conformance elements added** — standard reference row (CARF Technology and System Plan, Aging Services manual Section 1, edition placeholder), "Basis of this plan" section (needs of persons served / personnel / stakeholders + strategic alignment), Ashley Jensen restored as named plan owner (governance table ONLY — masthead stays "Attn: Business Office"; Howard approved via "do as mike wants" after the earlier name-removal request), and a Completed column added to all 28 action rows across 8 to-do tables (living-action- document format). 4. **Stale docs refreshed** — wiki CS-SERVER line superseded (Datto EDR agent reinstalled, agent b41befcf-e418-4d0d-8552-bc7662364d07, verified live; 6/26 removal note no longer current) and docs/cloud/m365.md licensing section rewritten to the live Graph numbers (SPB 45/41/4, Standard SUSPENDED 30 consumed) + stale "MFA: Not enabled" line fixed. PDF re-rendered: 4 pages, 433,980 bytes, verified visually page-by-page. Coord reply sent to Mike (GURU-5070) confirming: id 3c07fd3e-7f93-401d-8d46-339c968552f9. Files touched this update: proposals .md/.html/.pdf, docs/cloud/m365.md, wiki/clients/cascades-tucson.md. ## Update: 12:51 PT — Live verification sweep + jodi.ramstack decommission ### Live verification of the tech plan (Howard requested) Ran 4 parallel read-only verification agents + direct DNS checks against every verifiable "Done" claim in the plan. Results: **CONFIRMED live (plan accurate):** - Email auth: SPF `-all`, DMARC `p=quarantine pct=100`, DKIM selectors published (M365). - M365: SPB 45/41/4; Standard SUSPENDED 30 consumed. MFA-for-all CA policy enabled; caregiver network-block CA policy live (trusted location 72.211.21.217/32 + 184.191.143.62/32) + 8h sign-in frequency. ALIS SSO SP enabled, active sign-ins today. - Datto EDR (azcomp4587): 35/35 agents AV-enabled; CS-SERVER heartbeat ~3 min old, defs released today. DESKTOP-TRCIEJA active (retires w/ replacement); DESKTOP-F94M8UT gone. Stale unchanged: desktop-kqsl232 47d, maintenance-pc 26d. - UniFi (UOS 172.16.3.29:11443, site va6iba3v): exactly 77 APs (75 online); ~240 networks — per-room VLANs 101–631, voice VLAN 30 with exactly 37 clients, staff/guest/mgmt separated. Sub-gigabit to-do current: 34 active 100Mb switch ports + 5 APs uplinked at 100Mb (APs 122, 145, 204, 236, 240 — highest-impact fixes). - MSP360: CS-SERVER file backup Success today 07:00 (daily verified). **Discrepancies found (NOT applied — Howard: "leave the rest alone and do not add"):** - Switches: controller shows 11 (8 online, 2 offline USL24PB, 1 pending), plan says 12. - Caregiver policy live since 2026-04-29 (plan says 2026-07-01 — that was another policy's mod date). - MSP360 image plan last success 2026-07-05 (file plan is the daily one). - pfSense config vaulted 2026-06-17 point-in-time; Netgate ACB still not enabled. - Dual-WAN failover: configured/documented, not live-verified (pfSense GUI needed). **Correction (logged --correction):** verification agent reported Synology-to-server sync as partial/overstated based on STALE wiki (6/18 Team Folder [PENDING] notes). Howard confirmed the shared-folder syncs to the server ARE set up. Wiki lines ~487/633 in wiki/clients/cascades-tucson.md are stale on this point (not yet edited). ### jodi.ramstack decommission (Howard requested) Via remediation-tool user-manager tier (Graph), user id b7cddbeb-6026-436b-a3aa-67c4be43e3fb: 1. accountEnabled=false (204); 2. revokeSignInSessions (200); 3. removed license f245ecc8-75af-4f8e-b61f-27d8114de5f3 (suspended Business Standard) (200). Verified: disabled, assignedLicenses=[]. Shared-mailbox conversion attempted (exchange-op tier, EXO admin API): **no mailbox exists** — Set-Mailbox/Get-Mailbox -SoftDeletedMailbox/Get-Recipient all NotFound; Graph mailboxSettings 404 MailboxNotEnabledForRESTAPI. Mailbox was deprovisioned long before today by the suspended subscription (last sign-in 2025-03-28) — no mail data left in the tenant to preserve. Account object retained (disabled/unlicensed). Gotcha hit: `UID` is a readonly bash variable — use another name (JID) in Git-Bash one-liners. PDF unchanged (4 pages, 433,980 bytes) — Howard sends to Mike.