# Spec: Your Agent Identity Cleanup Completion

> **Purpose:** Builder-facing completion spec for closing the remaining `BrainDrive+1` / `braindrive-plus-one` cleanup issues after PR #207 and PR #208.
> **Generated from:** Dave W request and local `dev` audit on 2026-07-02.
> **Primary repo:** `/home/hex/Project/BrainDrive-Test-01`
> **Branch target:** `dev`
> **Related docs:** `dave-j-your-agent-identity-cleanup-spec.md`, `dave-j-your-agent-identity-cleanup-implementation-plan.md`, `dave-j-your-agent-identity-cleanup-work-log.md`

## Overview

### What We're Building

BrainDrive needs one final, explicit cleanup pass for the root assistant identity transition from **BrainDrive+1** / `braindrive-plus-one` to **Your Agent** / `your-agent`.

PR #207 made `your-agent` the canonical root-agent id in the main TypeScript runtime and repaired many visible and model-facing surfaces. PR #208 removed the legacy memory update runtime. Remaining issues are now concentrated in compatibility behavior, local ignored runtime artifacts, MCP release project discovery, and the policy for duplicate root-agent folders.

This spec defines the remaining cleanup contract and recommended actions.

### Why It Matters

The owner should only see and interact with **Your Agent**. The model should not be fed stale **BrainDrive+1** identity text or see `braindrive-plus-one` as a normal project. Compatibility with existing installs still matters, but legacy compatibility must not leak into owner-facing UI, prompts, tool output, or project discovery.

The current risk is not a simple tracked-source rename bug. The risk is that preserved compatibility folders and ignored generated/runtime files can still make old identity state visible during local development, MCP tool calls, or stale desktop runtime use.

### Target Audience And Stakeholders

| Audience | Role / Need |
|---|---|
| BrainDrive owners | See **Your Agent** consistently and never need to know legacy ids or folders. |
| Dave W / product owner | Needs a clear delete-vs-keep decision for stale root-agent folders and artifacts. |
| Dave J / implementation owner | Needs precise cleanup actions without risking owner data loss. |
| AI coding agents | Need a contract that separates allowed legacy compatibility references from real leaks. |
| QA / harness agents | Need regression checks that catch legacy identity leakage. |
| Maintainers | Need project discovery and desktop staging to reflect the canonical starter pack. |

### Success Definition

When this work is complete:

1. New installs seed only `your-agent` / **Your Agent** from tracked starter-pack source.
2. Existing installs with `braindrive-plus-one`, `your-agent`, or both are repaired without data loss.
3. Project discovery tools do not surface `braindrive-plus-one` as a normal project when the canonical manifest is clean.
4. Generated desktop runtime artifacts are either regenerated from current source or safely removed when stale.
5. Any remaining `braindrive-plus-one` references are documented compatibility, migration, test, or historical references.
6. Searches and tests can prove **BrainDrive+1** does not appear in owner-facing or model-fed active source.

The work is not successful if:

1. `project_list` can show `braindrive-plus-one` as a live project solely because a preserved folder exists.
2. A fresh desktop runtime can be staged with the old `BrainDrive+1` starter seed/template.
3. Migration deletes or overwrites owner-authored files without an archive or manual review report.
4. UI, gateway, memory init, or model context regresses from **Your Agent** back to **BrainDrive+1**.

### Definition Of Done (V1)

V1 is done when:

1. The remaining issues listed in this spec are either fixed or explicitly marked intentionally retained.
2. `project_list` behavior is aligned across the main TypeScript tool path and `builds/mcp_release`.
3. Memory init has a safe policy for duplicate `documents/braindrive-plus-one` and `documents/your-agent` folders.
4. Generated/ignored desktop runtime state is cleaned or regenerated from the current main starter pack.
5. Focused tests and repository searches verify the cleanup.

Explicitly not required for V1:

