Ubiquitous Language
Browse and discover ubiquitous language terms in the Project Delivery Graph domain
Project Delivery Graph Domain Language(21 terms)
Project Delivery Graph
The bounded context and hex module. Owns graph structure and the records that carry graph identity. Not a deployable.
Project Definition Graph
The first model inside the Project Delivery Graph. Describes the designed project (nodes, containment, relationships, types, instances, import runs). Process Graph and Resource Graph are named and not modeled yet.
Import Run
Aggregate root for one processing of one source artifact. Status path queued → in_progress → ready | failed | deleted. Retry requeues the same run (ADR-0103). No persisted Uploaded status. Postgres keeps in_progress; the HTTP log and Airtable revit_import_runs label that state processing.
Import Run Id
Stable identity of an ImportRun. Stored as pdg_import_run id and as revit_import_runs.domain_id.
Artifact Reference
Immutable stored object for one import run. SHA-256 is of the uncompressed JSONL. contentEncoding is gzip. Live bytes live in Supabase (revit-imports / dev-revit-imports, ADR-0103). Local PUT is the submit stand-in; Jest uses an in-memory Map. Do not set Content-Encoding gzip on the object.
Source Document
The Revit model the export came from. sourceDocumentId is the contract identity; sourceDocumentName is the .rvt file name on the import-run log.
Graph Summary
Nested space → assembly type → part type JSON contract (PRD §3.9 E / ADR-0072). A rematerialized view from pdg_summary_row, not an aggregate. GET reads the view; rematerialize rebuilds it and upserts Airtable.
Node
Aggregate root for one graph node's attributes, containment parent, lifecycle, and origin. Relationships are a separate aggregate. Closed kinds: space, level, phase, assembly_type, part_type, assembly_instance, part_instance.
Relationship
Aggregate for an edge between two nodes. Not part of the Node aggregate.
Resolution Context
Lifecycle filter on every graph read. Default is active. Optional phaseNodeId restricts membership to that phase-created node.
Project Id
Reference to a party-directory project by domain_id (ADR-0048), for example project-c1. Not a Project aggregate in this domain. HTTP path {id} and manifest.projectId must be that domain_id, never a Revit document title and never an Airtable rec id.
Product Assignment
Value object on a Type Node — the selected ProjectProductVariant bound to an assembly_type or part_type. Persisted in Postgres pdg_product_assignment; projected to Airtable assigned_product_variant links. Spaces have neither Object Class nor product assignment (D9).
Type
Graph node kind assembly_type or part_type. Target of assign, clear, and change-object-class steward commands.
Instance Summary
Aggregated pdg_summary_row projected to Airtable *_instance_summary tables (space × type × phase). Steward commands from a summary subject resolve to the authoritative Type.
Project Product Variant
Design-management aggregate (ADR-0083) referenced by assignment and by Design BOM lines. Stock rows reference a Marketplace Product Variant. Made-to-order rows are materialized on that Design aggregate.
BOM Line
One purchasable item on the single Design BOM (ADR-0131). Imported lines are one per type (project|type) or one per type and space (project|type|space) and carry that type's product code. Authored lines are inserted (project|authored|<domain_id>) and are not re-aggregated. Postgres pdg_bom_line; Construction project_bom_lines is the projection. Rematerialize orphans only imported lines. An authored line is removed by the delete command.
BOM Contribution
One space × type × phase × variant resolution row in the Postgres ledger (pdg_bom_contribution). Pure derivation — rematerialize rewrites the set. Never projected to Airtable.
Takeoff Policy
Value object on a type node — takeoff rule, unit, waste factor, procurement mode. Absence means defaults (count / each / 1.0 / atomic). Postgres pdg_type_takeoff_policy. Design assembly_types / part_types fields are a projection.
Takeoff Rule
Which summary bucket a type uses. Live: count, each, area, linear, volume. Reserved and rejected: manual (no store for a hand-entered quantity). Presence in the closed vocabulary is not a feature list.
Procurement Mode
Whether and how a type is procured. Live: atomic, none. Reserved and rejected: expand, allowance, custom_fabrication. Presence in the closed vocabulary is not a feature list.
BOM Resolution Status
How a contribution resolved. Closed: resolved, non_procurable, unresolved, invalid. Unresolved and invalid are real counts, not decoration.
No matching terms in Project Delivery Graph
Try adjusting your search terms.