Commit Graph

579 Commits

Author SHA1 Message Date
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
ad1e32fdb0 sync: auto-sync from GURU-5070 at 2026-06-18 12:57:51
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-18 12:57:51
2026-06-18 12:58:07 -07:00
9d2d233f1e dataforth/testdatadb: 8B/5B/SCM render verify results + convergence plan
Stage+verify (template-gated, no slotmaps/precision yet) vs Hoffman, content-only:
15 models content-perfect, 17 precision-distance, 70 NULL (need slotmaps), 8B38/7B
family-specific. Remaining work = AD2's existing DSCA machinery (slotmaps / Math.fround
QB rounding / frequency-AAC accuracy labels). Recommend converging with AD2's DSCA path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:50:44 -07:00
3aafc1e755 dataforth/testdatadb: mine 8B/5B/SCM Final-Test templates from Hoffman (136 models)
Root cause of the ~5,148 unpublished 8B/5B/SCM PASS records (driving the fix):
(1) parseRawData wrongly consumes a PASS/FAIL line as the step-response line for
    non-DSCA families that omit the "0","0",v line (8B45/8B49/5B39/SCM5B33...) ->
    drops the first Final-Test group -> measurement-count mismatch -> null render.
(2) Even parsed, the renderer has ONE hardcoded DATA_LINES['8B'] (RTD-shaped), so
    models like 8B45 (frequency input, == DSCA45 structurally) get wrong param
    names/specs. Same class as DSCA -> needs per-model templates.

Mined per-model templates from the Hoffman originals (published siblings) for all
136 mineable models via tools/mine-hoffman-dsca.py (family-agnostic extractor):
8b5bscm-templates.json = {accOut, accHeader, rows[name,spec], _srcSerial}.
Input-type split: 72 voltage / 18 temp / 12 current (accuracy already handled) +
10 frequency (8B45/5B45 — same unsolved freq-accuracy as DSCA45) + 24 7B/other.
Only 3 niche models (17 units) have no Hoffman original.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:50:44 -07:00
84c7579a3d dataforth/testdatadb: wire UI presets + publish buttons; add /api/search sort/dir
Backend (deployed live on AD2, service restarted, + repo copy resynced — it was
far behind the deployed server):
- /api/search: add whitelisted sort/dir (NULLS LAST) so sortable headers and the
  "Latest uploads" preset work. web_status filter and POST /api/upload already
  existed on the server; the stale repo copy now matches live.

Frontend (redesign prototype):
- "Latest uploads" preset (web_status=on + sort=api_uploaded_at desc) and
  "Not yet published" (web_status=off) are now active presets.
- Push to Web (inspector) + Re-push (multi-select) wired to POST /api/upload
  behind a confirm() gate; refresh WEB status after. Validated idempotently on a
  published record (unchanged:1, errors:0).
- "Retested units" stays disabled — needs a retest flag in the pipeline (next).

tools/preview-proxy.py: forward POST so the publish buttons work in same-origin preview.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:50:44 -07:00
c2335e859d dataforth/testdatadb UI: fix cert fit (transform-scale) + publish-state chips
- fitCert: replace the flaky CSS `zoom` (Firefox support is recent/inconsistent)
  with transform:scale() measured against the widest line (+ right margin and
  font-load retries) so the cert always scales to fit the inspector with no
  horizontal clip. Validated live on a narrow 5B cert (0.74x) and a wide DSCA45
  cert (0.55x) against the real AD2 dataset.
- inspector Web field -> Published (green) / Not published (amber) chips.
- widen default inspector 480 -> 500px.
- tools/preview-proxy.py: serve the prototype AND reverse-proxy /api to the live
  AD2 server so the cert iframe is same-origin during preview — styleCert/fitCert
  read iframe.contentDocument, which silently no-ops when the iframe is loaded
  cross-origin straight from AD2 (why the fit looked broken in earlier previews).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:50:44 -07:00
c5643ee419 dataforth/dsca33-45: recover lost specs from Hoffman API (56/58 models)
The DSCA33/DSCA45 main spec files lost in the cryptolocker wipe are recoverable:
the original software published correct certs to the Hoffman product API before
the wipe and our null-skipping renderer never overwrote them. Mine per-model
Final-Test templates (names + specs + verbatim accuracy headers) straight from
those originals instead of requesting spec files from Dataforth/John.

- dsca33-45-templates.json: 56 models (DSCA33 34/35, DSCA45 22/23); only
  DSCA33-1948 + DSCA45-1746 (24 units) lack an original.
- mine-hoffman-dsca.py: the re-runnable miner.
- DSCA33-45-HOFFMAN-RECOVERY handoff for the AD2 session (incl. the gate:
  validate each render vs its Hoffman original before enabling live rendering).
