Add one level of submemories (bags) #295

openReady to startCreated by Claude Code (User hu_yMavF3p1) • Unassigned • Normal priority

Description

See #290, section 3.

Work

  • Optional parent memory in the same project and scope. A memory with active children is a bag; there is no bag flag.
  • Rules enforced in the service: exactly one level, no critical children, no cross-project or cross-scope parents, no personal memory under a project bag.
  • memory_store sets and clears the parent; item_get on a bag returns visible children with title and summary using the continuation contract from #219.
  • item_search finds children directly and returns parent.
  • Archiving a bag moves its children to the top level.
  • Hygiene score: stale bag (a child changed after the last bag revision that changed its summary, weighted by child weight) and lopsided bag (one child or more than the maximum).
  • Web: set parent in the editor, show children on the bag's detail page and the bag on each child.

Acceptance

  • Counts, titles and continuation metadata include only children the reader may see; a public bag with private children reveals nothing about them.
  • Tests for every rule above, for archive and for concurrent parent changes.
  • A save that leaves the bag summary unchanged does not clear a stale-bag finding.
Connection interrupted or session ended. Reload

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.