sync: auto-sync from HOWARD-HOME at 2026-06-01 21:11:22
Author: Howard Enos Machine: HOWARD-HOME Timestamp: 2026-06-01 21:11:22
This commit is contained in:
@@ -127,3 +127,58 @@ Re-ran the corrected pipeline: 6118 raw -> 821 unique. Investigated high "Copies
|
||||
- Scripts: .claude/tmp/treb-extract.ps1, treb-merge.ps1, treb-enhance.ps1
|
||||
- Agent: ba173f0c-19e8-488d-834c-1b6f6dfd5699 (DESKTOP-QNP3ON5)
|
||||
- Syncro #31953 (address book), customer 238740
|
||||
|
||||
---
|
||||
|
||||
## Update: 21:08 MST — contact data cleaning (names/emails/dedup) + local handoff
|
||||
|
||||
### Session Summary
|
||||
|
||||
Extended the contact recovery into a multi-pass data-cleaning effort after Howard verified the first output and found defects. Parsing notes into structured fields (treb-enhance.ps1, non-destructive) placed phones/addresses/emails but verification surfaced a malformed source: the contacts' `E-mail Address` field held junk single letters for 666/695 rows (real email scattered across Display Name / name fields / Notes), and the merge had keyed dedup on that junk. Rewrote treb-merge.ps1 around a unified identity model: per-record EMAILS (reconstructing an email split into First/Last like "jammerdavis737@gmail."+"com") and a BEST NAME (First/Last -> FullName/FileAs/Subject -> Display Name), with union-find dedup over shared email/name/derived-name signals (transitive = same person).
|
||||
|
||||
Re-extracted all 16 PSTs to capture FullName/FileAs/Subject (treb-extract.ps1 updated). Iterated the merge several times, each verification revealing another layer: handle-names (badgerbd) needed Display-Name fallback; email-as-name with no `@` in the First part needed TLD/trailing-dot rejection; truly nameless contacts now show by their clean email; email local-parts like Emily_Schroeder were derived into real names (role/no-reply addresses excluded); mangled "david."/"rystrom" recovered to "David Rystrom"; and derived-name + raw-name signals were fed back into dedup to collapse the last duplicates.
|
||||
|
||||
Howard proposed moving the data to Howard-Home for local iteration. Zipped the 15 `_work` JSONs + current FINAL into treb-contacts-data.zip (0.57 MB) on the Owner machine; Howard copied it to `C:\claudetools\.claude\tmp\treb-data\`. From there the merge/enhance ran LOCALLY via Windows PowerShell (path-swapped *-local.ps1 copies) with instant iteration and no RMM round-trips.
|
||||
|
||||
Final converged result: 6118 raw -> 674 unique contacts, 0 invalid emails, 0 same-name duplicate groups, CSV round-trips clean (674 rows / 48 cols) = import-ready. 532 first+last, 71 first-only, 71 email-only (no source name); 633 with email, 206 phone, 67 address, 272 notes (preserved verbatim throughout).
|
||||
|
||||
### Key Decisions
|
||||
|
||||
- Non-destructive enrichment (copy out of Notes, never delete) held throughout — Notes preserved on all 272.
|
||||
- Unified identity model: EMAILS + BEST NAME functions feed BOTH dedup signals and output fields, so derived names also drive merging.
|
||||
- Union-find dedup over shared signals (email / clean First+Last / spaced Display Name / email-derived name / raw mangled name) to collapse cross-copy AND cross-field duplicates while limiting false merges (name signal needs both parts).
|
||||
- Email reconstruction priority: any `@`-bearing value across the four email fields + one rebuilt from an email split into the name. Junk single-letter Address values dropped.
|
||||
- Name resolution priority: clean First+Last -> FullName/Subject/FileAs -> Display Name (incl single token) -> First.Last mangle recovery -> email-local-part derivation (role addresses excluded) -> show-by-email. Nickname variants (Dave/David) left for shared-email linking, not auto-merged.
|
||||
- Moved raw JSONs to Howard-Home for local PowerShell iteration — eliminated RMM latency for the many merge passes.
|
||||
|
||||
### Problems Encountered
|
||||
|
||||
- Malformed source email field (junk single letters); real emails elsewhere. Fixed via multi-field reconstruction + email-as-name rebuild; verified 0 invalid emails.
|
||||
- Over/under-merge churn: PowerShell single-element-array collapse ($re[0] -> [char]) fixed with @() + [string]; high copies-merged (to 39) confirmed legitimate (consistent identity), not over-merge.
|
||||
- Email-as-name with no `@` in First (e.g. "jeffrey."/"com") accepted as a name until IsRealNamePair rejected TLD-last / trailing-dot.
|
||||
- Same-person-different-key duplicates (email-only copy vs named copy) persisted until derived-name + raw-name signals were added to dedup -> 0 dup groups.
|
||||
- A blocked Remove-Item (path guard) in a local verify command; dropped the cleanup step (timestamped files make newest unambiguous).
|
||||
|
||||
### Configuration Changes (this update)
|
||||
|
||||
- treb-extract.ps1: capture FullName/FileAs/Subject (_full/_fileas/_subject).
|
||||
- treb-merge.ps1: full rewrite to unified identity model (EmailsOf, BestName, IsRealNamePair, SplitName, NameFromEmail/TitleCase, union-find Signals/Find/Union, name sanitize, notes concat, audit cols).
|
||||
- treb-enhance.ps1: unchanged logic (phones/addresses/emails from Notes, non-destructive).
|
||||
- Local working copies: .claude/tmp/treb-merge-local.ps1, treb-enhance-local.ps1 (path-swapped to C:\claudetools\.claude\tmp\treb-data).
|
||||
- Data moved local: C:\claudetools\.claude\tmp\treb-data\_work\*.json (15) + FINAL CSV.
|
||||
|
||||
### Results / Deliverable (this update)
|
||||
|
||||
- FINAL (local): C:\claudetools\.claude\tmp\treb-data\AT-Trebesch-Contacts-FINAL-20260601-210118.csv — 674 contacts, import-ready, Outlook native headers + 3 audit cols (Source PSTs / Source folders / Copies merged; Outlook ignores on import).
|
||||
- Source ZIP on Owner box: C:\Users\Owner\Desktop\Contacts\treb-contacts-data.zip.
|
||||
|
||||
### Pending / Incomplete (this update)
|
||||
|
||||
- DELIVERY: final CSV is on Howard-Home; the Outlook import target is the Owner box (DESKTOP-QNP3ON5). Need to push it back via RMM or Howard copies it over.
|
||||
- OPTIONAL: clean copy without the 3 audit columns; Syncro #31953 time/resolution note.
|
||||
- Residual (acceptable): 71 email-only contacts genuinely have no name in source (mostly businesses/role addresses), shown by email.
|
||||
|
||||
### Reference (this update)
|
||||
|
||||
- Local data + scripts: C:\claudetools\.claude\tmp\treb-data\, .claude/tmp/treb-merge.ps1 / treb-enhance.ps1 / treb-extract.ps1
|
||||
- Pipeline: extract (Outlook COM, user_session) -> merge (union-find identity) -> enhance (notes->fields) -> verify
|
||||
|
||||
132
wiki/clients/attrebesch.md
Normal file
132
wiki/clients/attrebesch.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
type: client
|
||||
name: attrebesch
|
||||
display_name: AT Trebesch
|
||||
last_compiled: 2026-06-01
|
||||
compiled_by: Howard-Home/claude-main
|
||||
sources:
|
||||
- clients/attrebesch/session-logs/2026-06-01-session.md
|
||||
backlinks:
|
||||
- projects/gururmm
|
||||
---
|
||||
|
||||
# AT Trebesch
|
||||
|
||||
Residential client in Tucson, AZ. Single workstation. Syncro customer 238740. Onboarded into GuruRMM 2026-06-01. Primary active work: PST contact consolidation (Syncro #31953).
|
||||
|
||||
---
|
||||
|
||||
## Profile
|
||||
|
||||
- **Company type:** Residential (individual)
|
||||
- **Contract type:** [unverified — check Syncro]
|
||||
- **Billing rate:** [unverified]
|
||||
- **Key contact:** treb737@earthlink.net | 520-529-4999
|
||||
- **Address:** 7280 N. Cathedral Rock, Tucson AZ
|
||||
- **Syncro customer ID:** `238740`
|
||||
- **Open tickets:** #31953 (address book / contact recovery), #32160 (assess for threats)
|
||||
|
||||
---
|
||||
|
||||
## Infrastructure
|
||||
|
||||
### Workstations
|
||||
|
||||
- **DESKTOP-QNP3ON5** — Windows, single local user `Owner`. Agent ID `ba173f0c-19e8-488d-834c-1b6f6dfd5699`. Outlook = Microsoft 365 Apps x64, 16.0.19929.20172. Free space: C: 593 GB, D: 915 GB.
|
||||
- Runs a **third-party Explorer shell replacement** — `Win32_Process explorer.exe` owner detection returns blank. Use `Win32_ComputerSystem.UserName` to detect the logged-on user (`DESKTOP-QNP3ON5\Owner`). See memory note `reference_trebesch_qnp3on5.md`.
|
||||
|
||||
### Email & Identity
|
||||
|
||||
- **Outlook / PST-based** (no M365 tenant confirmed). Client uses earthlink.net email (treb737@earthlink.net). Very large PST archive collection (~155 GB across 24 files).
|
||||
- **M365 tenant:** Not documented. Outlook is M365 Apps x64 but no tenant-side management confirmed.
|
||||
|
||||
### Network
|
||||
|
||||
- **ISP / WAN:** [unverified]
|
||||
- **Firewall:** [unverified]
|
||||
|
||||
---
|
||||
|
||||
## GuruRMM
|
||||
|
||||
- **Client name:** AT Trebesch
|
||||
- **Client ID:** `a6dbe776-c3b0-4345-8c2c-597cff8a9b4d`
|
||||
- **Site name:** Main
|
||||
- **Site ID:** `2df75e13-4268-49db-babe-489b66729f87`
|
||||
- **Site code:** `SWIFT-LION-2892`
|
||||
- **Install page:** https://rmm.azcomputerguru.com/install/SWIFT-LION-2892
|
||||
- **Agent enrollment key:** Encrypted at `clients/attrebesch/gururmm-site-main.sops.yaml` (vault; do not regenerate unless compromised)
|
||||
|
||||
### Enrolled Agents
|
||||
|
||||
| Agent | OS | Agent ID | User | Notes |
|
||||
|---|---|---|---|---|
|
||||
| DESKTOP-QNP3ON5 | Windows | `ba173f0c-19e8-488d-834c-1b6f6dfd5699` | Owner | Third-party Explorer shell; use Win32_ComputerSystem.UserName for session detection |
|
||||
|
||||
---
|
||||
|
||||
## Access
|
||||
|
||||
- **Remote:** GuruRMM agent on DESKTOP-QNP3ON5
|
||||
- **Vault path:** `clients/attrebesch/gururmm-site-main.sops.yaml` (enrollment key; round-trip verified 2026-06-01)
|
||||
- **Syncro:** https://computerguru.syncromsp.com/customers/238740
|
||||
|
||||
---
|
||||
|
||||
## Patterns & Known Issues
|
||||
|
||||
- **Third-party Explorer shell — logged-on-user detection blank.** `Win32_Process explorer.exe` .GetOwner() returns empty. Workaround: `(Get-WmiObject Win32_ComputerSystem).UserName` correctly returns `DESKTOP-QNP3ON5\Owner`. Apply this to any WMI-based session-detection scripts targeting this machine.
|
||||
- **PST email field corruption.** Source address book `E-mail Address` (Email1Address) field contained junk single-letter values for ~95% of contacts (666/695 rows). Real emails were scattered across E-mail Display Name, additional email fields, and Notes free-text. Any contact-extraction pipeline for this client must reconstruct real (@-bearing) emails from all available fields and key dedup on real-email-or-name — never on Email1Address alone.
|
||||
- **Contacts stored in Notes free-text.** Phone numbers, street addresses, and secondary emails are encoded in the Notes field rather than in structured columns. A parse+enrich pass is required to populate Outlook's standard phone/address/email columns.
|
||||
- **Heavy PST duplication.** 24 PST files total but only 16 are unique (byte-identical copies across Desktop\Outlook\backup\ and D:\E\). Deduplicate by name+size before mounting to avoid redundant AddStore work.
|
||||
- **Large unmounted PSTs take ~9s per AddStore** (Outlook reads only the store index). Two 48 GB Outlook2.pst files each took ~9s and turned out to contain real address books (793 and 725 contacts). Do not skip large archives without probing — they may hold contact data.
|
||||
- **Run COM scripts in `user_session` context.** Outlook COM requires the Owner session; SYSTEM context fails. GuruRMM command context must be `user_session` for treb-extract.ps1.
|
||||
|
||||
---
|
||||
|
||||
## Active Work
|
||||
|
||||
| Ticket | Summary | Status |
|
||||
|---|---|---|
|
||||
| #31953 | Address book / contact recovery — consolidate 24 PSTs into one Outlook-importable CSV | Delivery pending (CSV on Howard-Home; needs transfer to DESKTOP-QNP3ON5 for import) |
|
||||
| #32160 | Assess for threats — pairs with /rmm diagnose once agent reporting confirmed | Open |
|
||||
|
||||
### PST Contact Recovery (Syncro #31953)
|
||||
|
||||
**Goal:** Extract all address-book contacts from the client's 24 PSTs and consolidate into one Outlook-importable CSV.
|
||||
|
||||
**Pipeline:**
|
||||
1. `treb-extract.ps1` — Phase 1: Outlook COM in `user_session`; mounts each unique PST via AddStore, reads real address-book folders (excludes Suggested Contacts / Recipient Cache), captures raw JSON per PST. MaxMB cap skips large unmounted stores (mounted stores always read); $MaxMB=0 overrides.
|
||||
2. `treb-merge.ps1` — Phase 2: runs as SYSTEM; union-find identity model (EmailsOf + BestName functions; dedup signals: real email, clean First+Last, FullName/FileAs/Subject, email-derived name); reconstructs real emails from all four email fields + email-split-across-name-fields; keys on real-email-or-name, never on junk Email1Address.
|
||||
3. `treb-enhance.ps1` — Phase 3: non-destructive; parses phones, street addresses (high-confidence pattern), and emails from Notes into structured Outlook columns; Notes left verbatim.
|
||||
|
||||
**Final result:** 6,118 raw records → 674 unique contacts. 633 with email (all valid, 0 junk), 206 with phone, 67 with address, 272 notes preserved. 532 first+last, 71 first-only, 71 email-only (legitimately nameless in source — mostly role/business addresses). 16 unique PSTs scanned; 8 contact-bearing stores.
|
||||
|
||||
**Deliverable:** `C:\claudetools\.claude\tmp\treb-data\AT-Trebesch-Contacts-FINAL-20260601-210118.csv` (local, Howard-Home). 674 rows, 48 Outlook-native columns + 3 audit cols (Source PSTs / Source folders / Copies merged — ignored by Outlook on import).
|
||||
|
||||
**Scripts:** `.claude/tmp/treb-extract.ps1`, `treb-merge.ps1`, `treb-enhance.ps1`, `treb-merge-local.ps1`, `treb-enhance-local.ps1` (local path-swapped copies for Howard-Home iteration)
|
||||
|
||||
**Data (local):** `C:\claudetools\.claude\tmp\treb-data\` — 15 per-PST JSON files + FINAL CSV. Source ZIP on owner box: `C:\Users\Owner\Desktop\Contacts\treb-contacts-data.zip`.
|
||||
|
||||
**Pending delivery steps:**
|
||||
- Transfer final CSV from Howard-Home to DESKTOP-QNP3ON5 (RMM push or manual copy)
|
||||
- Import into Outlook and verify with client
|
||||
- Log time + resolution note on Syncro #31953
|
||||
- Optional: name-cleanup pass for handle-style names; clean up intermediate CSVs from Desktop\Contacts
|
||||
|
||||
---
|
||||
|
||||
## History Highlights
|
||||
|
||||
| Date | Event |
|
||||
|---|---|
|
||||
| 2026-06-01 | Howard: GuruRMM onboarding — client + Main site created, SWIFT-LION-2892 enrollment key vaulted. DESKTOP-QNP3ON5 confirmed enrolled and checking in. |
|
||||
| 2026-06-01 | PST inventory scan: 24 files, ~155 GB. COM probe confirmed Outlook COM works in Owner session; 794/374/366 contacts in three live stores; archive1.pst contact-empty. |
|
||||
| 2026-06-01 ~20:16 MST | Extraction executed (Owner session via RMM): safe set first (771 unique), then all-PSTs (826 unique — giants held real address books). |
|
||||
| 2026-06-01 ~21:08 MST | Multi-pass data cleaning: email field corruption found and fixed, union-find dedup rewrite, enrichment pass (Notes → structured fields), data moved to Howard-Home for local iteration. Final: 6118 raw → 674 unique contacts, 0 invalid emails, 0 duplicate groups. CSV verified import-ready. |
|
||||
|
||||
---
|
||||
|
||||
## Backlinks
|
||||
|
||||
- [[projects/gururmm]] — DESKTOP-QNP3ON5 enrolled (site: Main / SWIFT-LION-2892)
|
||||
@@ -45,6 +45,7 @@ Run `/wiki-lint` to check for stale entries and broken backlinks.
|
||||
| [Anaise](clients/anaise.md) | Single workstation client; contact David (anaisedavid.office@gmail.com); DESKTOP-O8GF4SD; creds in vault at clients/anaise/desktop-o8gf4sd.sops.yaml; onboarding incomplete; M365 enrollment unconfirmed | 2026-05-24 |
|
||||
| [ACG Website (azcomputerguru.com)](clients/azcomputerguru.com.md) | Public website redesign (Astro); score 33/40; placeholder testimonials + no-backend form are pre-launch blockers; OKLCH token design system; see internal-infrastructure.md for ACG servers | 2026-05-24 |
|
||||
| [Quantum WMS](clients/quantumwms.md) | WMS company; quantumwms.com tenant (ddf3d2c9); GoDaddy decoupling + M365 migration; 2x Business Premium + Exchange Online Plan 1; deadline 2026-06-03; Tenant Admin consented 2026-05-26 | 2026-05-26 |
|
||||
| [AT Trebesch](clients/attrebesch.md) | Residential, Tucson AZ; Syncro 238740; GuruRMM enrolled (DESKTOP-QNP3ON5, SWIFT-LION-2892); PST contact recovery complete (674 unique contacts from 24 PSTs, ~155 GB); delivery pending | 2026-06-01 |
|
||||
|
||||
## Projects
|
||||
|
||||
|
||||
Reference in New Issue
Block a user