Commit Graph

1870 Commits

Author SHA1 Message Date
f16a1a7084 sync: auto-sync from GURU-5070 at 2026-06-22 08:23:12
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-22 08:23:12
2026-06-22 08:24:06 -07:00
4a8559fa73 sync: auto-sync from HOWARD-HOME at 2026-06-22 08:20:28
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-22 08:20:28
2026-06-22 08:23:10 -07:00
27cafabb22 sync: auto-sync from GURU-5070 at 2026-06-22 08:05:07
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-22 08:05:07
2026-06-22 08:05:52 -07:00
1062a5ed44 packetdial: finish resource wrapping (reads + gated writes across the platform)
Added read wrappers: addresses (E911), smsnumbers, blocked-numbers, moh, dialrules,
recording, transcriptions. Added gated write wrappers: DID update/delete, per-user device
CRUD, E911 address CRUD, contact CRUD, site create/update, auto-attendant create, SMS
number CRUD, block/unblock numbers, MoH TTS create/delete.

Verification: contact create→delete lifecycle verified on arizonacomputerguru (id field is
`unique-id`); reads for addresses/blocked-numbers/moh verified. Remaining writes are plumbed
per the OpenAPI spec [P] but not lifecycle-verified (test domain lacks the feature or needs a
special body) — SKILL.md marks each [V]/[P] and documents the gotchas (E911 pidflo via
addresses/validate; SMS not provisioned on test domain; number-filters add 202'd but didn't
persist; MoH file upload is multipart -> raw). Capability map + api.md history updated.
All writes --confirm-gated; anything unwrapped still reachable via `raw`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 08:05:06 -07:00
fec8b364d6 sync: auto-sync from GURU-5070 at 2026-06-22 07:44:31
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-22 07:44:31
2026-06-22 07:45:19 -07:00
f42f9c2419 packetdial: add gated call-queue + time-frame edit wrappers (live-verified)
Added write wrappers, each tested create→update→delete on the arizonacomputerguru test
domain (sanctioned, non-production):
- call queues: create-callqueue, update-callqueue, delete-callqueue + add-agent /
  update-agent / remove-agent
- time frames: create-timeframe, update-timeframe, delete-timeframe (body-discriminated —
  same path, server selects the op from the body; wrappers pass --body verbatim)

