Screens

Every screen below was generated from this object by OODS Foundry 0.10.1, in React and Vue, and shows the calls that made it and its content hash. Each runs as its generated app runs, in this site's brand, Aquex, in the theme you choose, with the sample records this object's own file carries. A value no record gives shows as a neutral one, such as an empty value or "Not recorded"; OODS Foundry invents none.

React app · sample recordsMaturity: not declaredsha256:542dc195c689…Open full size: Relationship detail screen generated by OODS Foundry in React
The calls that made the Relationship detail apps, in React and Vue
3 calls, as the pipeline sent them
design_compose {
  "object": "Relationship",
  "context": "detail",
  "preferences": {
    "brand": "Aquex",
    "theme": "light"
  }
}

code_generate {
  "schemaRef": "compose-266667ae",
  "framework": "react",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

code_generate {
  "schemaRef": "compose-266667ae",
  "framework": "vue",
  "profile": "build",
  "options": {
    "output": "application",
    "brand": "Aquex",
    "theme": "light",
    "payloadMode": "file"
  }
}

The React app's content hash: sha256:542dc195c689a67223fbb2b95d8665c01496f7954b91e36fd99f718b3dde4012. Its src/ folder: App.tsx, GeneratedUI.tsx, app.css, charts/, main.tsx, oods-brand-aquex.css

The Vue app's content hash: sha256:be21dec0d1b7bba3b8e3044d66533cbb316e9617b984c65f97a62d5c933ef276. Its src/ folder: App.vue, GeneratedUI.vue, app.css, charts/, main.ts, oods-brand-aquex.css

Fields

FieldTypeDescription
labelrequired string Human-readable display name rendered in primary surfaces.
description string Supporting description used in detail and card contexts.
placeholder string Hint copy surfaced in form fields when the label is empty.
statusrequired string Canonical lifecycle state derived from the states parameter.
More

This is the single source of truth for the entity's current lifecycle position. Consumed by Colorized to resolve visual tokens, and by view extensions to render StatusBadge and StatusTimeline.

state_history StateTransition[] Chronological log of state transitions.
More

Each entry records the before/after states, timestamp, and (when governance is enabled) the actor, reason, and transition metadata. Rendered by StatusTimeline in the detail and timeline views. Entry structure: - from: string (previous state) - to: string (new state) - timestamp: ISO 8601 datetime - actor_id: string (user/system who triggered the transition, optional) - reason: string (human-readable justification, required when requireTransitionReason is true) - transition_metadata: Record<string, unknown> (arbitrary context, optional)

allowed_transitions string[] Materialized list of valid next states from the current status, computed from the transitionRules parameter.
More

When transitionRules is null (open model), this contains all states except the current one. Used by StatusSelector to disable invalid options and by StatusBadge to indicate available paths.

created_atrequired datetime Timestamp recording when the entity was first created.
updated_at datetime Timestamp for the most recent modification, when available.
last_eventrequired string Lifecycle event associated with the most recent timestamp mutation.
last_event_at datetime Timestamp for the lifecycle event captured in last_event.
owner_idrequired string Identifier of the owning principal scoped by owner_type.
owner_typerequired string Categorical owner type sourced from the ownerTypes parameter.
ownership_role string Optional role name describing how the owner governs the entity.
ownership_transferred_at datetime Timestamp recording when ownership was last transferred.
tags string[] Ordered list of tags assigned to the entity.
tag_countrequired number Computed number of tags assigned to the entity.
tag_metadata object[] Per-tag governance metadata.
More

Each entry corresponds to a tag in the tags array and tracks provenance and usage for taxonomy health monitoring. Entry structure: - tag: string (the tag value, matches entry in tags array) - created_at: ISO 8601 datetime - created_by: string (user ID or "system" for allow-list tags) - usage_count: number (how many entities use this tag, computed) - moderation_status: "approved" | "pending" | "rejected" (when allowTagModeration is true) - canonical_form: string (resolved synonym target, when synonymResolution is enabled)

neighborhood array This relationship's edge and the edges that share one of its endpoints, each containing source_id and target_id strings and an is_bidirectional boolean.
relationship_idrequired uuid Primary identifier for the relationship edge.
source_idrequired uuid Identifier of the source node in the relationship.
source_name string Display name of the source node.
target_idrequired uuid Identifier of the target node in the relationship.
target_name string Display name of the target node.
relationship_typerequired string (membership, ownership, follows, depends_on, references) Semantic type describing the edge between the source and target.
directionrequired string (unidirectional, bidirectional) Directionality applied when traversing the relationship.
strength string (low, medium, high) Signal representing how strongly the entities are connected.
origin_source string (manual, ingestion, analytics, integration) System that originated or inferred the relationship.
is_bidirectionalrequired boolean Flag indicating whether the relationship is symmetric.
owner_name string Display name of the organization, team or platform that owns the relationship.

Traits

Each trait adds fields and behaviour. Every object with the trait gets the same.

Relationships

These arrows show declared relationships between object types. They don't join live records.

Relationships: Relationship1 object types and 0 declared associations. Arrows point from source to target. Labels state source-relative cardinality and the via field; they do not assert live referential integrity. Canonical graph edge linking two entities with lifecycle, ownership, and tagging semantics.RelationshipTraits: Labelled, Stateful,Timestampable, Ownerable, Taggable,MarkGraphKey fields (6 of 29)relationship_id: uuid *label: string *direction: string *is_bidirectional: boolean *relationship_type: string *source_id: uuid *

The object file

The Relationship object definition in YAML: objects/core/Relationship.object.yaml
object:
  name: Relationship
  version: 1.1.0
  domain: core.graph
  description: Canonical graph edge linking two entities with lifecycle, ownership, and tagging semantics.
  tags:
    - universal
    - relationship
    - graph

traits:
  - name: content/Labelled
    alias: RelationshipLabel
  - name: lifecycle/Stateful
    parameters:
      states:
        - proposed
        - active
        - paused
        - completed
        - terminated
      initialState: proposed
  - name: lifecycle/Timestampable
    parameters:
      recordedEvents:
        - created
        - activated
        - paused
        - terminated
        - reactivated
      timezone: UTC
  - name: structural/Ownerable
    parameters:
      ownerTypes:
        - organization
        - team
        - platform
      primaryOwnerType: organization
      allowTransfer: true
  - name: behavioral/Taggable
    parameters:
      maxTags: 10
      allowCustomTags: true
      allowedTags:
        - primary
        - secondary
        - inferred
        - manual
        - pending_review
      caseSensitive: false

  - name: viz/MarkGraph
    parameters:
      title: Connected relationships
      description: This relationship and the others that share one of its endpoints.
      chart:
        chartType: force_graph
        source: edge-array
        dataField: neighborhood
        edges:
          source: source_id
          target: target_id
          bidirectionalField: is_bidirectional
        sampleRows:
          - { source_id: example-team, target_id: example-project, is_bidirectional: false }
          - { source_id: example-project, target_id: example-document, is_bidirectional: true }

schema:
  neighborhood:
    type: array
    required: false
    description: This relationship's edge and the edges that share one of its endpoints, each containing source_id and target_id strings and an is_bidirectional boolean.
  relationship_id:
    type: uuid
    required: true
    description: Primary identifier for the relationship edge.
  source_id:
    type: uuid
    required: true
    description: Identifier of the source node in the relationship.
  source_name:
    type: string
    required: false
    description: Display name of the source node.
  target_id:
    type: uuid
    required: true
    description: Identifier of the target node in the relationship.
  target_name:
    type: string
    required: false
    description: Display name of the target node.
  relationship_type:
    type: string
    required: true
    description: Semantic type describing the edge between the source and target.
    validation:
      enum:
        - membership
        - ownership
        - follows
        - depends_on
        - references
  direction:
    type: string
    required: true
    default: bidirectional
    description: Directionality applied when traversing the relationship.
    validation:
      enum:
        - unidirectional
        - bidirectional
  strength:
    type: string
    required: false
    description: Signal representing how strongly the entities are connected.
    validation:
      enum:
        - low
        - medium
        - high
  origin_source:
    type: string
    required: false
    description: System that originated or inferred the relationship.
    validation:
      enum:
        - manual
        - ingestion
        - analytics
        - integration
  is_bidirectional:
    type: boolean
    required: true
    default: true
    description: Flag indicating whether the relationship is symmetric.
  owner_name:
    type: string
    required: false
    description: Display name of the organization, team or platform that owns the relationship.

semantics:
  # The one-line summary under the relationship's name in lists (content/Labelled's description, marked as the summary).
  description:
    semantic_type: text.summary
    token_mapping: tokenMap(text.body.*)
    ui_hints:
      component: TextBody
      maxLengthParameter: maxDescriptionLength
  relationship_id:
    semantic_type: graph.relationship.id
    token_mapping: tokenMap(graph.relationship.id)
  source_id:
    semantic_type: graph.relationship.source_id
    token_mapping: tokenMap(graph.relationship.id)
    ui_hints:
      displayLabelField: source_name
  target_id:
    semantic_type: graph.relationship.target_id
    token_mapping: tokenMap(graph.relationship.id)
    ui_hints:
      displayLabelField: target_name
  # structural/Ownerable's owner reference, named by owner_name.
  owner_id:
    semantic_type: ownership.owner.id
    token_mapping: tokenMap(ownership.owner.id)
    ui_hints:
      component: OwnerReference
      ownerTypeField: owner_type
      displayLabelField: owner_name
  relationship_type:
    semantic_type: graph.relationship.type
    token_mapping: tokenMap(graph.relationship.type)
  direction:
    semantic_type: graph.relationship.direction
    token_mapping: tokenMap(graph.relationship.direction)
  strength:
    semantic_type: graph.relationship.strength
    token_mapping: tokenMap(graph.relationship.strength)
  origin_source:
    semantic_type: graph.relationship.origin
    token_mapping: tokenMap(graph.relationship.origin)

tokens:
  graph.relationship.type: "var(--graph-relationship-type)"
  graph.relationship.direction: "var(--text-default)"
  graph.relationship.strength.high: "var(--status-success)"

metadata:
  owners:
    - data@oods.systems
    - platform@oods.systems
  steward: graph@oods.systems
  changelog:
    - version: 1.1.0
      date: "2026-09-14"
      description: Declared neighborhood edge array and a read-only graph of explicitly synthetic connected relationship examples.
    - version: 1.0.0
      date: "2025-10-16"
      description: Initial Universal Quintet baseline.

# Eight authored sample relationships between the sample users, organizations and services. Each is proposed, then
# confirmed (the lifecycle's initial state is proposed); its direction and bidirectional flag agree, and the last event
# is the latest recorded change.
samples:
  - label: Dana Whitfield — Northwind Traders
    description: Workspace owner membership
    relationship_type: membership
    source_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d01
    source_name: Dana Whitfield
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    target_name: Northwind Traders
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Dana Whitfield, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Northwind Group, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Tidewater Co-op, target_id: Northwind Traders, is_bidirectional: false }
    strength: high
    origin_source: manual
    owner_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    owner_type: organization
    owner_name: Northwind Traders
    tags: [primary, manual]
    tag_count: 2
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-02-02T15:00:00Z', reason: Created with the workspace }
      - { title: Confirmed, from: proposed, to: active, at: '2026-02-02T15:00:30Z', reason: Confirmed by the workspace owner }
    created_at: '2026-02-02T15:00:00Z'
    updated_at: '2026-02-02T15:00:30Z'
    last_event: activated
    last_event_at: '2026-02-02T15:00:30Z'
  - label: Northwind Group — Northwind Traders
    description: Parent company owns the account
    relationship_type: ownership
    source_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a09
    source_name: Northwind Group
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    target_name: Northwind Traders
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Northwind Group, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Dana Whitfield, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Tidewater Co-op, target_id: Northwind Traders, is_bidirectional: false }
    strength: high
    origin_source: integration
    owner_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a09
    owner_type: organization
    owner_name: Northwind Group
    tags: [primary]
    tag_count: 1
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-02-03T09:00:00Z', reason: Imported from the CRM }
      - { title: Confirmed, from: proposed, to: active, at: '2026-02-04T16:00:00Z', reason: Confirmed by Northwind's legal team }
    created_at: '2026-02-03T09:00:00Z'
    updated_at: '2026-02-04T16:00:00Z'
    last_event: activated
    last_event_at: '2026-02-04T16:00:00Z'
  - label: Harbor Channel — Summit Outfitters
    description: Reseller of record since April
    relationship_type: ownership
    source_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a10
    source_name: Harbor Channel Partners
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a07
    target_name: Summit Outfitters
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Harbor Channel Partners, target_id: Summit Outfitters, is_bidirectional: false }
      - { source_id: Summit Outfitters, target_id: Tidewater Co-op, is_bidirectional: true }
    strength: medium
    origin_source: manual
    owner_id: team_partnerships
    owner_type: team
    owner_name: Partnerships
    tags: [secondary]
    tag_count: 1
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-04-23T12:00:00Z', reason: Registered by the reseller }
      - { title: Confirmed, from: proposed, to: active, at: '2026-04-24T10:00:00Z', reason: Approved by the partnerships team }
    created_at: '2026-04-23T12:00:00Z'
    updated_at: '2026-04-24T10:00:00Z'
    last_event: activated
    last_event_at: '2026-04-24T10:00:00Z'
  - label: Orders API — Billing Service
    description: Orders API calls Billing to charge
    relationship_type: depends_on
    source_id: 7e0b1c2d-3e4f-4a5b-8c6d-9e0f1a2b3c01
    source_name: Orders API
    target_id: 7e0b1c2d-3e4f-4a5b-8c6d-9e0f1a2b3c02
    target_name: Billing Service
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Orders API, target_id: Billing Service, is_bidirectional: false }
    strength: high
    origin_source: integration
    owner_id: team_platform_engineering
    owner_type: team
    owner_name: Platform engineering
    tags: [primary]
    tag_count: 1
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2025-11-10T09:00:00Z', reason: Found in service tracing }
      - { title: Confirmed, from: proposed, to: active, at: '2025-11-12T09:00:00Z', reason: Confirmed by Platform engineering }
    created_at: '2025-11-10T09:00:00Z'
    updated_at: '2025-11-12T09:00:00Z'
    last_event: activated
    last_event_at: '2025-11-12T09:00:00Z'
  - label: Summit Outfitters — Tidewater Co-op
    description: Co-marketing referral partnership
    relationship_type: references
    source_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a07
    source_name: Summit Outfitters
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a05
    target_name: Tidewater Co-op
    direction: bidirectional
    is_bidirectional: true
    neighborhood:
      - { source_id: Summit Outfitters, target_id: Tidewater Co-op, is_bidirectional: true }
      - { source_id: Harbor Channel Partners, target_id: Summit Outfitters, is_bidirectional: false }
      - { source_id: Tidewater Co-op, target_id: Northwind Traders, is_bidirectional: false }
    strength: low
    origin_source: manual
    owner_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a07
    owner_type: organization
    owner_name: Summit Outfitters
    tags: [secondary]
    tag_count: 1
    status: paused
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-06-01T17:00:00Z', reason: Proposed at the partner summit }
      - { title: Confirmed, from: proposed, to: active, at: '2026-06-15T17:00:00Z', reason: Both teams signed off }
      - { title: Paused, from: active, to: paused, at: '2026-09-01T17:00:00Z', reason: Paused for the harvest season }
    created_at: '2026-06-01T17:00:00Z'
    updated_at: '2026-09-01T17:00:00Z'
    last_event: paused
    last_event_at: '2026-09-01T17:00:00Z'
  - label: Tidewater Co-op — Northwind Traders
    description: Follows supplier price updates
    relationship_type: follows
    source_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a05
    source_name: Tidewater Co-op
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a01
    target_name: Northwind Traders
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Tidewater Co-op, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Dana Whitfield, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Northwind Group, target_id: Northwind Traders, is_bidirectional: false }
      - { source_id: Summit Outfitters, target_id: Tidewater Co-op, is_bidirectional: true }
    strength: medium
    origin_source: analytics
    owner_id: team_data_platform
    owner_type: team
    owner_name: Data platform
    tags: [inferred]
    tag_count: 1
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2025-12-01T00:00:00Z', reason: Inferred from order history }
      - { title: Confirmed, from: proposed, to: active, at: '2025-12-03T20:00:00Z', reason: Accepted by Tidewater }
      - { title: Paused, from: active, to: paused, at: '2026-02-10T20:00:00Z', reason: Supplier feed paused }
      - { title: Reactivated, from: paused, to: active, at: '2026-03-02T20:00:00Z', reason: Supplier feed restored }
    created_at: '2025-12-01T00:00:00Z'
    updated_at: '2026-03-02T20:00:00Z'
    last_event: reactivated
    last_event_at: '2026-03-02T20:00:00Z'
  - label: Jonah Marlow — Marlow Yoga
    description: Former workspace owner membership
    relationship_type: membership
    source_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d07
    source_name: Jonah Marlow
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a06
    target_name: Marlow Yoga
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Jonah Marlow, target_id: Marlow Yoga, is_bidirectional: false }
    strength: high
    origin_source: manual
    owner_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a06
    owner_type: organization
    owner_name: Marlow Yoga
    tags: [primary]
    tag_count: 1
    status: terminated
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-01-05T10:15:00Z', reason: Created with the workspace }
      - { title: Confirmed, from: proposed, to: active, at: '2026-01-05T10:15:30Z', reason: Confirmed by the workspace owner }
      - { title: Ended, from: active, to: terminated, at: '2026-07-10T09:00:00Z', reason: Studio closed }
    created_at: '2026-01-05T10:15:00Z'
    updated_at: '2026-07-10T09:00:00Z'
    last_event: terminated
    last_event_at: '2026-07-10T09:00:00Z'
  - label: Priya Raman — Blue Harbor Studio
    description: Workspace admin membership
    relationship_type: membership
    source_id: 8b2e4d6f-1a3c-4e5b-9d7f-2c4e6a8b0d03
    source_name: Priya Raman
    target_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a02
    target_name: Blue Harbor Studio
    direction: unidirectional
    is_bidirectional: false
    neighborhood:
      - { source_id: Priya Raman, target_id: Blue Harbor Studio, is_bidirectional: false }
    strength: high
    origin_source: manual
    owner_id: 3f1c2a4e-5b6d-4e7f-8a9b-0c1d2e3f4a02
    owner_type: organization
    owner_name: Blue Harbor Studio
    tags: [primary, manual]
    tag_count: 2
    status: active
    state_history:
      - { title: Created, from: null, to: proposed, at: '2026-09-19T10:00:00Z', reason: Created with the workspace }
      - { title: Confirmed, from: proposed, to: active, at: '2026-09-19T10:00:30Z', reason: Confirmed by the workspace owner }
    created_at: '2026-09-19T10:00:00Z'
    updated_at: '2026-09-19T10:00:30Z'
    last_event: activated
    last_event_at: '2026-09-19T10:00:30Z'