From f2f0fe0f7033e84f80a9908c31cd46dcb85c4dd8 Mon Sep 17 00:00:00 2001 From: Howard Enos Date: Mon, 13 Jul 2026 11:11:54 -0700 Subject: [PATCH] sync: auto-sync from HOWARD-HOME at 2026-07-13 11:11:22 Author: Howard Enos Machine: HOWARD-HOME Timestamp: 2026-07-13 11:11:22 --- .claude/memory/MEMORY.md | 1 + .claude/memory/project_vwp_rose_qb_updater.md | 16 ++++++++++++++ .claude/standards/syncro/test-findings.md | 10 +++++++++ errorlog.md | 22 +++++++++++++++++++ ...-howard-billing-reconcile-june26-july10.md | 6 +++++ 5 files changed, 55 insertions(+) create mode 100644 .claude/memory/project_vwp_rose_qb_updater.md diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 2dee6462..c432a3d1 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -152,6 +152,7 @@ - [GURU-BEAST-ROG Setup Status](machine_windows_guru_setup_status.md) — Windows workstation fully configured except SSH key deployment to servers. ## Project +- [VWP-ROSE QB updater crash-loop](project_vwp_rose_qb_updater.md) — qbupdate/FCS heap-corruption crash loop on VWP-ROSE (QB Desktop 2024); update skippable, Rose working; resume fix 2026-07-13 4pm; Syncro ticket 113779446; login in vault clients/vwp/vwp-rose-workstation. - [GuruRMM software-removal PR #58](project_gururmm_software_removal_pr58.md) — SPEC-030 hardening (driver exclusion in removal UI, lingering-uninstaller sweep, job list + stale reaper) on PR #58, UNMERGED; merge = beta deploy; live testing planned 2026-07-06 on DESKTOP-MS42HNC. - [Cascades network + CS-SERVER SMB instability](project_cascades_network_segments.md) — NAS->CS-SERVER migration. NOT a CSC-ENT-vs-CSCNet issue (corrected): fresh SMB to `\\cs-server\*` fails err 67 from BOTH Wi-Fis; only persistent admin-mapped drives work, intermittently → CS-SERVER-side SMB instability (multichannel advertises .248/.254/IPv6 ULAs; Get-SmbServerConfiguration errors). Blockers: CSCNet=WPA3 (old adapters can't join); workstations store domain-admin cred. Repoint tool [[drive-map]]. - [CyndyOffice physical HP lockups](cyndyoffice-physical-hp-lockups.md) — RMM "Howard-VM" site agent CyndyOffice is a PHYSICAL HP Pavilion TP01 (not a VM); ~20 hard freezes/6wk = Kernel-Power 41 bugcheck-0, no dump/WHEA = hardware (RAM/PSU/BIOS), SSD healthy. UUID re-enrolls. diff --git a/.claude/memory/project_vwp_rose_qb_updater.md b/.claude/memory/project_vwp_rose_qb_updater.md new file mode 100644 index 00000000..a8f785b8 --- /dev/null +++ b/.claude/memory/project_vwp_rose_qb_updater.md @@ -0,0 +1,16 @@ +--- +name: project-vwp-rose-qb-updater +description: VWP-ROSE QuickBooks updater crash-loop - repair deferred to 2026-07-13 4pm, Syncro ticket 113779446 +metadata: + type: project +--- + +QuickBooks Desktop 2024 (v34.0.4020) updater on **VWP-ROSE** (Valley Wide Plastering, GuruRMM agent, online) is in a crash loop: `Intuit.QuickBooks.FCS.exe` and `qbupdate.exe` crash with heap corruption (0xc0000374 in ntdll), `qbpatch2.exe` hangs (Event 1002). Pattern survives reboot -> corrupted update cache / damaged FCS on disk. `QBFCService` service is Stopped. + +Status 2026-07-13 ~11am: Mike ran the basic Tool Hub repair (didn't fix it), found the update can be SKIPPED so Rose can work. **Plan: resume remediation 2026-07-13 at 4:00pm** when Rose is done for the day. + +Remaining fix path (in order): clear `C:\ProgramData\Intuit\QuickBooks 2024\Components\DownloadQB34\` + re-run update with "Reset Update"; if still crashing -> QuickBooks Install Diagnostic Tool + Repair from Programs and Features; fallback -> manually download+install the latest QB 2024 release patch from Intuit. + +- Syncro ticket: https://computerguru.syncromsp.com/tickets/113779446 +- Rose's Windows login: vault `clients/vwp/vwp-rose-workstation` +- Side findings on the box (separate issues): NETLOGON 5719 / DNS registration failures at boot (VWP DC unreachable), Syncro agent services crashed twice morning of 7/13. diff --git a/.claude/standards/syncro/test-findings.md b/.claude/standards/syncro/test-findings.md index 0753f3d5..ae12969f 100644 --- a/.claude/standards/syncro/test-findings.md +++ b/.claude/standards/syncro/test-findings.md @@ -150,3 +150,13 @@ confirm true state before any follow-up action. POST/GET customer; POST contact; POST ticket (+ number); POST ticket comment (hidden); POST add_line_item; POST invoice (from ticket); POST estimate + line_items + PUT recalc; POST appointment; POST schedule (paused). All parse under the shapes documented in `syncro.md`. + +## 2026-07-13 — Invoice line population is ASYNCHRONOUS after POST /invoices +`POST /invoices` returns immediately, but the invoice's `line_items` are populated from the +ticket's unbilled charges in the background. A `GET /invoices/{id}` fired in the same second +can return a PARTIAL line set (observed: 10 of 17 lines / 18.0h of 28.0h on ACG-internal +#32546, invoice 68040; a re-GET moments later showed all 17 / 28.0h). Verified the ticket held +all 17 lines throughout. Rule: if the post-invoice verification shows fewer lines than the +ticket, WAIT and re-GET before concluding lines were dropped — do NOT create a second invoice +(it would double-bill the late-arriving lines). Large line counts (17) make the window visible; +the usual 1-2 line invoices never showed it. diff --git a/errorlog.md b/errorlog.md index c0cdaa42..f12594db 100644 --- a/errorlog.md +++ b/errorlog.md @@ -19,6 +19,28 @@ Categories (the `[type]` tag): _(none)_ = skill/command execution failure · +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/farwestdrilling: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/fw.91912.service: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/farwestwell: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/farwest.91912.service: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/farwest: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | syncro | GET /invoices/{id} immediately after POST /invoices returned partial line_items (10/17, 18/28h) - Syncro populates invoice lines from ticket charges asynchronously; re-GET seconds later showed all 17. Do not create a second invoice on a partial first read [ctx: ticket=32546 invoice=68040] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/rwd.91912.service: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/reliantwell: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/reliantpump: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/reliant.91912.service: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + +2026-07-13 | Howard-Home | packetdial | HTTP 404 GET https://pbx.packetdial.com/ns-api/v2/domains/reliant: {"code":404,"message":"Not Found"} [ctx: cmd=domain] + 2026-07-10 | Howard-Home | syncro/email | [correction] assumed HTTP 200 {message:Email sent} meant the invoice/estimate actually reached the customer; correct is Syncro returns 200 even when customer.email is null (no recipient) - must verify a valid, UNIQUE customer.email before claiming delivery [ctx: customer=36118743 endpoints=POST_/invoices/{id}/email,/estimates/{id}/email] 2026-07-10 | Howard-Home | syncro/assets | [correction] assumed asset writes (POST/PUT create-update), policy_folder_id move, patches, and installed_applications were not doable via the public API; correct is the endpoints exist per the live OpenAPI spec and the prior 'policy_folder_id silently ignored' was a token missing the 'Assets - Policy Change' scope, not an API limitation [ctx: ref=reference-syncro-rmm-api-gui-only endpoint=PUT_/customer_assets/{id}] diff --git a/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md b/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md index a0ca5081..559cdeb0 100644 --- a/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md +++ b/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md @@ -75,3 +75,9 @@ Everything else was explicitly decided no-bill by Howard: Scileppi 7/2 Cox WAN R - **Explicit no-bill decisions (Howard, 7/13):** Scileppi 7/2 + 7/6; Dataforth MYDATA (Mike's #32501); Goldstein OpenVPN; Four Paws cleanup; IMC 6/28 + 7/8; Grabb & Durando 7/4 schedule fix. - Prior reconciliation reference: `session-logs/2026-06/2026-06-26-howard-june-billing-reconciliation.md` (covered 6/13–6/26). - Cascades line-item detail: `clients/cascades-tucson/docs/billing-log.md` (2026-07-13 entry). + +## Update: 11:05 PT — ACG internal billing 6/27–7/13 + +Entered the internal-labor fortnight ticket following the #32480 precedent: **#32546** (id 113781668) "Howard - Internal work 6-27-26 to 7-13-26" on ACG internal (15353550), **17 lines x Labor - Internal Labor (9269124, Exempt Labor, $0) = 28.0h**, invoice **#68040 $0.00**, ticket Invoiced, bot alert posted. Line coverage: radio show (2 sessions, per Howard — not 3), Syncro category fix, GPS coverage-audit marathon (5.0h), MSP360 alert RCA, GuruRMM release train (easy-bugs batches + WS-looper, v0.3.95→0.3.102 + agents 0.6.78/79), backup-verification + msp360 skills, tailscale/ScreenConnect/ask-forum skills, Feature-6 + Stream-C specs, GPS fleet ops + billing reconcile, GuruScan RKill whitelist, Syncro skill expansion, and this billing session itself. + +**API quirk discovered (logged to errorlog + test-findings):** `GET /invoices/{id}` immediately after `POST /invoices` returned a PARTIAL line set (10/17 lines, 18.0h) — Syncro populates invoice lines from ticket charges asynchronously. Re-GET showed all 17/28.0h. Rule recorded: wait + re-GET on a short read; never create a second invoice off a partial first read.