Every pane and every feature, read from the model it edits.
Robert Blust · Software Engineer & Architect
CompanyGraph describes itself in CompanyGraph. The plugin is one feature of the product CompanyGraph Core, and this is its page as the repository holds it.
Its concepts are this talk's vocabulary.
What a vault lacks is what an instance's CI supplies after the edit: a reference that resolves, and no field its schema does not declare. The plugin says so while the edit is made, and implements no rule of its own.
Every change checks the whole model, because a reference crosses files. A failure gets a mark on its line, a row in the pane and a count in the status bar.
Copy report puts the pane on the clipboard, for an agent or an issue.
The pane follows the note in front. Each entry says where the name stands, a field or a section and its column, and opens that line.
While a vault is an instance, Obsidian's backlinks, outgoing links, properties and tags panes are off: none of them knows a name a schema declares.
The brief follows the cursor. It names the place, says whether the schema requires it, and shows the rules that name it.
A section or field in a rule is a chip that moves the cursor there. The type's other rules fold under the place each one names first.
A reference field offers the canonical names of its type, an enum its permitted values, a table cell what its column declares.
A name resolves by the type its schema declares; a name that exists only under another type is not offered.
In Live Preview, Add property lists exactly the fields this file's schema declares and the file lacks, the required ones first.
Its last entry hands over to Obsidian's own list, for a field the checks will then report.
A name a schema declares is drawn as a link, and one that names nothing as an unresolved link. Cmd-click opens the entity it names.
The model's edges reach Obsidian's graph view, so an entity's neighbors there are the ones the model names.
A required section the page lacks is drawn where the schema puts it, and one click writes it. Add a section and Remove section do the rest.
A heading the schema declares is held against a stray edit. A section of the page's own is allowed.
New entity writes a page with its required fields and sections. Rename entity rewrites the name in every file that uses it.
Delete entity lists the references it would leave naming nothing, before anything is deleted.
Every page carries an id that outlives its name. The plugin writes one on every new page and refuses an edit that changes or removes it.
Copy entity id copies it. Give this page a fresh id replaces it, once you confirm.
Make this vault an instance writes core, the manifest, CI and the first entities. Move this vault's core takes a newer release and leaves the model alone.
Open the command line opens the meta-model's own, in a tab at the vault's root.
Obsidian's table editor pads every column the moment one cell is edited. The plugin writes the note back in the form the conventions' CI would write, when it is left or saved.
An edit that was undone leaves no diff at all.
The gate a change has to pass is still the checks an instance runs in CI. And the writing rules are a judgment: no check reads them, here or anywhere. The brief puts them where the writing happens, and a person holds a page to them.
npx --yes 'github:companygraph/meta-model#semver:*'
Its menu's Obsidian plugin entry puts the newest release into the vault and switches it on. Run again, it updates the plugin and keeps its settings. The plugin is not in Obsidian's community directory.
github.com/companygraph/obsidian-plugin · github.com/companygraph/mental-model