A field-level edit to a strain's living document (collaborative editing). Targets a strain via `subject` (the anchor record of the entity) and carries a sparse patch: scalar field overwrites in `set`, additive ops on open array fields in `add`/`remove`, and field clears in `unset`. The AppView folds accepted edits over the anchor record to materialize the canonical document; this record is one signed contribution, attributed to its publisher DID. See docs/05-collaborative-strains.md.
tid
Timestamp-based ID
Properties
add
ref
#arrayFields
Optional
Values to add to open array fields (union at fold time).
basedOn
string
Optional
Materialized revision hash this edit was authored against, for conflict detection. Optional; absent for blind edits.
createdAt
string
datetime
Required
Client-declared timestamp when this edit was created. Also the fold ordering key (ties broken by record URI).
remove
ref
#arrayFields
Optional
Values to remove from open array fields (set-difference at fold time).
set
ref
#scalarFields
Optional
Scalar and object-valued fields to overwrite (last-writer-wins per field at fold time).
subject
string
at-uri
Required
AT-URI of the org.cannadb.strain record anchoring the entity this edit targets.
summary
string
Optional
Short human edit summary (the commit message). Capped at 200 graphemes (2000 bytes).
maxLength: 2000 bytesmaxGraphemes: 200 graphemesunset
array
of
string
Optional
Field names to clear. Each must be an editable field of org.cannadb.strain.
View raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"subject",
"createdAt"
],
"properties": {
"add": {
"ref": "#arrayFields",
"type": "ref",
"description": "Values to add to open array fields (union at fold time)."
},
"set": {
"ref": "#scalarFields",
"type": "ref",
"description": "Scalar and object-valued fields to overwrite (last-writer-wins per field at fold time)."
},
"unset": {
"type": "array",
"items": {
"type": "string",
"description": "An editable strain field name to clear, e.g., \"growthOdour\"."
},
"description": "Field names to clear. Each must be an editable field of org.cannadb.strain."
},
"remove": {
"ref": "#arrayFields",
"type": "ref",
"description": "Values to remove from open array fields (set-difference at fold time)."
},
"basedOn": {
"type": "string",
"description": "Materialized revision hash this edit was authored against, for conflict detection. Optional; absent for blind edits."
},
"subject": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the org.cannadb.strain record anchoring the entity this edit targets."
},
"summary": {
"type": "string",
"maxLength": 2000,
"description": "Short human edit summary (the commit message). Capped at 200 graphemes (2000 bytes).",
"maxGraphemes": 200
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this edit was created. Also the fold ordering key (ties broken by record URI)."
}
}
},
"description": "A field-level edit to a strain's living document (collaborative editing). Targets a strain via `subject` (the anchor record of the entity) and carries a sparse patch: scalar field overwrites in `set`, additive ops on open array fields in `add`/`remove`, and field clears in `unset`. The AppView folds accepted edits over the anchor record to materialize the canonical document; this record is one signed contribution, attributed to its publisher DID. See docs/05-collaborative-strains.md."
}