- Rewriting historical changelog entries.
- Removing legacy compatibility constants.
- Editing old conversation logs, backups, exports, or user-owned archived memory snapshots.
- Broad memory architecture refactors unrelated to root-agent identity.

## Current-State Findings

### Finding 1: PR #207 Is Present And Partially Closes The Original Gap

**Status:** Confirmed.

Current `dev` includes:

- `59f24067` - `Canonicalize Your Agent identity`
- `8b7e203a` - merge of PR #207
- `86c0c768` - current `origin/dev` at audit time

The main runtime has root-agent constants:

```ts
ROOT_AGENT_CANONICAL_ID = "your-agent"
ROOT_AGENT_LEGACY_IDS = ["braindrive-plus-one"]
ROOT_AGENT_DISPLAY_NAME = "Your Agent"
ROOT_AGENT_TEMPLATE_ID = "your-agent"
```

**Recommended action:** Keep these constants. Treat `braindrive-plus-one` as a legacy alias only, not a normal project id.

### Finding 2: Manifest Repair Canonicalizes Normal Legacy Entries

**Status:** Confirmed.

`memory/init.ts` repairs root-agent project manifest entries by canonicalizing normal root-agent entries to `your-agent`. If there is no conflicting conversation id, legacy manifest entries are removed from the manifest and merged into the canonical entry.

**Recommended action:** Keep this behavior. It is the correct self-healing path for most existing installs.

### Finding 3: Conflicting Duplicate Manifest Entries Are Preserved

**Status:** Confirmed and intentional in current tests.

If both legacy and canonical entries exist with different conversation ids, `repairRootAgentProjectEntries` preserves both entries and logs a manual-review warning.

**Risk:** This can keep `braindrive-plus-one` visible as a manifest entry in rare conflict cases.

**Recommended action:** Keep fail-safe preservation in V1, but add a manual-review report and explicit operator/user remediation path. Do not silently choose one conversation id when both are non-null and different.

### Finding 4: Folder Compatibility Only Copies Legacy To Canonical When Canonical Is Missing

**Status:** Confirmed.

`ensureRootAgentFolderCompatibility`:

- Copies `documents/braindrive-plus-one` to `documents/your-agent` when the canonical folder does not exist.
- If both folders exist and differ, it only warns: `Preserved divergent root agent folders for manual review`.

**Risk:** The warning avoids data loss, but the legacy folder remains under `documents/`, where some project discovery paths may still see it.

**Recommended action:** Replace warning-only behavior with safe quarantine behavior:

1. If both folders are identical, remove or archive `documents/braindrive-plus-one`.
2. If the legacy folder contains only managed starter files and canonical files are present, archive the legacy folder outside `documents/`.
3. If legacy has owner-authored or divergent content, copy unique files into a migration review archive and remove the legacy folder from `documents/`.
4. Write a migration report under `system/migrations/your-agent-identity-cleanup/`.

Do not delete divergent data outright. The key cleanup is to remove legacy project folders from the active `documents/` project namespace after preserving reviewable content.

### Finding 5: The Main Tracked Starter Pack Is Canonical

**Status:** Confirmed.

Tracked source under `builds/typescript/memory/starter-pack/projects` seeds:

- `id: "your-agent"`
- `name: "Your Agent"`
- template path `templates/your-agent/AGENT.md`

There is no tracked main starter-pack `templates/braindrive-plus-one` folder on current `dev`.

**Recommended action:** Keep as-is. Add a regression check that the tracked starter pack does not reintroduce `BrainDrive+1` or `templates/braindrive-plus-one`.

### Finding 6: Local `builds/typescript/your-memory` Is Ignored/Untracked And Can Still Contain Both Folders

**Status:** Confirmed.

The audited local dev memory contained both:

- `documents/your-agent/`
- `documents/braindrive-plus-one/`

But those files are ignored by `.gitignore` and are not source from `origin/dev`. In the local audit, the legacy folder headers were already `# Your Agent ...`, not stale `# BrainDrive+1 ...`.

