hjun1052's picture
Publish Payo-0.8B-Core-Preview research preview
c832e33 verified
|
Raw History Blame Contribute Delete
2.45 kB
# Payo Patch IR
Payo updates an existing structured record by emitting a minimal JSON array of operations. It does not regenerate the full state and does not use RFC 6902.
## Shape
A patch is a JSON array. Each operation targets a JSON Pointer path listed in the supplied Payo Schema View.
[{"op":"set","path":"/status","value":"confirmed"}]
Supported operations:
- **set** — create or replace a value at a schema-approved path whose parent object already exists.
- **delete** — remove an existing field when the schema allows deletion.
- **append** — append one value to an existing append-only array.
- **[]** — a genuine no-op: no represented state change is justified.
The model should emit the smallest patch that produces the justified current state. An invalid operation invalidates the whole patch.
## Null, deletion, and no-op
These are not interchangeable.
Set an existing field to JSON null:
[{"op":"set","path":"/assignee","value":null}]
Remove the field:
[{"op":"delete","path":"/assignee"}]
Make no change:
[]
A null value means the field remains present with a null value. Delete means the field is absent. An empty array means that no state change is justified.
## Operations
### set
Set creates or replaces the value at a schema-approved path. The parent object must already exist. Payo v0 does not create missing intermediate objects.
[{"op":"set","path":"/status","value":"confirmed"}]
The value must satisfy the path's type and any deterministic constraints such as enum, const, or numeric bounds.
### delete
Delete removes an existing field. The field must exist, and the schema must allow deletion. Required fields are not deletable.
[{"op":"delete","path":"/assignee"}]
### append
Append adds one item to an existing append-only array. It does not replace or edit existing array items.
[{"op":"append","path":"/events","value":{"type":"checked_in","minute":64}}]
Array paths support append only; indexed mutation is outside this IR.
## Paths and application
Paths use JSON Pointer escaping: a literal tilde is written as ~0 and a literal slash in a key as ~1. Operations are applied in array order. The target path must exist in the supplied schema and the current state must satisfy the patch operation's preconditions.
A patch is not silently repaired. Do not substitute a nearby path, coerce a value, drop a bad operation, or replace an invalid patch with [].