agent_derived_edges_spec - mark-ik/graphshell GitHub Wiki
Date: 2026-02-28 Status: Deferred โ not in current implementation scope Priority: Prospective
Related:
-
../subsystem_history/edge_traversal_spec.mdโ ยง2.2 (AgentDerivedEdgeKind), ยง2.5 (decay and promotion rules) -
graph_node_edge_interaction_spec.mdโ ยง5.2 (richer relationship tooling) -
../../TERMINOLOGY.mdโAgentRegistry,EdgePayload,EdgeKind,Action
edge_traversal_spec.md defines the data-model contract for AgentDerived edges โ their EdgeKind value, decay semantics, and promotion rules. That spec is intentionally narrow: it covers edge lifecycle and traversal history integrity.
This stub is the home for the canvas interaction and AgentRegistry integration design โ the questions that fall outside the traversal subsystem's scope.
An AgentDerived edge is created when an AgentRegistry agent emits a recommendation that two nodes are related. The agent does not navigate between them; it asserts a relationship based on observation (content similarity, co-access patterns, semantic proximity, etc.).
Key questions this spec must answer when designed:
- What
GraphIntentvariant does an agent emit to assert anAgentDerivededge? - What payload does the intent carry (confidence score, agent id, reasoning label)?
- Can the same agent re-assert an edge to reset its decay timer?
- Can multiple agents assert the same edge? If so, how are their scores composed?
- How does the user distinguish an
AgentDerivededge from other edge kinds? - What opacity/fade schedule maps to elapsed time since assertion?
- Should the agent's confidence score map to any visual property (thickness, label)?
- How does the user accept, dismiss, or permanently remove an agent suggestion?
- Accepting a suggestion: user navigates the edge (promotion is automatic per
edge_traversal_spec.md ยง2.5). - Explicitly dismissing a suggestion: what intent is emitted? Does dismissal create a suppression record to prevent re-assertion by the same agent?
- Accessing agent reasoning: can the user inspect why the agent suggested the edge?
- The
AgentRegistryowns agent lifecycle (registration, activation, inference providers). - Agent-derived edge assertion must route through the reducer via
GraphIntent, not via direct mutation from agent code. - The canvas must not know the specific agent that produced an edge; it only knows
EdgeKind::AgentDerivedplusmetrics.agent_confidence.
-
AgentDerived-only edges should exert weaker attractive forces thanTraversalDerivededges to reflect their provisional nature. The physics profile for agent suggestions is a canvas policy decision, not a hard constraint.
These are already locked in the traversal spec and must not be contradicted here:
- Decay rule:
AgentDerived-only edges are evicted after the configured decay window (default 72 h) with no navigation. - Promotion rule: user navigation asserts
TraversalDerivedand halts decay. - Visual:
AgentDerived-only edges render at reduced opacity, fading over time. - Multi-kind rendering: if
TraversalDerivedis added,TraversalDerivedstyle takes over fully. - Rolling window and
EdgeMetricsapply the same as for other edges.
Design this spec when:
-
AgentRegistryhas at least one implemented agent emitting real graph observations. - The
AgentDerivedEdgeKindis being wired intopush_traversal/ decay logic in the reducer. - There is a concrete product scenario for agent-suggested edge acceptance/dismissal UX.
Do not implement agent assertion GraphIntent variants, decay timers, or canvas affordances until this spec is written and reviewed.