- memories: Hoffman recovery (supersedes the spec-gap "need John" note) and the
  AD2 SSH MTU-blackhole root cause/fix; errorlog entries (syncro jq, ssh correction).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:50:43 -07:00
41b6fcdacb dataforth/testdatadb UI v2: paper-framed fit-to-width cert, lazy cert load, stats dropdown, refined states/typography/focus, omni s:/m:/t: + encoded-serial routing, recent-search history, multi-select + copy serials, sortable headers + date chips, responsive collapse
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 07:11:45 -07:00
d162dc7726 dataforth/testdatadb UI: resizable inspector + fit-to-width cert + quick-search presets; drop redundant PASS/FAIL selector
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 07:05:34 -07:00
55407e8601 dataforth/testdatadb: multi-AI UI redesign — clickable single-file prototype
Vanilla single-file (no build/CDN) command-center redesign of the testdatadb search
UI: omni-search with serial/model/text routing + auto-select fast path, dense
monospace results table with PASS/FAIL pills + web-published indicator, persistent
split-pane datasheet inspector (iframe to /api/datasheet), left filter rail
(result/date/model/station/log), server pagination, CSV export, URL state, keyboard
nav (/ ↑↓ ↵ Esc), clinical light theme. Hits the existing API; deployed to AD2 as
public/index.redesign.html (preview at :3000/index.redesign.html). Synthesized from
Grok + Gemini concepts (both converged on this command-center design).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 06:36:20 -07:00
67de39a9d0 dataforth: handoff doc for AD2 session — Fix 2 (DSCA rebuild) STAGE 2-3 + Fix 5 + cleanup
Remote SSH/VPN to AD2 keeps flapping; hand the remaining datasheet fixes to the
local AD2 session. Includes the per-subtype approach (DSCA_TEMPLATES from staged
originals — STAGE 1 done, dsca-templates.json on AD2 = 126 models), the render-wiring
+ per-subtype byte-validation gate, Fix 5 (379 backfill via legacy_cert_text), the
discipline (backup/save-state/validate-before-publish), and the derive-dsca-templates
tool. Ref ticket #32441.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 05:59:05 -07:00
7ad6202e6e sync: auto-sync from GURU-5070 at 2026-06-17 17:34:25
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-17 17:34:25
2026-06-17 17:34:41 -07:00
28442a6696 dataforth: hardened fix spec for test-datasheet defects (multi-AI reviewed)
Consolidates AD2's diagnosis + independent Grok/Gemini review into an
implementation spec for the 5 fixes (RTD label, DSCA Final-Test rebuild, retest
supersede rule, encoded-serial importer decode, 379 backfill) with per-fix
validation gates and a cross-cutting re-publication discipline. Drives the
AD2-side implementation. Ref ticket #32441.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 16:18:44 -07:00
ee707c674b acg-website: Phase 3B - radio show promotion, funnel, enhanced CTAs, layout density
Radio Show Promotion:
- Add LIVE badge to header phone with subtle pulse animation
- Add radio promo bar under hero (show name, time, call-in number)
- Radio ticker at bottom remains from Phase 3A

3-Step Visual Funnel:
- New funnel-steps section after Trust
- Progression: 1. Build estimate → 2. Talk it through → 3. Month-to-month start
- Interactive number badges with hover lift + color fill
- Mobile responsive (stacks vertically on small screens)

Strengthen Calculator CTAs:
- Pricing teaser: Make 'Build your exact price' primary button (was more-link)
- All 6 service cards: Add inline 'See what this costs →' calculator links
- Guides prospect directly to calculator from any service mention

Increase Vertical Rhythm:
- Section padding: clamp(2.75rem, 5.5vw, 4.25rem) for breathing room
- Service list: +1.5x base margin-bottom after dense grid
- Dispatch grid: +1.5x base margin-bottom after blog cards

