Files
msd-core/capabilities/mempalace/fragments/capture-problems.md
Tom Boucher a375c4b354 feat(#956): add MemPalace memory capability (ADR-857 feature plug-in) (#1201)
* feat(#956): add MemPalace memory capability (ADR-857 feature plug-in)

Adds an opt-in, default-resilient ADR-857 feature capability that wires
MemPalace (local-first memory: MCP server + CLI) into the GSD loop:
deliberate recall before discuss/plan and verbatim + temporal-KG capture
at phase boundaries. Three memory modes (augment default; kg_backend and
replace forward-declared). Master gate mempalace.enabled (default off);
every hook onError:skip, zero gates; absent/disabled MemPalace => loop
unchanged. Transport is rendered-markdown only — MemPalace runs
out-of-process, no third-party code in gsd-core (ADR-857 §7).

Capability: capabilities/mempalace/ (manifest + 2 fragments), skills
commands/gsd/mempalace-{recall,capture}.md, agent
agents/gsd-mempalace-curator.md. Registration: ns-context router,
utility cluster, KNOWN_SKILLS, help full.md, model-catalog, copilot
install list, size baselines; regenerated capability-registry +
inventory manifest. ship:post wired into ship.md (wire-on-demand).

HELD on #1196: this capability also declares hooks at discuss:pre and
discuss:post, which are structurally un-wireable until the host-loop
conformance model covers the discuss phase (discuss-phase.md is not in
HOST_LOOP_FILES). The phase6-capstone-conformance gate therefore fails
on exactly those two orphaned points by design — see #1196. Once #1196
lands, rebase onto next and the gate goes green with no further change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(#956): backfill changeset PR number (#1201)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 02:09:10 -04:00

2.0 KiB

Capture problems → fixes (MemPalace)

Gate first. Read .planning/config.json. If mempalace.enabled is not true, or mempalace.capture_artifacts is false, skip this entire section and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the capture_artifacts check lets you turn capture off without disabling the rest of the capability.)

Otherwise — after verifying this wave, persist any confirmed problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.

For each confirmed bug/issue resolved in this wave:

  1. Resolve the wing (mempalace.wing, else project_code, else project dir) and target room: problems.
  2. Dedupe first. Call mempalace_check_duplicate (interactive) before filing so re-runs don't create duplicate drawers.
  3. File the drawer verbatim. Store the problem statement and its fix as a drawer in room: problems — interactive: mempalace_add_drawer; headless: mempalace mine / mempalace hook run. Include provenance (source_file, phase id).
  4. Mirror the KG fact when mempalace.mirror_kg is on: add (<bug>, fixed_by, <fix>) with valid_from = the phase date via mempalace_kg_add.
  5. Mode awareness. Only augment is currently wired: the fact is an additive mirror alongside .planning/graphs/ (never a replacement). kg_backend/replace are forward-declared and behave as augment today.

Captures are idempotent: deterministic drawer IDs + check_duplicate mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.