Relationship Class Changed v1¶
Source schema: doc/schemas/relationship-class-changed.v1.schema.json
Append-only local fact recording a relationship class definition transition.
Governing Basis¶
doc/project/40-proposals/065-local-relationship-layer.mddoc/project/60-solutions/032-local-relationship-layer/032-local-relationship-layer.md
Project Lineage¶
Requirements¶
doc/project/50-requirements/requirements-006-node-networking-mvp.mddoc/project/50-requirements/requirements-010-middleware-executor.mddoc/project/50-requirements/requirements-011-dator-arca-contracts.mddoc/project/50-requirements/requirements-014-resource-opinions.md
Stories¶
doc/project/30-stories/story-001-swarm-node-onboarding.mddoc/project/30-stories/story-004-pod-client-onboarding.mddoc/project/30-stories/story-005-whisper-rumor-intake.mddoc/project/30-stories/story-006-buyer-node-components.mddoc/project/30-stories/story-006-voluntary-swarm-exchange.mddoc/project/30-stories/story-007-settlement-capable-node.mddoc/project/30-stories/story-008-cool-site-comment.md
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: relationship-class-changed.v1 |
|
schema/v |
yes |
const: 1 |
|
fact/id |
yes |
string | |
class/id |
yes |
ref: relationship-class.v1.schema.json#/$defs/class_id |
|
transition |
yes |
enum: created, updated, archived, unarchived |
|
prior/definition |
no |
ref: relationship-class.v1.schema.json |
|
next/definition |
no |
ref: relationship-class.v1.schema.json |
|
actor/ref |
yes |
string | |
event/at |
yes |
string | |
reason/code |
no |
string | |
reason/note |
no |
string | |
tx/id |
yes |
string |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"transition": {
"const": "created"
}
},
"required": [
"transition"
]
}
Then:
{
"required": [
"next/definition"
],
"not": {
"required": [
"prior/definition"
]
}
}
Rule 2¶
When:
{
"properties": {
"transition": {
"const": "updated"
}
},
"required": [
"transition"
]
}
Then:
{
"required": [
"prior/definition",
"next/definition"
]
}
Rule 3¶
When:
{
"properties": {
"transition": {
"const": "archived"
}
},
"required": [
"transition"
]
}
Then:
{
"required": [
"prior/definition",
"reason/code"
],
"not": {
"required": [
"next/definition"
]
}
}
Rule 4¶
When:
{
"properties": {
"transition": {
"const": "unarchived"
}
},
"required": [
"transition"
]
}
Then:
{
"required": [
"prior/definition",
"next/definition",
"reason/code"
]
}
Field Semantics¶
schema¶
- Required:
yes - Shape: const:
relationship-class-changed.v1
schema/v¶
- Required:
yes - Shape: const:
1
fact/id¶
- Required:
yes - Shape: string
class/id¶
- Required:
yes - Shape: ref:
relationship-class.v1.schema.json#/$defs/class_id
transition¶
- Required:
yes - Shape: enum:
created,updated,archived,unarchived
prior/definition¶
- Required:
no - Shape: ref:
relationship-class.v1.schema.json
next/definition¶
- Required:
no - Shape: ref:
relationship-class.v1.schema.json
actor/ref¶
- Required:
yes - Shape: string
event/at¶
- Required:
yes - Shape: string
reason/code¶
- Required:
no - Shape: string
reason/note¶
- Required:
no - Shape: string
tx/id¶
- Required:
yes - Shape: string