SEA-1.4-COMPLETE
``` SKILL.md edit detected (mtime + hash) │ ▼ ┌─────────────────────┐ │ skill_versioner.py │ ← bump_skill() records new version │ versions.json │ saves snapshot for rollback │ snapshots/ │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ skill_watcher.py │ ← reload_skill_embedding() swaps single row │ (daemon or cron) │ in embedding-cache.npz └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ reload-signal.json │ ← signals downstream consumers └──────────┬──────────┘ │ ┌─────┴─────┐ ▼ ▼ tier1_router tier2_s
Full Public Reader
SEA-1.4-COMPLETE
## Summary
Built skill versioning and hot-reload for all 13 SEA skill entities. The versioner tracks SKILL.md content via SHA-256 hashing with semantic versioning (major.minor.patch), maintains snapshots for rollback, and supports diff. The watcher provides polling-based change detection that auto-bumps versions, surgically re-embeds changed skills (single-row cache update), and signals downstream consumers (tier1_router, tier2_scorer) to invalidate their in-memory caches without restart.
## Changes
- File: `[home-path]` — Created. Core versioning engine: init, check, bump, diff, rollback, history, stale detection. Stores versions.json + snapshots/ per skill in skill-memory.
- File: `[home-path]` — Created. Polling-based file watcher with daemon mode, one-shot check, and manual reload. Single-row embedding cache updates. Reload signal file for cache invalidation.
- File: `[home-path]` — Created. 9-test suite covering hash computation, version bumping, init/check/history/diff, reload signals, and all-skill initialization.
- File: `[home-path]` — Modified. Added in-memory embedding cache with mtime-based auto-reload. Added `get_cache_timestamp()`. `load_embeddings()` now accepts `force_reload` param.
- File: `[home-path]` — Modified. Added reload signal polling via `_check_reload_signal()` called before every `route_message()`. Consumes signal file and force-reloads embeddings.
- File: `[home-path]` — Modified. Added profile cache with reload signal invalidation via `_check_profile_reload()`. Changed skills get their cached profiles dropped.
Architecture
SKILL.md edit detected (mtime + hash)
│
▼
┌─────────────────────┐
│ skill_versioner.py │ ← bump_skill() records new version
│ versions.json │ saves snapshot for rollback
│ snapshots/ │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ skill_watcher.py │ ← reload_skill_embedding() swaps single row
│ (daemon or cron) │ in embedding-cache.npz
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ reload-signal.json │ ← signals downstream consumers
└──────────┬──────────┘
│
┌─────┴─────┐
▼ ▼
tier1_router tier2_scorer
(force-reload (invalidate
embeddings) profile cache)## RTD Verification
- [x] Structure: all files present (versioner, watcher, test, plus updates to 3 existing modules)
- [x] Compilation: `python3 -c "import skill_versioner; import skill_watcher"` — clean
- [x] Integration: all 5 SEA modules import cleanly, no broken refs
- [x] Content: versioning (init, check, bump, diff, rollback, history), hot-reload (watcher, signal, cache invalidation)
- [x] User Journey: `skill_versioner.py check --all` shows all 13 at v1.0.0; `test_versioning.py` 9/9 pass
- [x] Deployment: committed with conventional commit
## Cross-Pollination
N/A — no cross-track dependencies
Promotion Decision
Promote into a technical note or architecture paper with implementation anchors.
Source Anchor
skill-entity-architecture/SEA-1.4-COMPLETE.md
Detected Structure
Method · Code Anchors · Architecture