From 65ad20ae0f49ef3ee9bba3104352e0e088e9cb58 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 11 Jun 2026 08:22:55 -0700 Subject: [PATCH] sync: auto-sync from GURU-5070 at 2026-06-11 08:22:42 Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-11 08:22:42 --- .claude/memory/MEMORY.md | 7 +- .../memory/_reports/2026-06-11-0822-dream.md | 189 ++++++++++++++++++ clients/kittle-design/README.md | 3 + .../reports/2026-04-23-breach-check.md | 0 .../reports/2026-06-08-full-sweep.md | 0 .../session-logs/2026-04-24-session.md | 0 .../2026-06-08-mike-m365-full-sweep.md | 0 wiki/clients/kittle-design.md | 23 +-- 8 files changed, 205 insertions(+), 17 deletions(-) create mode 100644 .claude/memory/_reports/2026-06-11-0822-dream.md create mode 100644 clients/kittle-design/README.md rename clients/{kittle-design => kittle}/reports/2026-04-23-breach-check.md (100%) rename clients/{kittle-design => kittle}/reports/2026-06-08-full-sweep.md (100%) rename clients/{kittle-design => kittle}/session-logs/2026-04-24-session.md (100%) rename clients/{kittle-design => kittle}/session-logs/2026-06/2026-06-08-mike-m365-full-sweep.md (100%) diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 23415fa..bc39496 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -25,6 +25,8 @@ - [RMM agent update model](rmm-agent-update-model.md) — Agent updates are server-PUSH on heartbeat (no self-poll); available versions = filesystem scan needing a `.sha256`; promote flips `.channel` sidecars beta→stable globally. Two stranders: beta-first freezes stable until an explicit promote; agents older than ~0.6.50 re-enroll with a NEW device_id/agent row when updated. - [GuruRMM physical server storage](gururmm-physical-server-storage.md) — New box 172.16.1.231 (temp IP→will be .30), Ubuntu 26.04, ssh key `gururmm-physical`/alias `gururmm-new`. SSD (915G root) = HOT (PG default tablespace + WAL + builds); HDD ext4 at `/data` = COLD (`gururmm_cold` PG tablespace for aged `agent_logs` partitions + downloads + backups + archive). The #3 retention answer. - [Trebesch DESKTOP-QNP3ON5 shell replacement](reference_trebesch_qnp3on5.md) — AT Trebesch box runs an Explorer shell replacement; explorer.exe owner check returns blank — use Win32_ComputerSystem.UserName. GuruRMM SWIFT-LION-2892. +- [reference_backblaze_storage_rate](reference_backblaze_storage_rate.md) -- ACG's Backblaze B2 storage cost rate ($0.00695/GB) for the GuruRMM mspbackups storage-cost calculation +- [reference_sqlx_migrations_immutable](reference_sqlx_migrations_immutable.md) -- NEVER edit an already-applied sqlx migration file — even a comment. sqlx::migrate! checksums each file at compile time and validates against _sqlx_migrations at startup; a changed checksum crash-loops the server with "migration N was previously applied but has been modified". Code review MUST flag any edit to an applied migration. ## Users - [Howard Enos](user_howard.md) — Mike's brother, technician, full access. Machines: ACG-TECH03L, Howard-Home (authoritative in users.json). @@ -88,6 +90,7 @@ ### Cascades - [Cascades operational rules](feedback_cascades.md) — Active rules: (1) folder redirection (fdeploy) needs subfolders PRE-CREATED before first logon or it caches a failure forever; recovery via fix-shell-redirect.ps1. (2) ALWAYS ask which security group(s) a new user goes into — never auto-derive from OU. (3) Do NOT lock down the legacy Main\Company Web Docs\Accounting (Everyone:Full) folder — still in active use. - [Cascades FR GPO fix](reference_cascades_fr_gpo_fix.md) — Native Folder Redirection was DOA on every machine: redirect targets were in a misnamed `fdeploy1.ini` (Windows reads `fdeploy.ini`) → empty target path → silent no-op → per-user registry workaround every time. Fixed 2026-06-08 (correct fdeploy.ini + version bump). Also: CS-SERVER live RMM agent is `c39f1de7...` (old `6766e973` stale). +- [feedback_ascii_only_api_payloads](feedback_ascii_only_api_payloads.md) -- On Windows/Git-bash, non-ASCII chars (em-dash, arrow, smart quotes) in JSON payload TEXT passed to curl get mangled and rejected — Discord bot-alert returns 400, the coord API returns "error parsing the body". Use ASCII-only in API payload text, or a single-quoted heredoc. ## Machine - [GURU-5070 Workstation Setup](reference_workstation_setup.md) — Mike's primary (owner confirmed 2026-05-26). Windows 11 Pro. Renamed from OC-5070 → ACG-5070/acg-guru-5070 → GURU-5070; all the same box, all Mike's. @@ -123,5 +126,5 @@ - [Syncro preview mandatory](feedback_syncro_preview_mandatory.md) — preview+confirm every Syncro write, including internal notes - [Refresh session history first](feedback_refresh_session_history_first.md) — read prior incident logs before acting; do not re-remediate already-handled accounts - [Autonomy scope](feedback_autonomy_scope.md) — confirm only for client-affecting actions; internal docs/wiki/ClaudeTools = act autonomously -- [Check for client-slug fragmentation](feedback_client_slug_fragmentation.md) — Before concluding a client has no records, grep broadly (company/owner/initials/hostname/"Last, First") across clients/, wiki/, session-logs/, vault — one client gets split across slug variants (Wolkin was 4: wolkin/wolkin-law/rswolkin/robert-wolkin). Consolidate to one canonical slug; action prior logs' Pending items. -- [RMM user_session = false SMB failures](feedback_rmm_user_session_smb_false_negative.md) — GuruRMM net use/net view/Add-Printer to a remote \HOST fail with error 67 / RPC 1702 (even with valid creds) because user_session is a WTS-impersonated non-interactive token that can't do authenticated SMB. The share/printer may work fine interactively. Treat RMM SMB results as "can't tell"; verify via ScreenConnect. +- [Check for client-slug fragmentation](feedback_client_slug_fragmentation.md) — Before concluding a client has no records, grep broadly (company/owner/initials/hostname/"Last, First") across clients/, wiki/, session-logs/, vault — one client gets split across slug variants (Wolkin was 4: wolkin/wolkin-law/rswolkin/robert-wolkin). Consolidate to one canonical slug; action prior logs' Pending items. +- [RMM user_session = false SMB failures](feedback_rmm_user_session_smb_false_negative.md) — GuruRMM net use/net view/Add-Printer to a remote \HOST fail with error 67 / RPC 1702 (even with valid creds) because user_session is a WTS-impersonated non-interactive token that can't do authenticated SMB. The share/printer may work fine interactively. Treat RMM SMB results as "can't tell"; verify via ScreenConnect. diff --git a/.claude/memory/_reports/2026-06-11-0822-dream.md b/.claude/memory/_reports/2026-06-11-0822-dream.md new file mode 100644 index 0000000..b3db315 --- /dev/null +++ b/.claude/memory/_reports/2026-06-11-0822-dream.md @@ -0,0 +1,189 @@ +# Memory Dream Report +Generated: 2026-06-11 08:20 +Repo root: D:\claudetools +Memory store: D:\claudetools\.claude\memory +Mode: APPLY-SAFE (additive) + +Loaded 112 memory files (excluding MEMORY.md). + +## 1. INDEX RECONCILE + +### Orphan files (no index line): 3 +- [INFO] feedback_ascii_only_api_payloads.md (type=feedback) +- [INFO] reference_backblaze_storage_rate.md (type=reference) +- [INFO] reference_sqlx_migrations_immutable.md (type=reference) + +### Index lines pointing at missing files: 0 + +### Frontmatter name vs filename signals: 4 +- [INFO] feedback_mac_rmm_auth_fixed.md: (no name in frontmatter) +- [INFO] feedback_rmm_password_limitation.md: (no name in frontmatter) +- [INFO] feedback_windows_bash_mapping.md: (no name in frontmatter) +- [INFO] policy_pricing_verification.md: (no name in frontmatter) + +## 2. BACKLINKS ([[name]] references) + +### Broken backlinks: 16 +- [WARNING] cyndyoffice-physical-hp-lockups.md: [[universal-minerals]] has no matching memory file +- [WARNING] feedback_bot_alert_ticket_link.md: [[feedback_syncro_html]] has no matching memory file +- [WARNING] feedback_ca_programmatic_management.md: [[365-remediation-tool-reference]] has no matching memory file +- [WARNING] feedback_check_patterns_before_asking.md: [[user-font-preference]] has no matching memory file +- [WARNING] feedback_check_patterns_before_asking.md: [[feedback-check-patterns-before-asking]] has no matching memory file +- [WARNING] feedback_client_slug_fragmentation.md: [[wolkin]] has no matching memory file +- [WARNING] feedback_dashboard_beta_first.md: [[feedback_gururmm_builds]] has no matching memory file +- [WARNING] feedback_gururmm_build_channel_default.md: [[feedback_gururmm_builds]] has no matching memory file +- [WARNING] feedback_no_manufactured_guardrails.md: [[feedback-no-toml-config-endpoints]] has no matching memory file +- [WARNING] feedback_rmm_thoughts_backlog.md: [[feedback-stream-of-thought-design]] has no matching memory file +- [WARNING] feedback_rmm_user_session_smb_false_negative.md: [[wolkin]] has no matching memory file +- [WARNING] feedback_stream_of_thought_design.md: [[feedback-dashboard-beta-first]] has no matching memory file +- [WARNING] infra_office_network.md: [[power-failure-runbook]] has no matching memory file +- [WARNING] project_apple_mdm_certs.md: [[SPEC-017]] has no matching memory file +- [WARNING] project_memory_consolidation_automation.md: [[feedback_memory_repo_not_profile]] has no matching memory file +- [WARNING] reference_coord_messages_api_shape.md: [[CLAUDE.md]] has no matching memory file + +## 3. REFERENCED-ARTIFACT VALIDITY (conservative; 'verify', not 'delete') + +### Referenced paths not found in repo: 23 +- [VERIFY] feedback_dashboard_beta_first.md: `opt/gururmm/build-dashboard.sh` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] feedback_stream_of_thought_design.md: `projects/msp-tools/guru-rmm/docs/PARKED_alert-lifecycle-and-telemetry-cadence.md` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] feedback_syncro_api.md: `tmp/syncro_comment.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] feedback_syncro_history.md: `tmp/syncro_comment.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] feedback_tmp_path_windows.md: `tmp/comment_payload.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] feedback_tmp_path_windows.md: `tmp/foo.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] machine_windows_guru_setup_status.md: `sops.yaml` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_guruconnect.md: `etc/systemd/system/guruconnect.service` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_gururmm.md: `gururmm-webhook.service` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_gururmm.md: `opt/gururmm/webhook-handler.py` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_masterbooter.md: `DECISIONS.md` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_masterbooter.md: `EXPANSION_PLAN.md` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_masterbooter.md: `TODO_CLEANUP.md` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_masterbooter.md: `VISION.md` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] project_neptune_sbr_email_routing.md: `data/on_boot.d/10-neptune-snat.sh` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_ff_firefox_driver.md: `~/.claude.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_gururmm.md: `build-{windows,linux,mac,agents,server,shared}.sh` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_gururmm.md: `gururmm-agent.service` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_ix_server_access.md: `etc/gururmm/agent.toml` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_ix_server_access.md: `gururmm-agent.service` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_radio_website.md: `fuse.js` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_radio_website.md: `wavesurfer.js` not found under repo (may be server-side or renamed -- verify, do not auto-delete) +- [VERIFY] reference_ticktick_integration.md: `mcp.json` not found under repo (may be server-side or renamed -- verify, do not auto-delete) + +## 4. DUPLICATE / OVERLAP CLUSTERS (PROPOSED merges -- never auto-applied) + +### Candidate clusters: 11 +- [feedback] 5 related memories: + - feedback_syncro_api.md -- Technical mechanics for talking to the Syncro API — required Content-Type header, the no-i + - feedback_syncro_billing.md -- How to bill a Syncro ticket correctly — fetch live rates, use real product names, pick the + - feedback_syncro_history.md -- Detail and incident archive backing the Syncro feedback rules. Read this when you need to + - feedback_syncro_preview_mandatory.md -- Every Syncro write needs a payload preview + explicit confirmation BEFORE posting — includ + - feedback_syncro_workflow.md -- Process and etiquette rules for Syncro work — always preview comments before posting, veri +- [reference] 3 related memories: + - reference_gitea_api_credential.md -- Gitea API auth (PRs, merges) uses services/gitea-howard.sops.yaml, NOT the gururmm server + - reference_gitea_git_op_latency.md -- Gitea git-op latency benchmarks - SSH is SLOWER than internal HTTP+token; the SOPS credent + - reference_gitea_internal.md -- git.azcomputerguru.com is NOT behind Cloudflare — it's the office Cox IP NAT'd to NPM (ope +- [feedback] 2 related memories: + - feedback_cascades.md -- Active rules for Cascades work — (1) folder redirection (fdeploy) needs subfolders pre-cre + - feedback_cascades_scan_account.md -- At Cascades, every scanner→network-folder (scan-to-SMB) setup reuses the single svc-scan A +- [feedback] 2 related memories: + - feedback_client_slug_fragmentation.md -- A single client can be recorded under several slug variants (e.g. wolkin / wolkin-law / rs + - feedback_client_tone.md -- How to write client-facing Syncro comments — expert partner, not intake questionnaire +- [feedback] 2 related memories: + - feedback_graph_ca_policy_eventual_consistency.md -- After PATCHing a CA policy (204 No Content), an immediate GET may return stale state. Wait + - feedback_graph_password_reset_requires_role.md -- With User.ReadWrite.All app perm + no privileged directory role, Tenant Admin can CREATE a +- [feedback] 2 related memories: + - feedback_gururmm.md -- Six rules for working with GuruRMM. (1) RMM dev is Mike's domain — Howard does NOT code RM + - feedback_gururmm_build_channel_default.md -- GuruRMM build pipeline must tag NEW builds beta by default; stable is an explicit promote +- [feedback] 2 related memories: + - feedback_no_manufactured_guardrails.md -- On OUR products (GuruRMM/GuruConnect/ClaudeTools etc.) at Mike's request, execute without + - feedback_no_toml_config_endpoints.md -- User explicitly prohibits TOML or config-file-based endpoint configuration — this will nev +- [feedback] 2 related memories: + - feedback_rmm_thoughts_backlog.md -- GuruRMM ideas go into the "RMM Thoughts" backlog (docs/RMM_THOUGHTS.md); pipeline thought + - feedback_rmm_user_session_smb_false_negative.md -- GuruRMM commands (even context user_session) run under a WTS-impersonated, non-interactive +- [feedback] 2 related memories: + - feedback_vault_gcm_shadow_auth.md -- Vault git push/fetch "Failed to authenticate user" cause+fix — GCM shadows the store token + - feedback_vault_pointer_for_teammates.md -- When relaying infra/credential info to Howard (or any teammate with vault access), hand ov +- [project] 2 related memories: + - project_cascades.md -- Active state of the Cascades migration — Syncro ticket #110680053, plan file (machine-spec + - project_cascades_history.md -- Detail and rationale behind the active Cascades rules — fdeploy 502/ACL root cause and the +- [project] 2 related memories: + - project_dataforth.md -- Dataforth runs on M365 (Graph API for mail send); the neptune.acghosting.com Exchange is A + - project_dataforth_history.md -- Detail and remediation log for the 2026-03-27 Dataforth security incident — DF-JOEL2 compr + +## 5. STALE DATED FACTS (project-type, dated > 6 months) + +### Project memories with stale dated claims: 1 +- [VERIFY] radio_show_no_cohost_named_tom.md: dated 2012-06-09 (~5115 days old) -- re-verify + +## 6. DRIFT vs HARNESS PROFILE STORE + +Profile store: C:\Users\guru\.claude\projects\D--claudetools\memory + +### Profile-only (candidates to MIGRATE INTO repo): 0 + +### Repo-only (candidates to PUSH OUT to profile): 2 +- [INFO] feedback_client_slug_fragmentation.md +- [INFO] feedback_rmm_user_session_smb_false_negative.md + +### Present in BOTH but differing (CONFLICT -- human review): 1 +- [WARNING] gururmm-physical-server-storage.md: content differs between repo and profile + +## APPLY-SAFE ACTIONS PERFORMED (additive-only) + +- [OK] appended index line under ## Feedback: - [feedback_ascii_only_api_payloads](feedback_ascii_only_api_payloads.md) -- On Windows/Git-bash, non-ASCII chars (em-dash, arrow, smart quotes) in JSON payload TEXT passed to curl get mangled and rejected — Discord bot-alert returns 400, the coord API returns "error parsing the body". Use ASCII-only in API payload text, or a single-quoted heredoc. +- [OK] appended index line under ## Reference: - [reference_backblaze_storage_rate](reference_backblaze_storage_rate.md) -- ACG's Backblaze B2 storage cost rate ($0.00695/GB) for the GuruRMM mspbackups storage-cost calculation +- [OK] appended index line under ## Reference: - [reference_sqlx_migrations_immutable](reference_sqlx_migrations_immutable.md) -- NEVER edit an already-applied sqlx migration file — even a comment. sqlx::migrate! checksums each file at compile time and validates against _sqlx_migrations at startup; a changed checksum crash-loops the server with "migration N was previously applied but has been modified". Code review MUST flag any edit to an applied migration. + +## SUMMARY + +- memory files: 112 +- orphan files (no index): 3 +- index -> missing file: 0 +- name/filename signals: 4 +- broken backlinks: 16 +- stale referenced paths: 23 +- overlap clusters: 11 +- stale dated project facts: 1 +- profile-only files: 0 +- repo-only files: 2 +- repo<->profile conflicts: 1 +- additive actions performed: 3 + +## PROPOSED (needs human approval -- NEVER auto-applied) + +- [MERGE?] consolidate 5 'feedback' memories: feedback_syncro_api.md, feedback_syncro_billing.md, feedback_syncro_history.md, feedback_syncro_preview_mandatory.md, feedback_syncro_workflow.md +- [MERGE?] consolidate 3 'reference' memories: reference_gitea_api_credential.md, reference_gitea_git_op_latency.md, reference_gitea_internal.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_cascades.md, feedback_cascades_scan_account.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_client_slug_fragmentation.md, feedback_client_tone.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_graph_ca_policy_eventual_consistency.md, feedback_graph_password_reset_requires_role.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_gururmm.md, feedback_gururmm_build_channel_default.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_no_manufactured_guardrails.md, feedback_no_toml_config_endpoints.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_rmm_thoughts_backlog.md, feedback_rmm_user_session_smb_false_negative.md +- [MERGE?] consolidate 2 'feedback' memories: feedback_vault_gcm_shadow_auth.md, feedback_vault_pointer_for_teammates.md +- [MERGE?] consolidate 2 'project' memories: project_cascades.md, project_cascades_history.md +- [MERGE?] consolidate 2 'project' memories: project_dataforth.md, project_dataforth_history.md +- [REVERIFY?] radio_show_no_cohost_named_tom.md (dated facts) -- confirm still true, then update +- [STALE-REF?] feedback_dashboard_beta_first.md references `opt/gururmm/build-dashboard.sh` -- confirm/repoint or note moved +- [STALE-REF?] feedback_stream_of_thought_design.md references `projects/msp-tools/guru-rmm/docs/PARKED_alert-lifecycle-and-telemetry-cadence.md` -- confirm/repoint or note moved +- [STALE-REF?] feedback_syncro_api.md references `tmp/syncro_comment.json` -- confirm/repoint or note moved +- [STALE-REF?] feedback_syncro_history.md references `tmp/syncro_comment.json` -- confirm/repoint or note moved +- [STALE-REF?] feedback_tmp_path_windows.md references `tmp/comment_payload.json` -- confirm/repoint or note moved +- [STALE-REF?] feedback_tmp_path_windows.md references `tmp/foo.json` -- confirm/repoint or note moved +- [STALE-REF?] machine_windows_guru_setup_status.md references `sops.yaml` -- confirm/repoint or note moved +- [STALE-REF?] project_guruconnect.md references `etc/systemd/system/guruconnect.service` -- confirm/repoint or note moved +- [STALE-REF?] project_gururmm.md references `gururmm-webhook.service` -- confirm/repoint or note moved +- [STALE-REF?] project_gururmm.md references `opt/gururmm/webhook-handler.py` -- confirm/repoint or note moved +- [STALE-REF?] project_masterbooter.md references `DECISIONS.md` -- confirm/repoint or note moved +- [STALE-REF?] project_masterbooter.md references `EXPANSION_PLAN.md` -- confirm/repoint or note moved +- [STALE-REF?] project_masterbooter.md references `TODO_CLEANUP.md` -- confirm/repoint or note moved +- [STALE-REF?] project_masterbooter.md references `VISION.md` -- confirm/repoint or note moved +- [STALE-REF?] project_neptune_sbr_email_routing.md references `data/on_boot.d/10-neptune-snat.sh` -- confirm/repoint or note moved +- [STALE-REF?] reference_ff_firefox_driver.md references `~/.claude.json` -- confirm/repoint or note moved +- [STALE-REF?] reference_gururmm.md references `build-{windows,linux,mac,agents,server,shared}.sh` -- confirm/repoint or note moved +- [STALE-REF?] reference_gururmm.md references `gururmm-agent.service` -- confirm/repoint or note moved +- [STALE-REF?] reference_ix_server_access.md references `etc/gururmm/agent.toml` -- confirm/repoint or note moved +- [STALE-REF?] reference_ix_server_access.md references `gururmm-agent.service` -- confirm/repoint or note moved +- [STALE-REF?] reference_radio_website.md references `fuse.js` -- confirm/repoint or note moved +- [STALE-REF?] reference_radio_website.md references `wavesurfer.js` -- confirm/repoint or note moved +- [STALE-REF?] reference_ticktick_integration.md references `mcp.json` -- confirm/repoint or note moved +- [DRIFT-RESOLVE?] gururmm-physical-server-storage.md differs repo vs profile -- human picks winner (sync-memory.sh leaves both untouched) + diff --git a/clients/kittle-design/README.md b/clients/kittle-design/README.md new file mode 100644 index 0000000..c900bc8 --- /dev/null +++ b/clients/kittle-design/README.md @@ -0,0 +1,3 @@ +# Moved -> clients/kittle/ +Consolidated 2026-06-11. "Kittle Design & Construction" == canonical slug `kittle`. +All logs/reports now in `clients/kittle/`. Wiki: `wiki/clients/kittle.md`. Vault: `clients/kittle/`. diff --git a/clients/kittle-design/reports/2026-04-23-breach-check.md b/clients/kittle/reports/2026-04-23-breach-check.md similarity index 100% rename from clients/kittle-design/reports/2026-04-23-breach-check.md rename to clients/kittle/reports/2026-04-23-breach-check.md diff --git a/clients/kittle-design/reports/2026-06-08-full-sweep.md b/clients/kittle/reports/2026-06-08-full-sweep.md similarity index 100% rename from clients/kittle-design/reports/2026-06-08-full-sweep.md rename to clients/kittle/reports/2026-06-08-full-sweep.md diff --git a/clients/kittle-design/session-logs/2026-04-24-session.md b/clients/kittle/session-logs/2026-04-24-session.md similarity index 100% rename from clients/kittle-design/session-logs/2026-04-24-session.md rename to clients/kittle/session-logs/2026-04-24-session.md diff --git a/clients/kittle-design/session-logs/2026-06/2026-06-08-mike-m365-full-sweep.md b/clients/kittle/session-logs/2026-06/2026-06-08-mike-m365-full-sweep.md similarity index 100% rename from clients/kittle-design/session-logs/2026-06/2026-06-08-mike-m365-full-sweep.md rename to clients/kittle/session-logs/2026-06/2026-06-08-mike-m365-full-sweep.md diff --git a/wiki/clients/kittle-design.md b/wiki/clients/kittle-design.md index 91c4f84..db5a1c6 100644 --- a/wiki/clients/kittle-design.md +++ b/wiki/clients/kittle-design.md @@ -1,21 +1,14 @@ --- type: client name: kittle-design -display_name: Kittle Design & Construction -last_compiled: 2026-06-09 -compiled_by: GURU-5070/claude-main -superseded_by: clients/kittle.md -sources: - - clients/kittle-design/session-logs/2026-04-24-session.md -backlinks: - - clients/kittle +display_name: Kittle Design & Construction (consolidated → kittle) +last_compiled: 2026-06-11 +redirect: kittle --- -# Kittle Design & Construction — SUPERSEDED +# Kittle Design & Construction → see [[kittle]] -> **This article is superseded. The canonical Kittle record is now [[clients/kittle]] (`wiki/clients/kittle.md`).** -> -> Consolidated 2026-06-09. `kittle-design` and `kittle` were two articles for the same client -> (Kittle Design & Construction LLC, M365 `kittlearizona.com`, Syncro `32460233`). All content — -> the April 2026 breach history and the June 2026 BEC/ACH-fraud incident — now lives in the -> single canonical article. Update **[clients/kittle.md](kittle.md)** going forward; do not edit this stub. +Duplicate slug for the same client. **Consolidated 2026-06-11 into the canonical article +[[kittle]] (slug `kittle`).** All infrastructure, the June 2026 BEC/ACH incident record, +credentials (vault `clients/kittle/`), and history live there. The pre-merge logs/reports that +were under `clients/kittle-design/` were moved into `clients/kittle/`.