feat(projects): support canonicalizing a lone legacy project spelling without cloud sync
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Start from issue #1667 for the original reproduction and evidence, then read the project command implementations referenced by #1678 (the pending-directory repair) to see where canonicalization already exists versus where stored names are left untouched. Examine the merge and consolidate paths to understand why a lone spelling is rejected when normalized identities are equal. Done means a sanctioned CLI interface can normalize a single non-canonical project name without cloud sync or SQL, with tests covering that path; note the issue requires design sign-off before implementation.
Written by the indexing model from the issue text.
Description
🔍 Problem Description
A legacy project with only one non-canonical spelling has no supported path to canonicalize its stored name without configured cloud sync or manual SQLite edits. Case-only merge can reject the source because its normalized identity already equals the destination; consolidation has no multi-spelling group to join.
This is the project-normalization requirement split from #1667. PR #1678 only repairs pending session journal directories and intentionally leaves local project/session names unchanged.
💡 Proposed Solution
Preserve the original requirement from #1667:
- There should be a sanctioned way to normalize a single project that has only one spelling — e.g. a
projects rename, ormergeacceptingnormalizedSource == canonicalwhen the raw strings actually differ — so the underlying name can be canonicalized without configured cloud sync and without hand-editing SQLite.
Choose the supported interface during design; this issue does not prescribe a new command or change merge/consolidate contracts.
📦 Affected Area
CLI (commands, flags)
🔄 Alternatives Considered
- Pending-directory repair in #1678 canonicalizes repaired journal rows, not the underlying project/session names.
- Consolidating a lone spelling has no group to join.
- Case-only explicit merge can reject an already-equal normalized identity.
- Manual SQL edits and cloud enrollment are not acceptable prerequisites.
📎 Additional Context
Split from #1667 with explicit scope approval; the original reproduction and historical evidence remain there. Original report: Engram 3.1.0 on Windows. Related #136 and #911 address other normalization cases; closed #1278 is a broader CLI-maintenance proposal.
Acceptance: a single legacy non-canonical project spelling can be normalized using a sanctioned interface, without cloud enrollment or manual SQLite edits. Implementation and data-migration safety require separate design and approval. No implementation is included in #1678.
- Dominant language
- Go
- Stars
- 7.1k
- Forks
- 729
- Avg merge
- 9h 11m
- Merged PRs (30d)
- 359
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Gentleman-Programming/engram
-
status:needs-review
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Gentleman-Programming/engram#2065 ·
Maintainers usually reply within 1 day
-
priority:medium status:needs-review type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
Gentleman-Programming/engram#863 · 1 comment ·
Maintainers usually reply within 1 day
-
status:needs-review type:feature
Difficulty 5/5 Over a week Newbie friendliness 25/100
Gentleman-Programming/engram#2122 ·
Maintainers usually reply within 1 day
-
status:needs-review type:feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
Gentleman-Programming/engram#2121 ·
Maintainers usually reply within 1 day
-
feat(governance): allow self-contained PRs and retire universal issue and label merge gatesPossibly taken @dnlrsls claimed this today. Openstatus:approved type:feature
Gentleman-Programming/engram#2120 · 4 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in Gentleman-Programming/engram
Similar issues
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 61/100
Maintainers usually reply within 1 day
-
stage-fail
Difficulty 1/5 Under an hour Newbie friendliness 72/100
siyuan-note/bazaar#2405 ·
Maintainers usually reply within 1 day
-
bug priority: high workstream:cache
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
rossoctl/context-guru#707 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
prime-radiant-inc/evener#5028 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day