Per the 2026-05-25 re-audit + Mike's decision (option b): the safe-rollout
promotion gating these docs describe/test is NOT live (update_rollouts /
update_health_metrics written-but-never-read; crash detection dead until the
unmerged BUG-002 fix). Added a [WARNING] STATUS banner to the test plan, verify
script, and the two 'complete' summaries so they aren't trusted as validating a
working feature. Automation is a roadmap Phase-2 item requiring a full re-spec.
Saturn is decommissioned. The GuruRMM build server at 172.16.3.30
is correctly named 'gururmm-build'.
Also fixed wiki standards template that incorrectly listed Neptune
as 172.16.3.30. Neptune is actually the Exchange server at Dataforth
(172.16.3.11), not the GuruRMM build server.
Updated files:
- PHASE_6_TEST_PLAN.md (all Saturn references)
- verify-rollout-system.sh (comments)
- session-logs/2026-05-25-session.md (all Saturn references)
- .claude/specs/wiki-layer/standards.md (Neptune example)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Created comprehensive test plan covering:
- Test 1: Beta-first build workflow
- Test 2: Health monitoring and crash detection
- Test 3: Promotion workflow with health gates
- Test 4: Rollback and force-downgrade
- Test 5: Dashboard UI testing
- Test 6: End-to-end integration testing
Added verification script for Saturn:
- Checks all 5 phases implementation
- Verifies database tables, source files, routes
- Validates build artifacts and service status
- Provides clear pass/fail status
Usage: Run verify-rollout-system.sh on Saturn before Phase 6 testing.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Problem: macOS hostname command returns 'Mikes-MacBook-Air.local' but
coord messages are addressed to 'Mikes-MacBook-Air/claude-main'. Hook
script was querying for wrong session ID, so messages never displayed.
Fix: Strip .local suffix using bash parameter expansion before building
session ID.
Result: Coord messages now display correctly on macOS machines.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The submodule was described as a "stale reference copy"; it actually
tracks the active azcomputerguru/gururmm repo (the pinned commit lagging
main is normal, not stale). Also disambiguates the abandoned hyphenated
`guru-rmm` Gitea duplicate from the submodule, and notes that fresh
clones need `git submodule update --init` (now automatic in /sync).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 1a used `git submodule foreach`, which only visits initialized
submodules — a fresh machine silently skipped population while the script
still reported success. It now explicitly inits + populates each submodule
declared in .gitmodules (inheriting credentials from the parent origin URL
so non-interactive init authenticates; .gitmodules stays credential-free),
then advances each to its remote branch tip. Reporting reflects the real
configured count.
Also removes the orphaned `projects/solverbot` gitlink (mode 160000),
committed without a .gitmodules entry, which made `git submodule status`
throw `fatal: no submodule mapping`. solverbot's own Gitea repo is untouched.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Before invoking sync.sh, /sync now scans for untracked or modified
session log files across session-logs/, clients/*/session-logs/, and
projects/*/session-logs/. If any are found, it warns the user and
offers to run /save instead so logs get a proper narrative commit
rather than a generic "sync: auto-sync" message.
Escalation behavior: default toward /save; user can override to
proceed with plain sync if they explicitly choose.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Batch-replace [[wiki/clients/slug.md]] → [[clients/slug]] format
throughout overview.md and 6 client articles. The seeding agents used
the full path+extension format; correct convention is type/slug only.
Also fixes [[projects/msp-tools/guru-rmm]] → [[projects/gururmm]]
stale path in internal-infrastructure.md.
Post /wiki-lint run: 0 remaining format violations, 2 legitimate
broken links left (systems/neptune — unseeded; compilation queue entry).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
overview.md recompiled with all 24 client articles and 7 project articles.
Captures ~80 action items sorted by priority; top urgent items: Neptune
cert (2026-05-31), Western Tire SSL (2026-05-30), Kittle eval license.
.claude/commands/wiki-lint.md: new skill — scans clients/ and projects/
for directories with session-logs but no wiki article, checks broken
[[backlinks]], stale last_compiled dates, index gaps, and stale queue
entries. Emits a structured lint report.
.claude/commands/save.md: added Phase 4 unseeded-wiki check — after sync,
if the session log was written for a client/project with no wiki article,
emit a /wiki-compile reminder. Informational only, no blocking behavior.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added wiki change detection and categorization in sync.sh
- Shows articles by type (clients/projects/systems/patterns/meta)
- Displays status (added/modified/deleted) and counts
- Updated sync.md and save.md documentation