{
  "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": "e67cfbdc6765d001e28a111ef854541fd32a4f57913454c02de5affc65e62a04"
        }
      }
    },
    {
      "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": "ac1afc3d80d71f395ad5090d7e32daca19b74259281edcbcb5bd85818305a7c3"
        },
        "diagram": {
          "url": "/code/diagrams/RoundTripCalibrationBlocks.svg",
          "sha256": "2c795ee9edec83bca82d50bbfc8c80d4371f51d2a9f237d771c128fded8da84b"
        },
        "segments": {
          "url": "/code/segments/RoundTripCalibrationBlocks/index.json",
          "sha256": "d2be757da7c54b31639cbb109d480aece76c22c8b43b6cfe6085169edd3d6e9d"
        }
      }
    }
  ],
  "supportSources": [
    {
      "path": "INSTALL.txt",
      "sha256": "ef0a72bf98679965d695dfef6fe725457f46841faef3e3575908dcd43472d50c"
    },
    {
      "path": "TeamCode/blocks/IntakeCalibrationBlocks.blk",
      "sha256": "180ef2eb4664ca2007c72db8414896517f92b5a70ec3f573869f211f16864285"
    },
    {
      "path": "TeamCode/blocks/RoundTripCalibrationBlocks.blk",
      "sha256": "ac1afc3d80d71f395ad5090d7e32daca19b74259281edcbcb5bd85818305a7c3"
    },
    {
      "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",
    "sha256": "b8034405da52c9d6f36d4bf4a125e5d714932db30f87a0889f51360b104b443c",
    "bytes": 37716
  }
}