**Risk:** Local ignored memory can still make the assistant or a developer believe `braindrive-plus-one` is live source, especially when tools scan folders.

**Recommended action:** Do not treat ignored `your-memory` as GitHub source. For local/dev cleanup, run the same migration/quarantine behavior against the active memory root, or manually archive/remove `documents/braindrive-plus-one` after confirming the canonical folder contains the needed content.

### Finding 7: `builds/mcp_release` Project Discovery Still Scans Folders

**Status:** Confirmed and actionable.

The main TypeScript project tool path now reads `documents/projects.json`, but `builds/mcp_release/src/memory-core.ts` still lists projects by scanning directories under `documents/`.

**Risk:** If `documents/braindrive-plus-one` exists for compatibility or review, `project_list` can expose it as a normal project even when `projects.json` only contains `your-agent`.

**Recommended action:** Update `builds/mcp_release` project discovery to use `documents/projects.json` as the source of truth, matching the main TypeScript tool path. It should canonicalize legacy root-agent ids and omit legacy folders unless an explicit conflicting manifest entry requires manual review.

### Finding 8: Ignored Desktop Runtime Output Can Be Stale

**Status:** Confirmed.

`builds/typescript/src-tauri/desktop-runtime/` is ignored generated output. The local ignored copy contained stale `BrainDrive+1` starter-pack seed/template content.

The staging script copies from the tracked main starter pack, so a fresh stage should correct this.

**Risk:** A developer or build process that uses stale ignored `desktop-runtime` without rerunning staging can package old `BrainDrive+1` content.

**Recommended action:** Before desktop build/release, remove or regenerate `src-tauri/desktop-runtime/` via the existing desktop staging flow. Add a preflight check that fails if staged desktop runtime contains `BrainDrive+1` or `templates/braindrive-plus-one`.

### Finding 9: Tracked Legacy References Remain Mostly For Compatibility And Tests

**Status:** Confirmed.

Tracked `braindrive-plus-one` references on current `dev` are concentrated in:

- root-agent compatibility constants
- memory init tests
- gateway/project compatibility tests
- client project-selection compatibility tests
- historical changelog entries

**Recommended action:** Keep an allowlist for these references. Add a lint/search gate that fails on new unapproved owner-facing `BrainDrive+1`, `BD+1`, or `braindrive-plus-one` references.

## Product Behavior

### Desired Owner Experience

Owners see one root assistant named **Your Agent**. They never see **BrainDrive+1**, `BD+1`, or `braindrive-plus-one` in normal UI, tool output, model instructions, empty states, sidebar labels, project selection, support copy, or generated memory artifacts.

### Desired System Experience

The system may accept old `braindrive-plus-one` references as legacy input, but it should normalize them to `your-agent` internally and avoid presenting the legacy id as an active project.

### Primary Flows

1. **Fresh install:** Seed `your-agent` only.
2. **Legacy-only install:** Copy/migrate owner data into `your-agent`; archive or remove legacy folder from active documents after preservation.
3. **Both folders exist and match:** Remove/archive legacy folder from active documents.
4. **Both folders exist and diverge:** Preserve divergent data in a migration review archive, remove legacy folder from active project discovery, and surface a clear manual-review report.
5. **MCP project listing:** Return manifest projects, not arbitrary document folders.
6. **Desktop runtime staging:** Generate desktop runtime from current tracked source and fail preflight on stale identity strings.

## User Stories

### US-1: Owner Sees One Root Assistant - Confirmed

As a BrainDrive owner, I want the root assistant to appear only as **Your Agent** so that the product feels consistent and does not expose old internal naming.

**Acceptance Criteria:**

```gherkin
Given a clean install
When BrainDrive initializes memory and loads the UI
Then the root assistant is named "Your Agent"
And no "BrainDrive+1", "BD+1", or "braindrive-plus-one" text appears in normal owner-facing surfaces
```

