Extracted abstract or opening context
## 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.
## 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
Why this is not always a full paper yet
Corpus pages are public-safe readers for discovered workspace artifacts. They are not automatically final papers. A corpus item becomes a polished paper only after the editable source, evidence checkpoints, references, figures, render path, and release status are attached through the paper schema.