{
  "modelVersion": "1.1.1",
  "illustrative": true,
  "duration": 19,
  "tasks": [
    {
      "id": "A",
      "name": "Design basis released",
      "optimistic": 4,
      "likely": 4,
      "pessimistic": 4,
      "predecessors": [],
      "expectedDuration": 4,
      "variance": 0,
      "es": 0,
      "ef": 4,
      "lf": 4,
      "ls": 0,
      "float": 0,
      "critical": true
    },
    {
      "id": "B",
      "name": "Equipment supply ready",
      "optimistic": 8,
      "likely": 8,
      "pessimistic": 8,
      "predecessors": [
        "A"
      ],
      "expectedDuration": 8,
      "variance": 0,
      "es": 4,
      "ef": 12,
      "lf": 12,
      "ls": 4,
      "float": 0,
      "critical": true
    },
    {
      "id": "C",
      "name": "Receiving works ready",
      "optimistic": 6,
      "likely": 6,
      "pessimistic": 6,
      "predecessors": [
        "A"
      ],
      "expectedDuration": 6,
      "variance": 0,
      "es": 4,
      "ef": 10,
      "lf": 12,
      "ls": 6,
      "float": 2,
      "critical": false
    },
    {
      "id": "D",
      "name": "Assembly completed",
      "optimistic": 4,
      "likely": 4,
      "pessimistic": 4,
      "predecessors": [
        "B",
        "C"
      ],
      "expectedDuration": 4,
      "variance": 0,
      "es": 12,
      "ef": 16,
      "lf": 16,
      "ls": 12,
      "float": 0,
      "critical": true
    },
    {
      "id": "E",
      "name": "Integrated tests completed",
      "optimistic": 2,
      "likely": 2,
      "pessimistic": 2,
      "predecessors": [
        "D"
      ],
      "expectedDuration": 2,
      "variance": 0,
      "es": 16,
      "ef": 18,
      "lf": 18,
      "ls": 16,
      "float": 0,
      "critical": true
    },
    {
      "id": "F",
      "name": "Acceptance decision recorded",
      "optimistic": 1,
      "likely": 1,
      "pessimistic": 1,
      "predecessors": [
        "E"
      ],
      "expectedDuration": 1,
      "variance": 0,
      "es": 18,
      "ef": 19,
      "lf": 19,
      "ls": 18,
      "float": 0,
      "critical": true
    }
  ],
  "criticalPaths": [
    [
      "A",
      "B",
      "D",
      "E",
      "F"
    ]
  ],
  "pathCount": 1,
  "pathEnumerationLimit": 50,
  "selectedPath": [
    "A",
    "B",
    "D",
    "E",
    "F"
  ],
  "pathVariance": 0,
  "standardDeviation": 0,
  "deadlineProbability": 1,
  "bounds": {
    "optimistic": 19,
    "expected": 19,
    "pessimistic": 19
  },
  "scheduleEvaluation": {
    "policy": "Exact rational PERT means, CPM dates, total floats and critical-path membership from canonical JSON-number decimals. Normal CDF, standard deviation, metrics and chart coordinates are numeric approximations.",
    "duration": {
      "numerator": "19",
      "denominator": "1",
      "decimal": "1.900000000000000000000000000000000000000e1"
    },
    "selectedPathVariance": {
      "numerator": "0",
      "denominator": "1",
      "decimal": "0"
    },
    "tasks": [
      {
        "id": "A",
        "expectedDuration": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "ef": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "ls": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "lf": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "float": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        }
      },
      {
        "id": "B",
        "expectedDuration": {
          "numerator": "8",
          "denominator": "1",
          "decimal": "8.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "ef": {
          "numerator": "12",
          "denominator": "1",
          "decimal": "1.200000000000000000000000000000000000000e1"
        },
        "ls": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "lf": {
          "numerator": "12",
          "denominator": "1",
          "decimal": "1.200000000000000000000000000000000000000e1"
        },
        "float": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        }
      },
      {
        "id": "C",
        "expectedDuration": {
          "numerator": "6",
          "denominator": "1",
          "decimal": "6.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "ef": {
          "numerator": "10",
          "denominator": "1",
          "decimal": "1.000000000000000000000000000000000000000e1"
        },
        "ls": {
          "numerator": "6",
          "denominator": "1",
          "decimal": "6.000000000000000000000000000000000000000e0"
        },
        "lf": {
          "numerator": "12",
          "denominator": "1",
          "decimal": "1.200000000000000000000000000000000000000e1"
        },
        "float": {
          "numerator": "2",
          "denominator": "1",
          "decimal": "2.000000000000000000000000000000000000000e0"
        }
      },
      {
        "id": "D",
        "expectedDuration": {
          "numerator": "4",
          "denominator": "1",
          "decimal": "4.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "12",
          "denominator": "1",
          "decimal": "1.200000000000000000000000000000000000000e1"
        },
        "ef": {
          "numerator": "16",
          "denominator": "1",
          "decimal": "1.600000000000000000000000000000000000000e1"
        },
        "ls": {
          "numerator": "12",
          "denominator": "1",
          "decimal": "1.200000000000000000000000000000000000000e1"
        },
        "lf": {
          "numerator": "16",
          "denominator": "1",
          "decimal": "1.600000000000000000000000000000000000000e1"
        },
        "float": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        }
      },
      {
        "id": "E",
        "expectedDuration": {
          "numerator": "2",
          "denominator": "1",
          "decimal": "2.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "16",
          "denominator": "1",
          "decimal": "1.600000000000000000000000000000000000000e1"
        },
        "ef": {
          "numerator": "18",
          "denominator": "1",
          "decimal": "1.800000000000000000000000000000000000000e1"
        },
        "ls": {
          "numerator": "16",
          "denominator": "1",
          "decimal": "1.600000000000000000000000000000000000000e1"
        },
        "lf": {
          "numerator": "18",
          "denominator": "1",
          "decimal": "1.800000000000000000000000000000000000000e1"
        },
        "float": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        }
      },
      {
        "id": "F",
        "expectedDuration": {
          "numerator": "1",
          "denominator": "1",
          "decimal": "1.000000000000000000000000000000000000000e0"
        },
        "variance": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        },
        "es": {
          "numerator": "18",
          "denominator": "1",
          "decimal": "1.800000000000000000000000000000000000000e1"
        },
        "ef": {
          "numerator": "19",
          "denominator": "1",
          "decimal": "1.900000000000000000000000000000000000000e1"
        },
        "ls": {
          "numerator": "18",
          "denominator": "1",
          "decimal": "1.800000000000000000000000000000000000000e1"
        },
        "lf": {
          "numerator": "19",
          "denominator": "1",
          "decimal": "1.900000000000000000000000000000000000000e1"
        },
        "float": {
          "numerator": "0",
          "denominator": "1",
          "decimal": "0"
        }
      }
    ]
  },
  "metrics": [
    {
      "key": "duration",
      "label": "Expected CPM duration",
      "value": 19,
      "unit": "weeks",
      "detail": ""
    },
    {
      "key": "critical",
      "label": "Critical activities",
      "value": 5,
      "unit": "",
      "detail": ""
    },
    {
      "key": "probability",
      "label": "Selected-path deadline approximation",
      "value": 100,
      "unit": "%",
      "detail": "Normal approximation for the first displayed path, not full-DAG completion probability."
    },
    {
      "key": "sigma",
      "label": "Selected-path standard deviation",
      "value": 0,
      "unit": "weeks",
      "detail": ""
    }
  ],
  "tables": [
    {
      "title": "CPM and PERT schedule",
      "columns": [
        {
          "key": "id",
          "label": "ID",
          "unit": ""
        },
        {
          "key": "name",
          "label": "Activity",
          "unit": ""
        },
        {
          "key": "predecessors",
          "label": "Predecessors",
          "unit": ""
        },
        {
          "key": "expectedDuration",
          "label": "PERT duration",
          "unit": "weeks"
        },
        {
          "key": "variance",
          "label": "Variance",
          "unit": "weeks²"
        },
        {
          "key": "es",
          "label": "Earliest start",
          "unit": "week"
        },
        {
          "key": "ef",
          "label": "Earliest finish",
          "unit": "week"
        },
        {
          "key": "ls",
          "label": "Latest start",
          "unit": "week"
        },
        {
          "key": "lf",
          "label": "Latest finish",
          "unit": "week"
        },
        {
          "key": "float",
          "label": "Total float",
          "unit": "weeks"
        },
        {
          "key": "critical",
          "label": "Critical",
          "unit": ""
        }
      ],
      "rows": [
        {
          "id": "A",
          "name": "Design basis released",
          "optimistic": 4,
          "likely": 4,
          "pessimistic": 4,
          "predecessors": [],
          "expectedDuration": 4,
          "variance": 0,
          "es": 0,
          "ef": 4,
          "lf": 4,
          "ls": 0,
          "float": 0,
          "critical": "Yes"
        },
        {
          "id": "B",
          "name": "Equipment supply ready",
          "optimistic": 8,
          "likely": 8,
          "pessimistic": 8,
          "predecessors": [
            "A"
          ],
          "expectedDuration": 8,
          "variance": 0,
          "es": 4,
          "ef": 12,
          "lf": 12,
          "ls": 4,
          "float": 0,
          "critical": "Yes"
        },
        {
          "id": "C",
          "name": "Receiving works ready",
          "optimistic": 6,
          "likely": 6,
          "pessimistic": 6,
          "predecessors": [
            "A"
          ],
          "expectedDuration": 6,
          "variance": 0,
          "es": 4,
          "ef": 10,
          "lf": 12,
          "ls": 6,
          "float": 2,
          "critical": "No"
        },
        {
          "id": "D",
          "name": "Assembly completed",
          "optimistic": 4,
          "likely": 4,
          "pessimistic": 4,
          "predecessors": [
            "B",
            "C"
          ],
          "expectedDuration": 4,
          "variance": 0,
          "es": 12,
          "ef": 16,
          "lf": 16,
          "ls": 12,
          "float": 0,
          "critical": "Yes"
        },
        {
          "id": "E",
          "name": "Integrated tests completed",
          "optimistic": 2,
          "likely": 2,
          "pessimistic": 2,
          "predecessors": [
            "D"
          ],
          "expectedDuration": 2,
          "variance": 0,
          "es": 16,
          "ef": 18,
          "lf": 18,
          "ls": 16,
          "float": 0,
          "critical": "Yes"
        },
        {
          "id": "F",
          "name": "Acceptance decision recorded",
          "optimistic": 1,
          "likely": 1,
          "pessimistic": 1,
          "predecessors": [
            "E"
          ],
          "expectedDuration": 1,
          "variance": 0,
          "es": 18,
          "ef": 19,
          "lf": 19,
          "ls": 18,
          "float": 0,
          "critical": "Yes"
        }
      ]
    },
    {
      "title": "Critical path assumptions",
      "columns": [
        {
          "key": "path",
          "label": "Path",
          "unit": ""
        },
        {
          "key": "activities",
          "label": "Activity IDs",
          "unit": ""
        },
        {
          "key": "duration",
          "label": "Duration",
          "unit": "weeks"
        },
        {
          "key": "variance",
          "label": "Path variance",
          "unit": "weeks²"
        },
        {
          "key": "used",
          "label": "Deadline approximation",
          "unit": ""
        }
      ],
      "rows": [
        {
          "path": 1,
          "activities": "A → B → D → E → F",
          "duration": 19,
          "variance": 0,
          "used": "Selected path"
        }
      ]
    },
    {
      "title": "Whole-schedule duration scenarios",
      "columns": [
        {
          "key": "case",
          "label": "Duration assumption",
          "unit": ""
        },
        {
          "key": "duration",
          "label": "Schedule duration",
          "unit": "weeks"
        }
      ],
      "rows": [
        {
          "case": "optimistic",
          "duration": 19
        },
        {
          "case": "expected",
          "duration": 19
        },
        {
          "case": "pessimistic",
          "duration": 19
        }
      ]
    }
  ],
  "warnings": [
    "The deadline metric is a normal approximation for one selected critical path. It is not the probability that the entire dependency graph finishes by the target. Independent task durations and a stable critical path are assumed.",
    "The selected path has zero variance. Its deadline result is deterministic under the supplied durations."
  ],
  "summary": "The dependency schedule takes 19 weeks under PERT means. 1 critical path has no total float. The first displayed path contains 5 activities and has a 100% selected-path deadline approximation for week 19; this does not quantify full-DAG deadline confidence.",
  "methods": [
    "PERT mean = (optimistic + 4 × most likely + pessimistic) / 6. Variance = ((pessimistic − optimistic) / 6)^2.",
    "Forward CPM gives earliest start/finish; backward CPM gives latest start/finish; total float = latest start − earliest start.",
    "Every critical path is a start-to-finish path of zero-float activities with contiguous earliest times. At most 50 are displayed.",
    "Deadline probability uses a normal approximation with variance summed on the first displayed critical path.",
    "PERT means, CPM dates, float and path membership use exact rational arithmetic for canonical decimal inputs. Positive float remains positive at every supported scale."
  ],
  "limitations": [
    "No resource levelling, calendars, correlated durations, uncertainty simulation or contract completion warranty.",
    "Normal approximation ignores competing near-critical paths and path switching. Multiple critical paths make the probability especially limited.",
    "Standard deviation and the selected-path normal CDF use numerical approximation. Arithmetic exactness does not remove omitted paths, correlations or uncertainty in duration inputs.",
    "Numerical input precision: use zero or absolute values of at least 0.000000001. Smaller nonzero inputs are rejected explicitly."
  ]
}
