session-log: 2026-05-25 update — wiki-lint run + backlink fixes + sync Phase 0
First /wiki-lint run: found and fixed 40+ malformed [[wiki/...]] backlinks across 7 articles (systemic agent format error). Fixed stale msp-tools/ guru-rmm path. Updated lint skill with slug normalization. Added /sync Phase 0 uncommitted session log detection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -390,3 +390,93 @@ No infrastructure changes. Key findings from seeding pass:
|
||||
- Wiki: 24 client articles, 7 project articles, 4 system articles, overview recompiled
|
||||
- Western Tire SSL check: ix.azcomputerguru.com cPanel > SSL/TLS > AutoSSL > westerntire.com
|
||||
- Neptune cert renewal detail: wiki/clients/internal-infrastructure.md
|
||||
|
||||
---
|
||||
|
||||
## Update: 00:15 PT — /wiki-lint run + backlink fixes + /sync Phase 0 (Mike Swanson / GURU-5070)
|
||||
|
||||
### User
|
||||
- **User:** Mike Swanson (mike)
|
||||
- **Machine:** GURU-5070 (DESKTOP-0O8A1RL)
|
||||
- **Role:** admin
|
||||
- **Session span:** continuation of 2026-05-25 session
|
||||
|
||||
### Session Summary
|
||||
|
||||
Ran `/wiki-lint` for the first time after the full seeding pass. The lint check revealed a systemic backlink format issue: all seeded articles written by agents this session used `[[wiki/clients/slug.md]]` format (with `wiki/` prefix and `.md` extension) instead of the correct `[[clients/slug]]` convention defined in standards.md. The checker flagged 40+ false-positive "broken" links across 7 files including overview.md, anaise.md, furrier.md, internal-infrastructure.md, khalsa.md, kittle.md, and western-tire.md.
|
||||
|
||||
A batch sed pass fixed all malformed backlinks across the affected files. Two real broken links were also addressed: `[[projects/msp-tools/guru-rmm]]` in internal-infrastructure.md was corrected to `[[projects/gururmm]]` (stale path from before the repo reorganization). The `[[systems/neptune]]` reference was left as-is — it's a valid forward reference to a not-yet-seeded system article and is explicitly tracked in the compilation queue.
|
||||
|
||||
The lint skill itself was updated to add slug normalization before file-existence checking, so future runs strip `wiki/` prefixes and `.md` extensions from slugs before determining whether a link is broken. This prevents the false-positive flood from recurring if agents use wrong format again. Additional lint findings: 2 missing articles with empty session-log dirs (`lens-auto-brokerage`, `sandteko-machinery`), 10 client/project directories with no logs and no wiki (awareness-only, not errors).
|
||||
|
||||
The `/sync` command was then updated with a Phase 0 check. Before invoking `sync.sh`, `/sync` now scans `git status --porcelain` for untracked or modified session log files across all log directories. If any are found, it lists them and offers to run `/save` instead, defaulting toward the save path. This prevents session logs from being auto-committed with generic "sync: auto-sync" messages when substantive work has been done.
|
||||
|
||||
### Key Decisions
|
||||
|
||||
- Batch sed over per-article edits for the backlink fix — 7 files, 40+ occurrences; sed with capture groups handled all patterns in one pass. The Edit tool would have required 40+ individual operations.
|
||||
- Left `[[systems/neptune]]` broken — fixing it would mean either seeding neptune (out of scope) or removing the reference (loses navigational value). Compilation queue entry makes the intent explicit.
|
||||
- Lint skill normalization added after the fact rather than redesigning the link format — the correct fix is normalization at check time + agents using the right format going forward; both are now in place.
|
||||
- `/sync` escalation defaults to /save — when unsaved logs exist, the user intent is almost always to capture them properly; making proceed-without-save the explicit override (not the default) matches that intent.
|
||||
|
||||
### Problems Encountered
|
||||
|
||||
- Grep `-P` flag unavailable in Git Bash on Windows — initial backlink extraction using `grep -oP '\[\[\K[^\]]+' ` failed with "supports only unibyte and UTF-8 locales". Switched to `-o '\[\[[^]]*\]\]' | sed` which worked correctly.
|
||||
- Lint check produced 40+ false positives — all from the wrong `[[wiki/...]]` format rather than actual missing articles. Required reading the source of each class of "broken" link to distinguish real vs. format issues before writing the report.
|
||||
|
||||
### Configuration Changes
|
||||
|
||||
**Modified files:**
|
||||
- `wiki/clients/anaise.md` — backlink format corrected (`[[wiki/index]]` → `[[index]]`)
|
||||
- `wiki/clients/furrier.md` — backlink format corrected (`[[wiki/clients/western-tire.md]]` → `[[clients/western-tire]]`)
|
||||
- `wiki/clients/internal-infrastructure.md` — backlink format corrected + stale `[[projects/msp-tools/guru-rmm]]` → `[[projects/gururmm]]`
|
||||
- `wiki/clients/khalsa.md` — backlink format corrected (`[[wiki/patterns/apple-domain-join]]` → `[[patterns/apple-domain-join]]`, `[[wiki/index]]` → `[[index]]`)
|
||||
- `wiki/clients/kittle.md` — backlink format corrected
|
||||
- `wiki/clients/western-tire.md` — backlink format corrected
|
||||
- `wiki/overview.md` — backlink format corrected throughout (largest change — all project/client/system refs in Backlinks section)
|
||||
- `.claude/commands/wiki-lint.md` — slug normalization added to Step 3 backlink check
|
||||
- `.claude/commands/sync.md` — Phase 0 uncommitted session log check added
|
||||
|
||||
### Credentials & Secrets
|
||||
|
||||
None.
|
||||
|
||||
### Infrastructure & Servers
|
||||
|
||||
No infrastructure changes.
|
||||
|
||||
### Commands & Outputs
|
||||
|
||||
```bash
|
||||
# Lint check — found broken links
|
||||
git status --porcelain | grep -E '\bsession-logs/.*\.md$' # Phase 0 check pattern
|
||||
|
||||
# Batch backlink fix (run per affected file)
|
||||
sed -i 's|\[\[wiki/clients/\([^]]*\)\.md\]\]|\[\[clients/\1\]\]|g' <file>
|
||||
sed -i 's|\[\[wiki/projects/\([^]]*\)\.md\]\]|\[\[projects/\1\]\]|g' <file>
|
||||
sed -i 's|\[\[wiki/index\]\]|\[\[index\]\]|g' <file>
|
||||
|
||||
# Verify clean
|
||||
grep -rc '\[\[wiki/' wiki/ # all zeros after fix
|
||||
|
||||
# Commits
|
||||
3146f86 wiki: fix malformed backlinks across all articles
|
||||
b6684d3 wiki-lint: improve backlink checker to normalize slugs before validation
|
||||
db5ebb1 sync: add Phase 0 uncommitted session log check
|
||||
```
|
||||
|
||||
### Pending / Incomplete Tasks
|
||||
|
||||
- URGENT: Neptune SSL cert expires 2026-05-31 (now 6 days)
|
||||
- URGENT: Western Tire SSL — verify AutoSSL on IX (may be expired)
|
||||
- HIGH: Kittle WS2025 EVAL license, no backup, no firewall
|
||||
- HIGH: Kittle-Design Ken inbox rule (potential active compromise)
|
||||
- MEDIUM: Seed wiki/systems/neptune.md (removes last real broken backlink)
|
||||
- LOW: Seed wiki/systems/beast.md (Discord bot host)
|
||||
- LOW: Investigate client stubs with no logs: ace-portables, at-trebesch, azcomputerguru-site, gurushow, mvan-inc
|
||||
|
||||
### Reference Information
|
||||
|
||||
- Commits: 3146f86 (backlink fixes), b6684d3 (wiki-lint update), db5ebb1 (sync Phase 0)
|
||||
- Lint findings: 0 stale articles, 0 index gaps, 2 missing (empty stubs), 2 real broken links (1 fixed, 1 expected)
|
||||
- wiki-lint skill: `.claude/commands/wiki-lint.md`
|
||||
- sync skill: `.claude/commands/sync.md`
|
||||
|
||||
Reference in New Issue
Block a user