# Default project-rollup MDL row schema, served by zddc-server when # no operator-supplied form.yaml exists at /mdl/. # # Identical to the per-party MDL schema (default-mdl.form.yaml) # except for one extra required field: `party`. That field is the # routing key — the server reads it on POST /mdl/form.html, # finds the matching /archive// folder, and writes # the row inside its mdl/ subfolder. The `party` value is stripped # from the YAML on write (folder name IS the identity); on read the # dispatcher injects it back so the rollup table can show the # Package column. # # To customize: drop your own form.yaml at /mdl/form.yaml. # Keep the `party` field shape unless you also customize the rollup # create handler — the server's routing depends on it. title: Deliverable (project rollup) description: One deliverable across all parties. The first field (Package) routes the row to the matching archive//mdl/ folder; the rest mirrors the per-party MDL schema. schema: type: object # originator is omitted from required: the server derives it from # the selected party folder (folder_fields) after this schema runs. required: [party, project, discipline, type, sequence, title] additionalProperties: false properties: party: type: string title: Package (party folder) description: Routing key — must match an existing /archive// folder. Typical naming = MasterFormat 4-digit code + C|P + sequence digit (e.g. 0330C1). pattern: "^[A-Za-z0-9][A-Za-z0-9.-]*$" minLength: 1 originator: type: string title: Originator description: Auto-set from the selected Package (party folder) — the folder is the source of truth for the originator code. Read-only; leave blank. readOnly: true # phase: # project-wide; sits between originator and project # type: string # title: Phase # description: Project phase code (e.g. ECI, EPC). # minLength: 1 project: type: string title: Project description: Project identifier, or your corporate placeholder for non-project deliverables. minLength: 1 # area: # project-wide; sits between project and discipline # type: string # title: Area # description: Area / budget code (e.g. B02). # minLength: 1 discipline: type: string title: Discipline description: Engineering or functional group code (EL, ME, CV, PM, ...). minLength: 1 type: type: string title: Document type description: Document category code within the discipline (SPC, DWG, RPT, ...). minLength: 1 sequence: type: string title: Sequence description: Zero-padded integer (0001, 0042, 2623). Stored as a string so leading zeros survive YAML. minLength: 1 suffix: type: string title: Suffix description: Optional structural-part suffix (A, 01, ...). Just the letters/digits — the leading dash is added by the cascade's filename_format. title: type: string title: Deliverable title minLength: 1 plannedRevision: type: string title: Planned revision plannedDate: type: string title: Planned date format: date status: type: string title: Current status enum: [DFT, IFR, IFA, IFC, AFC, AB] owner: type: string title: Owner notes: type: string title: Notes # --- Audit fields (server-managed; read-only). created_at: type: string title: Created format: date-time readOnly: true created_by: type: string title: Created by format: email readOnly: true updated_at: type: string title: Updated format: date-time readOnly: true updated_by: type: string title: Updated by format: email readOnly: true revision: type: integer title: Revision minimum: 1 readOnly: true previous_sha: type: string title: Previous SHA readOnly: true ui: # originator is server-derived from the selected Package (party # folder); mirror the party value into its read-only field so the # composing tracking number is visible as the user fills the form. originator: ui:mirrorFrom: party notes: ui:widget: textarea