Record / Decisions & evidencePermalink ↗
Recommendation
An authored proposal for a trip brief and home; several proposals can coexist.
PrototypeZendo / Concierge · v0.5.0
Source reference details
The source snapshot pins the input files; the schema profile identifies their reading context.
- Schema profile
- zendo@0.5.0
p-f00751fd5cb933c54668c32e99fa66a3dce99f6f08b38a992dbc1f0e955565c2 - Source snapshot
s-be6ad60eee907ae2864ca8fddf0a8713fad1eb380b06ae299ccaec241238e6d2
- Revision
d-cf7da85e852a5e7b3705ff42243a87533e31c1b180b4bb3ba148f53367eca72e- Occurrence
o-c47dc44cf285cb9e89b1f7a10a34c3a11fdb20d29b65618754758e8c551ddc8a- Producer state
- Prototype
- Website state
- viewer-source-not-published
- Attribution
- Unknown. Source association is not authorship or approval.
- Identity
- recommendations[].id
- Owner
- Recommending concierge or Hermes actor.
Fields 11
| Field | Contract |
|---|---|
schemaRequired | "zendo.recommendation/v1"Schema constraints{
"const": "zendo.recommendation/v1"
} |
idRequired | stringStable record ID; on Guest Profile, the legacy guest-ID alias. Schema constraints{
"type": "string"
} |
guestIdRequired | stringThe Guest this record concerns. Schema constraints{
"type": "string"
} |
briefIdRequired | stringActive trip reference for trip scope; null for reusable guest scope. Schema constraints{
"type": "string"
} |
briefRevisionRequired | integerSchema constraints{
"type": "integer",
"minimum": 1
} |
propertyIdRequired | stringSchema constraints{
"type": "string"
} |
reasonRequired | stringSchema constraints{
"type": "string",
"minLength": 1,
"maxLength": 2000
} |
createdByRequired | objectSchema constraints{
"type": "object"
} |
createdAtRequired | stringSchema constraints{
"type": "string"
} |
statusRequired | current | review-needed | withdrawnSchema constraints{
"enum": [
"current",
"review-needed",
"withdrawn"
]
} |
legacyOptional | booleanSchema constraints{
"type": "boolean"
} |
Scope & rules
- Adding a recommendation does not select it or change an existing draft.
- A changed brief retains history and marks current proposals review-needed.
- Review-needed and withdrawn proposals cannot be selected. Recommending again creates a new proposal for the current revision.
Relationships
Pinned source artifacts
catalog.json ↗fc80ccf855bd99b377839827180548c8377ea0e0719447f9f132529a913af102
zendo.schema.json ↗82ba5825bccaa5c7d3b7bde8fb47597e41e88edda4dec18cded8063952219278
devgraph.ontology.json ↗afd935f58e1a0ec2af090cf4d09f5e14a83c62e1280d96390d2ec2a75d648c95
Exact source node
{
"id": "recommendation",
"label": "Recommendation",
"kind": "Record",
"group": "Decisions & evidence",
"description": "An authored proposal for a trip brief and home; several proposals can coexist.",
"fields": [
{
"name": "schema",
"type": "\"zendo.recommendation/v1\"",
"required": true,
"schema": {
"const": "zendo.recommendation/v1"
}
},
{
"name": "id",
"type": "string",
"required": true,
"description": "Stable record ID; on Guest Profile, the legacy guest-ID alias.",
"schema": {
"type": "string"
}
},
{
"name": "guestId",
"type": "string",
"required": true,
"description": "The Guest this record concerns.",
"schema": {
"type": "string"
}
},
{
"name": "briefId",
"type": "string",
"required": true,
"description": "Active trip reference for trip scope; null for reusable guest scope.",
"schema": {
"type": "string"
}
},
{
"name": "briefRevision",
"type": "integer",
"required": true,
"schema": {
"type": "integer",
"minimum": 1
}
},
{
"name": "propertyId",
"type": "string",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "reason",
"type": "string",
"required": true,
"schema": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
{
"name": "createdBy",
"type": "object",
"required": true,
"schema": {
"type": "object"
}
},
{
"name": "createdAt",
"type": "string",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "status",
"type": "current | review-needed | withdrawn",
"required": true,
"schema": {
"enum": [
"current",
"review-needed",
"withdrawn"
]
}
},
{
"name": "legacy",
"type": "boolean",
"required": false,
"schema": {
"type": "boolean"
}
}
],
"rules": [
"Adding a recommendation does not select it or change an existing draft.",
"A changed brief retains history and marks current proposals review-needed.",
"Review-needed and withdrawn proposals cannot be selected. Recommending again creates a new proposal for the current revision."
],
"facts": [
{
"label": "Identity",
"value": "recommendations[].id"
},
{
"label": "Owner",
"value": "Recommending concierge or Hermes actor."
}
],
"links": [
{
"label": "is for",
"target": "trip-brief",
"note": "0..* → 1"
},
{
"label": "proposes",
"target": "home-listing",
"note": "0..* → 1"
}
]
}