diff --git a/session-logs/2026-06/2026-06-19-mike-selfcheck-remediation.md b/session-logs/2026-06/2026-06-19-mike-selfcheck-remediation.md new file mode 100644 index 00000000..92187c38 --- /dev/null +++ b/session-logs/2026-06/2026-06-19-mike-selfcheck-remediation.md @@ -0,0 +1,75 @@ +# 2026-06-19 — Self-Check Remediation + Post-Split Fleet Coordination + +## User +- **User:** Mike Swanson (mike) +- **Machine:** GURU-5070 +- **Role:** admin + +## Session Summary + +Post-cutover harness verification and remediation on GURU-5070, following the 2026-06-18 repo split (history rewrite; projects → submodules; bulk data → Gitea-Storage/Jupiter). The session began with routine `/sync` runs (clean), then a fleet broadcast asking all machines to verify config after the submodule changes, then a full `/self-check` on this machine which surfaced a RED grade. + +The initial `/self-check` graded RED on one FAIL — the `/autotask` command was missing from the repo. Investigation showed `/autotask` (Autotask PSA read-ops, ~20KB, verified 2026-05-27) existed only in the global `~/.claude/commands/` deploy with zero git history — a casualty of the history rewrite. The printed fix ("restore via /sync") was wrong because the file isn't in the repo and `/sync` only deploys repo→global. Mike decided to **remove autotask from the manifest** rather than recover it (Syncro is the fleet-default PSA). Edited `manifest.json` to drop `autotask` from required `commands[]`, which cleared the FAIL (RED → AMBER). + +Mike then asked to fix the three remaining AMBER WARNs and sync. Fixed: (1) installed the dev-alerts post-commit hook from `.claude/hooks/post-commit.template`; (2) added the missing `[Prefer SSH over RMM]` index line to `MEMORY.md` for the orphaned `feedback_prefer_ssh_over_rmm.md`; (3) trimmed the skill-registry description budget from 12,742 chars back under the 10,500 budget by tightening 14 verbose SKILL.md `description:` fields (moving trigger lists/examples into bodies, preserving routing keywords). The budget trim was iterative — measured against the authoritative self-check awk until it passed with margin. + +The remediation sync converged with **GURU-KALI**, which had been doing the identical cleanup concurrently (commit `cd478ca` dropped `/autotask`; `416f2a3` trimmed the same skill descriptions). The rebase merged cleanly. KALI's manifest edit was better than the plain removal: it added a `capability_commands` block documenting `/autotask` as a gated PSA command (Syncro is default, absence is INFO not FAIL). Verified no conflict markers landed and the merged manifest was coherent. Final `/self-check` graded **GREEN (PASS 83 / WARN 0 / FAIL 0)**. + +Two coordination broadcasts went out: one early (verify harness config after the split — reclone per RECLONE.md if pre-split, then /self-check), paired with a durable rollout todo; one at the end (self-check baseline fixes pushed at HEAD b668430 — /sync then /self-check for GREEN). Also confirmed this clone's compliance via `migrate-to-submodules.sh --check` (COMPLIANT — shares history with rewritten origin/main) before syncing, prompted by GURU-BEAST-ROG's broadcast warning not to sync from an old disjoint clone. + +## Key Decisions + +- **Remove `/autotask` from the manifest rather than recover the file** (Mike's call): Syncro is the fleet-default PSA, so `/autotask` is intentionally not in the shared repo and absent on Syncro machines. The dropped file was a real history-rewrite casualty but not worth re-adding fleet-wide. +- **Preferred KALI's `capability_commands` framing over plain deletion**: documenting *why* `/autotask` is gated (capability, INFO-not-FAIL) beats silently removing it — a gated command stays visible in the manifest instead of looking dropped. +- **Verified clone compliance before every sync this session**: FF-ancestry check + `migrate --check`, because GURU-BEAST-ROG's broadcast warned that syncing from an old disjoint clone causes non-FF rejects. This clone was confirmed compliant (shares rewritten history). +- **Trimmed registry descriptions by moving triggers into SKILL.md bodies, not deleting keywords**: routing depends on trigger phrases in the description, so the cut preserved keywords while removing verbose examples/parentheticals. +- **Paired the rollout broadcast with a coord todo**: a message can be read-and-forgotten; the todo (`ab3bab84`) persists as the fleet-rollout backstop. + +## Problems Encountered + +- **`/self-check` RED from `/autotask` missing, with a misleading fix hint.** The printed "restore via /sync" was wrong (file not in repo; /sync deploys repo→global only). Diagnosed via `git log --all` (zero history) → confirmed history-rewrite casualty. Resolved by removing from manifest per Mike. +- **Registry-budget trim undershot twice.** First pass (6 skills) left 11,327; second (3 more) left 10,998; third (3 more) 10,888; needed several more iterations to clear 10,500. Resolved by re-measuring against the exact self-check awk after each batch until GREEN with ~margin. +- **Concurrent identical edits from GURU-KALI on the same files.** Both machines trimmed the same SKILL.md descriptions and dropped `/autotask` simultaneously. Risk of rebase conflict. Resolved cleanly by the rebase; verified no conflict markers (`<<<<<<<`) and coherent merged manifest afterward. +- **Transient "divergent skill" WARNs after editing repo SKILL.md.** Repo copies differed from stale global `~/.claude` copies. Resolved automatically by sync's Phase 5c skill-deploy (15 skills synced to global); cleared on the post-sync self-check. +- **Bash heredoc ordering / py.sh hang.** A `mkdir -p` placed after a heredoc redirect failed (No such file or directory); a `py.sh -` heredoc went to background. Resolved by ordering `mkdir` first and using explicit script paths. + +## Configuration Changes + +Modified: +- `.claude/skills/self-check/baseline/manifest.json` — removed `autotask` from `commands[]`; merged with KALI's added `capability_commands` block (autotask gated). +- `.claude/memory/MEMORY.md` — added `[Prefer SSH over RMM]` index line. +- 14 SKILL.md `description:` fields trimmed: agy, b2, bitdefender, coord, discord-dm, frontend-design, grok, mailprotector, onboard365, rmm-audit, rmm-search, stop-slop, unifi-wifi, vault. + +Created: +- `.git/hooks/post-commit` — installed from `.claude/hooks/post-commit.template` (not tracked; per-clone). + +## Credentials & Secrets + +None surfaced, created, or rotated this session. + +## Infrastructure & Servers + +- Gitea (internal): `http://172.16.3.20:3000` — sync remote. +- Coord API: `http://172.16.3.30:8001/api/coord` — broadcasts + todo. +- Machines referenced: GURU-5070 (this), GURU-KALI (concurrent identical cleanup), GURU-BEAST-ROG (re-clone broadcast author), HOWARD-HOME (Cascades RF report). + +## Commands & Outputs + +- `bash .claude/scripts/migrate-to-submodules.sh --check` → `COMPLIANT — shares history with rewritten origin/main`. +- `git merge-base --is-ancestor HEAD origin/main` → YES (FF-safe; proves not a disjoint old clone). +- Registry budget probe (matches self-check awk): 12,742 → final under 10,500. +- `bash .claude/skills/self-check/scripts/self-check.sh report` → final **GREEN PASS 83 WARN 0 FAIL 0 INFO 28**. +- Conflict-marker grep post-rebase: only `===` echo banners in `onboard365.sh`, no real `<<<<<<<` markers. + +## Pending / Incomplete Tasks + +- Other fleet machines must `/sync` then `/self-check` to confirm GREEN (broadcast `cf7d3302` + rollout todo `ab3bab84` track this). +- `/autotask` command file survives only in this machine's global `~/.claude/commands/` deploy; intentionally not recovered to the repo. If an Autotask-PSA machine ever needs it, it must be re-added under the gated capability, not the shared baseline. +- Howard's deferred Cascades items (6GHz WPA3 conversion on CSCNet, 3a/3b channel-plan) await a supervised window — not this session's work. + +## Reference Information + +- Final HEAD: `b668430` (sync auto-commit, rebased onto KALI's work). +- Key commits: `c23bdc2` (my remediation, pre-rebase), `cd478ca` (KALI drop /autotask), `416f2a3` (KALI skill trims), `dafcec5` (migrate script). +- Coord broadcasts: `7fd1e9aa` (verify config after split), `cf7d3302` (self-check fixes pushed). Rollout todo: `ab3bab84`. +- Budget config: `manifest.harness.registry_desc_budget_chars = 10500`.