Skip to content

v0.8 [4/4]: Tests + release readiness #75

Description

@ashu17706

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

  1. Final sanity: `bun test` clean on `feat/daemon-core`
  2. `gh pr merge 76 --squash --delete-branch` (or `--merge` to preserve commit history)
  3. `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`
  4. `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

Refs #71, #72, #73, #74. PR #76.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions