Skip to content

feat: soft-archive wings — exclude from search without deleting data #332

@matrix9neonebuchadnezzar2199-sketch

Description

Problem

When a project ends or becomes inactive, its memories still appear in search results. The only current option is delete-wing (#310), which permanently destroys the data.

Users need a middle ground: stop a wing from polluting active search results, while keeping the data intact for future reference.

Proposed solution

Add an archive / unarchive command that sets a metadata flag on a wing, excluding it from search by default.

CLI

mempalace archive --wing old_project
mempalace unarchive --wing old_project

MCP

mempalace_archive_wing(wing="old_project")
mempalace_unarchive_wing(wing="old_project")

Search behavior

  • Default: archived wings are excluded from mempalace_search
  • Override: mempalace_search("query", include_archived=True) to search everything
  • Status: mempalace_status shows archived wings separately with an [archived] label

Implementation scope

  • wing_config.json: add "archived": true flag per wing
  • searcher.py / mcp_server.py: filter out archived wings in where clause unless include_archived=True
  • cli.py: add archive / unarchive subcommands
  • mcp_server.py: add mempalace_archive_wing / mempalace_unarchive_wing tools
  • Tests: verify archived wings are excluded by default, included with flag

Data safety

  • Zero data deletion — the flag is a one-line metadata change
  • Fully reversible with unarchive
  • Archived wings remain visible in mempalace_status and accessible via include_archived

Why this matters

Real-world usage naturally accumulates dead projects. Without soft-archive, users face a choice between noisy search results and permanent data loss. This feature closes that gap with a simple, non-destructive toggle.

Related: #331 (time-decay scoring — the other half of time-aware memory management)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions