Grand Diomande Research · Full HTML Reader

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

Agents That Account for Themselves architecture technical paper candidate score 36 .md

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