Enforce unique doc filenames and simple wiki-links (#109)

## Summary
- Rename section index files to match their titles (tutorials.md, reference.md, how-to.md, explanation.md) so all filenames are unique
- Convert all ~47 path-based wiki-links to simple filename format across 15 files
- Update doc-filenames task to no longer skip index.md files
- Update doc-links task to reject path-based links containing '/'

This ensures all wiki-links work correctly in obsidian.nvim by making links resolvable by filename alone.

## Testing
- `mise run doc-filenames` - all unique
- `mise run doc-links` - no broken or path-based links
- `mise run doc-titles` - no duplicates

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/109
This commit is contained in:
Erich Blume 2026-02-04 17:21:34 -08:00
commit 3da455e49c
45 changed files with 176 additions and 125 deletions

View file

@ -24,4 +24,4 @@ Managed via `Brewfile` and `mise.toml` in the blumeops repo.
## Related
- [[indri]] - Server accessed from gilbert
- [[cluster | Cluster]] - Remote k8s access
- [[cluster|Cluster]] - Remote k8s access

View file

@ -12,9 +12,9 @@ All devices connected via [Tailscale](https://login.tailscale.com/) tailnet `tai
| Host | Description | Card |
|------|-------------|------|
| **Indri** | Mac Mini M1, 2020 - Primary server | [[indri | Details]] |
| **Gilbert** | MacBook Air M4, 2025 - Workstation | [[gilbert | Details]] |
| **[[sifaka | Sifaka]]** | Synology NAS - Storage & backups | [[sifaka | Details]] |
| **Indri** | Mac Mini M1, 2020 - Primary server | [[indri|Details]] |
| **Gilbert** | MacBook Air M4, 2025 - Workstation | [[gilbert|Details]] |
| **[[sifaka|Sifaka]]** | Synology NAS - Storage & backups | [[sifaka|Details]] |
| **Mouse** | MacBook Air M2 - Allison's laptop | - |
| **UniFi** | UniFi Express 7 - Home WiFi | - |
| **Dwarf** | iPad Air - Employer-provided, off tailnet | - |
@ -22,4 +22,4 @@ All devices connected via [Tailscale](https://login.tailscale.com/) tailnet `tai
## Related
- [[tailscale]] - Network configuration
- [[routing | Routing]] - Service URLs
- [[routing|Routing]] - Service URLs

View file

@ -26,11 +26,11 @@ Primary BlumeOps server. Mac Mini M1 (2020).
- [[zot]] - Container registry
- [[jellyfin]] - Media server
- [[borgmatic]] - Backup system
- [[alloy | Alloy]] - Metrics/logs collector
- [[alloy|Alloy]] - Metrics/logs collector
- [[caddy]] - Reverse proxy for `*.ops.eblu.me`
**Kubernetes (via minikube):**
- [[apps | All k8s applications]]
- [[apps|All k8s applications]]
**GUI Applications (manual start required):**
- Docker Desktop - Container runtime for minikube

View file

@ -38,7 +38,7 @@ DNS points to indri's Tailscale IP (100.98.163.89). TLS via Let's Encrypt (ACME
| [[navidrome]] | https://dj.ops.eblu.me | Music streaming |
| [[jellyfin]] | https://jellyfin.ops.eblu.me | Media server |
| [[postgresql]] | pg.ops.eblu.me:5432 | Database |
| [[sifaka | Sifaka]] | https://nas.ops.eblu.me | NAS dashboard |
| [[sifaka|Sifaka]] | https://nas.ops.eblu.me | NAS dashboard |
## Tailscale-Only Services

View file

@ -58,5 +58,5 @@ Pulumi uses OAuth client from 1Password (blumeops vault):
## Related
- [[routing | Routing]] - Service URLs
- [[hosts | Hosts]] - Device inventory
- [[routing|Routing]] - Service URLs
- [[hosts|Hosts]] - Device inventory