The knowledge graph is small and curated by design. Agents and humans both contribute proposals; an operator approves them before the graph takes the edge. This keeps speculation out of the live graph.
When you've observed a missing edge that has clear page-level support and you want it landed.
propose_knowledge writes a proposal row to hub_proposals (or the
equivalent KG-proposal table) with status = pending. list_proposals
returns the queue. Operators triage from the admin UI or another
script; accepted proposals become real graph edges, rejected ones
remain in history with a reason.
The frontmatter steps capture the canonical workflow: read,
propose, confirm, hand off, track. The "read first" step is
load-bearing — proposals without page-level support get rejected.
The frontmatter pitfalls are the recurring failure modes. The
"agent inference instead of page text" pitfall is the worst —
proposals from speculation rather than citation pollute the queue.