efe41abde0
Tracker #79686 P3. Every skill mutation — curator, agent, or user — now appends one entry to the append-only JSONL ledger at ~/.hermes/skills/.curator_ledger.jsonl, with per-file before/after manifests whose contents are stored content-addressed (sha256-deduped) under ~/.hermes/.curator_backups/blobs/. - tools/skill_ledger.py: append/list/get, blob store, actor derivation (curator|agent|user), single-entry rollback that takes a pre-rollback safety entry first and FAILS CLOSED when that capture fails (consistent with the whole-run tarball rollback hardening from #63366). Path containment check so a hand-edited ledger can't write outside HERMES_HOME. - Hooked all three choke points: skill_manage() dispatch (all actors, delete intent recorded via absorbed_into/archived evidence), archive_skill()/restore_skill(), and curator auto-transitions (tagged actor=curator via a ContextVar override). - Ledger failures never block the mutation — telemetry, not a gate. Config gate skills.ledger (default true). - hermes curator ledger [--skill NAME] [--limit N] and hermes curator rollback <entry-id> (whole-tree snapshot rollback unchanged). - Optional TTL purge of skills/.archive/: curator.archive_ttl_days (default 0 = never) + explicit hermes curator purge, recorded in the ledger with before-blobs so purges stay recoverable. - Docs: curator.md sections on the ledger, single-edit rollback, and archive TTL purge. Curator invariants unchanged: only created_by:agent skills auto-transition, never hard-delete autonomously, pinned exempt; foreground user deletes stay hard-delete (and are now recoverable via the ledger). Closes #45778, #50875. Tests adapted from #50261 by @yu-xin-c.
Website
This website is built using Docusaurus, a modern static website generator.
Installation
yarn
Local Development
yarn start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
Build
yarn build
This command generates static content into the build directory and can be served using any static contents hosting service.
Deployment
Using SSH:
USE_SSH=true yarn deploy
Not using SSH:
GIT_USER=<Your GitHub username> yarn deploy
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.
Diagram Linting
CI runs ascii-guard to lint docs for ASCII box diagrams. Use Mermaid (````mermaid`) or plain lists/tables instead of ASCII boxes to avoid CI failures.