wiki-knowledge

Kind-folders pluralize; kind values stay singular

wiki/’s four kind-folders were originally named to match the kind value exactly (wiki/concept/, wiki/entity/, wiki/source/, wiki/synthesis/) — a folder held pages of that kind, so the folder name was the value with no transform. That symmetry reads wrong on disk: a folder is a collection, and English collections of countable nouns pluralize (concepts/, entities/, sources/), matching every other plural-noun folder convention in the ecosystem this vault sits in. #97 raised this as a naming defect, not a functional one.

The fix decouples the two: kind-folders pluralize (wiki/concept/ → wiki/concepts/, wiki/entity/ → wiki/entities/, wiki/source/ → wiki/sources/), while kind values stay singular (concept, entity, source, synthesis — unchanged in frontmatter, in place.KINDS, in every place a kind is compared or validated as a value). synthesis has no distinct plural form, so its folder is unchanged either way. This means the folder name no longer matches its kind value 1:1 — place.py’s KIND_FOLDERS mapping becomes the single source of truth for the transform, in both directions (kind → folder for path-building, folder → kind for page_record.py deriving a page’s kind from where it lives).

The cutover is hard: no dual-accept fallback that reads both wiki/concept/ and wiki/concepts/ as valid. A vault is fully migrated or it isn’t; a one-off migration script (deleted after use, not a permanent vault.py subcommand) moves every page via Vault.move_page — which already fixes inbound links as a side effect — and aborts loudly on any same-slug collision between the old singular folder and an existing plural one, rather than silently overwriting or merging. Migration scope is plugin-managed vaults only: a vault this plugin created and has always owned the folder structure of. Onboarding an arbitrary external vault with unknown or mixed folder naming is a separate, larger problem, out of scope here.

Consequences