All changes deployed to ww9.azcomputerguru.com and verified live.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-17 07:15:41 -07:00
73cd978500 acg-website: Phase 3A enhancements - premium polish + dark mode fix
- Add timing system: --t-fast/med/slow + cubic-bezier easing vars
- Enhanced button/card hover: subtle lift + box-shadow + filter
- Nav link underline wipe effect with accent color
- Form input focus: accent border + 25% opacity outline
- Micro-interactions: stepper scale, switch snap, FAQ rotation
- Reveal animations: opacity + translateY with 55ms stagger
- Radio promo bar CSS + pauseable ticker on hover
- Dispatch board: 1px grid + left accent rule + tighter cards
- CRITICAL FIX: orphaned CSS selector causing dark mode white boxes

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-17 07:04:11 -07:00
ebcf1b98d5 acg-website-showcase: curate brand kit to forward-relevant assets
Per Mike: don't keep the full archive tracked. Trimmed the brand kit from 34M -> 14M,
keeping only forward-relevant assets: the StyleGuide PDF, current logos
(transwhite/flatwhite) + vector master (guru-vector.eps, moved out of Old/), Guru
Icons, the Lato family (+ OFL + README), Colors reference, social avatar, and the
2025 letterhead (png + docx). Removed legacy Old/ marks, business cards, raster
flat-icon sheets, the superseded 2021 letterhead, and generic stock images.
(Original archive remains recoverable from git history.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 06:19:01 -07:00
7d84857cc5 sync: auto-sync from Mikes-MacBook-Air.local at 2026-06-17 06:18:23
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-06-17 06:18:23
2026-06-17 06:18:26 -07:00
83efd4d909 acg-website-showcase: add ACG master brand kit
Imported the canonical "Branding Stuff" archive (2026-06-15) into the website
project at projects/acg-website-showcase/brand-kit/: logos (transwhite/flatwhite/
vector EPS), full Lato font family (+ SIL OFL license), Guru Icons (16-512px),
brand Colors reference, social avatar, letterhead (2021/2025), business cards,
flat icon sheets, and stock images. 64 files. Added a README documenting contents
+ licensing (Lato = OFL; verify stock-image licenses before public reuse).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 06:15:01 -07:00
feb222178c acg-website: update skin switcher labels (remove Paper references)
Updated aria-label and title attributes on skin toggle button to reflect
current 3-skin configuration: Bold / Midnight / Verdigris

Deployed to ww9.azcomputerguru.com

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-16 20:34:41 -07:00
6d3735bc0e acg-website: remove ledger background ruling pattern
Removed repeating-linear-gradient background-image that creates horizontal
ledger lines. Bold design has no ledger rulings - clean backgrounds only.

Deployed to ww9.azcomputerguru.com

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-16 20:33:43 -07:00
c9406d8cd9 acg-website: remove Paper/Ledger skin, set Bold as default
- CSS: Bold tokens now at :root (bone/near-black palette, signal orange)
- JS: skin switcher cycles Bold/Midnight/Verdigris (default: bold)
- HTML: all 7 pages default to bold skin
- Docs: README + DESIGN.md rewritten for Bold design language
- Deployment: live at ww9.azcomputerguru.com (IX hosting, grey-cloud DNS)

Paper/Sonoran Ledger skin dropped per user direction. Single-page ledger
version in root retained as archived reference pattern.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-16 20:30:10 -07:00
0fcc270c02 sync: auto-sync from GURU-5070 at 2026-06-16 18:13:39
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-16 18:13:39
2026-06-16 18:13:57 -07:00
7084141b94 sync: auto-sync from GURU-5070 at 2026-06-15 09:41:53
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-15 09:41:53
2026-06-15 09:42:17 -07:00
269d687268 sync: auto-sync from GURU-5070 at 2026-06-15 06:07:00
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-15 06:07:00
2026-06-15 06:07:20 -07:00
2f312af41e sync: auto-sync from GURU-5070 at 2026-06-14 20:04:14
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-14 20:04:14
2026-06-14 20:05:02 -07:00
e8d44304cf submodule: advance guru-rmm -> f38da05 (RMM_THOUGHTS Feature 5: server-side public-IP capture)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 06:23:28 -07:00
24b0c4ce9a submodule: advance guru-rmm -> SPEC-029 legacy fleet RMM (multi-AI validated)
Win7 32-bit agent already ships (Rust 1.77 legacy); proxy redundant w/ userspace TLS;
2003 -> relay/jump-host; NSIS not MSI. Gemini + Grok converged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 17:44:21 -07:00
b01e872a2d submodule: advance guru-rmm -> 8d5bb9d (Feature 4a connectivity-signal refinement)
Alert-on-state design note from the 2026-06-12 log-analysis reconciliation:
severity reclassify for benign WS resets + device-class/business-hours offline
budgets + flapping/mass-drop trends. Folds into Feature 1 + Feature 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 09:17:04 -07:00
31c94a6a91 submodule: advance guru-rmm -> 2fc6ab4 (file 2 log-analysis bugs in RMM_THOUGHTS)
Inventory NUL/jsonb reject (7 Windows agents) + update scanner dropping
non-Windows binaries (macOS/Linux agents never offered updates). Both
ROOT-CAUSED from the 2026-06-12 fleet log-analysis reconciliation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 08:18:55 -07:00
dcdd9c3ec8 wiki/memory: retire GuruRMM 'VM' framing + correct Windows build chain
Two sweeps:
1. .30 is a PHYSICAL box (Lenovo ThinkCentre M83, Ubuntu 26.04), not a Jupiter
   VM — the VM was decommissioned 2026-06-12. Fixed inventory tables and the
   gururmm-build system page (overview, index, jupiter, gururmm-build,
   POWER_FAILURE_RUNBOOK).
2. Windows build chain: Beast (GURU-BEAST-ROG, tailnet 100.101.122.4, i9-14900K)
   is PRIMARY; Pluto (172.16.3.36) is FALLBACK. Verified against build-windows.sh
   (`attempt_build beast || attempt_build pluto`). Fixed overview, index,
   projects/gururmm (build-host table + flow + host detail), systems/pluto, and
   the reference_pluto_build_server memory.

Submodule advanced: build-pipeline doc comments corrected to match.
2026-06-12 07:46:15 -07:00
6bfdae214a submodule: advance guru-rmm (runbook cleanup done); memory: old VM decommissioned + .47 dropped 2026-06-12 07:38:49 -07:00
c21c55efcb submodule: advance guru-rmm -> 37c8593 (runbook: host migration marked COMPLETE) 2026-06-12 07:32:05 -07:00
e47133a352 submodule: advance guru-rmm -> c869e4d (log analysis via Claude API, not Ollama-on-Beast) 2026-06-12 07:16:42 -07:00
6f695b2979 submodule: advance guru-rmm -> 5eca48d (session log: command_type 'cmd' mis-diagnosis + 0.6.66 fix) 2026-06-12 06:00:58 -07:00
43b9677cbd submodule: advance guru-rmm -> 33150af (session log: Beast parallel build) 2026-06-12 05:59:45 -07:00
7e10274584 submodule: advance guru-rmm -> 80df458 (fix parallel Windows build: drop cargo-fetch, isolate target dirs) 2026-06-11 21:04:29 -07:00
1444933ff9 submodule: advance guru-rmm -> b5ea567 (parallelise Windows build variants on Beast) 2026-06-11 20:50:55 -07:00
884f632d06 submodule: advance guru-rmm — Beast primary Windows build host + Pluto fallback (build-windows.sh)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 20:15:14 -07:00
55599a1681 submodule: advance guru-rmm — policies backend-drift close (offline-alerting + scope-aware sweep + vss.auto_heal)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 18:04:56 -07:00
897a5b53d0 submodule: re-point guru-rmm -> 6af5f7b (rebased deploy session log onto current main)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 16:04:43 -07:00
8a72627c0f submodule: advance guru-rmm (comms-durability Phase 1 deploy + fleet rollout session log)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 16:03:50 -07:00
3981207e15 submodule: advance guru-rmm -> 5c0d004 (installer + CLI-logging robustness fixes)
Hardens the Windows install invocation (Start-Process + exit-code check) and
cleans up agent CLI logging (file-only for one-shot commands, ANSI off on
stdout). Prompted by the Tucson RED-LION-9255 install failure (root cause was a
transient post-migration download, server cache since purged). gururmm-remote
push of 45870b1/ca1657b/dd52b20/5c0d004 still pending from .47.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:54:09 -07:00
cf55bac57d submodule: advance guru-rmm -> dd52b20 (comms-durability Phase 1 slices B+C + session log)
Agent CommandAck+dedup (45870b1), server reaper re-delivery + heartbeat re-offer
(ca1657b), session log (dd52b20). gururmm-remote push pending from .47.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:15:33 -07:00
63afd2a055 submodule: advance guru-rmm (comms-durability spec + slice A + session log) 2026-06-11 13:18:06 -07:00
848bb4b347 rmm: bump guru-rmm pointer -> 08bf323 (file WS-flakiness bug — agents heartbeat+update but interactive commands time out; needs investigation) 2026-06-11 12:36:16 -07:00
fcf583d876 submodule: advance guru-rmm to cea51d6 (Task 1 + session log + spec) 2026-06-11 12:31:06 -07:00
e0cabe0f9a submodule: advance guru-rmm to 8ff9baf (durable-agent-identity spec) 2026-06-11 12:01:57 -07:00
a647fc4948 rmm: bump guru-rmm pointer -> 4b5ed30 (chmod 644 published agent artifacts — fix post-migration download 403 / fleet self-update outage + runbook gap #4) 2026-06-11 11:13:39 -07:00
9b23ab1535 submodule: advance guru-rmm to 197b843 (migration docs + session logs) 2026-06-11 11:09:09 -07:00
1cd8ff8edf rmm: bump pointer — migration Phase 0 staged + Workstream B done 2026-06-10 20:05:03 -07:00