omniseek_statement
Create, list, or retract directed typed statements between graph nodes, persisting your own decision-relevant judgments and resurfacing them on future graph and search queries.
Instructions
Use WHEN you've concluded a DIRECTED, decision-relevant relation OmniSeek does NOT already store mechanically (X acquired_by Y, paper P refutes claim Q, path R requires gate S) and want the graph to carry it forward — record / list / retract typed relation statements (the general sibling of omniseek_ruling; identity types belong to omniseek_ruling).
OmniSeek never MAKES a statement; it STORES yours as declarative state and PROJECTS it at read time
(the rulings / sensors.json precedent: judgment persisted as config OmniSeek applies mechanically).
A statement is a DIRECTED, typed relation between two graph node ids: "openai --acquired_by-->
someone", "paper X --refutes--> claim Y". It surfaces in omniseek_graph's neighborhood / between / since
under working / exploratory (never conservative — the pure mechanical world) AND, since
the write-side read-back, AMBIENT on any future omniseek_search hit of an endpoint (the
metadata.graph.judgments stamp): recording is NOT write-only — your judgment returns to you when
you next touch the node. The directed triple (src, dst, type) is the KEY, so re-creating it REPLACES
the prior note; direction is YOUR assertion, never normalized.
WHAT EARNS A STATEMENT (the value gate — all three must hold, else it is noise that BURIES the edges carrying a real decision; the graph's value is inverse to its noise density):
NON-MECHANICAL — a relation OmniSeek does NOT already store as a fact. cites / authored / affiliated / coauthored / published_in / about and bare bibliometric counts are the mechanical M/A world; re-asserting them here pollutes the judgment channel, which is for what an API cannot read off: YOUR read.
DECISION-RELEVANT — resurfacing it would change a future call (a positioning, a gate, a disqualifier, a fit verdict, a trajectory read). A true-but-inert edge (both-about-RAG, everyone-at-lab-X-affiliated-with-X) is noise.
AS-OF-STAMPED IF A SNAPSHOT — a point-in-time relation (leads / rising / froze_hiring) drifts while its endpoints stay; put the as-of date in the note, or route it to a sensor, so a future reader never mistakes a stale snapshot for the present.
type is FREE agent vocabulary (mechanically slugged: lowercase, spaces -> underscores,
[a-z0-9_] only, <= 40 chars; views never branch on it). An OPEN family, NOT a menu — coin your
own; some exemplars across domains:
• positioning: attacks_premise_of / near_miss_of / validates_premise_of / does_not_flatten /
anchors / introduces (map a competitive / thesis landscape around a claim node).
• provenance / motive: sourced_from_motivated_party / covers (a source's motive; a walled or
cross-lingual source covering what another missed).
• DECISION-space (the non-academic half, easiest to forget): requires / blocked_by / gated_on (a
blocking precondition), disqualified_by / ruled_out_because (an option-eliminator), good_fit_for
/ misaligned_with / froze_hiring / rising (fit + trajectory), reached ... via (a PATH-SAMPLE: how
someone actually reached an outcome).
Two types are REFUSED with a pointer to omniseek_ruling: same_as / not_same_as — identity is a
pair-keyed, symmetric judgment the collapse machinery consumes, kept to omniseek_ruling's one channel.
MEMORY-vs-GRAPH boundary: prose understanding (a lesson, a conclusion, context, confidence, scope) is
the ATOM — it lives in YOUR own notes / memory, or in this statement's note. The graph statement
is a POINTER, minted only when there is a specific PAIR of wall-addressable nodes whose FUTURE
retrieval must carry the judgment; its note / doc point BACK at the prose rather than
restating it. Default to prose; the edge is an opt-in index. (Everything is both a thought and an
edge; the test is whether two NAMED nodes must carry it forward.)
Endpoints may be ANY node id, even ones no tap minted (claim:..., org:...,
inst:label:openai): a statement may pre-date the wall. Such HAND-MINTED ids FRAGMENT across
sessions (claim:c3_wedge vs claim:c3_exact_wedge silently orphans the edge), so REUSE an
existing id: a create echoes similar_anchors (existing near-match hand-minted ids) so you reuse
one instead of minting a near-duplicate; keep a stable slug for your durable anchors.
action picks what to do:
• action="create" (src, dst, type, note; optional doc) -> record. note is the REQUIRED reasoning;
doc the optional provenance node id (a doc:{source}:{sid} or a note id, strongly encouraged).
Returns {created, statement, replaced, similar_anchors?}. A bad type / empty endpoint / empty note /
a refused identity type -> {"error": ...}.
• action="list" (optional about=node id, optional type) -> {statements, count}, filtered to
statements touching about and/or of type. Capped at 200 with a capped flag.
• action="delete" (src, dst, type) -> {deleted: true/false}.
Like omniseek_ruling this is a SEPARATE tool from omniseek_graph (omniseek_graph stays read-only, hence batchable in omniseek_gather). Unknown action -> {"error": ...}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| doc | No | ||
| dst | No | ||
| src | No | ||
| note | No | ||
| type | No | ||
| about | No | ||
| action | Yes |