Repository navigation
Open
Milestone
Description
Release-tracking issue for v0.8.0. The acceptance criteria below are the real-hardware tests that have to pass before tagging.
See `docs/internal/release-flow.md` for the broader release process this issue plugs into.
Acceptance checklist
Each row is a real-hardware test that has to pass before we tag v0.8.0. Tick a box when verified. If a row fails, open a sub-issue, fix on `feat/daemon-core` with a small commit, and re-test.
Lifecycle (macOS)
- `smriti daemon install` writes `~/Library/LaunchAgents/dev.zero8.smriti.plist` and registers it
- `launchctl list | grep smriti` shows the service after install
- `smriti daemon status` reports running with a sensible uptime
- Reboot test: reboot the machine → log back in → `smriti daemon status` still shows running, no manual intervention
- `smriti daemon stop` exits the daemon cleanly; `smriti daemon status` reports not-running
- `smriti daemon uninstall` removes the plist and unregisters the service
- Post-uninstall reboot: daemon does NOT come back up; no orphaned files in `~/.cache/smriti/`
Lifecycle (Linux)
- `smriti daemon install` writes `~/.config/systemd/user/smriti.service` and `systemctl --user enable --now smriti`
- `systemctl --user status smriti` shows active
- Reboot test: reboot → log in → daemon is running (need linger enabled for non-graphical sessions: `loginctl enable-linger`)
- `smriti daemon stop` exits cleanly
- `smriti daemon uninstall` runs `systemctl --user disable --now` and removes the unit file
Capture (functional)
- Use Cursor on a new project for 30+ minutes without running any smriti command → `smriti search` returns the session content within 60 seconds of finishing
- Use Claude Code with the new Stop-hook template → poke arrives at the daemon (verify via `smriti daemon logs`)
- Use Codex CLI → sessions appear in `smriti search` after the debounce window
- Use Cline → sessions captured
- Multiple agents in parallel: open Claude + Cursor in two terminals; both sessions appear in `smriti search` without crosstalk
Robustness
- SIGKILL recovery: `kill -9 $(cat ~/.cache/smriti/daemon.pid)` → no stale socket blocks the next `smriti daemon` start
- 24-hour soak: leave daemon running for a day, mix of real agent usage; RSS stays under ~200MB; no zombie processes; no segfaults in `smriti daemon logs`
- Idempotent install: run `smriti daemon install` twice → no duplicate `launchctl list` entries; same service file content
- `smriti share` unchanged: existing share flow produces the same output as on `main` (regression check)
- Hook fallback: stop the daemon, fire the Stop hook → `lockf` path activates, ingest still happens
Performance
- Stop-hook poke completes in <50ms (`time : | nc -U ~/.cache/smriti/daemon.sock`)
- First flush after daemon start completes within expected window (depends on existing log volume)
- `smriti search` cold-start latency unchanged from v0.7 (daemon is write-side only; reads are unaffected)
Documentation
- `CLAUDE.md` quick-reference includes the daemon block
- `docs/internal/daemon-prd.md` reflects the shipped behavior
- Release notes at `docs/internal/release-notes-v0.8.0.md` are polished and ready for `gh release create`
- `package.json` version is `0.8.0` (already done)
When all rows are green
- Final sanity: `bun test` clean on `feat/daemon-core`
- `gh pr merge 76 --squash --delete-branch` (or `--merge` to preserve commit history)
- `git checkout main && git pull && git tag -a v0.8.0 -m "v0.8.0 — cross-agent capture daemon" && git push origin v0.8.0`
- `gh release create v0.8.0 --notes-file docs/internal/release-notes-v0.8.0.md --latest`
Known follow-ups for v0.8.1
Out of scope for this release but worth tracking after tag:
- Teach `smriti upgrade` to detect a running daemon and restart it after pulling new code
- File the Bun ingest segfault (from smoke-test finding 3) upstream with a minimal repro
- Promotion of `lockf` mitigation to permanent fallback path documentation
Metadata
Metadata
Assignees
Labels
No labels
Activity
feat(daemon): LaunchAgent + systemd-user installer (macOS + Linux)
chore(release): bump to v0.8.0; document daemon commands in CLAUDE.md
docs(release): add release-flow + v0.8.0 release notes
release: v0.8.0 — daemon cross-agent capture + ingest correctness