Commit Graph

489 Commits

Author SHA1 Message Date
401ed7d4e0 wiki-compile: use fuzzy Syncro query= + fallback ladder (not exact name=)
Phase 2a used `customers?name=` which is near-exact and missed slug/name spelling
mismatches — e.g. slug gonzvar-tax-services vs Syncro "Gonzvar Tax Service"
(singular), causing a false "not in Syncro". Switch to `query=` (fuzzy) with a
fallback ladder (first word, then de-pluralized token) before concluding not-found.
2026-06-12 08:22:48 -07:00
0665e3a007 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
e9a58fa8e4 submodule: advance guru-rmm (runbook cleanup done); memory: old VM decommissioned + .47 dropped 2026-06-12 07:38:49 -07:00
95c96d5dec sync: auto-sync from GURU-5070 at 2026-06-12 07:28:38
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-12 07:28:38
2026-06-12 07:28:53 -07:00
7f06e47f09 memory: record GuruRMM log-analysis cutover to Claude Haiku (root cause + deploy shape) 2026-06-12 07:16:42 -07:00
f495b08f42 harness: gitignore tmp/ + add promotion check to /save and /scc
- .gitignore: ignore root tmp/ (temp/ and .claude/tmp/ were already ignored;
  root tmp/ was not, which is how scratch got committed and needed cleanup).
- New .claude/scripts/tmp-promotion-check.sh: advisory, read-only, never blocks.
  Scans the gitignored scratch dirs (tmp/, temp/, .claude/tmp/) and flags files
  worth graduating (scripts, substantial docs, session-log-referenced) before
  they're lost to cleanup. Silent when scratch is empty.
- /save (Phase 4) and /scc (new step 2) run the check before sync.sh, pointing
  at .claude/TEMP_GRADUATION.md for the graduate-vs-delete decision.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 06:26:20 -07:00
