{
  "schema": 2,
  "lessonVersion": "2026-10-04",
  "baseRobotCommit": "d4dc2a663cfd7f9a4713541e5d97465b14760d3d",
  "requiredSdk": "FTC SDK 12+",
  "requiredHelperClass": "org.firstinspires.ftc.teamcode.CalibrationBlocksSupport",
  "diagramProvenance": "Native Blockly workspace rendering; direct student-comment labels numbered",
  "supportLanguage": "Java",
  "supportPurpose": "MyBlocks readiness, sensor sampling, measurement reports and zero-output STOP cleanup. Native Blocks makes running-power and phase decisions.",
  "notIncluded": [
    "APK",
    "FTC SDK libraries",
    "OpenCV binaries",
    "hardware configuration",
    "camera settings upload",
    "JavaScript runtime downloads"
  ],
  "programs": [
    {
      "name": "IntakeCalibrationBlocks",
      "lessonUrl": "/code/programs/intake-calibration/",
      "flavor": "TELEOP",
      "group": "90 Blocks",
      "enabledByDefault": false,
      "studentCommentIds": [
        "student_intake_setup",
        "student_intake_init",
        "student_intake_ready",
        "student_intake_edge",
        "student_intake_reverse",
        "student_intake_power",
        "student_intake_telemetry",
        "student_intake_stop"
      ],
      "files": {
        "blk": {
          "url": "/code/downloads/IntakeCalibrationBlocks.blk",
          "sha256": "180ef2eb4664ca2007c72db8414896517f92b5a70ec3f573869f211f16864285"
        },
        "diagram": {
          "url": "/code/diagrams/IntakeCalibrationBlocks.svg",
          "sha256": "ea2e8e464ea3206951eb48de3e5a166173ac7a22ef22bd1517fe644a55caf5c4"
        },
        "segments": {
          "url": "/code/segments/IntakeCalibrationBlocks/index.json",
          "sha256": "a268ef8bc2a8961f5b8067b633dc9647c2e8abec098531f72bcd918eed169f69"
        }
      }
    },
    {
      "name": "RoundTripCalibrationBlocks",
      "lessonUrl": "/code/programs/round-trip-calibration/",
      "flavor": "AUTONOMOUS",
      "group": "90 Blocks",
      "enabledByDefault": false,
      "studentCommentIds": [
        "student_roundtrip_setup",
        "student_roundtrip_math",
        "student_roundtrip_init",
        "student_roundtrip_gates",
        "student_roundtrip_origin",
        "student_roundtrip_forward",
        "student_roundtrip_settle",
        "student_roundtrip_return",
        "student_roundtrip_record",
        "student_roundtrip_zero",
        "student_roundtrip_stop",
        "student_roundtrip_calibrationlimits"
      ],
      "files": {
        "blk": {
          "url": "/code/downloads/RoundTripCalibrationBlocks.blk",
          "sha256": "f4cff961bb4306703a58f50ab267b6a62db82a2a9ecf10f1f1b79ef8533a3eb5"
        },
        "diagram": {
          "url": "/code/diagrams/RoundTripCalibrationBlocks.svg",
          "sha256": "2c795ee9edec83bca82d50bbfc8c80d4371f51d2a9f237d771c128fded8da84b"
        },
        "segments": {
          "url": "/code/segments/RoundTripCalibrationBlocks/index.json",
          "sha256": "ae544ba10e99fb21f9349a91109122301d70bebf8a8e7f893083f2b4f6143524"
        }
      }
    }
  ],
  "supportSources": [
    {
      "path": "INSTALL.txt",
      "sha256": "38d0c6d0fbeb9e9e7e35d8523acbba509b761b9409ee745dd3e5dd20d4ba425a"
    },
    {
      "path": "TeamCode/blocks/IntakeCalibrationBlocks.blk",
      "sha256": "180ef2eb4664ca2007c72db8414896517f92b5a70ec3f573869f211f16864285"
    },
    {
      "path": "TeamCode/blocks/RoundTripCalibrationBlocks.blk",
      "sha256": "f4cff961bb4306703a58f50ab267b6a62db82a2a9ecf10f1f1b79ef8533a3eb5"
    },
    {
      "path": "TeamCode/src/main/assets/practice-cluster-30-33.fmap",
      "sha256": "43ea7e5618df6ec22afb9d1ce21492e4091e6d6b7e746fcafc3942f59aaa8f68"
    },
    {
      "path": "TeamCode/src/main/assets/practice-cluster-camera.json",
      "sha256": "e904005a5b89bd00f43420d235dda4bf1713538ae0fa6532ebd1d24004369d39"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/AprilTagClusterPose.java",
      "sha256": "568739dacd3db9f806793da814941d438299568865605f039bd46328c11f5f22"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/AprilTagClusterSolver.java",
      "sha256": "66f9da913e44ebe3251242dad08451c85a4cb016a7b0be9d5e8153e1ffa79cbf"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/CalibrationBlocksSupport.java",
      "sha256": "511830456f65546804c90d5082b94bbcb2e4f479510b0f87d0ff302a9f113f7d"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/DriveCalibration.java",
      "sha256": "c25297b8665288d02f75f2732610e6de647b2280e69aebccc83c2f95d30304bf"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/IntakeMotorTest.java",
      "sha256": "aa3c57eef3c3ae48ef46877a8451b700c9209fdfff9e26d967f9cdf15474584c"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/RoundTripMeasurements.java",
      "sha256": "19a933224b70a2560b03af64a448776953c98f0d848e3cde87a35079aef480ef"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/SimpleCalibrationRoundTrip.java",
      "sha256": "cd8c2973181c8119d9b9a315f483c39db07da9d5aa838bb77f02f7b7cb9a38dc"
    },
    {
      "path": "TeamCode/src/main/java/org/firstinspires/ftc/teamcode/robot/ManualIntake.java",
      "sha256": "5ea961c5d16f844b9b57948bb13763eef31398ea872ec34fe5530faf316b0ca5"
    }
  ],
  "bundle": {
    "url": "/code/downloads/CalibrationBlocks-support.zip",
    "integrityManifest": "/code/downloads/CalibrationBlocks-manifest.json",
    "sha256": "0268adcee4c0038fd7da0b6d7685c326ea4c34f87df72be170cd82a22f9cad76",
    "bytes": 37500
  },
  "siteBrand": "Cookie Coders"
}
