{
  "toolkit": "Bioprocess Digital Twin Deployment Readiness Toolkit",
  "toolkitVersion": "3.0.0",
  "framework": "TRL–DRL–α framework",
  "article": "Digital Twins That Deliver: A Role-Based Deployment Readiness Framework for Biomanufacturing Systems",
  "generatedAt": "2026-10-07T12:59:44.317Z",
  "specification": {
    "systemBoundary": "Continuously operated full-scale sludge digester with its feed, mixing, recirculation, heating and biogas-handling systems; online measurements, laboratory results, operating events and setpoint changes; dynamic process model.",
    "deploymentContext": "Literature-grounded reference scenario: conventional full-scale sludge anaerobic digestion with SCADA, machine-readable historian, periodic laboratory analysis and manual operating records.",
    "operatingEnvelope": "Feedstocks, loading conditions and operating regimes encountered during routine full-scale operation, including seasonal feedstock changes.",
    "operationalTask": "Automated closed-loop optimisation or control of digester operation using predicted biogas flow and composition, pH, VFA, alkalinity and ammonium.",
    "modelConfiguration": "Dynamic process model calibrated using site data (ADM1, data-driven or hybrid). Inputs: influent flow, COD fractions, inorganic carbon and nitrogen, digester temperature. Outputs: biogas flow and composition, pH, VFAs, alkalinity, ammonium, effluent COD.",
    "temporalRequirements": "Feed flow, temperature, pH and biogas measured online; influent COD fractionation, VFAs and alkalinity from periodic laboratory analysis or validated estimation; relatively slow AD response.",
    "decisionPathway": "Model-based functions integrated at the supervisory level of the existing automation platform; manipulated variables limited by plant-specific actuation and configuration constraints.",
    "targetRole": "R3"
  },
  "trl": {
    "level": 9,
    "label": "Actual system proven in an operational environment",
    "description": "The process configuration is established in routine full-scale operation under industrial conditions.",
    "roleUse": "TRL is reported in the TRL–DRL–α profile but is not a role threshold in Table 5. A higher TRL does not imply greater data readiness."
  },
  "drl": {
    "band": "B",
    "label": "Faithfulness and representation",
    "question": "Do the records represent the process?",
    "outcome": "The quality and limitations of the records are known.",
    "includes": [
      "C"
    ]
  },
  "roleTestConditions": {
    "feedstockVariability": true,
    "spatialEffects": true,
    "recommendedActions": true,
    "offlineTaskDemonstrated": true
  },
  "alpha": {
    "scores": [
      {
        "dimension": "TD",
        "id": "TD1",
        "label": "Temporal alignment",
        "score": 4,
        "anchor": "Sampling/monitoring is broadly matched to dominant process time scales; lags can be handled."
      },
      {
        "dimension": "TD",
        "id": "TD2",
        "label": "Feedstock alignment",
        "score": 2,
        "anchor": "Intermittent characterisation exists but does not reliably explain observed variability."
      },
      {
        "dimension": "TD",
        "id": "TD3",
        "label": "Spatial alignment",
        "score": 2,
        "anchor": "Limited coverage; phase/mode changes are weakly reflected, causing systematic bias."
      },
      {
        "dimension": "DM",
        "id": "DM1",
        "label": "Representational alignment",
        "score": 3,
        "anchor": "Workable correspondence for major variables; remaining gaps limit robustness."
      },
      {
        "dimension": "DM",
        "id": "DM2",
        "label": "Granularity and synchronisation alignment",
        "score": 3,
        "anchor": "Usable trajectories can be formed, but are sensitive to synchronisation choices."
      },
      {
        "dimension": "DM",
        "id": "DM3",
        "label": "Operating-condition coverage and structural alignment",
        "score": 2,
        "anchor": "Partial coverage; identifiers/definitions drift; aggregation masks critical variation."
      },
      {
        "dimension": "MT",
        "id": "MT1",
        "label": "Decision-structure alignment",
        "score": 4,
        "anchor": "Intended role aligns with supervisory/operator workflows; embedding is practically feasible."
      },
      {
        "dimension": "MT",
        "id": "MT2",
        "label": "Actuation-constraint alignment",
        "score": 3,
        "anchor": "Actions are feasible in a subset of conditions; constraint handling is incomplete."
      }
    ],
    "dimensionMeans": {
      "TD": 2.67,
      "DM": 2.67,
      "MT": 3.5
    },
    "dimensionMeansNote": "Arithmetic means of all criteria per dimension (Equation 1); descriptive only."
  },
  "targetRole": "R3",
  "targetMet": false,
  "roleCeiling": "R2",
  "roleCeilingTitle": "Online monitoring, soft sensing and operator-mediated decision support",
  "roleTests": [
    {
      "role": "R3",
      "passed": false,
      "minimumBand": "A",
      "bandMet": false,
      "taskPerformanceRequired": false,
      "requirements": [
        {
          "id": "TD1",
          "minimum": 4,
          "dimension": "TD",
          "label": "Temporal alignment",
          "conditional": false,
          "actual": 4,
          "met": true,
          "margin": 0
        },
        {
          "id": "TD2",
          "minimum": 4,
          "condition": "feedstockVariability",
          "dimension": "TD",
          "label": "Feedstock alignment",
          "conditional": true,
          "actual": 2,
          "met": false,
          "margin": -2
        },
        {
          "id": "TD3",
          "minimum": 4,
          "condition": "spatialEffects",
          "dimension": "TD",
          "label": "Spatial alignment",
          "conditional": true,
          "actual": 2,
          "met": false,
          "margin": -2
        },
        {
          "id": "DM1",
          "minimum": 4,
          "dimension": "DM",
          "label": "Representational alignment",
          "conditional": false,
          "actual": 3,
          "met": false,
          "margin": -1
        },
        {
          "id": "DM2",
          "minimum": 4,
          "dimension": "DM",
          "label": "Granularity and synchronisation alignment",
          "conditional": false,
          "actual": 3,
          "met": false,
          "margin": -1
        },
        {
          "id": "DM3",
          "minimum": 4,
          "dimension": "DM",
          "label": "Operating-condition coverage and structural alignment",
          "conditional": false,
          "actual": 2,
          "met": false,
          "margin": -2
        },
        {
          "id": "MT1",
          "minimum": 4,
          "dimension": "MT",
          "label": "Decision-structure alignment",
          "conditional": false,
          "actual": 4,
          "met": true,
          "margin": 0
        },
        {
          "id": "MT2",
          "minimum": 4,
          "dimension": "MT",
          "label": "Actuation-constraint alignment",
          "conditional": false,
          "actual": 3,
          "met": false,
          "margin": -1
        }
      ],
      "failures": [
        {
          "type": "band",
          "role": "R3",
          "required": "A",
          "actual": "B",
          "message": "R3 requires at least DRL Band A; Band B is assigned."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "TD2",
          "dimension": "TD",
          "label": "Feedstock alignment",
          "required": 4,
          "actual": 2,
          "conditional": true,
          "message": "α_TD2 (Feedstock alignment) must be at least 4 for R3; the score is 2."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "TD3",
          "dimension": "TD",
          "label": "Spatial alignment",
          "required": 4,
          "actual": 2,
          "conditional": true,
          "message": "α_TD3 (Spatial alignment) must be at least 4 for R3; the score is 2."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "DM1",
          "dimension": "DM",
          "label": "Representational alignment",
          "required": 4,
          "actual": 3,
          "conditional": false,
          "message": "α_DM1 (Representational alignment) must be at least 4 for R3; the score is 3."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "DM2",
          "dimension": "DM",
          "label": "Granularity and synchronisation alignment",
          "required": 4,
          "actual": 3,
          "conditional": false,
          "message": "α_DM2 (Granularity and synchronisation alignment) must be at least 4 for R3; the score is 3."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "DM3",
          "dimension": "DM",
          "label": "Operating-condition coverage and structural alignment",
          "required": 4,
          "actual": 2,
          "conditional": false,
          "message": "α_DM3 (Operating-condition coverage and structural alignment) must be at least 4 for R3; the score is 2."
        },
        {
          "type": "criterion",
          "role": "R3",
          "criterion": "MT2",
          "dimension": "MT",
          "label": "Actuation-constraint alignment",
          "required": 4,
          "actual": 3,
          "conditional": false,
          "message": "α_MT2 (Actuation-constraint alignment) must be at least 4 for R3; the score is 3."
        }
      ]
    },
    {
      "role": "R2",
      "passed": true,
      "minimumBand": "B",
      "bandMet": true,
      "taskPerformanceRequired": false,
      "requirements": [
        {
          "id": "TD1",
          "minimum": 3,
          "dimension": "TD",
          "label": "Temporal alignment",
          "conditional": false,
          "actual": 4,
          "met": true,
          "margin": 1
        },
        {
          "id": "TD2",
          "minimum": 2,
          "condition": "feedstockVariability",
          "dimension": "TD",
          "label": "Feedstock alignment",
          "conditional": true,
          "actual": 2,
          "met": true,
          "margin": 0
        },
        {
          "id": "TD3",
          "minimum": 2,
          "condition": "spatialEffects",
          "dimension": "TD",
          "label": "Spatial alignment",
          "conditional": true,
          "actual": 2,
          "met": true,
          "margin": 0
        },
        {
          "id": "DM1",
          "minimum": 3,
          "dimension": "DM",
          "label": "Representational alignment",
          "conditional": false,
          "actual": 3,
          "met": true,
          "margin": 0
        },
        {
          "id": "DM2",
          "minimum": 3,
          "dimension": "DM",
          "label": "Granularity and synchronisation alignment",
          "conditional": false,
          "actual": 3,
          "met": true,
          "margin": 0
        },
        {
          "id": "DM3",
          "minimum": 2,
          "dimension": "DM",
          "label": "Operating-condition coverage and structural alignment",
          "conditional": false,
          "actual": 2,
          "met": true,
          "margin": 0
        },
        {
          "id": "MT1",
          "minimum": 3,
          "dimension": "MT",
          "label": "Decision-structure alignment",
          "conditional": false,
          "actual": 4,
          "met": true,
          "margin": 1
        },
        {
          "id": "MT2",
          "minimum": 2,
          "condition": "recommendedActions",
          "dimension": "MT",
          "label": "Actuation-constraint alignment",
          "conditional": true,
          "actual": 3,
          "met": true,
          "margin": 1
        }
      ],
      "failures": []
    }
  ],
  "limitingCriteria": [
    {
      "dimension": "TD",
      "criterion": "TD2",
      "label": "Feedstock alignment",
      "score": 2
    },
    {
      "dimension": "TD",
      "criterion": "TD3",
      "label": "Spatial alignment",
      "score": 2
    },
    {
      "dimension": "DM",
      "criterion": "DM3",
      "label": "Operating-condition coverage and structural alignment",
      "score": 2
    },
    {
      "dimension": "MT",
      "criterion": "MT2",
      "label": "Actuation-constraint alignment",
      "score": 3
    }
  ],
  "thresholdMargins": {
    "ceilingRole": "R2",
    "atThreshold": [
      {
        "criterion": "TD2",
        "label": "Feedstock alignment",
        "dimension": "TD",
        "minimum": 2,
        "actual": 2
      },
      {
        "criterion": "TD3",
        "label": "Spatial alignment",
        "dimension": "TD",
        "minimum": 2,
        "actual": 2
      },
      {
        "criterion": "DM1",
        "label": "Representational alignment",
        "dimension": "DM",
        "minimum": 3,
        "actual": 3
      },
      {
        "criterion": "DM2",
        "label": "Granularity and synchronisation alignment",
        "dimension": "DM",
        "minimum": 3,
        "actual": 3
      },
      {
        "criterion": "DM3",
        "label": "Operating-condition coverage and structural alignment",
        "dimension": "DM",
        "minimum": 2,
        "actual": 2
      }
    ],
    "nextRole": "R3",
    "nextRoleFailures": [
      {
        "type": "band",
        "role": "R3",
        "required": "A",
        "actual": "B",
        "message": "R3 requires at least DRL Band A; Band B is assigned."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "TD2",
        "dimension": "TD",
        "label": "Feedstock alignment",
        "required": 4,
        "actual": 2,
        "conditional": true,
        "message": "α_TD2 (Feedstock alignment) must be at least 4 for R3; the score is 2."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "TD3",
        "dimension": "TD",
        "label": "Spatial alignment",
        "required": 4,
        "actual": 2,
        "conditional": true,
        "message": "α_TD3 (Spatial alignment) must be at least 4 for R3; the score is 2."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "DM1",
        "dimension": "DM",
        "label": "Representational alignment",
        "required": 4,
        "actual": 3,
        "conditional": false,
        "message": "α_DM1 (Representational alignment) must be at least 4 for R3; the score is 3."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "DM2",
        "dimension": "DM",
        "label": "Granularity and synchronisation alignment",
        "required": 4,
        "actual": 3,
        "conditional": false,
        "message": "α_DM2 (Granularity and synchronisation alignment) must be at least 4 for R3; the score is 3."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "DM3",
        "dimension": "DM",
        "label": "Operating-condition coverage and structural alignment",
        "required": 4,
        "actual": 2,
        "conditional": false,
        "message": "α_DM3 (Operating-condition coverage and structural alignment) must be at least 4 for R3; the score is 2."
      },
      {
        "type": "criterion",
        "role": "R3",
        "criterion": "MT2",
        "dimension": "MT",
        "label": "Actuation-constraint alignment",
        "required": 4,
        "actual": 3,
        "conditional": false,
        "message": "α_MT2 (Actuation-constraint alignment) must be at least 4 for R3; the score is 3."
      }
    ],
    "nextRoleCriterionCount": 6,
    "nextRoleNeedsBand": "A"
  },
  "deploymentConstraints": [
    {
      "type": "band",
      "key": "band-A",
      "interface": "DRL",
      "label": "DRL Band A",
      "actual": "B",
      "focus": "Task-specific preparation and suitability",
      "responsibility": null,
      "action": "Prepare the data for the stated task: integrate SCADA, laboratory and manual records with consistent timestamps, units, variable definitions and equipment identifiers, and retain calibration records, quality flags, interventions and setpoint changes with the measurements.",
      "requirements": [
        {
          "role": "R3",
          "required": "A"
        }
      ]
    },
    {
      "type": "criterion",
      "key": "TD2",
      "interface": "TD",
      "criterion": "TD2",
      "label": "Feedstock alignment",
      "actual": 2,
      "focus": "Sensing and sampling: measurement frequency, coverage, sensor placement and feedstock characterisation.",
      "responsibility": "Instrumentation and laboratory practice",
      "action": "Characterise the feed more frequently, or add in-line sensing, spectroscopy or validated soft sensors that give time-stamped measurements of feedstock changes.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    },
    {
      "type": "criterion",
      "key": "TD3",
      "interface": "TD",
      "criterion": "TD3",
      "label": "Spatial alignment",
      "actual": 2,
      "focus": "Sensing and sampling: measurement frequency, coverage, sensor placement and feedstock characterisation.",
      "responsibility": "Instrumentation and laboratory practice",
      "action": "Review sensor and sampling locations, use multi-position sensing where feasible, or confirm representativeness with tracer studies or validated estimation methods.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    },
    {
      "type": "criterion",
      "key": "DM1",
      "interface": "DM",
      "criterion": "DM1",
      "label": "Representational alignment",
      "actual": 3,
      "focus": "Model inputs, data resolution and synchronisation, coverage of the intended operating range and data for model validation.",
      "responsibility": "Data management and modelling",
      "action": "Measure, or estimate with validated soft sensors, the model-required inputs and states so that each links to a measured variable.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    },
    {
      "type": "criterion",
      "key": "DM2",
      "interface": "DM",
      "criterion": "DM2",
      "label": "Granularity and synchronisation alignment",
      "actual": 3,
      "focus": "Model inputs, data resolution and synchronisation, coverage of the intended operating range and data for model validation.",
      "responsibility": "Data management and modelling",
      "action": "Store laboratory, online and operating records synchronously, linked to batch, process stage and time point, and limit interpolation to changes the original measurements support.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    },
    {
      "type": "criterion",
      "key": "DM3",
      "interface": "DM",
      "criterion": "DM3",
      "label": "Operating-condition coverage and structural alignment",
      "actual": 2,
      "focus": "Model inputs, data resolution and synchronisation, coverage of the intended operating range and data for model validation.",
      "responsibility": "Data management and modelling",
      "action": "Extend calibration and validation data across the feedstocks, loading conditions and operating regimes in the intended envelope, and harmonise units, tag names, equipment identifiers and batch definitions.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    },
    {
      "type": "criterion",
      "key": "MT2",
      "interface": "MT",
      "criterion": "MT2",
      "label": "Actuation-constraint alignment",
      "actual": 3,
      "focus": "How model outputs are used in operation: operator interfaces, control actions and operating limits.",
      "responsibility": "Automation and operations",
      "action": "Map recommendations to available manipulated variables within capacity, response time, safety limits and permitted ranges. For R3, also define and test actuator limits, decision authority, safety constraints, failure responses, fallback states and operator-intervention procedures.",
      "requirements": [
        {
          "role": "R3",
          "required": 4
        }
      ]
    }
  ],
  "constraintRankingNote": "The framework identifies constraints but does not rank them. Priority depends on technical dependencies, cost, safety, implementation time, operational disruption and likely benefit.",
  "reassessment": "Reassess the full TRL–DRL–α profile only after a change has been implemented and tested. Compare results only if the system boundary, operating conditions, task and target role are unchanged; otherwise treat it as a new assessment.",
  "interpretation": "The target role R3 is not supported, so lower roles were tested in turn. R2 is the highest role for which every applicable threshold is met. The unmet R3 thresholds are reported as deployment constraints and are not ranked. The limiting criteria for R3 are α_TD2, α_TD3, α_DM3, α_MT2. TRL 9 describes the maturity of the physical process configuration; it does not raise or lower the role ceiling."
}