fd99ee327c sync: auto-sync from GURU-5070 at 2026-06-12 05:57:38
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-12 05:57:38
2026-06-12 05:58:05 -07:00
d1e02293c5 memory: record Beast parallel Windows build (lever A) — 336s, target-dir + cargo-fetch gotchas 2026-06-11 21:11:40 -07:00
fcaa3c0ed2 memory: Beast as primary GuruRMM Windows build host (Tailscale-on-.30, WiX 4.x, Pluto fallback)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 20:16:27 -07:00
802ae9cc7c memory: GURU-5070 python3 is the MS Store shim — use python/py (coord+wiki tooling work; lock is claimable)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:32:39 -07:00
80c583e27c sync: auto-sync from GURU-5070 at 2026-06-11 14:58:44
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 14:58:44
2026-06-11 14:59:00 -07:00
e25ea146e2 sync: auto-sync from GURU-5070 at 2026-06-11 11:10:31
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 11:10:31
2026-06-11 11:10:45 -07:00
fe79ee5d39 sync: auto-sync from GURU-5070 at 2026-06-11 09:27:40
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 09:27:40
2026-06-11 09:27:54 -07:00
bf6ffa7da4 sync: auto-sync from GURU-5070 at 2026-06-11 08:57:45
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:57:45
2026-06-11 08:57:57 -07:00
25d2cf5148 sync: auto-sync from GURU-5070 at 2026-06-11 08:33:19
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:33:19
2026-06-11 08:33:32 -07:00
d0f90d4023 sync: auto-sync from GURU-5070 at 2026-06-11 08:29:58
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:29:58
2026-06-11 08:30:10 -07:00
65ad20ae0f 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
2026-06-11 08:22:55 -07:00
6ade6153bf sync: auto-sync from GURU-5070 at 2026-06-11 08:21:26
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:21:26
2026-06-11 08:21:38 -07:00
543228fdba sync: auto-sync from GURU-5070 at 2026-06-11 08:10:50
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:10:50
2026-06-11 08:11:03 -07:00
55445d78dc sync: auto-sync from GURU-5070 at 2026-06-11 08:02:42
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:02:42
2026-06-11 08:02:55 -07:00
6bd3210e21 sync: auto-sync from GURU-5070 at 2026-06-11 08:01:12
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:01:12
2026-06-11 08:01:27 -07:00
cfc065b097 sync: auto-sync from GURU-5070 at 2026-06-11 08:00:04
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 08:00:04
2026-06-11 08:00:19 -07:00
23299a661e sync: auto-sync from GURU-5070 at 2026-06-11 07:45:33
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 07:45:33
2026-06-11 07:45:46 -07:00
ee1eba5f4c sync: auto-sync from GURU-5070 at 2026-06-11 07:24:11
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-11 07:24:11
2026-06-11 07:24:27 -07:00
9c56690270 sync: auto-sync from GURU-5070 at 2026-06-10 20:18:48
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-10 20:18:48
2026-06-10 20:19:05 -07:00
470a8e7eb1 rmm: host-migration runbook + ratified architecture (memory + pointer)
Bump guru-rmm pointer (host-migration runbook). Record the migration architecture
decision in memory: physical box becomes .30 (all-but-Gitea-runner), VM retired,
MariaDB migrates (backs the coord claudetools DB per Gate-A).
2026-06-10 18:40:07 -07:00
63f427a95f sync: auto-sync from GURU-5070 at 2026-06-10 16:02:59
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-10 16:02:59
2026-06-10 16:03:13 -07:00
abbc185e02 sync: auto-sync from HOWARD-HOME at 2026-06-10 13:25:54
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-10 13:25:54
2026-06-10 13:26:10 -07:00
bd5e977b6e sync: auto-sync from HOWARD-HOME at 2026-06-10 13:15:14
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-10 13:15:14
2026-06-10 13:15:27 -07:00
e08a21702a sync: auto-sync from HOWARD-HOME at 2026-06-10 12:28:50
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-10 12:28:50
2026-06-10 12:29:01 -07:00
Winter Williams
7729874549 sync: auto-sync from GURU-BEAST-ROG at 2026-06-10 10:09:59
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-10 10:09:59
2026-06-10 10:10:08 -07:00
2625800885 wiki+memory: consolidate kittle-design -> kittle (redirect stub); add feedback memories (syncro preview, refresh-first, autonomy scope)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 17:28:17 -07:00
4adf2c586c sync: auto-sync from HOWARD-HOME at 2026-06-09 17:08:26
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-09 17:08:26
2026-06-09 17:08:39 -07:00
2029fa5429 sync: auto-sync from HOWARD-HOME at 2026-06-09 10:33:12
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-06-09 10:33:12
2026-06-09 10:33:25 -07:00
ce8401a093 sync: auto-sync from GURU-5070 at 2026-06-08 21:04:39
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-08 21:04:39
2026-06-08 21:05:24 -07:00
1cc03e9f23 verify(remediation): kittlearizona EXO persistence re-checked clean post role-fix
Double-checked the 2026-06-08 BEC remediation for missed EXO-dependent items now that
the Exchange role is confirmed. Findings: malicious inbox rules gone (cleanup stuck);
all 14 mailboxes clean of fwd/redirect/delete/move rules; no mailbox forwarding; no
transport rules; no rogue delegates. Open (need Ken): Christina-Micek StopProcessing rule
+ Ken FullAccess to Accounting. Corrected stale 'Exchange Admin NOT assigned' note (it IS).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 21:05:24 -07:00
2efd4a4fb3 discord-bot: fix "no response", serialize turns, attribution, mentions, post-at-bottom
client.py: send() falls back to ResultMessage.result when no TextBlock streams
(the "(no response)" bug) and reconnects+retries once on a closed SDK session.

message_handler.py: per-thread turn lock so messages arriving mid-turn or from a
second user queue in order (nothing dropped); per-session requester-attribution
env (discord_id -> users.json key), pinned to the thread opener; _USER_MAP caches
only on a successful load; final answer posts as a fresh message at the BOTTOM
(no edit-in-place); a <@id> tag goes out as a fresh send so it actually pings.

