Hyperedge Commands

derivon hyperedge list
derivon hyperedge get <ID>
derivon hyperedge add <ID> [--tail <POINT_ID>]... --head <POINT_ID> --weight <WEIGHT>
  [--data <JSON> | --data-file <FILE>]
derivon hyperedge remove <ID> [--ignore-missing]
derivon hyperedge rename <ID> <NEW_ID>
derivon hyperedge set tails <ID> [--tail <POINT_ID>]...
derivon hyperedge set head <ID> <POINT_ID>
derivon hyperedge set weight <ID> <WEIGHT>
derivon hyperedge data get <ID> [POINTER]
derivon hyperedge data set <ID> [POINTER] (--value <JSON> | --value-file <FILE>)
derivon hyperedge data remove <ID> [POINTER] [--ignore-missing]

Mutations emit the complete transformed graph. New hyperedges are appended; absent data defaults to {}, while explicit null is preserved. CRUD is strict: unknown IDs and global ID collisions fail, including rename to the same ID. --ignore-missing is available only for remove; removing an unknown edge with it is a successful no-op.

Every referenced point must exist. Duplicate tails are rejected. Empty tails are valid; set tails without --tail sets an empty tail. Parallel hyperedges are valid when their IDs differ.

Weights are exact non-negative decimals no greater than 900719925474099.1 and must be multiples of one tenth. Invalid values are rejected rather than rounded. Scientific notation is accepted by mathematical value and negative zero is emitted as zero.

Data

Data commands follow the same JSON Pointer rules as point data commands. Omitting the pointer addresses the entire payload. Missing intermediate parents fail, a final object member may be created, and - appends to an array.

Root removal omits data. Array removal shifts later elements; /- is invalid for remove. Missing paths fail unless --ignore-missing is present. A subpath operation under absent or null data returns pointer_type_mismatch; the CLI neither promotes the value nor panics, and --ignore-missing does not suppress type mismatches. Same-value set operations succeed. Removing a missing data path with --ignore-missing is a successful no-op.