All behind --confirm (gate verified: DRY RUN refuses without it). SKILL.md documents the
bodies + the days-of-week-needs-array gotcha + names ACG as the test bed; capability map
+ api.md history updated. No production objects touched; no test leftovers.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 07:44:30 -07:00
25b2ff45bf sync: auto-sync from GURU-5070 at 2026-06-22 07:36:13
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-22 07:36:13
2026-06-22 07:37:01 -07:00
d75c367bf7 packetdial: build out + document the skill against the live NetSapiens v2 API
Key is now provisioned + live-verified, so grounded the skill in the real spec (RTFM):
- Mapped the OpenAPI surface (v44.4.10, 239 paths / 354 ops) — capability map added to
  SKILL.md (what the platform exposes vs what's wrapped vs raw-only).
- Added 6 live-verified read wrappers (ns.py + ns_client.py): callqueues, timeframes,
  sites, contacts, autoattendants, billing (domain limits/usage).
- Replaced the stale "not yet provisioned" credentials section with the live status
  (vaulted nsr_ reseller key, key-id nsr_hSGUB5Wo, scope Reseller 91912.service, RW) +
  the pbx.packetdial.com vs api.ucaasnetwork.com hostname note + override.
- api.md history updated. Writes remain gated behind --confirm; everything unwrapped
  reachable via `raw`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 07:36:12 -07:00
567986fa49 sync: auto-sync from HOWARD-HOME at 2026-06-21 21:42:44
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 21:42:44
2026-06-21 21:43:11 -07:00
28af952343 sync: auto-sync from HOWARD-HOME at 2026-06-21 21:26:00
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 21:26:00
2026-06-21 21:26:26 -07:00
b977f5e182 wiki: compile gururmm (full) — fold in 06-12..06-22 work (BUG-018/021/022, Event Log Watch UI, two-wave build, watchdog REST-only)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:15:24 -07:00
f6f0421ff3 sync: auto-sync from HOWARD-HOME at 2026-06-21 21:01:39
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 21:01:39
2026-06-21 21:02:05 -07:00
8713b46d3f chore: advance security-assessment pin (0f6927b) — onboarding/upsell questions + opportunity engine + quote delete 2026-06-21 21:00:26 -07:00
8fde10c743 sync: auto-sync from HOWARD-HOME at 2026-06-21 20:56:44
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 20:56:44
2026-06-21 20:57:10 -07:00
924fa39b34 sync: auto-sync from HOWARD-HOME at 2026-06-21 20:44:08
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 20:44:08
2026-06-21 20:44:34 -07:00
3a1edb721b screenconnect: finalize skill — clean stale 'pending unlock' help text
The control methods (send-command/send-message/set-properties) and session
detail are verified live on the ACG instance; the "pending unlock" help text
was left over from before probing confirmed them. Skill validated against
skill-creator rules (frontmatter, vault creds, gated writes, errorlog
compliance, ASCII, selftest 12/12).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 20:42:22 -07:00
87688b65da sync: auto-sync from HOWARD-HOME at 2026-06-21 20:36:14
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 20:36:14
2026-06-21 20:36:41 -07:00
231fcb6d6f chore: advance security-assessment pin (7a3dfb8) — Save/quote button + status column 2026-06-21 19:51:34 -07:00
44cddc5020 sync: auto-sync from GURU-5070 at 2026-06-21 19:31:11
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-21 19:31:11
2026-06-21 19:33:39 -07:00
f4296f2d9e sync: auto-sync from HOWARD-HOME at 2026-06-21 19:32:30
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 19:32:30
2026-06-21 19:32:57 -07:00
5b44a3e619 chore: advance security-assessment pin (a9c85a7) — + New/clear button 2026-06-21 19:17:08 -07:00
c462f50152 chore: advance security-assessment pin (ef03b4e) — lookup phone-match fix (deployed) 2026-06-21 19:08:10 -07:00
f90d753d13 sync: auto-sync from HOWARD-HOME at 2026-06-21 18:54:05
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 18:54:05
2026-06-21 18:54:31 -07:00
5299f3d32e chore: advance security-assessment pin (31bc786) — deploy/opcache notes 2026-06-21 18:44:34 -07:00
5a0aaa2ff2 sync: auto-sync from HOWARD-HOME at 2026-06-21 18:27:49
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 18:27:49
2026-06-21 18:28:14 -07:00
27c1d972b3 chore: advance security-assessment pin (f246091) — api.php allow-list fix (deployed live) 2026-06-21 18:24:55 -07:00
28f95f0d72 sync: auto-sync from HOWARD-HOME at 2026-06-21 18:18:26
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 18:18:26
2026-06-21 18:18:56 -07:00
0c3ae5d33d sync: auto-sync from GURU-5070 at 2026-06-21 18:11:16
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-21 18:11:16
2026-06-21 18:12:10 -07:00
2a7dd2d4a0 chore: advance security-assessment pin (3e3a9ab) — export exec summary 2026-06-21 18:11:42 -07:00
6e96ec42e8 sync: auto-sync from GURU-5070 at 2026-06-21 18:07:41
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-21 18:07:41
2026-06-21 18:08:32 -07:00
a35a732b95 coord: add msg purge --before command for cleaning dealt-with messages
Adds c_msg_purge to coord.py + SKILL.md doc. Deletes coordination messages older than a
date cutoff via DELETE /api/coord/messages/{id}. Safety: --before is required (can't wipe
the store by accident), DRY-RUN by default (previews; --yes to actually delete), optional
--to scopes to one recipient session, paginates over the API's 1000-row limit cap, logs
partial failures. Replaces the ad-hoc curl loop used to purge 208 stale messages this session.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 18:08:32 -07:00
9a9b49c808 chore: advance security-assessment pin (3a2301b) — FR-1 doc + fieldcheck 2026-06-21 18:05:22 -07:00
3aaafd94f8 chore: advance security-assessment pin (66eb7cb) — UI sizing bump 2026-06-21 17:59:21 -07:00
ac6d5953a0 chore: advance security-assessment submodule pin to c82a3c9 (posture scoring + findings merged to main) 2026-06-21 17:56:20 -07:00
dd033289f6 memory: Howard cleared to handle GuruRMM merges/deploys (Mike, 2026-06-21)
Corrects the assumption that GuruRMM merge-to-main (=deploy) is Mike-only. Mike still owns RMM
architecture/direction, but Howard can land prepared+verified branches himself — they no longer
bottleneck on Mike. Updated approval-workflow-tools-vs-projects + MEMORY.md index + logged the
correction in errorlog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 17:55:45 -07:00
63d750b7d3 sync: auto-sync from Mikes-MacBook-Air.local at 2026-06-21 17:52:26
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-06-21 17:52:26
2026-06-21 17:52:30 -07:00
ef55121d95 errorlog lint follow-ups: bitdefender log-gap fix + submodule memory + Windows CORE rules
- bitdefender gz.py: add "missing name" to _EXPECTED_ERROR_MARKERS — closes the last gap in
  Howard's errorlog suppression ("Missing name 'X' in 'options' object" validation errors were
  still logged). Verified all 10 real spam messages now suppressed; genuine errors still log.
- memory feedback_submodule_autosync_discipline: capture the recurring auto-synced-submodule
  rule (worktree or push-by-SHA + ls-remote verify; assert HEAD==origin/main before audits;
  never checkout-- shared files). Recurred on Howard-Home x3 + GURU-5070 this session.
- CLAUDE.md CORE Windows bullet: promote the two top recurring mechanical traps (/tmp path
  mismatch, curl.exe/plink quote-stripping) to always-loaded hard rules so they stop repeating.

