Skip to content

errors: closed vocabularies (edge type / node type / tier) don't enumerate valid values — agents retry-guess in cascades #50

Description

@1Croydan1

Problem

Closed-vocabulary errors don't enumerate the valid values, and the JSON schemas read like open lists — so agents invent values and retry-guess synonyms in cascades.

Numbers (audit of 13,105 sessions)

  • link: 996 errors (7.5%, biggest offender). ~62% — invented edge_type: related_to ×390(!), related, relates_to, supports, involves and ~40 more variants — the related_* family alone produced 482 retry errors, because unknown edge type: related_to (graph/edge.rs FromStr) doesn't name the valid types.
  • supersede: 18/84 = 21.4% error rate, worst in the product. 14 of 18 — unknown node type: observation: the agent picks a word kaeru's own surface legitimizes (episode kind=observation, jot's auto-tag kind:observation, the tagged description lists observation) — but NodeType::from_str (kaeru-core/src/graph/node.rs:122-139) doesn't know it. 2 more — unknown tier "warm": the agent extrapolates the thermal layer metaphor (hot/cold) onto tier (operational/archival).
  • Aggravating factor: the LinkParams doc-comment says "Common values: …" — open-vocabulary phrasing; the full edge-type list in .with_instructions lies beyond the client truncation point and is invisible in sessions.

Proposal

  1. All closed-vocabulary FromStr errors enumerate valid values: unknown edge type: related_to; valid: refers_to, derived_from, causal, part_of, blocks, targets, contradicts, supersedes, verifies, falsifies, temporal, consolidated_to. Same for node type and tier. Three format! calls — cheap.
  2. In params.rs schemas: "Common values" → "Valid values (closed set): …" or a real enum in the JSON schema (the client then validates before the server).
  3. Optional: accept frequent synonyms (observation→episode) or answer with did-you-mean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions