Input format: documents into the knowledge library
Run the commands below from the installation directory. See Run operator commands for how ./lens reaches the running installation and copies files into it.
A writer ingestsIngestRead supplied records or documents and add their information to NovusLens, after the required checks. a document with the operator’s command. ./lens copies the --file into the running installation:
./lens connectors document --org harbour --viewer cxo-harbour --title "Customs filing standing order 12" --file so-12.md --cell customs --page customs/policiesThe same ingestion path serves POST /meaning/ingest for services on the installation’s private network. The reasoning service does not publish port 8500 to the host, so an operator uses the command above.
The source is stored as an evidence artifact, so a citation resolves to it. The cross-canon sweep runs immediately: an entry keyed to a cellCellA box on the map that stands for a team, service, supplier or AI agent. It is a unit you can inspect, not necessarily a department or a person. the graphGraphA model made of units and links between them. In NovusLens it records teams, services and their dependencies. does not hold raises a findingFindingA difference in the records that needs a decision. It includes its sources and can describe a slow handoff, disputed fact or missing owner. on the spot. Visibility defaults from who ingests. Leadership means the executive and the board; a cell owner means that cell and its management chain. Widening later is an audited act.
Required fields
viewer,org: who is ingesting, for which organisation.title: the document’s name as people say it.body_md: the text, as Markdown. Headings and lists survive; images do not.
Optional fields
cell_ids: the cells the document concerns. An id the graph does not hold raises a finding rather than being dropped.page: a path such asorg/boardorgrid-ops/runbooks, grouping documents on the meaning page.attributes: free key-valueKey-value storeStorage where a named key points to a value. Reading that key retrieves the value currently stored under it. pairs kept with the entry.visibility: omit it to take the default derived from the viewer’s privilege. Preview the default with the visibility-preview route before ingesting something sensitive.agent_request_ids: links to the ask that solicited the document.meaning_entry_ids: entries this document rests on. A support dependency: the new entry is held until those entries still check out, and nothing is retracted. This is not a replacement.supersedes_entry_ids: entries this document replaces. Each one is retracted with the reason recorded (superseded by <new entry>), stays inspectable in history, and vanishes from every read. Only the predecessor’s ingester or a steward may do this.
Minimal valid example
{
"viewer": "cxo-harbour",
"org": "harbour",
"title": "Customs filing standing order 12",
"body_md": "## Purpose\nDeclarations are filed by the customs desk. The pre-fill assistant drafts; a person files.\n\n## Limits\nNo filing without a named officer's approval.",
"cell_ids": ["customs"],
"page": "customs/policies"
}A document lands at shown: something written backs every entry, and the citation resolves to it. It is meaning, not structure. Nothing in it changes a cell, an edge or a score. What it changes is what an answer can cite.
Replace, rest on, or retract
A revised document is a new entry. Its identity comes from its text, so version 2 never overwrites version 1 by itself, and sending version 2 alone leaves both current. Say which relationship you mean.
| You want | Field or route | What happens to the earlier entry |
|---|---|---|
| Version 2 replaces version 1 | supersedes_entry_ids: ["<v1>"] | Retracted, reason superseded by <v2> recorded, link kept both ways; gone from every read |
| A commentary that rests on a policy | meaning_entry_ids: ["<policy>"] | Untouched; the commentary is held if the policy is later retracted |
| Remove a document with no successor | POST /meaning/retract with a reason | Retracted with the reason; nothing erased |
The command form takes --supersedes <entry id> and --based-on <entry id>, each repeatable. The entry id is printed when a document is ingested and shown on the meaning page.
Worked example: policy version 2
Version 1 is ingested and prints its id, say 2f9c…. Version 2 replaces it:
{
"viewer": "cxo-harbour",
"org": "harbour",
"title": "Customs filing standing order 12",
"body_md": "## Purpose\nDeclarations are filed by the customs desk.\n\n## Limits\nNo filing without a named officer's approval, recorded in the filing log.",
"cell_ids": ["customs"],
"page": "customs/policies",
"supersedes_entry_ids": ["2f9c…"]
}Afterwards a search for the standing order returns version 2 only. Version 1’s row keeps who retracted it, when, and superseded by <v2>. An answer that cited version 1 is rechecked when opened and says its support changed. Had version 2 been sent with meaning_entry_ids instead, both versions would still be current and an answer could cite either.