{
  "tool_id": "art-702-runway-goal-path",
  "tool_version": "1.0.0",
  "display_name": "Runway Goal Path",
  "mcp_name": "find_runway_goal_path",
  "mandate_type": "compliance_control",
  "wave": 121,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-702-runway-goal-path.html",
  "description": "Goal-seek over a fixed monthly startup cash model: the smallest change in price, in month-over-month revenue growth, or in burn that reaches a declared goal, ranked by least effort. The model walks a finite horizon of integer months: revenue starts at the declared base, optionally price-uplifted, and grows at a constant month-over-month rate from month 2; burn is derived once and held constant; cash accumulates net each month, and the first month where cash goes below zero is the cash-out month, interpolated in basis points of a month as (m-1)*10000 + floor(prev_cash*10000/(-net)) with cash landing exactly on zero not counting as a cash-out. Four goal types are declared: a runway of at least N months (the cash-out month in basis points of a month reaches N*10000, or the company stays solvent through the horizon), solvency through the horizon, breakeven (revenue at or above burn) by a month, or ending cash of at least an amount. A grid search walks every combination of the three declared lever grids, keeps the scenarios that meet the goal, and ranks them by effort ascending, where effort is the half-up integer division by 100 of the sum of weight times lever, ties breaking by burn_cut, then price_uplift, then growth_add, all ascending; the all-zero lever scenario is always evaluated and reported as the baseline with baseline_meets_goal. All money is an integer count of minor units and all rates are integer basis points; rounding is half-up, applied once per month step for revenue and once per scenario for burn. Out-of-domain input is refused with a named reason, never rounded or coerced: non-integer or negative money, a growth rate below -10000 basis points, a horizon outside 1-60 months, an unknown goal type, a non-integer goal value, a lever grid unsorted, negative, or holding more than 12 values, non-integer or negative effort weights, or a max_candidates below one. Scope limits: one revenue line, constant burn, no financing events, no churn model, and no tax.",
  "input_schema_ref": "chaingraph/art-702-runway-goal-path.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:a62ea8245d5f29e41c714ffbcfc8b2f52d5a68cefb22a29a500b9dfc61c33beb","valid_from":"2026-10-02"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-10-16"}],
  "export_capability": ["json"],
  "standards_basis": "not_applicable",
  "cited_clause_digest": [],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "Fl04/tdiJNJgS4Ws07JanybN6hn1n6CYog6NfBnqv4MSM8aYAF34SXxNOqyMWZc4QCcgGQKMqrpF1c98QEAdohO7hoJMi4s217OiUP2vKkRIpiCBUnLIeGQu+M7JD0geEBOtUffQI7LhXFEKcihRaFqmyoDySqZMw6YfXySRnkUuOZIaO5jNyoTdknzEEFdYdXATVlfpNp7rANnEe86LkBZgoQY7Gy/jarHyvi2T1CBn5sVmwMjCx6AM0kbnWGT1FKNlZnm61onRngjlt7GnkjFUP2oitPhxIqAdydjNvwkGVZ1N2dn5nwKbsV8pNeU97oF/sbASrntx52AQ28dXUg==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:a62ea8245d5f29e41c714ffbcfc8b2f52d5a68cefb22a29a500b9dfc61c33beb",
      "output": {
        "baseline": {
          "breakeven_month": 16,
          "ending_cash_minor": 258204267,
          "runway_bp_of_month": null,
          "solvent_through_horizon": true
        },
        "baseline_meets_goal": true,
        "candidates": [
          {
            "breakeven_month": 16,
            "effort": 0,
            "ending_cash_minor": 258204267,
            "levers": {
              "burn_cut_bp": 0,
              "growth_add_bp": 0,
              "price_uplift_bp": 0
            },
            "runway_bp_of_month": null
          },
          {
            "breakeven_month": 14,
            "effort": 2,
            "ending_cash_minor": 356249430,
            "levers": {
              "burn_cut_bp": 0,
              "growth_add_bp": 100,
              "price_uplift_bp": 0
            },
            "runway_bp_of_month": null
          },
          {
            "breakeven_month": 13,
            "effort": 4,
            "ending_cash_minor": 482253693,
            "levers": {
              "burn_cut_bp": 0,
              "growth_add_bp": 200,
              "price_uplift_bp": 0
            },
            "runway_bp_of_month": null
          },
          {
            "breakeven_month": 15,
            "effort": 5,
            "ending_cash_minor": 276914435,
            "levers": {
              "burn_cut_bp": 0,
              "growth_add_bp": 0,
              "price_uplift_bp": 500
            },
            "runway_bp_of_month": null
          }
        ],
        "none_found_reason": null,
        "scenarios_evaluated": 180,
        "scope_note": "One revenue line, constant burn, no financing events, no churn model, and no tax. Integer minor units and integer basis points only; rounding is half-up, applied once per month step."
      }
    }
  }
}
