UI lexicon
Crosswalker’s terminology page defines the KB’s general-ontology
vocabulary (concept, ontology, recipe, crosswalk, facet, hub…). That vocabulary is deliberately
domain-neutral so the docs and internals read correctly for any structured source, not just
compliance frameworks. But two rules constrain what the plugin UI — Notices, setName/setDesc,
button labels, placeholders — is allowed to say:
- Plain language, GRC-first. User-facing surfaces (README, settings, wizard, modals) never expose
internal architecture vocabulary — STRM, SSSOM, Tier 2, sqlite-wasm, curie, and similar terms alienate
evaluators who are not plugin architects. See
feedback_readme_user_facing_surfaces. - General-ontology words stay in docs/KB/internals. “Ontology,” “concept,” and “framework mapping”
read fine in the KB; the shipped UI should read in plain English a GRC practitioner already knows.
See
feedback_general_ontology_positioning.
Neither rule says “never use a KB term” — it says translate deliberately, and translate the same
KB term to the same UI word everywhere it shows up. This page is that mapping. It exists because one
KB word — recipe — and the UI word configuration turned out to blur several artifacts with different authority. A portable ImportRecipe, a legacy source-bound SavedConfig, a shape preset, and a query template are not interchangeable. The artifact roles and authority model supplies the boundary; this page supplies the screen copy.
The recipe/configuration collision (why this page exists)
Section titled “The recipe/configuration collision (why this page exists)”| # | What it actually is | Authority | Public/UI direction |
|---|---|---|---|
| 1 | ImportRecipe: a machine-evaluable declarative specification for shaping an import | Portable canonical artifact, preserved by RecipeDocument.original | Reusable configuration is the current placeholder; the final term still needs UX testing |
| 2 | SavedConfig: legacy source-bound convenience state from a prior import | Fingerprint-bound setup, not an ImportRecipe | Saved setup |
| 3 | A bundled, team-vetted ImportRecipe for a known source | Built-in portable default | Built-in configuration |
| 4 | ShapePreset: a recipe template/default policy instantiated against detected source structure | Defaulting template, not the canonical recipe or saved setup | Preset |
| 5 | A Layer-C query composition that becomes a .base file once applied | Reusable query template | Query template |
The lexicon below keeps these roles distinct while leaving the final public name for ImportRecipe open to evidence from UX testing.
Canonical lexicon
Section titled “Canonical lexicon”| Internal / KB term | User-facing term | Definition (≤7 words) | Where used |
|---|---|---|---|
ImportRecipe | Reusable configuration (placeholder) | Portable rules for shaping an import | Future recipe library/share surfaces; final term remains subject to UX testing |
Bundled ImportRecipe (RecipeRegistryEntry, recognized-source fast path) | Built-in configuration | Ready-made rules for a known source | recipe-registry.ts, import-wizard.ts recognized-source card |
Legacy SavedConfig | Saved setup | Source-bound settings from a prior import | config-manager.ts, config-browser-modal.ts, settings-tab.ts |
User-saved SavedConfig provenance | Yours (badge) / your saved setup (prose) | Your source-bound setup from a prior import | view-model.ts provenance, config-browser-modal.ts |
ShapePreset (mapping/presets.ts) | Preset | A default policy for choosing note shapes | workbench.ts preset bar |
| Legacy “saved mapping” phrase | Saved setup | Older name for SavedConfig convenience state | Historical specs/logs only |
| Query recipe / Layer C recipe (pivot/table/list/cards composition) | Query template | A starting pattern you fill in and apply | recipe-picker-modal.ts, recipe-loader.ts, recipe-templates.ts |
Materialized query instance (frontmatter + generated .base file) | Query | A saved, filterable view of your vault | browse-queries-modal.ts, embed-existing-query-modal.ts, command palette |
| SSSOM mapping file | Crosswalk mapping file | A file listing how two frameworks’ items relate | sssom-import-modal.ts, main.ts command (fix-list) |
| Crosswalk | Crosswalk (no change — already plain) | A link showing two framework items correspond | crosswalker-pivot-view.ts, docs |
| Tier 2 / sqlite-wasm sidecar projection | Fast query index | A background cache that speeds up big-vault queries | settings-tab.ts (correct), main.ts command (applied 2026-08-28: the palette now reads “Maintenance: reset search data”) |
| Ontology (as a plugin-home noun, e.g. “installed ontologies”) | Framework (or the specific source name) | The structured source you imported | workspace-view.ts (applied 2026-08-28: the heading now reads “Installed frameworks” and the status bar counts frameworks) |
WizardDraft | Draft | Your in-progress import, saved to resume later | draft-store.ts, import-wizard.ts |
Structural Detection | What we found / detected shape | The plugin’s evidence-backed guess at your data’s shape | workbench.ts, import-wizard.ts |
Six-primitive Destination (folder/name/tag/heading/link/property) | Shape | One of six ways your data can live in the vault | workbench.ts shape cards |
ConceptIdentity / CURIE | (not surfaced — stays internal) | Stable id for one concept across the vault | render engine only |
Rules this page enforces
Section titled “Rules this page enforces”- Sentence case on every UI string (Obsidian community-plugin lint requirement).
- No em dashes in plugin UI copy — periods, colons, or commas instead (
feedback_no_em_dashes_in_ui). - One artifact, one name, everywhere it appears. If a screen calls it a “configuration,” no sibling screen may call the same thing a “recipe,” “mapping,” or “preset.”
- Preset ≠ reusable configuration ≠ saved setup ≠ built-in configuration. A preset is a recipe template/default policy; a reusable configuration is a portable
ImportRecipe; a saved setup is legacy source-boundSavedConfigstate; a built-in configuration is a vetted default. Badges (Built-in/Yours/Custom (based on X)) and prose must preserve those distinctions. - “Reusable configuration” is provisional. Keep it as the public placeholder for
ImportRecipe, but UX-test the final term before locking it across the product. - Query template ≠ query. A template is what you pick and configure; a query is what exists in your
vault after you apply one.
browse-queries-modal.tsandembed-existing-query-modal.tsalready get this right — the picker (recipe-picker-modal.ts) has been brought into line. - KB-internal acronyms (STRM, SSSOM, Tier 0/1/2, curie) never appear unglossed in UI strings. When a command must reference one for disambiguation, prefer the plain description (“crosswalk mapping file,” “fast query index”) over the acronym.
Applied vs. flagged
Section titled “Applied vs. flagged”This pass (2026-07-11, feat/render-report) directly edited the artifact’s editable surface —
src/config/**, src/views/recipe-picker-modal.ts, src/views/crosswalker-pivot-view.ts,
src/import/draft-store.ts — for the renames above that were self-contained. Renames that require
touching import-wizard.ts, workbench.ts, main.ts, settings-tab.ts, or workspace-view.ts are
listed as a fix list handed to those files’ owners (see the delivery/session log for this pass), since
those files are out of this pass’s editable surface.
Related
Section titled “Related”- Artifact roles and authority — canonical, editable, template, serialization, carrier, and package boundaries
- Terminology — the full KB glossary this page maps from
- What makes Crosswalker unique
- Shape-first wizard spec:
.workspace/2026-07-05-shape-first-wizard-spec.md§3c½ (preset vs. saved mapping) — the spec-level source for the preset/config distinction this page locks into UI copy - Memories:
feedback_readme_user_facing_surfaces,feedback_general_ontology_positioning,feedback_no_em_dashes_in_ui