mirror of
https://github.com/garrytan/gbrain.git
synced 2026-07-30 19:49:14 +00:00
* feat(self-upgrade): decision/cache/snooze foundation + atomic binary self-update Pure decideSelfUpgrade (invocation + autopilot channels), atomic untrusted cache + escalating snooze + shared marker grammar (forged-marker rejection), semver helpers, and real darwin-arm64/linux-x64 binary self-update (download -> fsync -> smoke -> atomic rename; failure leaves old binary intact). Tests incl. real-HTTP-server swap E2E. * feat(self-upgrade): check-update cache/markers, self-upgrade command, CLI heartbeat hook check-update gains gstack-style cache/snooze/markers + refreshUpdateCache + exported fetchLatestRelease. New 'gbrain self-upgrade' command. cli.ts emits the update marker on every invocation (cache-read-only hot path, detached single-flight refresh, skip-set + recursion guard + NODE_ENV=test gate). * feat(self-upgrade): autopilot silent channel, doctor check, runPostUpgrade setup, config + identity marker autopilot opt-in silent channel (auto+quiet+idle, swap-only+breadcrumb+exit-relaunch) + installSystemd Restart=always + migrateSystemdUnitToRestartAlways. doctor self_upgrade_health. runPostUpgrade applySelfUpgradeSetup (one-time consent + systemd rewrite). init defaults mode=notify. config self_upgrade plane + KNOWN_CONFIG_KEYS. get_brain_identity carries update marker. * docs(self-upgrade): gbrain-upgrade agent skill, RESOLVER/manifest, auto-update doc reversal, HEARTBEAT New skills/gbrain-upgrade agent flow (mirror gstack-upgrade) wired into RESOLVER + manifest. upgrades-auto-update.md reversed to document opt-in auto + conservative gates. HEARTBEAT self-upgrade --check-only line. llms-full regenerated. * chore: bump version and changelog (v0.42.12.0) Self-upgrading gbrain: invocation-riding update marker + opt-in autopilot silent channel + real atomic binary self-update. Mirrors gstack's mechanism. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(self-upgrade): write just-upgraded-from breadcrumb + clear stale cache after upgrade Codex ship-review P3: the CLI startup hook reads just-upgraded-from to print the one-time JUST_UPGRADED confirmation, but nothing wrote it — dead path. runUpgrade now writes the breadcrumb (covers full + --swap-only) and clears the update-check cache + snooze so a now-applied 'upgrade available' marker stops nudging. * feat(self-upgrade): surface what's-new in notify + wire agent integration (AGENTS.md, HEARTBEAT) + e2e - self-upgrade --check-only --json now includes changelog_diff + release_url (export fetchChangelog); the gbrain-upgrade skill shows 3-5 what's-new bullets before the 4-option prompt instead of just version numbers. - setup injects a self-upgrade marker protocol into AGENTS.md so interactive agents (Claude Code, Codex) act on the UPGRADE_AVAILABLE stderr marker — the piece that makes notify actually fire for them. - HEARTBEAT daily beat routes through the gbrain-upgrade skill (OpenClaw/Hermes cron cadence); auto-mode daemons ride the autopilot tick. - e2e: real subprocess invocation proves the marker fires (notify emits; off/snooze/up-to-date silent; JUST_UPGRADED fires+clears; --quiet suppresses). Serial test: --check-only surfaces the changelog. --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
# HEARTBEAT.md
|
|
|
|
<!-- Generated by soul-audit. Re-run soul-audit Phase 6 to update. -->
|
|
|
|
## Operational Cadence
|
|
|
|
What the agent checks and when. Each job reads the relevant skill file and runs it.
|
|
|
|
### Every message
|
|
- Signal detection (spawn parallel): `skills/signal-detector/SKILL.md`
|
|
- Brain-first lookup: `skills/conventions/brain-first.md`
|
|
|
|
### Morning (daily)
|
|
- Daily task prep: `skills/daily-task-prep/SKILL.md`
|
|
- Calendar lookahead
|
|
- Open threads from yesterday
|
|
|
|
### Every 15 minutes
|
|
- Brain sync: `gbrain sync --no-pull && gbrain embed --stale`
|
|
|
|
### Daily
|
|
- Self-upgrade check: read `skills/gbrain-upgrade/SKILL.md` and run it. It runs
|
|
`gbrain self-upgrade --check-only --json`, and if behind, surfaces what's new
|
|
and either prompts you (notify mode, the default) or applies silently (auto
|
|
mode). Every `gbrain` invocation also nudges via the stderr `UPGRADE_AVAILABLE`
|
|
marker; this daily beat is the backstop for agents (OpenClaw / Hermes) running
|
|
on a cron cadence rather than riding invocation frequency.
|
|
|
|
### Weekly
|
|
- Brain health: `gbrain doctor --json`
|
|
- Embedding coverage: `gbrain embed --stale`
|
|
- Citation audit: `skills/citation-fixer/SKILL.md`
|
|
- Back-link check: `gbrain check-backlinks check`
|
|
- Brain lint: `gbrain lint`
|
|
|
|
## Quiet Hours
|
|
|
|
- Default: 11 PM - 8 AM local time
|
|
- Override: user activity flag (if user is active, quiet hours are suspended)
|
|
- During quiet hours: save output to held queue, release on first morning contact
|
|
- Exception: genuinely urgent alerts (time-sensitive, would cause real damage)
|
|
|
|
## Schedule Staggering
|
|
|
|
Jobs should be offset by 5-minute intervals to avoid thundering herd:
|
|
- :00 — reserved
|
|
- :05, :10, :15, :20, :25, :30, :35, :40, :45, :50 — one job per slot
|
|
- Max 1 concurrent job per minute
|