main.py: allowed_mentions permits user pings, blocks @everyone/@here/roles.

DISCORD_CLAUDE.md: no thread auto-delete; tiered close-out (Q&A -> one-line rolling
log, substantive -> /save); @mention guidance; opener-pinned attribution note.

whoami-block.sh / sync.sh: bot-context attribution (Executed by ClaudeTools Bot /
Requested by <person>; git author = mapped requester, committer = bot). Strict
no-op for interactive sessions.

users.json: discord_id for Mike/Howard; added Winter Williams (bot-only, full trust).

Reviewed by Code Review Agent + Grok + Gemini (Gemini's "malformed email" finding
verified as a false positive).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 21:00:34 -07:00
7fc29a7c5f fix(remediation): close the recurring Exchange-Admin-role gap fleet-wide
EXO email-cleanup tasks (Search-UnifiedAuditLog, Get-MessageTrace, inbox rules) kept
401/403-ing per tenant because the Exchange Operator SP was missing the Exchange Admin
directory role — admin consent grants Exchange.ManageAsApp but never the directory role.
onboard-tenant.sh assigns it, but tenants consented before that step / by hand never got
it, and nothing audited for it. Hence the recurring 'next onboarding will fix it' (false
for already-onboarded tenants).

- NEW assign-exchange-role.sh: idempotent role assignment via the authoritative
  roleManagement/directory/roleAssignments API (the legacy directoryRoles/members list
  reads back unreliably). <domain|--all> + --verify/--dry-run.
- Backfilled the whole fleet (--all): 13 stragglers ASSIGNED, 12 already OK, 20 skipped
  (tenant-admin not consented), 0 errors. Safe Site included.
- Standing audit documented (assign-exchange-role.sh --all --verify) + memory so no future
  session repeats the empty promise.
- Adds wiki/clients/safesite.md (tenant + 4-source endpoint inventory + investigation).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 20:07:28 -07:00
19b5ca299b sync: auto-sync from GURU-5070 at 2026-06-08 19:51:00
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-08 19:51:00
2026-06-08 19:51:46 -07:00
c0ef73920c fix(remediation): Safe Site Utility Services marked onboarded (was stale NO)
Live-verified 2026-06-08: Security Investigator + User Manager + Tenant Admin Graph
tiers all consented and reading (subscribedSkus/organization HTTP 200) on
safesitellc.com (71b4e637-...). The reference's 'NO' was stale (last touched 2026-04-20).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:36:43 -07:00
512ceb4727 feat(harness-guard): FATAL-promotion prerequisite — test matrix + pair-required conflict rule (VERSION 1.4.3)
Builds the false-positive/true-positive proof the plan requires before the guard can be
promoted to blocking, and fixes the one false-positive it surfaced.

- test-harness-guard.sh: 12-case matrix in a throwaway repo, runs the REAL guard, asserts
  WARN/clean for real conflicts/secrets/keys vs legit content (setext underlines, dividers,
  docs that mention a marker, encrypted sops, public keys, .example templates).
- harness-guard.sh: conflict rule now requires a real hunk (BOTH ^<<<<<<< AND ^>>>>>>>),
  dropping the lone =======$ trigger that false-positived on a 7-char setext underline /
  divider. Identical true-positive power (git writes all three markers); FP surface -> 0.
- /self-check: new harness.guard_selftest runs the matrix in an isolated temp repo (read-only
  vs the real tree) so guard correctness is continuously proven.

Verified 12/12 pass, true positives intact, real-tree FP surface = 0. FATAL flip (todo
f1c11d0d, on/after 2026-06-22) is now evidence-backed + one-step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:41:58 -07:00
cfa264947b sync: auto-sync from GURU-BEAST-ROG at 2026-06-08 08:40:52
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-06-08 08:40:52
2026-06-08 08:40:58 -07:00
31e5cbd370 sync: auto-sync from GURU-5070 at 2026-06-08 08:34:06
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-08 08:34:06
2026-06-08 08:34:11 -07:00
e180a463e2 feat(self-check): command-restates-standard lint (consistency category, VERSION 1.4.2)
Task 3 leftover. Adds a 'consistency' category to /self-check that catches a standard
drifting back into restating/contradicting the command that owns the rule -- the Syncro
timers failure mode (standard said 'always timer' while /syncro said 'outlier only').

