{
  "schema": "kleidos.power/2",
  "doc_id": "tdeck/pin_entry_total/2026-10-29-05",
  "kind": "point",
  "recorded_by": "power_campaign",
  "recorded_utc": "2026-10-29T14:30:58Z",
  "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": "pin_entry_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": "PIN_ENTRY",
      "screen": "PIN screen",
      "vault": "unlocked",
      "sleep_mode": "none",
      "requested_s": null,
      "confirmed_by": [
        "POWERRUN default phase 0 (pin): held=1 complete=1 app=PIN_ENTRY"
      ]
    },
    "radios": {
      "ble": "off",
      "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": 92.64487379249292,
        "source": "measured",
        "sd": 1.1830216304624037,
        "mad": 0.4124999999999943,
        "min": 91.050285,
        "max": 96.64716,
        "n": 4236,
        "median": 92.30966000000001,
        "series": [
          92.6042,
          92.7097,
          92.5567,
          92.5303,
          92.5788,
          92.3842,
          92.6778,
          92.4078,
          92.6051,
          92.4936,
          92.5608,
          92.5599,
          92.6238,
          92.4905,
          92.622,
          92.5476,
          92.6105,
          92.5422,
          92.564,
          92.617,
          92.5801,
          92.6126,
          92.6161,
          92.5928,
          92.589,
          92.5636,
          92.5659,
          92.619,
          92.5497,
          92.6003,
          92.6022,
          92.5925,
          92.637,
          92.5709,
          92.573,
          92.588,
          92.6094,
          92.5913,
          92.5378,
          92.6253,
          92.5567,
          92.6205,
          92.6132,
          92.6586,
          92.5686,
          92.6303,
          92.6215,
          92.6563,
          92.5674,
          92.5836,
          92.662,
          92.5242,
          92.6902,
          92.5803,
          92.6649,
          92.554,
          92.582,
          92.6534,
          92.6706,
          92.5851,
          92.5903,
          92.6207,
          92.5874,
          92.63,
          92.6488,
          92.6134,
          92.598,
          92.6309,
          92.6588,
          92.6228,
          92.6507,
          92.634,
          92.6292,
          92.6155,
          92.7092,
          92.6226,
          92.6034,
          92.6553,
          92.5384,
          92.709,
          92.5961,
          92.6849,
          92.5942,
          92.5855,
          92.68,
          92.677,
          92.5922,
          92.618,
          92.6597,
          92.6318,
          92.6317,
          92.5815,
          92.723,
          92.5732,
          92.6739,
          92.6209,
          92.5653,
          92.6597,
          92.6592,
          92.6317,
          92.6858,
          92.6486,
          92.6342,
          92.5986,
          92.6553,
          92.663,
          92.6392,
          92.594,
          92.6626,
          92.6197,
          92.6822,
          92.5767,
          92.639,
          92.6538,
          92.5926,
          92.7022,
          92.6054,
          92.6532,
          92.619,
          92.6574,
          92.5992,
          92.7318,
          92.604,
          92.6326,
          92.682,
          92.6132,
          92.6996,
          92.6515,
          92.6359,
          92.6447,
          92.6247,
          92.7021,
          92.6226,
          92.6399,
          92.6805,
          92.658,
          92.6974,
          92.6851,
          92.6313,
          92.6605,
          92.6772,
          92.6415,
          92.746,
          92.632,
          92.7411,
          92.5949,
          92.614,
          92.6775,
          92.6505,
          92.6961,
          92.6305,
          92.6959,
          92.6608,
          92.657,
          92.6763,
          92.6074,
          92.6692,
          92.6603,
          92.6465,
          92.6807,
          92.6357,
          92.6697,
          92.5824,
          92.7172,
          92.6761,
          92.654,
          92.6155,
          92.692,
          92.6518,
          92.6815,
          92.6413,
          92.6392,
          92.6742,
          92.6845,
          92.6248,
          92.664,
          92.6795,
          92.6442,
          92.688,
          92.6248,
          92.7132,
          92.5776,
          92.6992,
          92.6859,
          92.676,
          92.6534,
          92.6376,
          92.692,
          92.6351,
          92.7083,
          92.6667,
          92.6199,
          92.7126,
          92.6234,
          92.7859,
          92.6005,
          92.7038,
          92.6542,
          92.612,
          92.7645,
          92.7103,
          92.6842,
          92.6555,
          92.7474,
          92.6697,
          92.713,
          92.6457,
          92.697,
          92.6309,
          92.6913,
          92.6958,
          92.6678,
          92.7134,
          92.652,
          92.6634,
          92.708,
          92.5985,
          92.672,
          92.6165,
          92.6707,
          92.668,
          92.6626,
          92.6513,
          92.6717,
          92.6713,
          92.6282,
          92.6918,
          92.6626,
          92.7122,
          92.667,
          92.7036,
          92.7295,
          92.6416,
          92.6032,
          92.6553,
          92.7084,
          92.6642,
          92.6719,
          92.6672,
          92.6817,
          92.6392,
          92.677,
          92.6722,
          92.6909,
          92.6632,
          92.7124,
          92.7001,
          92.6983,
          92.7342,
          92.6888,
          92.5945,
          92.7363,
          92.729,
          92.6324,
          92.6409,
          92.7097,
          92.6605,
          92.7292,
          92.6228,
          92.7634,
          92.622,
          92.6503,
          92.7459,
          92.6693,
          92.6909,
          92.6234,
          92.7174,
          92.6382,
          92.7707,
          92.6032,
          92.6607,
          92.6507,
          92.6572,
          92.7788,
          92.601,
          92.6528,
          92.6801,
          92.7117,
          92.6734,
          92.7141,
          92.688,
          92.6305,
          92.7057,
          92.7057,
          92.6623,
          92.6897
        ]
      },
      "voltage_mv": {
        "value": 4063.9886390462702,
        "source": "measured",
        "sd": 4.359271042121389,
        "mad": 2.9774999999999636,
        "min": 4051.83,
        "max": 4080.228,
        "n": 4236,
        "median": 4063.6715
      },
      "power_mw": {
        "value": 376.5070768285232,
        "source": "derived",
        "model": "mean of i x v over the window's 4236 paired samples"
      },
      "window": {
        "duration_s": 286.0,
        "n": 4236,
        "t0_s": 15.5106,
        "t1_s": 301.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": 4236,
    "duration_s": 286.0
  },
  "uncertainty": {
    "gain_pct": 1.0,
    "gain_abs": 0.9264487379249292,
    "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.008789975,
    "random_ci95_abs": 0.017796573,
    "random_n": 286.0,
    "random_sd": 0.05479305,
    "n_eff": 38.857573771,
    "tau_int_samples": 7.360212495,
    "batch_b": 17,
    "batch_m": 16,
    "systematic_abs": 0.535219972,
    "systematic_bound_abs": 0.959716738,
    "systematic_pct": 0.577711373,
    "systematic_terms": [
      {
        "name": "gain",
        "value": 0.926448738,
        "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.535292147,
    "coverage_k": 2.0,
    "expanded_abs": 1.070584293,
    "interval": [
      91.574289499,
      93.715458086
    ],
    "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:58Z",
      "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
}
