Shelves
A shelf is what you’re actually asking for. Every category of fact in Civil Memory - a site diary, a safety incident, a budget line, a supplier rating - lives on a shelf. When you ask a question through Studio or Ask Demiton, you’re naming a shelf: “safety incidents,” “budget vs actual,” “site diaries.” You don’t need to know, or care, which system produced the underlying record.
Why the name matters
Before this model existed, a request named the pipe that wrote the data, not the product it produced. That worked as long as one shelf had one writer. It broke as the platform grew for reasons that show up as real product limits if left unfixed:
- More than one system can feed the same shelf. If your organisation runs Business Central for one contract type and Xero for another, “job cost elements” should mean the same thing regardless of which ERP produced it. A request that names the writer instead of the product can’t express that.
- Delivery is a server decision, not a caller decision. Whether a fact is served from a cache, computed live, or read straight off a table shouldn’t change what you ask for.
- The product name should describe the data, not the plumbing. “Safety incidents” is what you mean. The mechanism that got the incident into memory is an implementation detail.
A shelf is deliberately not the same thing as a conduit - the pipe that writes to it. Keeping the two separate is what makes both problems solvable independently.
Next steps
- Conduits - the pipe that fills a shelf
- Agents - agents read shelves the same way Studio and Ask Demiton do
- How Civil Memory works - the record shelves are drawn from