### US-2: Existing Legacy Memory Self-Heals - Confirmed

As an existing owner, I want old root-agent memory to carry forward safely so that upgrading does not lose files, conversation state, or customizations.

**Acceptance Criteria:**

```gherkin
Given memory with only documents/braindrive-plus-one
When BrainDrive initializes memory
Then documents/your-agent exists with preserved content
And projects.json contains the canonical your-agent entry
And legacy content is not lost
```

### US-3: Duplicate Folders Do Not Leak Into Project Discovery - Confirmed

As a BrainDrive owner or assistant, I want project discovery to list the canonical project set so that preserved compatibility folders do not appear as extra projects.

**Acceptance Criteria:**

```gherkin
Given projects.json contains only your-agent
And documents/braindrive-plus-one still exists as preserved legacy data
When project_list runs
Then project_list returns Your Agent only
And does not return braindrive-plus-one as a normal project
```

### US-4: Divergent Legacy Data Is Preserved For Review - Confirmed

As a maintainer, I want divergent root-agent folders archived with a report so that cleanup can remove stale active folders without destroying owner-authored data.

**Acceptance Criteria:**

```gherkin
Given documents/your-agent and documents/braindrive-plus-one both exist
And their file contents differ
When memory initialization runs
Then unique legacy content is preserved in a reviewable migration archive
And the active documents namespace no longer exposes braindrive-plus-one as a normal project
And a migration report explains what happened
```

### US-5: Desktop Runtime Cannot Package Stale Identity - Confirmed

As a desktop release builder, I want staged runtime output to be regenerated and checked so that stale ignored files cannot ship old BrainDrive+1 content.

**Acceptance Criteria:**

```gherkin
Given desktop runtime has been staged for build
When desktop preflight runs
Then staged runtime contains the canonical your-agent starter seed/template
And preflight fails if BrainDrive+1 or templates/braindrive-plus-one appears in staged runtime starter-pack files
```

## Requirements

### Functional Requirements

- [ ] Keep `your-agent` as the canonical id for new root-agent manifests.
- [ ] Keep **Your Agent** as the only owner-facing root-agent display name.
- [ ] Accept `braindrive-plus-one` as a legacy alias at boundaries that may receive old data.
- [ ] Do not list preserved legacy folders as active projects.
- [ ] Align `project_list` behavior across main TypeScript tools and `builds/mcp_release`.
- [ ] Quarantine or archive duplicate legacy folders outside active `documents/` after preserving data.
- [ ] Write migration summaries when legacy folders are moved, archived, or preserved for manual review.
- [ ] Ensure desktop runtime staging copies current tracked starter-pack source.
- [ ] Add a regression search/lint allowlist for remaining legacy references.

### Data, Memory, And Artifact Contracts

| Data / Artifact | Source | Owner | Read/Write Rules | Retention / Migration |
|---|---|---|---|---|
| `documents/projects.json` | Owner memory | BrainDrive runtime | Source of truth for active project list | Canonicalize root-agent entries to `your-agent`; preserve conflict reports |
| `documents/your-agent/` | Owner memory | Owner + BrainDrive | Active root-agent folder | Must preserve owner-authored content |
| `documents/braindrive-plus-one/` | Legacy owner memory | Owner | Legacy alias folder only | Migrate/copy to canonical; archive outside active documents if duplicate |
| `system/migrations/your-agent-identity-cleanup/` | Migration runtime | BrainDrive | Append migration reports and archived legacy content | Retain for manual review/export |
| `memory/starter-pack/projects` | Tracked source | Repo | Fresh install seed source | Must remain canonical |
| `src-tauri/desktop-runtime/` | Ignored generated output | Build process | Regenerated from tracked source | Remove/regenerate before desktop build |

### AI / Model / Tool Behavior

