Hermes Agent
8bee1b65ea
feat(mosaic): durable pre-update snapshot + verify net + restore CLI ( #791 PR2)
...
ci/woodpecker/pr/ci Pipeline failed
Third, independent recovery layer for keep-mode upgrades (Part of #791 ). PR1's
manifest keeps the sync out of operator paths and the ephemeral /tmp snapshot
rolls back a mid-write crash; this adds the case neither covers — a "successful"
upgrade that a manifest/logic bug silently let touch an operator file.
- install.sh make_durable_snapshot(): before any mutation, copy the operator-owned
surface that exists to $XDG_STATE_HOME/mosaic/backups/pre-update-<UTC-ts>/
(0700 dirs / 0600 files, umask 077 scoped + restored). Fail-open; retention
MOSAIC_BACKUP_RETENTION (default 5).
- install.sh verify_operator_surface(): post-sync, restore any operator file the
upgrade diverged/removed and warn loudly (a divergence = manifest bug). Honors
intentional migration removals; refuses to restore through a symlink (CWE-59);
guards mkdir under set -e.
- mosaic restore (TS): --list (default dry-run), --from <ts> confirmation-gated
restore. Strict timestamp selector (CWE-22), O_NOFOLLOW 0600 writes (CWE-59),
containment + managed-dir checks via secure-file.ts. Counts/paths only — never
emits file contents (secrev).
- Gates: typecheck/lint/format ✓; mosaic vitest 1252; restore.spec 30;
bash gates durable-snapshot 41 / manifest-guard 193 / rollback 28 / migration 21.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-16 19:04:14 -05:00
32a0ffba13
feat(mosaic): manifest-owned upgrade guard so updates never wipe operator config ( #791 ) ( #802 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-16 23:01:26 +00:00
adad486b6f
fix(fleet): enforce exact comms authority ( #787 )
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-07-16 00:32:23 +00:00
94e5cd7a81
ci: eliminate cold pnpm install via pre-baked CI base image (Phase 1) ( #635 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-06-22 22:50:21 +00:00
bf2a6745c8
fix(install): preserve user fleet data on re-seed + refresh active units (CRITICAL) ( #632 )
...
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-22 21:38:09 +00:00
528700ceea
feat(framework): P6 — docs + compliance matrix + resident-budget CI ( #607 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/tag/publish Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-22 02:20:35 +00:00
bb7d549080
feat(framework): P4 — upgrade-safe Constitution migration (both installers) ( #590 )
...
ci/woodpecker/push/ci Pipeline is pending
ci/woodpecker/push/publish Pipeline is pending
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-21 23:03:48 +00:00
c9cfe36204
docs(framework): P3.1 fast-follow — governance wording + gate scope + bare-launch note ( #577 )
...
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/push/publish Pipeline was canceled
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-21 18:56:50 +00:00
5118be74cb
feat(framework): P3 — extract Constitution (L0) + gut AGENTS dispatcher ( #575 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-21 03:20:32 +00:00
bf24066a49
feat(framework): P1+P2 — public sanitization + blocking CI gate ( #572 )
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-06-21 02:40:11 +00:00
Jason Woltje
b38cfac760
feat: integrate framework files into monorepo under packages/mosaic/framework/
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Moves all Mosaic framework runtime files from the separate bootstrap repo
into the monorepo as canonical source. The @mosaic/mosaic npm package now
ships the complete framework — bin scripts, runtime configs, tools, and
templates — enabling standalone installation via npm install.
Structure:
packages/mosaic/framework/
├── bin/ 28 CLI scripts (mosaic, mosaic-doctor, mosaic-sync-skills, etc.)
├── runtime/ Runtime adapters (claude, codex, opencode, pi, mcp)
├── tools/ Shell tooling (git, prdy, orchestrator, quality, etc.)
├── templates/ Agent and repo templates
├── defaults/ Default identity files (AGENTS.md, STANDARDS.md, SOUL.md, etc.)
├── install.sh Legacy bash installer
└── remote-install.sh One-liner remote installer
Key files with Pi support and recent fixes:
- bin/mosaic: launch_pi() with skills-local loop
- bin/mosaic-doctor: --fix auto-wiring for all 4 harnesses
- bin/mosaic-sync-skills: Pi as 4th link target, symlink-aware find
- bin/mosaic-link-runtime-assets: Pi settings.json patching
- bin/mosaic-migrate-local-skills: Pi skill roots, symlink find
- runtime/pi/RUNTIME.md + mosaic-extension.ts
Package ships 251 framework files in the npm tarball (278KB compressed).
2026-04-01 21:19:21 -05:00