Commit Graph

1778 Commits

Author SHA1 Message Date
768f543d70 sync: auto-sync from GURU-BEAST-ROG at 2026-06-19 14:29:53
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-19 14:29:53
2026-06-19 14:30:22 -07:00
2806fb741a errorlog: auto-logged entries from cascades voice/syncro session 2026-06-19 13:18:47 -07:00
d4347bc45f cascades: Kitchen server phone bad/removed; Bistro phone relocated to Kitchen; Bistro replacement pending (28 active Poly, 37 voice devices) 2026-06-19 13:16:51 -07:00
f8d5bee88e sync: auto-sync from GURU-5070 at 2026-06-19 11:55:18
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-19 11:55:18
2026-06-19 11:56:40 -07:00
90015c96f4 sync: auto-sync from GURU-5070 at 2026-06-19 11:52:15
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-19 11:52:15
2026-06-19 11:53:35 -07:00
24db16b601 sync: auto-sync from GURU-BEAST-ROG at 2026-06-19 11:10:55
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-19 11:10:55
2026-06-19 11:11:21 -07:00
60bfb314b8 wiki+log: cascades voice VLAN migration COMPLETE (38 devices); band-selection diagnosis; Vertical 5GHz-lock handoff (pending) 2026-06-19 10:53:51 -07:00
a5d47be143 cascades voice inventory: COMPLETE — 29/29 Poly on VOICE (Kitchen server confirmed via vlan:30; controller IP field caches) 2026-06-19 10:48:02 -07:00
b51b21ed7c cascades voice inventory: +John Trozzi rm422 (.237) on VOICE; 28/29 Poly, only Kitchen server left 2026-06-19 10:43:25 -07:00
c05cc91717 cascades voice inventory: +John Trozzi rm422 (new, on VLAN20); Kitchen server fell back to .1 — 2 left to voice-key (27/29) 2026-06-19 10:40:08 -07:00
78a7e3c869 cascades voice inventory: VLAN migration COMPLETE — 28/28 Poly on VOICE (+Kitchen server, all 6 stragglers re-keyed 2026-06-19) 2026-06-19 10:32:10 -07:00
7eb7174e91 cascades voice inventory: +Bistro phone re-keyed; 27/28 Poly, 1 straggler left (Kitchen) 2026-06-19 10:30:14 -07:00
6d8f968cd1 cascades voice inventory: +Library phone (4th floor) re-keyed; 26/28 Poly, 2 stragglers left 2026-06-19 10:26:57 -07:00
1087d6e0f2 cascades voice inventory: +Movie Theater room phone (.234, 2nd floor) re-keyed; 25/28 Poly, 3 stragglers left 2026-06-19 10:24:06 -07:00
d2fec5056a cascades voice inventory: +Recreation room phone (.233, rm 132) re-keyed; 24/28 Poly, 4 stragglers left 2026-06-19 10:20:13 -07:00
5afe99ef33 cascades voice inventory: +Zachary Nelson (.232, Accounting Asst) re-keyed to VOICE; 23/28 Poly done, 5 stragglers left 2026-06-19 10:19:10 -07:00
1a70df56ff sync: auto-sync from GURU-BEAST-ROG at 2026-06-19 09:39:56
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-19 09:39:56
2026-06-19 09:40:24 -07:00
2a7253ae85 cascades: Vertical 5GHz-lock request letter (Poly handsets band-selection fix) 2026-06-19 09:39:48 -07:00
11d4bfbf65 sync: auto-sync from GURU-5070 at 2026-06-19 09:10:40
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-19 09:10:40
2026-06-19 09:11:51 -07:00
b66843096a sync: auto-sync from GURU-5070 at 2026-06-19 08:40:35
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-19 08:40:35
2026-06-19 08:41:57 -07:00
416f2a3d91 sync: auto-sync from GURU-KALI at 2026-06-19 08:28:07
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-06-19 08:28:07
2026-06-19 08:28:10 -07:00
cd478caa04 self-check: drop /autotask from baseline commands
/autotask exists nowhere as a Claude command (no .claude/commands/autotask.md in
the repo; only a Grok skill by that name). It was a GURU-5070-specific artifact in
the provisional manifest and produced a spurious RED on every other machine. Removing
it clears the false FAIL fleet-wide.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:08:52 -07:00
dafcec5bce migrate: compliance-gated re-clone + per-machine state recovery script
Adds .claude/scripts/migrate-to-submodules.sh — self-contained, distributable by
raw URL since old clones can't pull. Detects compliance (history merge-base vs
origin, RECLONE.md+submodule offline fallback); leaves compliant clones untouched;
otherwise re-clones AND recovers the gitignored per-machine state a clone never
carries (identity.json, settings.local.json, .mcp.json, grepai, per-project
.env/.venv/.attachments), surfaces stranded unpushed commits, and FLAGS large
purged data for manual move (never re-imports it into git). Closes RECLONE.md's
"recover any uncommitted work" gap that stranded identity.json + the discord-bot venv.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 06:57:05 -07:00
a5ce67b988 wiki: compile cascades-tucson (full) — RF optimization night (2.4 power + data-driven 5GHz DFS, retry halved) 2026-06-19 05:05:15 -07:00
fb835fe756 unifi-wifi: data-driven channel selection — add survey-report, kill non-DFS bias
Codifies the scan-first/data-driven workflow proven on Cascades (where the baked-in
non-DFS bias picked the congested channels and a data-driven DFS plan halved 5GHz retry):