- [ ] Model-fed project names must use **Your Agent**.
- [ ] Tool output should not show `braindrive-plus-one` unless explicitly reporting a migration/manual-review issue.
- [ ] `project_list` must not infer active projects from physical folders when a manifest exists.
- [ ] The assistant must not recommend working in `braindrive-plus-one` as a page/project.

### Observability / Evidence Requirements

- [ ] Migration report for any duplicate-folder cleanup.
- [ ] Test output for memory init duplicate-folder scenarios.
- [ ] Test output for `project_list` manifest-source behavior in both TypeScript and MCP release packages.
- [ ] Search output proving no unapproved `BrainDrive+1`, `BD+1`, or `braindrive-plus-one` references remain.
- [ ] Desktop staging/preflight search output if desktop runtime is touched.

## Scope

### Included

- Memory init root-agent repair and duplicate-folder cleanup policy.
- Main TypeScript `project_list` regression coverage.
- `builds/mcp_release` project discovery alignment.
- Desktop runtime cleanup/preflight for stale generated identity strings.
- Documentation of allowed legacy references.
- Focused tests and grep/lint checks.

### Explicitly Excluded

- Rewriting historical changelog entries.
- Deleting owner data without archive/manual-review evidence.
- Removing legacy alias support entirely.
- Broad starter-pack redesign outside Your Agent identity cleanup.
- Provider, billing, auth, installer, or UI redesign work unrelated to this identity cleanup.

### Future Versions

- Remove `braindrive-plus-one` alias support after a release window and migration telemetry prove it is no longer needed.
- Add a general memory namespace cleanup tool for other retired project ids.
- Add CI-level source and generated-artifact identity checks.

## Invariants And Edge Cases

### Properties That Must Always Hold

- [ ] **Your Agent** is the only normal owner-facing display name for the root assistant.
- [ ] `your-agent` is the canonical active root-agent id.
- [ ] `braindrive-plus-one` may exist only as a compatibility alias, historical reference, migration artifact, or test fixture.
- [ ] Existing owner-authored data is never overwritten or deleted without archive/review evidence.
- [ ] Active project discovery is manifest-based, not directory-scan-based.
- [ ] Fresh installs do not create duplicate root-agent folders.

### Edge Cases To Test

- [ ] No root-agent manifest entry exists.
- [ ] Only legacy manifest entry exists.
- [ ] Both manifest entries exist with matching conversation state.
- [ ] Both manifest entries exist with conflicting conversation ids.
- [ ] Only legacy folder exists.
- [ ] Both folders exist with identical files.
- [ ] Both folders exist with divergent files.
- [ ] Legacy folder has files not present in canonical.
- [ ] Canonical folder has owner-customized files.
- [ ] `projects.json` is malformed or missing.
- [ ] Desktop runtime already exists with stale ignored files.

### Failure Modes

| Scenario | Expected Behavior |
|---|---|
| Duplicate folders differ | Archive legacy content, write report, avoid active project leak |
| Conflicting conversation ids | Preserve conflict for manual review, do not silently discard |
| MCP release project discovery sees legacy folder | Should use manifest and omit folder-only legacy project |
| Desktop runtime contains stale `BrainDrive+1` | Preflight fails or runtime is regenerated |
| Search finds new unapproved legacy string | Build fails until reference is removed or allowlisted |

## Technical Context

### Existing System Context

- Main starter-pack source is already canonical.
- Main TypeScript project tool path reads `documents/projects.json`.
- `builds/mcp_release/src/memory-core.ts` still scans directories for project discovery.
- Memory init intentionally preserves divergent root-agent folders for manual review.
- `builds/typescript/your-memory/` and `builds/typescript/src-tauri/desktop-runtime/` are ignored local/generated artifacts.

### Integration Points

