{
  "studyId": "mcr-demo1-steady-state-10ms-2026-07-08",
  "publishedAt": "2026-07-26",
  "testDate": "2026-07-08",
  "runtimeCommit": "9f50d62",
  "scope": "Steady-state 10 ms pilot timing study on two Raspberry Pi pilot controllers",
  "decision": "Go for continued pilot timing study; not complete for final Demo 1 sign-off",
  "devices": [
    {
      "id": "controller-a",
      "platform": "Raspberry Pi pilot controller"
    },
    {
      "id": "controller-b",
      "platform": "Raspberry Pi pilot controller with 32-bit userspace and 64-bit kernel"
    }
  ],
  "acceptanceCriteria": {
    "scanPeriodMs": 10,
    "maxJitterMs": 1,
    "missedCycles": 0,
    "overrunCycles": 0,
    "maxSnapshotAgeMs": 20,
    "maxSnapshotPublishDurationMs": 1,
    "maxResidentMemoryGrowthKb": 2048
  },
  "passingRuns": [
    {
      "controller": "controller-a",
      "configuration": "PREEMPT_RT kernel and SCHED_FIFO priority 80",
      "load": false,
      "maxJitterMs": 0.085877,
      "missedCycles": 0,
      "overrunCycles": 0,
      "maxSnapshotAgeMs": 1.982421,
      "maxSnapshotPublishDurationMs": 0.09661,
      "residentMemoryGrowthKb": 0
    },
    {
      "controller": "controller-b",
      "configuration": "PREEMPT_RT kernel and SCHED_FIFO priority 80",
      "load": false,
      "maxJitterMs": 0.063612,
      "missedCycles": 0,
      "overrunCycles": 0,
      "maxSnapshotAgeMs": 9.277714,
      "maxSnapshotPublishDurationMs": 0.064073,
      "residentMemoryGrowthKb": 0
    },
    {
      "controller": "controller-a",
      "configuration": "PREEMPT_RT kernel and SCHED_FIFO priority 80",
      "load": true,
      "maxJitterMs": 0.094448,
      "missedCycles": 0,
      "overrunCycles": 0,
      "maxSnapshotAgeMs": 3.851881,
      "maxSnapshotPublishDurationMs": 0.081295,
      "residentMemoryGrowthKb": 0
    },
    {
      "controller": "controller-b",
      "configuration": "PREEMPT_RT kernel and SCHED_FIFO priority 80",
      "load": true,
      "maxJitterMs": 0.067025,
      "missedCycles": 0,
      "overrunCycles": 0,
      "maxSnapshotAgeMs": 9.068315,
      "maxSnapshotPublishDurationMs": 0.079147,
      "residentMemoryGrowthKb": 0
    }
  ],
  "comparisonRuns": [
    {
      "controller": "controller-a",
      "configuration": "stock or tuned kernel without PREEMPT_RT and SCHED_FIFO",
      "load": false,
      "result": "fail",
      "maxJitterMs": 3.662989
    },
    {
      "controller": "controller-b",
      "configuration": "stock or tuned kernel without PREEMPT_RT and SCHED_FIFO",
      "load": false,
      "result": "fail",
      "maxJitterMs": 3.506859
    },
    {
      "controller": "controller-a",
      "configuration": "stock or tuned kernel without PREEMPT_RT and SCHED_FIFO",
      "load": true,
      "result": "fail",
      "maxJitterMs": 2.865811
    },
    {
      "controller": "controller-b",
      "configuration": "stock or tuned kernel without PREEMPT_RT and SCHED_FIFO",
      "load": true,
      "result": "fail",
      "maxJitterMs": 2.258783
    },
    {
      "controller": "controller-a",
      "configuration": "PREEMPT_RT kernel without SCHED_FIFO",
      "load": false,
      "result": "fail",
      "maxJitterMs": 1.014743
    },
    {
      "controller": "controller-b",
      "configuration": "PREEMPT_RT kernel without SCHED_FIFO",
      "load": false,
      "result": "fail",
      "maxJitterMs": 1.340064
    }
  ],
  "limitations": [
    "Cold-start under load was not included",
    "The 100 ms scan-period profiles were not included",
    "Same-core service contention was not included",
    "Backend and dashboard freshness evidence was not archived with these runs",
    "The timing results do not by themselves prove end-to-end value correctness"
  ]
}