Lint of errorlog.md: bitdefender expected-validation spam was ~70% of entries (Howard's
suppression now complete); fabb3421/Mail.Send drift closed earlier this session; wiki-compile
lock-release doc already fixed (entries predate the fix).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 17:48:00 -07:00
eb0a46e2b9 fix(coord): mark broadcast messages as read on server
PROBLEM: Broadcast messages were never being marked as read on the server,
only tracked in a local gitignored seen-file. This caused them to re-appear
in every new session or on different machines.

ROOT CAUSE: check-messages.sh lines 101-104 had a flawed assumption that
broadcasts share a single read_at field that would "clobber" other machines'
unread state. This was wrong - the API supports per-session read tracking.

FIX:
- check-messages.sh now marks broadcasts as read on the server (like personal
  messages), in addition to tracking them in the local seen-file
- Updated comments to reflect correct behavior
- coord SKILL.md now documents auto-mark-read behavior and reply workflow
- Manually marked all 39 accumulated unread broadcasts as read

IMPACT: Broadcast messages will now be properly marked as read and won't
keep appearing across sessions. Fixes user complaint about answered questions
(pfSense cred-path, fabb3421, etc.) continuing to show up.

Logged to errorlog.md as --correction.
2026-06-21 17:47:28 -07:00
e2ad87417e sync: auto-sync from HOWARD-HOME at 2026-06-21 17:45:23
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 17:45:23
2026-06-21 17:45:49 -07:00
68a05d3983 sync: auto-sync from HOWARD-HOME at 2026-06-21 17:40:03
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 17:40:03
2026-06-21 17:40:35 -07:00
f8c33c9019 sync: auto-sync from GURU-5070 at 2026-06-21 17:24:36
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-21 17:24:36
2026-06-21 17:25:26 -07:00
b49cb21fa6 sync: auto-sync from HOWARD-HOME at 2026-06-21 17:08:31
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 17:08:31
2026-06-21 17:09:00 -07:00
8f17c17258 fix(bitdefender): errorlog rule-compliance + moveCustomGroup param + ASCII-clean code
Finalizing the skill to "done, no errors, all skill rules":
- errorlog compliance: gz.py no longer logs EXPECTED API responses (validation,
  method-not-found, not-configured, rate-limit, expected state) or `raw`/selftest
  runs to errorlog.md. Per CLAUDE.md "do not log expected/handled conditions".
  Verified: selftest + probes leave errorlog unchanged.
- moveCustomGroup: param is `parentId`, not `newParentId` (6th doc-vs-live fix
  caught by a full param-shape audit).
- ASCII-clean code: removed all non-ASCII (em-dashes, U+21D2 arrow) from scripts
  (avoids cp1252 encode errors; aligns with the ASCII-markers rule).
- api-reference updated.

Verified: 18/18 read commands rc=0 live; selftest 75/75; parser builds; ASCII
markers + vault load + errorlog helper present.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 17:06:46 -07:00
f55feb07fa sync: auto-sync from HOWARD-HOME at 2026-06-21 16:54:31
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 16:54:31
2026-06-21 16:55:00 -07:00
3c4b108865 sync: auto-sync from HOWARD-HOME at 2026-06-21 16:16:19
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 16:16:19
2026-06-21 16:16:47 -07:00
aefbc8fce2 sync: auto-sync from HOWARD-HOME at 2026-06-21 16:14:48
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 16:14:48
2026-06-21 16:15:20 -07:00
be9d6c3979 sync: auto-sync from HOWARD-HOME at 2026-06-21 14:37:51
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 14:37:51
2026-06-21 14:38:49 -07:00
bfc6631c36 sync: auto-sync from HOWARD-HOME at 2026-06-21 14:37:28
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 14:37:28
2026-06-21 14:38:01 -07:00
603773cf25 fix(bitdefender): correct assignPolicy + isolate/unisolate param shapes (live-verified)
Found during the RMM-TEST-MACHINE full-function test (live tenant):
- assignPolicy: assigning a policyId REQUIRES inheritFromAbove:false in the same
  call, else the API rejects with a misleading "inheritFromAbove should not be
  used with policyId" error. Fixed assign_policy to always send it; dropped the
  wrong --inherit-from-above flag.
- isolate/unisolate: the API takes a SINGLE endpointId per call, NOT an
  endpointIds array (errored "not expected"). Client now loops per endpoint.
  unisolate fails while the isolate task is in progress — wait + retry.
- api-reference updated with the live-verified shapes.

Full function test PASSED on RMM-TEST-MACHINE: install(offline kit/SYSTEM) ->
enroll -> move(ZZ-RMM-TEST) -> assign-policy(GPS Base, applied) -> set-label ->
scan -> reconfigure -> isolate -> unisolate -> quarantine/blocklist read ->
managed uninstall(deleteEndpoint). selftest 75/75.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 14:26:44 -07:00
6fed424b47 sync: auto-sync from HOWARD-HOME at 2026-06-21 14:18:27
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-21 14:18:27
2026-06-21 14:19:01 -07:00