{
  "version": "1.16.11",
  "date": "2026-10-04",
  "scope": "Synthetic finite scalar angles and single-clock timestamps; shortest-path reconstruction under a declared assumption, no true motion evidence",
  "sources": [
    {
      "url": "https://numpy.org/doc/stable/reference/generated/numpy.unwrap.html",
      "use": "Period-complementary phase unwrapping concept and degree period=360 example, no library execution or tie equivalence claimed"
    }
  ],
  "model": {
    "angularUnit": "degree",
    "rateUnit": "deg/s",
    "timeUnit": "second",
    "range": "[-180,180)",
    "wrapRule": "x-360*floor((x+180)/360)",
    "initialUnwrappedDeg": 170,
    "assumedAbsoluteTrueDeltaLessThanDeg": 180,
    "trueAngleDeclared": false,
    "sampleClock": "single clock and session",
    "rateMeaning": "interval average scalar angle change, not instantaneous body gyro"
  },
  "rows": [
    {
      "sampleMs": 0,
      "wrappedDeg": 170,
      "dtSeconds": null,
      "shortDeltaDeg": null,
      "unwrappedDeg": 170,
      "averageRateDegPerSecond": null
    },
    {
      "sampleMs": 10,
      "wrappedDeg": 179,
      "dtSeconds": "1/100",
      "shortDeltaDeg": 9,
      "unwrappedDeg": 179,
      "averageRateDegPerSecond": "900"
    },
    {
      "sampleMs": 20,
      "wrappedDeg": -179,
      "dtSeconds": "1/100",
      "shortDeltaDeg": 2,
      "unwrappedDeg": 181,
      "averageRateDegPerSecond": "200"
    },
    {
      "sampleMs": 40,
      "wrappedDeg": -170,
      "dtSeconds": "1/50",
      "shortDeltaDeg": 9,
      "unwrappedDeg": 190,
      "averageRateDegPerSecond": "450"
    }
  ],
  "gap": {
    "fromMs": 40,
    "toMs": 240,
    "fromWrappedDeg": -170,
    "toWrappedDeg": -150,
    "dtSeconds": "1/5",
    "candidates": [
      {
        "deltaDeg": 20,
        "averageRateDegPerSecond": "100",
        "unwrappedEndDeg": 210,
        "wrappedEndDeg": -150
      },
      {
        "deltaDeg": 380,
        "averageRateDegPerSecond": "1900",
        "unwrappedEndDeg": 570,
        "wrappedEndDeg": -150
      },
      {
        "deltaDeg": -340,
        "averageRateDegPerSecond": "-1700",
        "unwrappedEndDeg": -150,
        "wrappedEndDeg": -150
      }
    ],
    "trueMotionSelected": false
  },
  "bound": {
    "assumedMaxDegPerSecond": 2000,
    "hardwareValidated": false,
    "sufficientRule": "maxRate*dt<180degree",
    "cases": [
      {
        "dtSeconds": "1/50",
        "maxChangeDeg": "40",
        "conditionSatisfied": true
      },
      {
        "dtSeconds": "1/5",
        "maxChangeDeg": "400",
        "conditionSatisfied": false
      }
    ]
  },
  "hardwareStatus": "not-run",
  "figure": "Discrete synthetic samples, ordering lines only, not measured inter-sample motion"
}