- `builds/typescript/memory/init.ts`
- `builds/typescript/memory/root-agent.ts`
- `builds/typescript/tools/project-tools.ts`
- `builds/mcp_release/src/memory-core.ts`
- `builds/typescript/memory/starter-pack/projects`
- `builds/typescript/scripts/desktop-stage-runtime.mjs`
- `builds/typescript/src-tauri/desktop-runtime/` generated output
- `builds/typescript/client_web` root-agent display/selection tests

### Hard Constraints

- Do not break existing owners with legacy root-agent memory.
- Do not expose old identity strings to owners or model context.
- Do not treat ignored local memory as tracked GitHub source.
- Do not rely on manual local cleanup as the only fix; runtime behavior must be safe.

## Recommended Implementation Actions

### Action 1: Align MCP Release `project_list` With Manifest Source Of Truth

Update `builds/mcp_release/src/memory-core.ts` so `listProjects` reads `documents/projects.json` when present, matching `builds/typescript/tools/project-tools.ts`.

Recommended behavior:

- Parse manifest project ids/names.
- Canonicalize root-agent legacy ids to `your-agent`.
- Do not include directory-only projects unless no manifest exists or an explicit fallback is required.
- Add tests proving a leftover `documents/braindrive-plus-one` folder is not listed when manifest contains only `your-agent`.

### Action 2: Replace Warning-Only Duplicate Folder Handling With Archive/Quarantine

Update `ensureRootAgentFolderCompatibility` to remove legacy folders from active project discovery after preserving content.

Recommended behavior:

- Identical legacy/canonical folders: archive or delete legacy folder; recommendation is archive for first release.
- Managed-only legacy content: archive legacy folder and write migration report.
- Divergent legacy content: copy/archive full legacy folder under `system/migrations/your-agent-identity-cleanup/`, write report, and remove from active `documents/`.
- Dry run should report planned archive/removal actions without changing files.

### Action 3: Add Legacy Identity Search Gate

Add a focused script or test that searches tracked source for:

- `BrainDrive+1`
- `BD+1`
- `braindrive-plus-one`
- `templates/braindrive-plus-one`

The check should allow:

- compatibility constants
- migration code
- focused tests
- historical changelog lines

It should fail on owner-facing UI, model prompts, starter-pack active source, and generated runtime staging checks.

### Action 4: Clean Or Regenerate Ignored Desktop Runtime

Before any desktop build:

1. Remove stale `builds/typescript/src-tauri/desktop-runtime/`, or
2. Run the existing desktop staging flow from fresh build artifacts.

Then search staged runtime starter-pack files for old identity strings. If found, fail preflight.

### Action 5: Local Dev Memory Cleanup

For this dev instance, after runtime migration policy is implemented or manually verified:

- Confirm `documents/projects.json` contains only `your-agent`.
- Compare `documents/braindrive-plus-one` and `documents/your-agent`.
- Archive `documents/braindrive-plus-one` outside active `documents/`.
- Confirm project discovery no longer lists `braindrive-plus-one`.

This should be done through a migration or explicit manual archive step, not by blind deletion.

## Test Strategy

### Required Tests

- [ ] `builds/typescript/memory/init.test.ts` for duplicate-folder archive/quarantine behavior.
- [ ] `builds/typescript/tools/project-tools` tests if not already present for manifest-only project listing.
- [ ] `builds/mcp_release` tests for manifest-based `project_list`.
- [ ] Client/gateway compatibility tests continue to pass for legacy alias inputs.
- [ ] Desktop preflight/search check for staged runtime identity strings.

### Verification Commands

Recommended focused commands:

```bash
cd /home/hex/Project/BrainDrive-Test-01/builds/typescript
npm run test -- memory/init.test.ts gateway/projects.test.ts client_web/src/hooks/useProjects.test.ts
```

```bash
cd /home/hex/Project/BrainDrive-Test-01/builds/mcp_release
npm run test
```

```bash
cd /home/hex/Project/BrainDrive-Test-01
rg -n "BrainDrive\\+1|BD\\+1|braindrive-plus-one|templates/braindrive-plus-one" \
  builds/typescript builds/mcp_release CHANGELOG.md
```

