<!--
Cerefox uses lightweight GitHub Flow. PR conventions (see CONTRIBUTING.md):

  - Title under 70 chars, imperative mood ("Add X", "Fix Y", "Update Z").
  - Squash and merge by default.
  - Commit messages on the merge commit follow the same imperative style
    and include the `Co-Authored-By:` trailer when AI assistance was used.

Use the sections below; delete any that don't apply.
-->

## Summary

<!-- One paragraph: what changes, why it changes. Bullet list if multiple things. -->

## Architecture / SemVer

<!--
Does this touch any of the surfaces under SemVer contract (CLI flags, env vars,
MCP tool signatures, Postgres RPC signatures, Edge Function HTTP shapes,
/api/v1/* shapes, DB schema)? See CONTRIBUTING.md → SemVer & Deprecation Policy.

If yes, describe the change and whether it's additive, deprecating, or breaking.
If no, write "no contract surface touched".
-->

## Test plan

<!--
Bulleted checklist of how you verified this works. Examples:
  - [ ] `bun test` passes (run in `_shared/` and `packages/memory/`)
  - [ ] `CEREFOX_LIVE_E2E=1 bun test …` passes against live Supabase (if EF code changed)
  - [ ] Manually tried `cerefox <command>` and confirmed output
  - [ ] Web UI: walked through the change in Chrome at /app/...
-->

## Docs

<!--
Did you update the relevant doc(s)?
  - [ ] `CHANGELOG.md` [Unreleased] section updated
  - [ ] `docs/guides/` updated if user-facing behavior changed
  - [ ] `docs/plan.md` updated if this lands an iteration task
  - [ ] `CLAUDE.md` updated if conventions changed
  - [ ] N/A
-->

## Related

<!-- Issue / discussion / Decision Log references. -->