- NEW survey-report.py: rolls survey-collect JSON into the fleet per-channel/per-band-group
  measured busy% table + cleanest/dirtiest ranking + a suggested clean 40MHz palette. The
  decision-driver that was missing (we built it by hand).
- channel-plan.sh: na palette is now DATA-DRIVEN, not hardcoded non-DFS. Adds --channels
  (explicit palette) + --dfs ok|avoid|only; default considers ALL 40MHz primaries and lets
  measured busy% choose. Adds load-balancing + a local-search pass -> strong co-channel to 0.
- survey-collect.sh: per-AP "cleanest" report no longer pre-filters out DFS (DFS is usually
  cleanest here); marks DFS with *, points at survey-report.
- SKILL.md: documents the mandatory scan -> survey-report -> channel-plan --channels -> apply
  -> validate order + the Cascades lesson.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:00:47 -07:00
e5193b4f13 sync: auto-sync from HOWARD-HOME at 2026-06-19 04:51:32
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-19 04:51:32
2026-06-19 04:52:16 -07:00
7ff723d614 cascades 5GHz: data-driven clean-DFS channel plan APPLIED + validated (retry halved)
Did it right this time: completed the full channel survey (74/74) FIRST, let the
data choose. Survey proved DFS channels are 4-5x cleaner here (2-3% busy) than
non-DFS (149/157 = 12-28%, the property's worst). Per Howard: built the plan on
the 8 clean DFS 40MHz blocks (52/60/100/108/116/124/132/140), per-AP locally-
cleanest + neighbor graph-colored -> 0 co-channel, 3.5% avg busy. Applied to 72
non-mesh APs (width 40 too); mesh excluded; voice nudged back to 5GHz.

VALIDATED: 5GHz retry 8.7->3.8 avg (-56%), median 8.2->2.1 (-74%); 2.4 ~baseline;
satisfaction median 99; voice 31/31 (17 Poly on 5GHz, 3 coverage-cases on 2.4);
all 72 APs holding DFS, 0 radar vacates.

Kept tonight: 2b (2.4 power) + DFS plan + BSS-transition. 6GHz still WPA3-blocked.
auto_upgrade still OFF. Follow-up: recurring dfs-check radar monitor.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 04:37:19 -07:00
cc66da4f63 cascades 5GHz fix attempted (3a/3b) then ROLLED BACK; net kept = 2b only
Correction to earlier "deferred" report: after Howard pushed (5GHz needs fixing
regardless of 6GHz), I attempted width40 + non-DFS channel plan autonomously.
It did NOT validate live: 5G retry flat (8.7->8.4), 2.4 retry up (12->16) from
voice phones scattering to 2.4. ROOT CAUSE: the non-DFS channels here (149/157)
carry the heaviest EXTERNAL interference while DFS was cleaner -> forcing non-DFS
traded clean DFS for congested non-DFS. Rolled 5GHz back to baseline (channel+80MHz).
Kicked the 8 stuck Poly phones -> 6 back to 5GHz (rest are coverage-gap rooms).

End state recovered: satisfaction 98.4/med99, voice 31/31. Kept: 2b (2.4 power)
+ BSS-transition. 5GHz unchanged from start. auto_upgrade left OFF.

Doing 5GHz right needs the per-channel survey (choose channels by real cleanliness,
not non-DFS policy), reconsider non-DFS-only, 6GHz unblock (WPA3), band-steer voice.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 03:08:31 -07:00
3c85d2cfda cascades 2AM RF run: Phase 2b applied (2.4 power->medium x47); 2a/3a/3b deferred
Autonomous 2 AM window. APPLIED + verified: disabled 3AM auto-upgrade; 2.4
power Low/auto->MEDIUM on 47 radios (42 over-thinned floors 1-4 + 5 MemCare
floors 5/6), leaving 24 disabled + 5 mesh-auto untouched; CSCNet BSS-transition
on. Non-regressive (satisfaction 98.7->98.6, fleet 2.4 retry 12.0->11.7, 5G
8.7->7.4, MemCare 2.4 15.6->13.1); 30/31 voice phones online.

DEFERRED: 6GHz on CSCNet BLOCKED (Wpa3MandatoryFor6GHzBand — CSCNet is WPA2/PPSK;
needs supervised WPA3 conversion of the 427-client SSID). 3a/3b (width40 +
non-DFS channel plan, 19->0 dry-run) held for a supervised window since the
6GHz relief valve precondition failed and it's a coupled 74-AP change.

3AM auto-upgrade left OFF (re-enable when ready). Rollback source dev2.json.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 02:16:26 -07:00
c7239e1c08 cascades: MemCare RF baseline + 5GHz channel solve + change-window analysis
Read-only Phase 0 baseline extended to floors 5/6 (MemCare). Findings:
- MemCare = same 3 diseases as 1-4 but untreated (2.4 at full power, not
  over-thinned; all 5GHz on DFS+80MHz; min-RSSI off everywhere; 6GHz dark;
  Shelby .218 stuck on 2.4 at Nurse Station).
- 5GHz static non-DFS channel-plan dry-run: co-channel pairs 19 -> 0 (kills
  auto on all non-mesh APs; relieves AP 103/505 as fall-out).
- 2.4 1/6/11 re-color NEGATIVE right now (22 -> 28); defer until 2b restores
  a stable Medium-power radio set.
- 7-day hour-of-day traffic: ~600 clients 24/7 (only ~10% swing); trough
  01:00-04:00 MST. Change window decided: 2 AM start.

No changes applied. Survey stalled 68/74 (re-run before any 5GHz channel apply).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:31:19 -07:00
a0e83036c5 wiki: full recompile cascades-tucson (fold in recovered voice/RF/QoS docs)
--full recompile. Folds the 4 repo-rewrite-recovered docs into the article
(master plan, voice QoS design, voice-quality diagnostic, RF/voice session log)
while preserving all existing depth. Key corrections/additions:

- Voice VLAN 30 cutover now COMPLETE: 8 AudioCodes (.224-.231) added; prior
  compile had them 0/8 pending. AudioCodes needed a physical power-cycle
  (externally powered/PoE off; controller bounce is a no-op).
- Poly fleet is 28 not 22 (6 stragglers still off VOICE).
- Voice quality is an RF problem on the Poly WiFi phones, not the VLAN move
  (per-phone diagnostic; Lauren .202 50% retry -> locked to AP 103; AP 103
  5GHz saturated; coverage gaps rooms 515/210/204).
- 6 GHz dark root-caused (CSCNet not broadcasting 6g).
- Measured WAN1 upload ~522 Mbps -> voice QoS is insurance, RF is the fix.
- New Patterns: Voice QoS design, Network Optimization Master Plan,
  Decisions-2026-06-18 (non-DFS only; no dedicated voice SSID).
- Active Work / History / HIPAA reconciled to the complete cutover.

Live Syncro unchanged (55.75 hrs, 0 tickets, 29 assets). Synthesis was
deliberate surgical enrichment (diff-reviewed), not a blind regenerate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 21:33:13 -07:00
dece45f470 sync: auto-sync from GURU-5070 at 2026-06-18 21:14:17
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-18 21:14:17
2026-06-18 21:15:35 -07:00
6d852432d0 sync: auto-sync from GURU-KALI at 2026-06-18 20:38:36
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-06-18 20:38:36
2026-06-18 20:38:39 -07:00
0a8d4b8334 wiki: refresh cascades-tucson (track 4 recovered network/voice docs)
Refresh-mode update. Live Syncro values unchanged (55.75 prepaid hrs, 0 open
tickets as of 2026-06-18). Added the 4 docs recovered in c2e5f4f to sources:
RF/voice optimization session log, network-optimization master plan, phase-1
voice QoS design, and the 2026-06-18 voice-quality diagnostic.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 20:23:23 -07:00
c2e5f4faeb cascades: recover 4 docs dropped by the history-rewrite/repo-split
The 2026-06-18 repo restructure (history rewrite + project->submodule split)
dropped these 4 Cascades files from the new clone. Copied byte-identical from
the pre-cutover claudetools.old clone (md5-verified):
- docs/network/network-optimization-master-plan.md
- docs/network/phase1-voice-qos-design.md
- reports/2026-06-18-voice-quality-diagnostic.md
- session-logs/2026-06/2026-06-18-howard-cascades-rf-voice-optimization-plan.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 20:21:27 -07:00
b66b80a95b repo split: add RECLONE.md (history rewritten; projects -> submodules; data -> Gitea-Storage) 2026-06-18 19:42:15 -07:00
4fcd3088af repo split: move projects to their own repos as submodules; bulk data purged to Gitea-Storage (Jupiter) 2026-06-18 19:02:53 -07:00
d5bfe76780 Merge remote-tracking branch 'origin/ad2' 2026-06-18 18:59:31 -07:00
da3fce0c47 sync: auto-sync from GURU-5070 at 2026-06-18 17:06:16
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-18 17:06:16
2026-06-18 17:48:02 -07:00
1c9f2d101d dataforth/testdatadb UI: clear, persistent push feedback (toasts)
The push handlers set the button to 'skipped' then immediately ran search(), which
re-rendered the inspector and wiped the text — so a skipped publish flashed and
vanished (looked like nothing happened). Replace with persistent toasts that state the
outcome explicitly: Published / already up-to-date / Push failed / and for a skip,
'<model> isn't renderable yet, so nothing was sent.' Only refresh the row on an actual
publish so the message isn't clobbered. Same for the multi-select Re-push summary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 17:48:02 -07:00
0d22704f65 dataforth/testdatadb UI: collapse inspector until a record is selected
Results pane now fills the full width on load (the empty ~500px inspector no longer
reserves space). Inspector column expands when a record opens; Esc closes it back to
full-width results. Same behavior at the 1180px breakpoint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 17:48:02 -07:00
8783b7ebd8 sync: auto-sync from GURU-BEAST-ROG at 2026-06-18 17:17:13
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-18 17:17:13
2026-06-18 17:17:52 -07:00
783c5f653a fix(wiki-compile): release coord lock by ID, not resource path
coord.py 'lock release' takes the lock ID; the documented path form no-ops
and strands the lock until TTL. Capture the lock ID at claim (5.0), release
it in Phase 6. Recurring friction (errorlog 2x).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 15:31:38 -07:00
248eb2c049 sync: auto-sync from HOWARD-HOME at 2026-06-18 15:31:12
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-18 15:31:12
2026-06-18 15:31:20 -07:00
fec5686cd2 wiki: compile cascades-tucson (full) — network-logging plan + voice migration sources
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 15:28:47 -07:00
436d81ab54 sync: auto-sync from HOWARD-HOME at 2026-06-18 15:22:15
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-18 15:22:15
2026-06-18 15:22:30 -07:00
d227239313 sync: auto-sync from GURU-5070 at 2026-06-18 14:35:22
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-18 14:35:22
2026-06-18 14:35:38 -07:00
260be8c2ad security.azcomputerguru.com: scaffold the client security-assessment intake app
New MSP tool — single-assessor consult intake. Stack: PHP + MySQL on the IX cPanel
host, gated by Cloudflare Access (only mike@azcomputerguru.com; app re-checks the
Cf-Access-Authenticated-User-Email header).

- app/questions.json — risk-ordered question framework (9 sections); each field tagged
  source=syncro/rmm/scan/ask so the consult asks only what a human knows and the
  post-meeting scan fills the technical reality.
- app/index.php — wizard UI: Syncro phone lookup -> prefill, section rail with live
  progress, importance-colored question cards, in-meeting 365/Google consent links,
  review + export.
- app/api.php — Syncro lookup-by-phone, save/load/list, consent-URL generation (reuses
  the read-only Security Investigator app bfbc12a4-...), HTML export.
- app/schema.sql, config.sample.php, DEPLOY.md, README.md.

Consent links let the client approve read-only 365/Google access during the consult so
the audit scan runs afterward. Read-only by design (reads Syncro, generates consent; no
tenant writes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 14:20:05 -07:00
9c4181aea5 sync: auto-sync from AD2 at 2026-06-18 14:07:45
Author: Mike Swanson
Machine: AD2
Timestamp: 2026-06-18 14:07:45
2026-06-18 14:08:42 -07:00
ebd719e848 dataforth(datasheet): publish DSCA33/45 gap — 1,452 new certs created, 0 overwrites
Probed each of the 1,578 unuploaded PASS serials across the 54 validated DSCA33/45
models against the Hoffman API (stale inventory -> can't trust api_uploaded_at as
"absent"). 1,452 were absent (404), 126 already live. Pushed ONLY the absent set:
created=1452 updated=0 unchanged=0 errors=0 — zero overwrites of pristine originals,
the handoff's hard requirement.

Tools: publish-dsca3345-gap.js (absent-only Created publish), validate-dsca3345.js.
Net: DSCA33/45 effort complete — 54/56 models live + validated; 2 rounding-boundary
holdouts and 2 no-original models (24 units) remain null.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:59:33 -07:00