{
  "schema": "kleidos.power/2",
  "doc_id": "tdeck/ble_typing_wait_total/2026-10-29-02",
  "kind": "point",
  "recorded_by": "power_campaign",
  "recorded_utc": "2026-10-29T14:30:59Z",
  "captured_utc": "2026-10-29T14:30:38Z",
  "supersedes": [],
  "narrative": {
    "doc": "docs/testing/power-campaign-tdeck.md",
    "anchor": "#td-16-powerrun-plans-under-the-bench-meter-every-state-one-cut-per-plan"
  },
  "artifact": {
    "row_id": "td16",
    "verdict_status": "PASS",
    "path": "qa/.artifacts/power/td16/20261029-143332"
  },
  "campaign": null,
  "retracted": null,
  "quantity": {
    "name": "ble_typing_wait_total",
    "kind": "absolute",
    "unit": "mA",
    "primary": "current_ma",
    "sense_point": "cell_positive",
    "knob": null,
    "element": null,
    "method": null,
    "comparable_across_sessions": true
  },
  "subject": {
    "board": "tdeck",
    "board_unit": null,
    "env": "tdeck_debug",
    "env_probe": "console_present",
    "firmware": {
      "version": "0.1.0",
      "git_head": "bf3fa4acea4869e2cd51d0f6eca90cb76c2bf2dd",
      "elf_sha256": "321b66c03e10894bdcff77fc7bc9dd05c9b270e69e92f4fddd85b8f43b0c0cf8",
      "provenance": "recorded",
      "notes": "elf_sha256 is the local build of tdeck_debug, confirmed by the board's VER? elf_sha=321b66c03e10894b; this row built and flashed it from that commit, firmware paths clean"
    }
  },
  "instrument": {
    "kind": "ina228_bench",
    "id": "kleidos-meter",
    "shunt_mohm": 100.0,
    "shunt_measured": true,
    "position": "A: the shunt in the battery pack's positive wire, VBUS on the source side (CAL VBUSSIDE SOURCE)",
    "profile": "SLEEP",
    "range": 0,
    "current_lsb_pa": 3125000,
    "channels": [
      "i_ua",
      "v_mv",
      "die_c"
    ],
    "pace": "timer",
    "osc_tol_ppm": 10000,
    "period_us": 67520,
    "quality": "cal",
    "null": {
      "offset_pa": null,
      "die_c": null,
      "dev_uv": null,
      "n": null
    },
    "gain_pct": 1.0,
    "offset_floor_ua": 0.5,
    "caveat": "The shunt is an R100 whose resistance has never been measured to better than its nominal: a 2-wire DMM read 0.10 ohm at 0.01 ohm resolution, which rules out a wrong part and cannot resolve 1 %. So every figure carries the part's 1 % tolerance as an assumed gain uncertainty, whether the meter reports q=uncal (nominal never declared) or q=cal (nominal declared with CAL SHUNT, accepted by the owner on 2026-10-28). It is 1 % of an absolute level and 1 % of a difference: a gain error never cancels in a subtraction, only the offset does. The offset's residual on an absolute reading is about +-0.5 uA, and range 0's 3.125 uA quantum adds up to +-1.56 uA of bias on a very quiet level.",
    "bias_vs_reference": null,
    "firmware": null,
    "wiring_rev": null
  },
  "conditions": {
    "state": {
      "fsm": "BLE_HID_TYPING",
      "screen": "typing screen, waiting for a host",
      "vault": "unlocked",
      "sleep_mode": "none",
      "requested_s": null,
      "confirmed_by": [
        "POWERRUN default phase 8 (ble_typing): held=1 complete=1 app=BLE_HID_TYPING"
      ]
    },
    "radios": {
      "ble": "advertising",
      "wifi": "off"
    },
    "peripherals": {},
    "attachments": {
      "sd_card": "no",
      "usb_cable": "yes",
      "hub_port": "no",
      "hub_power_state": "cut",
      "hub_label": null,
      "jtag_probe": "no",
      "charger_in_loop": "no",
      "extra": [
        "the bench hub's port was cut inside the first phase's settle, so the cell alone fed the board for every measured window"
      ]
    },
    "knobs": {
      "backlight_percent": 100,
      "brightness_setting": null,
      "kb_light_percent": 0,
      "kb_light_duty": 0,
      "totp_on": null,
      "auto_lock": "disabled"
    },
    "clock": {
      "cpu_mhz": 80,
      "asked_mhz": 80,
      "boot_mhz": 160,
      "apb_hz": 80000000,
      "xtal_mhz": 40,
      "idle_floor": true,
      "idle_mhz": 40,
      "light_sleep_built": true,
      "light_sleep_allowed": false,
      "frame_clock": "on",
      "frame_mhz": 160,
      "bl_clk": "RC_FAST",
      "bl_hz": 5000,
      "pre_mhz": null,
      "source": "CLOCK?",
      "note": "cpu_mhz and frame_clock are what the board reported for this phase (POWERRUN?'s cpu= and fclk=); the rest is CLOCK? read at HOME before the run, build facts of the same image"
    },
    "cell": {
      "cell_id": "tdeck-pack-2000",
      "nominal_mah": 2000,
      "charging": false,
      "rested": false
    },
    "environment": {
      "ambient_c": null,
      "die_c": null
    },
    "vault": {
      "fill": "demo",
      "creds": 12,
      "totp": 4,
      "content": "adddummy",
      "cap_creds": null,
      "cap_totp": null,
      "source": "qa/.artifacts/power/td16/20261029-143332/results.jsonl meta demo_vault: VAULT? unlocked=1 creds=12 totp=4 after WIPEVAULT, PIN and ADDDUMMY (the harness's demo vault); the image did not print its capacities"
    }
  },
  "baseline": null,
  "isolation": null,
  "points": [
    {
      "level": null,
      "applied": null,
      "applied_unit": null,
      "applied_source": null,
      "source": "measured",
      "model": null,
      "found": true,
      "current_ma": {
        "value": 121.10126073839662,
        "source": "measured",
        "sd": 0.5373879316968856,
        "mad": 0.328125,
        "min": 120.10966,
        "max": 122.76591,
        "n": 237,
        "median": 121.112785,
        "series": [
          121.0461,
          121.072,
          120.9922,
          121.1167,
          121.1611,
          121.2856,
          121.0982,
          121.1486,
          121.0976,
          121.049,
          121.1652,
          121.0667,
          121.1526,
          121.0965,
          120.9999,
          121.0878
        ]
      },
      "voltage_mv": {
        "value": 4030.340565400844,
        "source": "measured",
        "sd": 2.1688382739679497,
        "mad": 1.6400000000003274,
        "min": 4024.782,
        "max": 4036.324,
        "n": 237,
        "median": 4030.13
      },
      "power_mw": {
        "value": 488.0792199042869,
        "source": "derived",
        "model": "mean of i x v over the window's 237 paired samples"
      },
      "window": {
        "duration_s": 16.0,
        "n": 237,
        "t0_s": 1610.5106,
        "t1_s": 1626.5106,
        "statistic": "mean",
        "series_bin_s": 1.0
      }
    }
  ],
  "axis": null,
  "shape": null,
  "checks": {
    "dropped": 0,
    "read_err": 0,
    "flags": "0x4003",
    "status": "PASS",
    "failures": [],
    "n_samples": 237,
    "duration_s": 16.0
  },
  "uncertainty": {
    "gain_pct": 1.0,
    "gain_abs": 1.2110126073839662,
    "gain_source": "assumed_shunt_tolerance",
    "repeat_spread": null,
    "board_wander_ma": null,
    "offset_residual_ua": 0.5,
    "random_basis": "batch_means",
    "quotable": true,
    "gain_is_assumed": true,
    "qualified": true,
    "unqualified_reason": null,
    "random_abs": 0.025021588,
    "random_ci95_abs": 0.058841714,
    "random_n": 16.0,
    "random_sd": 0.071632934,
    "n_eff": 8.19588303,
    "tau_int_samples": 1.952199652,
    "batch_b": 4,
    "batch_m": 4,
    "systematic_abs": 0.699434421,
    "systematic_bound_abs": 1.244280607,
    "systematic_pct": 0.577561634,
    "systematic_terms": [
      {
        "name": "gain",
        "value": 1.211012607,
        "unit": "mA",
        "distribution": "rectangular",
        "divisor": 1.732051,
        "assumed": true,
        "note": "1 % of the figure, from assumed_shunt_tolerance. It rides on THIS number: on a difference that is 1 % of the difference, never 1 % of each level; the shunt is marked R100 with no tolerance and has never been measured, so this is an assumption and not a bound"
      },
      {
        "name": "inl",
        "value": 0.032768,
        "unit": "mA",
        "distribution": "rectangular",
        "divisor": 1.732051,
        "assumed": true,
        "note": "the datasheet prints INL as +-2 m% with no test condition and no reference quantity; read as a percentage of full scale \u2014 the usual ADC convention and the conservative one \u2014 it is this much, and read as a percentage of reading it is negligible"
      },
      {
        "name": "offset_drift",
        "value": 0.0005,
        "unit": "mA",
        "distribution": "rectangular",
        "divisor": 1.732051,
        "assumed": false,
        "note": "dVos/dT at +-10 nV/C max over the firmware's +-5 C staleness window. The null itself is subtracted; this is how far it may have moved since"
      }
    ],
    "offset_cancels": false,
    "sigma_inst_ua": 2.331712904,
    "sigma_inst_divisor": 6.6,
    "combined_abs": 0.699881839,
    "coverage_k": 2.0,
    "expanded_abs": 1.399763678,
    "interval": [
      119.70149706,
      122.501024416
    ],
    "dominant_term": "gain",
    "unresolved": [
      "inl_reference: full scale or reading, unanswered by the datasheet"
    ],
    "model": {
      "id": "kleidos.power.uncertainty/1",
      "computed_utc": "2026-10-29T14:30:59Z",
      "inputs": [],
      "code": "qa_lib.power.model:compute"
    }
  },
  "caveats": [
    {
      "class": "posture",
      "code": "debug_image_commanded",
      "text": "POWERRUN is a debug-console command, so the image measured is the _debug one, which also runs the console and its log task. A state's draw on the release image is not measured here.",
      "evidence": [
        "docs/testing/serial-debug-commands.md"
      ],
      "affects": "comparability",
      "blocks_quote": false
    },
    {
      "class": "method_limit",
      "code": "powerrun_phase_window",
      "text": "Each figure is the mean of one POWERRUN phase's window after its settle, placed from the plan's own dwell and settle on the stream's clock, one run.",
      "evidence": [
        "qa/tools/power_campaign.py:powerrun_windows"
      ],
      "affects": "value",
      "blocks_quote": false
    }
  ],
  "refusal": null
}
