{
  "schemaVersion": 1,
  "slug": "lawn-overseeding-calculator",
  "category": "gardening",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "b63a8b16637f51cf0eac90a39979fea7df5001d91466299f40b4e2b6351c27fa",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/lawn-overseeding-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "seed_lb=A÷1000×r×T; bags=ceil(seed_lb÷5); cost=seed_lb×price",
    "vars": [
      [
        "A",
        "lawn area (sq ft)"
      ],
      [
        "r",
        "fixed cool-season grass rate (lb/1,000 sq ft)"
      ],
      [
        "T",
        "thinning factor"
      ],
      [
        "price",
        "entered price per lb"
      ]
    ],
    "note": "Grass rates and thinning multipliers are model assumptions. Timing and actual rate depend on cultivar, climate and the seed label; the calculator does not predict composting or germination time."
  },
  "externalEvidence": null,
  "contract": {
    "compute": "const S={fescue:3,bluegrass:2,ryegrass:4,mix:2.5}; const T={light:0.8,moderate:1,heavy:1.3}; const seedLb=area/1000*(S[grassType]||3)*(T[thinning]||1); return {seedLb,bags:Math.ceil(seedLb/5),cost:seedLb*seedPrice};",
    "inputs": [
      {
        "name": "area",
        "type": "number",
        "default": 5000,
        "min": 10,
        "max": 500000,
        "step": 10
      },
      {
        "name": "grassType",
        "type": "select",
        "default": "fescue",
        "options": [
          {
            "value": "fescue"
          },
          {
            "value": "bluegrass"
          },
          {
            "value": "ryegrass"
          },
          {
            "value": "mix"
          }
        ]
      },
      {
        "name": "thinning",
        "type": "select",
        "default": "moderate",
        "options": [
          {
            "value": "light"
          },
          {
            "value": "moderate"
          },
          {
            "value": "heavy"
          }
        ]
      },
      {
        "name": "seedPrice",
        "type": "number",
        "default": 4,
        "min": 0,
        "max": 100,
        "step": 0.5,
        "slider": true
      }
    ],
    "outputs": [
      {
        "name": "seedLb",
        "precision": 2,
        "unit": "lb"
      },
      {
        "name": "bags",
        "precision": 0,
        "unit": ""
      },
      {
        "name": "cost",
        "precision": 2,
        "unit": "$"
      }
    ],
    "interpret": null
  }
}
