Knowledge entries & the graph
A knowledge entry is the unit of memory in Halyard — a captured decision, work output, process, or person. Each entry has a type, moves through a lifecycle, and connects to other entries through relations. The important idea up front: the type is a lens for finding things, not a schema you have to satisfy to write something down. Structure in Halyard comes from the links between entries, not from a rigid hierarchy.
Entry types are lenses, not schemas
Section titled “Entry types are lenses, not schemas”Every entry carries an entryType. There are six:
| Type | Lens for |
|---|---|
WORK_OUTPUT | Something an agent or person produced or shipped |
DECISION | A choice the org made, and why |
PROCESS | How something is done — a repeatable procedure |
CONTEXT | Background that doesn’t fit the others |
CONTACT | A person record (every user has a paired one) |
COMPANY | An organization record |
These types exist for filtering and retrieval — pass type to search_knowledge to narrow a query. They never gate creation. There are no required fields and no validation refusals; the system never rejects knowledge because it doesn’t fit a shape (principle P3, “types are lenses, not schemas”). Pick the closest type and move on — the lens helps later searchers, it doesn’t block the writer.
Lifecycle
Section titled “Lifecycle”An entry moves through three states:
INBOX -> FILED -> ARCHIVEDINBOX— newly created and, when AI-generated, awaiting human review. New entries fromsummarize_workand ingestion land here.FILED— accepted into the org’s living memory and fully searchable.ARCHIVED— retired; kept for history but out of the way.
The INBOX stage is the review gate. AI-generated entries wait there for a human to accept or dismiss them before they become part of trusted memory — see the inbox.
Relations: structure emerges from links
Section titled “Relations: structure emerges from links”Entries connect to each other through typed relations. There are five:
| Relation | Meaning |
|---|---|
RELATED_TO | General association between two entries |
SUPERSEDES | This entry replaces an older one |
DERIVED_FROM | This entry was produced from another |
REFERENCES | This entry points at another as a source |
WORKS_AT | A CONTACT is linked to a COMPANY |
Many of these are discovered automatically — Halyard invests in relation discovery, mention detection, and semantic clustering rather than asking people to wire links by hand (principle P4, “structure emerges from links, not labels”). The graph grows as a side-effect of capture; the connections are bidirectional and cheap.
Search results expose this connectedness directly. Every hit carries relation_count (how linked the entry is) and is_superseded (whether a newer version exists):
{ "id": "cc582283-…", "entry_type": "DECISION", "title": "Use per-user OAuth for calendar import (not domain-wide sync)", "similarity": 0.71, "relation_count": 3, "is_superseded": false}A high relation_count signals a well-connected, load-bearing entry. is_superseded: true warns you a newer entry exists — follow the graph to find it.
Traversing the graph
Section titled “Traversing the graph”explore_knowledge(entry_id, depth?, types?) walks the relations out from any entry — to see what superseded it, what it derived from, and what else it connects to. Start from a search_knowledge hit (or from caller_profile.profile_entry_id on a search response) and explore outward when one entry isn’t the whole picture. When an entry is marked superseded, exploring its relations is how you reach the current version.
In practice
Section titled “In practice”- Search before you ask — filtering by
typeand readingrelation_count/is_superseded. - Capture what you learn — writing entries with
summarize_work, includingsupersedes_entry_id. - The inbox — the
INBOXreview gate for AI-generated entries. - Tool reference —
search_knowledge,explore_knowledge,summarize_worksignatures.