Deterministic half: each manifest.command_standard_links pair's standard must still carry
its defer-to-SSOT pointer (must_reference regex). Lost pointer = WARN. Seeded with
syncro-billing (time-entry-protocol.md -> /syncro). Semantic contradiction pass delegated
to the model in SKILL.md, mirroring check_memory. Verified PASS; negative-tested.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:29:58 -07:00
edcbc5f7ea feat(self-check): harness smoke tests lock in the 1.4.0 invariants (VERSION 1.4.1)
Adds a 'harness' category to /self-check (Task 12, self-check half) so the harness-
optimization gains can't silently regress. All read-only / non-invasive:
- VERSION marker present + not older than manifest.harness.min_version
- skill-registry description budget (sum of all SKILL.md description: fields under
  registry_desc_budget_chars) -- the metric that catches Task 5 bloating back
- global deploy targets ~/.claude/skills + ~/.claude/commands populated (Mac-wipe failure)
- harness-guard.sh present + wired into sync.sh
- core scripts parse (bash -n on sync/guard/now-phoenix); now-phoenix.sh emits a valid date

Tunables in baseline/manifest.json 'harness' block. Verified 9/9 PASS; budget WARN
negative-tested at a synthetic over-budget value.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:24:28 -07:00
d4d24b5afd docs(harness): reconcile remaining GrepAI-first refs with wiki-first hierarchy
The context-lookup standard + CODING_GUIDELINES still said 'GrepAI First' unconditionally.
Updated both to: wiki first for known-entity facts; GrepAI/Grep-before-read for code+discovery.
Keeps the search-before-read token discipline; removes the wiki overlap. Completes the
positioning fix started in e8a689b0 (all 4 sources now consistent: CORE, EXTENDED, standard,
guidelines).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:15:25 -07:00
e8a689b03e docs(harness): demote GrepAI below the wiki in recall hierarchy
Resolves the contradiction between CORE (wiki-first) and EXTENDED (which said
'use GrepAI first for any context lookup'). New order: wiki for known entities ->
GrepAI for code call-graphs / discovery / un-compiled detail -> raw reads. Keeps
GrepAI's irreplaceable code-search value; removes the redundant wiki overlap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:14:20 -07:00
68ad1dbd40 feat(harness): P1+P2+P3 harness optimization complete (VERSION 1.4.0)
Task 5  one-line registry descriptions on the 8 biggest skills (remediation-tool,
        gc-audit, packetdial, memory-dream, human-flow, self-check, impeccable,
        mailprotector); skill-description injection ~3320 -> ~2123 tokens (~36%),
        keyword triggers preserved, frontmatter valid.
Task 7  thinned /save + /sync bodies to point at sync.sh (single source) instead of
        re-documenting internals; Phase 0 save-vs-sync, cross-user notes, exit-75
        reporting kept verbatim; mechanical sync never depends on an LLM step.
Task 10 session-logs/YYYY-MM/ forward convention for new logs (scoped-grep recall,
        no monolithic index); existing flat logs untouched (grep covers both).
Bash    now-phoenix.sh helper (fixed UTC-7 epoch math; replaces unreliable
        TZ=America/Phoenix date that silently returns UTC on Git-Bash).

P0 (1.2.0) + Task 6 CLAUDE split + Task 9 delegation (1.3.0) already shipped.
Spec: specs/claudetools-harness-optimization/plan.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 08:11:03 -07:00
60f1a844f3 sync: auto-sync from GURU-5070 at 2026-06-08 08:01:36
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-08 08:01:36
2026-06-08 08:01:41 -07:00
d2bb8d3c38 sync: auto-sync from GURU-5070 at 2026-06-08 07:55:26
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-08 07:55:26
2026-06-08 07:55:31 -07:00