{
  "version": 1,
  "fictional": true,
  "software": "BuildOps",
  "title": "A historical WIP cutoff and a later cost revision",
  "canonicalPage": "https://levelcfo.com/guides/software-integration/buildops/",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "fields": [
    {
      "name": "kind",
      "meaning": "Fictional retained project input"
    },
    {
      "name": "amount",
      "meaning": "Fictional USD"
    }
  ],
  "calculation": "This teaching example explicitly assumes an approved cost-to-cost method. At the historical cutoff, $30,000 / $60,000 is 50% complete, giving $50,000 earned-to-date and $10,000 underbilling against $40,000 billed. Substituting the later $75,000 estimate gives 40% and $40,000 earned, which erases the earlier underbilling. It is a source-cutoff error in this example, not evidence of a BuildOps defect or a universal accounting method.",
  "files": [
    {
      "filename": "buildops-wip-cutoff.csv",
      "sha256": "717804082eafc0c5a27f22234d9a59f12ae6e5216900fe7e0f50680dc9ed7cc5"
    },
    {
      "filename": "buildops-later-revision.csv",
      "sha256": "e538c76362038d92b99a1433647ce5a26b52b409117fa3905838bd53c2580810"
    }
  ],
  "checks": [
    {
      "id": "contract",
      "operation": "sum",
      "expected": 100000,
      "file": "buildops-wip-cutoff.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "contract"
      }
    },
    {
      "id": "cost",
      "operation": "sum",
      "expected": 30000,
      "file": "buildops-wip-cutoff.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "cost_to_date"
      }
    },
    {
      "id": "eac",
      "operation": "sum",
      "expected": 60000,
      "file": "buildops-wip-cutoff.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "estimated_final_cost"
      }
    },
    {
      "id": "billed",
      "operation": "sum",
      "expected": 40000,
      "file": "buildops-wip-cutoff.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "billed_to_date"
      }
    },
    {
      "id": "later_eac",
      "operation": "sum",
      "expected": 75000,
      "file": "buildops-later-revision.csv",
      "field": "amount",
      "filter": {
        "field": "kind",
        "equals": "revised_estimated_final_cost"
      }
    },
    {
      "id": "completion",
      "operation": "ratio",
      "expected": 0.5,
      "operands": [
        "cost",
        "eac"
      ]
    },
    {
      "id": "later_completion",
      "operation": "ratio",
      "expected": 0.4,
      "operands": [
        "cost",
        "later_eac"
      ]
    },
    {
      "id": "cost_multiple",
      "operation": "ratio",
      "operands": [
        "eac",
        "cost"
      ],
      "expected": 2
    },
    {
      "id": "earned",
      "operation": "ratio",
      "operands": [
        "contract",
        "cost_multiple"
      ],
      "expected": 50000
    },
    {
      "id": "underbilling",
      "operation": "difference",
      "operands": [
        "earned",
        "billed"
      ],
      "expected": 10000
    }
  ],
  "expectedResults": [
    {
      "label": "Historical completion",
      "value": 50,
      "unit": "%",
      "meaning": "Cost to date divided by the retained estimated final cost",
      "checkId": "completion",
      "displayScale": 100,
      "decimalPlaces": 0
    },
    {
      "label": "Historical earned-to-date",
      "value": 50000,
      "unit": "USD",
      "meaning": "Explicitly assumed cost-to-cost method",
      "checkId": "earned"
    },
    {
      "label": "Historical underbilling",
      "value": 10000,
      "unit": "USD",
      "meaning": "Earned-to-date less billed-to-date",
      "checkId": "underbilling"
    },
    {
      "label": "Completion using later estimate",
      "value": 40,
      "unit": "%",
      "meaning": "Shows why substituting a later input changes the answer",
      "checkId": "later_completion",
      "displayScale": 100,
      "decimalPlaces": 0
    }
  ],
  "nextDecision": "Retain the dated estimated-final-cost evidence and have the controller decide how the later revision affects the current close."
}
