Problem
BasicMemoryConfig.disable_permalinks creates a second Markdown identity regime where canonical notes can lack permalinks. That now conflicts with the accepted-change journal in #1382, and it also forces every projector, linker, resolver, and replay consumer to support a nullable canonical identity.
Exact-head review surfaced the immediate failure: #1382 (comment)
Direction
Remove the disable_permalinks feature instead of spreading nullable-permalink compatibility through the journal and Wiki stack. Canonical Markdown notes should always receive a permalink.
Concrete follow-up
- Remove the configuration flag and the conditional paths that intentionally leave Markdown entity permalinks unset.
- Keep permalink assignment as an invariant at canonical note mutation boundaries.
- Remove or rewrite tests and documentation for permalink-disabled projects.
- Define the upgrade behavior for any persisted configuration that still sets the flag, failing clearly rather than silently producing identity-less notes.
- Add regression coverage proving create, update, edit, move, delete, and accepted-change replay always carry canonical permalink identity.
Acceptance
There is one Markdown identity model: every accepted canonical note mutation has a non-null permalink, and the ordered accepted-change journal/projector contract requires no nullable fallback.
Problem
BasicMemoryConfig.disable_permalinkscreates a second Markdown identity regime where canonical notes can lack permalinks. That now conflicts with the accepted-change journal in #1382, and it also forces every projector, linker, resolver, and replay consumer to support a nullable canonical identity.Exact-head review surfaced the immediate failure: #1382 (comment)
Direction
Remove the
disable_permalinksfeature instead of spreading nullable-permalink compatibility through the journal and Wiki stack. Canonical Markdown notes should always receive a permalink.Concrete follow-up
Acceptance
There is one Markdown identity model: every accepted canonical note mutation has a non-null permalink, and the ordered accepted-change journal/projector contract requires no nullable fallback.