If desktop runtime is staged:

```bash
cd /home/hex/Project/BrainDrive-Test-01
rg -n "BrainDrive\\+1|BD\\+1|braindrive-plus-one|templates/braindrive-plus-one" \
  builds/typescript/src-tauri/desktop-runtime
```

### Acceptance Evidence

- Passing focused tests.
- Search output with only allowlisted legacy references.
- Migration report generated in a fixture test for divergent duplicate folders.
- `project_list` output excludes `braindrive-plus-one` when the manifest is canonical.
- Desktop runtime search is clean after staging.

## Security, Privacy, And Trust Considerations

### Risk Level

**Medium.** This work touches owner memory files and model/tool-visible project context. The main risk is data loss or stale identity leakage.

### Required Mitigations

- [ ] Archive before removing legacy folders from active `documents/`.
- [ ] Preserve conversation ids and default skill ids.
- [ ] Never overwrite canonical owner-authored files with legacy content without conflict handling.
- [ ] Write migration reports for any automated cleanup.
- [ ] Keep all changes local to root-agent identity cleanup.

## Explicit Boundaries

### Do Not Modify

- Provider/model configuration.
- Auth, billing, credits, or deployment behavior.
- Historical changelog entries except to add a new changelog line if implementation requires it.
- User-owned backups/exports/conversation logs unless explicitly approved.

### Do Not Introduce

- A second owner-facing root assistant name.
- A second active root-agent project in fresh installs.
- A project discovery path that treats arbitrary folders as active projects when a manifest exists.
- Silent deletion of divergent owner data.

## Open Questions

| # | Question | Recommendation | Blocks |
|---:|---|---|---|
| 1 | Should duplicate legacy folders be deleted or archived? | Archive in V1, then delete in a later release after confidence. Archiving removes the folder from active project discovery while preserving reviewability. | Migration implementation details. |
| 2 | Where should archived legacy folders live? | Use `system/migrations/your-agent-identity-cleanup/<timestamp>/braindrive-plus-one/` plus a markdown or JSON report. This keeps archived data inside exportable memory but outside active project discovery. | Archive path contract. |
| 3 | Should conflicting manifest conversation ids preserve both manifest entries? | Preserve the conflict in V1, but mark the legacy entry as manual-review only if schema supports it. If schema does not support that, write a migration report and keep canonical active entry. | Manifest conflict policy. |
| 4 | Should `builds/mcp_release` fall back to directory scanning when `projects.json` is missing? | Yes, but only as a legacy fallback. When manifest exists and parses, it must be authoritative. | MCP release compatibility. |
| 5 | Should ignored local `your-memory` be manually cleaned now? | Yes, after the archive policy is implemented or after a manual diff confirms no unique content would be lost. Do not commit ignored memory. | Local dev hygiene only. |
| 6 | Should desktop runtime cleanup be committed? | No. `src-tauri/desktop-runtime/` is ignored generated output. Regenerate or remove locally; commit only source/preflight changes if needed. | Desktop release hygiene. |
| 7 | Should legacy alias support be removed entirely? | No for V1. Keep alias support until at least one release proves migration has covered existing installs. | Future cleanup decision. |

## Changelog

| Date | Change | Reason | Source | Decision |
|---|---|---|---|---|
| 2026-07-02 | Created completion cleanup spec | Dave W requested a complete remaining-issues cleanup plan after audit of PR #207/#208 state | Chat + local repo audit | Pending review |

## Conversation References

| Date | Source | Topics Discussed | Link |
|---|---|---|---|
| 2026-07-02 | Dave W / Codex chat | PR #207 verification, duplicate folder behavior, MCP project_list issue, stale desktop-runtime output, ignored local memory | Current session |

## Approval

- [ ] Reviewed by: _______________
- [ ] Date: _______________
- [ ] Ready for Planning: [ ]

