[16:28:13] PHASE NEG: spawn server WITHOUT IRONHARNESS_ALLOW_REAL_FLASH [16:28:20] initialized: server=ironharness protocol=2025-06-18 [16:28:20] tools/list: 32 tools; esp_erase annotations={'destructiveHint': True, 'openWorldHint': True, 'readOnlyHint': False} [16:28:20] -> esp_erase(port='COM6') [ERROR, 0.0s] Error executing tool esp_erase: PermissionError: IRONHARNESS_ALLOW_REAL_FLASH=1 is required for live flash/erase — these operations modify real hardware [16:28:20] -> gate REFUSED as designed: esp_erase refused: Error executing tool esp_erase: PermissionError: IRONHARNESS_ALLOW_REAL_FLASH=1 is required for live flash/erase — these operations modify real hardware [16:28:20] PHASE POS: spawn server WITH IRONHARNESS_ALLOW_REAL_FLASH=1 [16:28:22] -> serial_open(name='board', port='COM6', timeout=2) [ok, 0.0s] ok: serial 'board' -> COM6 [16:28:24] -> serial_reset(name='board', settle_sec=2) [ok, 2.1s] ok: serial 'board' reset (pulse 0.1s, settle 2.0s) [16:28:24] -> serial_reader_start(name='board') [ok, 0.0s] { "buffered": 0, "dropped": 0, "chunks": 0 } [16:28:24] -> serial_read_until(name='board', pattern='Traceback', timeout=12) [ok, 0.1s] { "found": true, "data_hex": "657473204afd657473204a756c20323920323031392031323a32313a34360d0a0d0a7273743a3078312028504f5745524f4e5f5245534554292c626f6f743a3078313320285350495f464153545f464c4153485f424f4f54290d0a636f6e6669677369703a20302c2053504957503a307865650d0a636c6b5f6472763a307830302c715f64 [16:28:24] -> serial_reader_stop(name='board') [ok, 0.1s] { "buffered": 329, "dropped": 0, "chunks": 2, "stopped": true } [16:28:24] closing the transport: esptool needs the port exclusively [16:28:24] -> serial_close(name='board') [ok, 0.0s] ok: serial 'board' closed [16:28:29] -> esp_erase(port='COM6') [ok, 4.8s] ok: flash erased (COM6) [16:28:48] -> esp_flash(port='COM6', firmware_path='D:\\project\\ironharness\\.ironbench\\blink\\ESP32_GENERIC-20251209-v1.27.0.bin', addr=4096) [ok, 19.7s] ok: ESP32_GENERIC-20251209-v1.27.0.bin flashed at 0x1000 (COM6) [16:28:48] -> file_write(path='main.py', content="import framebuf, struct, time\nfrom machine import Pin, SoftI2C\nimport onewire, ds18x20\n\ni2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=400000)\now = onewire.OneWire(Pin(4, Pin.OPEN_DRAIN, pull=Pin.PULL_UP))\nds = ds18x20.DS18X20(ow)\nroms = ds.scan()\nprint('DS ROMS', roms)\n\nclass SSD1306_I2C(framebuf.FrameBuffer):\n def __init__(self, width, height, i2c, addr=0x3C):\n self.i2c = i2c\n self.addr = addr\n self.width = width\n self.height = height\n self.pages = height // 8\n self.buffer = bytearray(self.pages * width)\n super().__init__(self.buffer, width, height, framebuf.MONO_VLSB)\n self.init_display()\n\n def write_cmd(self, cmd):\n self.i2c.writeto(self.addr, bytes([0x80, cmd]))\n\n def write_data(self, buf):\n self.i2c.writeto(self.addr, bytes([0x40]) + buf)\n\n def init_display(self):\n self.fill(0)\n for cmd in (\n 0xAE, 0xD5, 0x80, 0xA8, 0x3F, 0xD3, 0x00, 0x40, 0x8D, 0x14,\n 0x20, 0x00, 0xA1, 0xC8, 0xDA, 0x12, 0x81, 0xCF, 0xD9, 0xF1,\n 0xDB, 0x40, 0xA4, 0xA6, 0xAF,\n ):\n self.write_cmd(cmd)\n self.show()\n\n def show(self):\n for page in range(self.pages):\n self.write_cmd(0xB0 | page)\n self.write_cmd(0x00)\n self.write_cmd(0x10)\n start = page * self.width\n self.write_data(self.buffer[start:start + self.width])\n\ndef bme_read(ic, a=118):\n ic.writeto_mem(a, 0xF2, bytes([1]))\n ic.writeto_mem(a, 0xF4, bytes([39]))\n time.sleep(0.15)\n d = ic.readfrom_mem(a, 0xF7, 8)\n p_raw = (d[0] << 12) | (d[1] << 4) | (d[2] >> 4)\n t_raw = (d[3] << 12) | (d[4] << 4) | (d[5] >> 4)\n h_raw = (d[6] << 8) | d[7]\n c = ic.readfrom_mem(a, 0x88, 26)\n T1, T2, T3, P1, P2, P3, P4, P5, P6, P7, P8, P9 = struct.unpack(' 2047: H4 -= 4096\n H5 = (e[5] << 4) | (e[4] >> 4)\n if H5 > 2047: H5 -= 4096\n H6 = struct.unpack('> 3) - (T1 << 1)) * T2 >> 11\n v2 = (((t_raw >> 4) - T1) * ((t_raw >> 4) - T1) >> 12) * T3 >> 14\n tf = v1 + v2\n T = (tf * 5 + 128) >> 8\n f1 = tf / 2.0 - 64000.0\n f2 = (f1 * f1 * P6 / 32768.0 + f1 * P5 * 2.0) / 4.0 + P4 * 65536.0\n f3 = P3 * f1 * f1 / 524288.0\n f1 = (f3 + P2 * f1) / 524288.0\n f1 = (1.0 - f1 / 32768.0) * P1\n P = 0.0\n if f1 != 0:\n P = 1048576.0 - p_raw\n P = (P - f2 / 4096.0) * 6250.0 / f1\n v1 = P9 * P * P / 2147483648.0\n v2 = P * P8 / 32768.0\n P = P + (v1 + v2 + P7) / 16.0\n v = tf - 76800\n v = ((((h_raw << 14) - (H4 << 20) - (H5 * v)) + 16384) >> 15) * ((((((v * H6) >> 10) * (((v * H3) >> 11) + 32768)) >> 10) + 2097152) * H2 + 8192) >> 14\n v = v - (((((v >> 15) * (v >> 15)) >> 7) * H1) >> 4)\n if v < 0: v = 0\n if v > 419430400: v = 419430400\n H = (v >> 12) / 1024.0\n return T / 100.0, P / 100.0, H\n\noled = SSD1306_I2C(128, 64, i2c)\nprint('METEO BOOT')\n\nwhile True:\n try:\n t, p, h = bme_read(i2c)\n oled.fill(0)\n oled.text('BME280 meteo:', 0, 0)\n oled.text('T %.2f C' % t, 0, 18)\n oled.text('H %.1f %%' % h, 0, 32)\n oled.text('P %d hPa' % int(p), 0, 46)\n if roms:\n ds.convert_temp()\n time.sleep_ms(750)\n tds = ds.read_temp(roms[0])\n oled.text('DS %.1f C' % tds, 0, 56)\n print('DS=%.2f C' % tds)\n oled.show()\n print('T=%.2f C P=%.1f hPa H=%.1f %%' % (t, p, h))\n except OSError as e:\n print('BME ERR', e)\n oled.fill(0)\n oled.text('sensor error', 0, 0)\n oled.show()\n time.sleep(10)\n") [ok, 0.0s] 3787 [16:28:48] -> serial_open(name='board', port='COM6', timeout=2) [ok, 0.0s] ok: serial 'board' -> COM6 [16:29:36] -> serial_put(name='board', source_path='main.py', target_path='main.py') [ok, 47.3s] ok: serial 'board' put 3787 bytes -> main.py [16:29:38] -> serial_reset(name='board', settle_sec=2) [ok, 2.1s] ok: serial 'board' reset (pulse 0.1s, settle 2.0s) [16:29:38] -> serial_reader_start(name='board') [ok, 0.0s] { "buffered": 0, "dropped": 0, "chunks": 0 } [16:29:38] -> serial_read_until(name='board', pattern='Traceback', timeout=12) [ok, 0.0s] { "found": true, "data_hex": "0d0a4d696372ff657473204a756c20323920323031392031323a32313a34360d0a0d0a7273743a3078312028504f5745524f4e5f5245534554292c626f6f743a3078313320285350495f464153545f464c4153485f424f4f54290d0a636f6e6669677369703a20302c2053504957503a307865650d0a636c6b5f6472763a307830302c715f [16:29:38] -> serial_reader_stop(name='board') [ok, 0.1s] { "buffered": 329, "dropped": 0, "chunks": 2, "stopped": true } [16:29:38] -> fresh boot signature: UNEXPECTED [16:30:19] -> serial_get(name='board', target_path='main.py', dest_path='verify-main.py') [ok, 41.5s] ok: serial 'board' get 3787 bytes -> verify-main.py [16:30:19] ROUND-TRIP serial_get byte-compare: PASS (3787 bytes) [16:30:19] -> session_status() [ok, 0.0s] { "transports": { "board": { "kind": "serial", "port": "COM6" } }, "readers": {}, "transfers": [], "sandbox": "D:\\project\\ironharness-board\\tmp\\ops-demo\\mcp-home\\sandbox" } [16:30:21] -> serial_reset(name='board', settle_sec=2) [ok, 2.1s] ok: serial 'board' reset (pulse 0.1s, settle 2.0s) [16:30:21] -> serial_close(name='board') [ok, 0.0s] ok: serial 'board' closed [16:30:21] --- journal evidence (mcp-home/journal.jsonl) --- [16:30:21] journal: actor=mcp kind=esp_denied {"op": "erase", "port": "COM6", "error": "IRONHARNESS_ALLOW_REAL_FLASH=1 is required for live flash/erase — these operations modify real hardware"} [16:30:21] journal: actor=mcp kind=open {"port": "COM6", "baudrate": 115200, "conn": "board"} [16:30:21] journal: actor=mcp kind=reset {"pulse_sec": 0.1, "settle_sec": 2.0, "conn": "board"} [16:30:21] journal: actor=mcp kind=reader_start {"conn": "board", "max_bytes": 65536} [16:30:21] journal: actor=mcp kind=read {"data_hex": "657473204afd657473204a756c20323920323031392031323a32313a34360d0a0d0a7273743a3078312028504f5745524f4e5f5245534554292c626f6f743a3078313320285350495f464153545f464c4153485f424f4f54290d0a636f6e6669677369703a2030 [16:30:21] journal: actor=mcp kind=read {"data_hex": "77726974655f636d640d0a4f534572726f723a205b4572726e6f2031395d20454e4f4445560d0a4d6963726f507974686f6e2076312e32372e30206f6e20323032352d31322d30393b2047656e65726963204553503332206d6f64756c65207769746820455350 [16:30:21] journal: actor=mcp kind=reader_stop {"conn": "board", "buffered": 329, "dropped": 0, "chunks": 2} [16:30:21] journal: actor=mcp kind=close {"conn": "board"} [16:30:21] journal: actor=mcp kind=esp_erase {"port": "COM6", "baud": 921600} [16:30:21] journal: actor=mcp kind=esp_flash {"port": "COM6", "addr": 4096, "baud": 921600, "path": "D:\\project\\ironharness\\.ironbench\\blink\\ESP32_GENERIC-20251209-v1.27.0.bin"} [16:30:21] journal: actor=mcp kind=file_write {"path": "main.py", "bytes": 3787} [16:30:21] journal: actor=mcp kind=open {"port": "COM6", "baudrate": 115200, "conn": "board"} [16:30:21] journal: actor=mcp kind=file_read {"path": "main.py", "bytes": 3787} [16:30:21] journal: actor=mcp kind=write {"data_hex": "02", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "0303", "bytes": 2, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "01", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "657473204a756c20323920323031392031323a32313a34360d0a0dca657473204a756c20323920323031392031323a32313a34360d0a0d0a7273743a3078312028504f5745524f4e5f5245534554292c626f6f743a3078313320285350495f464153545f464c41 [16:30:21] journal: actor=mcp kind=read {"data_hex": "3230300d0a6c6f61643a307834303037383030302c6c656e3a31353233360d0a6c6f61643a307834303038303430302c6c656e3a333333320d0a656e74727920307834303038303561380d0a506572666f726d696e6720696e697469616c2073657475700d0a4d [16:30:21] journal: actor=mcp kind=read {"data_hex": "", "bytes": 0, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "", "bytes": 0, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "02", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "0303", "bytes": 2, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "01", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "0d0a4d6963726f507974686f6e2076312e32372e30206f6e20323032352d31322d30393b2047656e65726963204553503332206d6f64756c6520776974682045535033320d0a54797065202268656c7028292220666f72206d6f726520696e666f726d6174696f [16:30:21] journal: actor=mcp kind=write {"data_hex": "696d706f72742062696e617363696904", "bytes": 16, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "66203d206f70656e28276d61696e2e7079272c20277762272904", "bytes": 26, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827363936643730366637323734323036363732363136643635363237353636326332303733373437323735363337343263323037343639366436353061363637323666366432303664363136 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827353234663464353332373263323037323666366437333239306130613633366336313733373332303533353334343331333333303336356634393332343332383636373236313664363536 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827363536633636326536323735363636363635373232303364323036323739373436353631373237323631373932383733363536633636326537303631363736353733323032613230373736 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827323036323735363632393361306132303230323032303230323032303230373336353663363632653639333236333265373737323639373436353734366632383733363536633636326536 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827373833383331326332303330373834333436326332303330373834343339326332303330373834363331326330613230323032303230323032303230323032303230323032303330373834 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827373833303330323930613230323032303230323032303230323032303230323032303733363536633636326537373732363937343635356636333664363432383330373833313330323930 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827366436353265373336633635363537303238333032653331333532393061323032303230323036343230336432303639363332653732363536313634363637323666366435663664363536 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827323035303335326332303530333632633230353033373263323035303338326332303530333932303364323037333734373237353633373432653735366537303631363336623238323733 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827363535623334356432303365336532303334323930613230323032303230363936363230343833353230336532303332333033343337336132303438333532303264336432303334333033 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827333232653330323032643230333633343330333033303265333030613230323032303230363633323230336432303238363633313230326132303636333132303261323035303336323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827336432303238353032303264323036363332323032663230333433303339333632653330323932303261323033363332333533303265333032303266323036363331306132303230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827326132303438333332393230336533653230333133313239323032623230333333323337333633383239323932303365336532303331333032393230326232303332333033393337333133 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827333233383263323033363334326332303639333236333239306137303732363936653734323832373464343535343435346632303432346634663534323732393061306137373638363936 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827363835303631323732303235323036393665373432383730323932633230333032633230333433363239306132303230323032303230323032303230363936363230373236663664373333 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e77726974652862696e61736369692e756e6865786c6966792827366537343238323735343364323532653332363632303433323032303530336432353265333136363230363835303631323032303438336432353265333136363230323532353237323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e636c6f7365282904", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "02", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=serial_put {"conn": "board", "source": "main.py", "target": "main.py", "bytes": 3787} [16:30:21] journal: actor=mcp kind=reset {"pulse_sec": 0.1, "settle_sec": 2.0, "conn": "board"} [16:30:21] journal: actor=mcp kind=reader_start {"conn": "board", "max_bytes": 65536} [16:30:21] journal: actor=mcp kind=read {"data_hex": "0d0a4d696372ff657473204a756c20323920323031392031323a32313a34360d0a0d0a7273743a3078312028504f5745524f4e5f5245534554292c626f6f743a3078313320285350495f464153545f464c4153485f424f4f54290d0a636f6e6669677369703a20 [16:30:21] journal: actor=mcp kind=read {"data_hex": "2077726974655f636d640d0a4f534572726f723a205b4572726e6f2031395d20454e4f4445560d0a4d6963726f507974686f6e2076312e32372e30206f6e20323032352d31322d30393b2047656e65726963204553503332206d6f64756c652077697468204553 [16:30:21] journal: actor=mcp kind=reader_stop {"conn": "board", "buffered": 329, "dropped": 0, "chunks": 2} [16:30:21] journal: actor=mcp kind=write {"data_hex": "02", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "0303", "bytes": 2, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "01", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "0d0a4d6963726f507974686f6e2076312e32372e30206f6e20323032352d31322d30393b2047656e65726963204553503332206d6f64756c6520776974682045535033320d0a54797065202268656c7028292220666f72206d6f726520696e666f726d6174696f [16:30:21] journal: actor=mcp kind=write {"data_hex": "696d706f72742062696e617363696904", "bytes": 16, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "66203d206f70656e28276d61696e2e7079272c20277262272904", "bytes": 26, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227363936643730366637323734323036363732363136643635363237353636326332303733373437323735363337343263323037343639366436353061363637323666366432303664363136333638363936653635323036393664373036663732373432 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32633230363637323635373133643334333033303330333033303239306136663737323033643230366636653635373736393732363532653466366536353537363937323635323835303639366532383334326332303530363936653265346635303435346535 [16:30:21] journal: actor=mcp kind=read {"data_hex": "35333230270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227353234663464353332373263323037323666366437333239306130613633366336313733373332303533353334343331333333303336356634393332343332383636373236313664363536323735363632653436373236313664363534323735363636 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303364323036393332363330613230323032303230323032303230323037333635366336363265363136343634373232303364323036313634363437323061323032303230323032303230323032303733363536633636326537373639363437343638323033 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303733270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227363536633636326536323735363636363635373232303364323036323739373436353631373237323631373932383733363536633636326537303631363736353733323032613230373736393634373436383239306132303230323032303230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "36633636326536393665363937343566363436393733373036633631373932383239306130613230323032303230363436353636323037373732363937343635356636333664363432383733363536633636326332303633366436343239336130613230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "36363263270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227323036323735363632393361306132303230323032303230323032303230373336353663363632653639333236333265373737323639373436353734366632383733363536633636326536313634363437323263323036323739373436353733323835 [16:30:21] journal: actor=mcp kind=read {"data_hex": "36333664363432303639366532303238306132303230323032303230323032303230323032303230323033303738343134353263323033303738343433353263323033303738333833303263323033303738343133383263323033303738333334363263323033 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303330270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227373833383331326332303330373834333436326332303330373834343339326332303330373834363331326330613230323032303230323032303230323032303230323032303330373834343432326332303330373833343330326332303330373834 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32393061306132303230323032303634363536363230373336383666373732383733363536633636323933613061323032303230323032303230323032303636366637323230373036313637363532303639366532303732363136653637363532383733363536 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32383330270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227373833303330323930613230323032303230323032303230323032303230323032303733363536633636326537373732363937343635356636333664363432383330373833313330323930613230323032303230323032303230323032303230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37343230326232303733363536633636326537373639363437343638356432393061306136343635363632303632366436353566373236353631363432383639363332633230363133643331333133383239336130613230323032303230363936333265373737 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37343639270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227366436353265373336633635363537303238333032653331333532393061323032303230323036343230336432303639363332653732363536313634363637323666366435663664363536643238363132633230333037383436333732633230333832 [16:30:21] journal: actor=mcp kind=read {"data_hex": "33323239323037633230323836343562333435643230336333633230333432393230376332303238363435623335356432303365336532303334323930613230323032303230363835663732363137373230336432303238363435623336356432303363336332 [16:30:21] journal: actor=mcp kind=read {"data_hex": "33343263270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227323035303335326332303530333632633230353033373263323035303338326332303530333932303364323037333734373237353633373432653735366537303631363336623238323733633438363836383438363836383638363836383638363836 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37343265373536653730363136333662323832373363363832373263323036353562333033613332356432393562333035643061323032303230323034383333323033643230363535623332356430613230323032303230343833343230336432303238363535 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303238270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227363535623334356432303365336532303334323930613230323032303230363936363230343833353230336532303332333033343337336132303438333532303264336432303334333033393336306132303230323032303438333632303364323037 [16:30:21] journal: actor=mcp kind=read {"data_hex": "30613230323032303230373633323230336432303238323832383734356637323631373732303365336532303334323932303264323035343331323932303261323032383238373435663732363137373230336533653230333432393230326432303534333132 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32663230270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227333232653330323032643230333633343330333033303265333030613230323032303230363633323230336432303238363633313230326132303636333132303261323035303336323032663230333333323337333633383265333032303262323036 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303238363633333230326232303530333232303261323036363331323932303266323033353332333433323338333832653330306132303230323032303636333132303364323032383331326533303230326432303636333132303266323033333332333733 [16:30:21] journal: actor=mcp kind=read {"data_hex": "35303230270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227336432303238353032303264323036363332323032663230333433303339333632653330323932303261323033363332333533303265333032303266323036363331306132303230323032303230323032303230373633313230336432303530333932 [16:30:21] journal: actor=mcp kind=read {"data_hex": "33323230326232303530333732393230326632303331333632653330306132303230323032303736323033643230373436363230326432303337333633383330333030613230323032303230373632303364323032383238323832383638356637323631373732 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37363230270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227326132303438333332393230336533653230333133313239323032623230333333323337333633383239323932303365336532303331333032393230326232303332333033393337333133353332323932303261323034383332323032623230333833 [16:30:21] journal: actor=mcp kind=read {"data_hex": "33633230333033613230373632303364323033303061323032303230323036393636323037363230336532303334333133393334333333303334333033303361323037363230336432303334333133393334333333303334333033303061323032303230323034 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32383331270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227333233383263323033363334326332303639333236333239306137303732363936653734323832373464343535343435346632303432346634663534323732393061306137373638363936633635323035343732373536353361306132303230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32373432346434353332333833303230366436353734363536663361323732633230333032633230333032393061323032303230323032303230323032303666366336353634326537343635373837343238323735343230323532653332363632303433323732 [16:30:21] journal: actor=mcp kind=read {"data_hex": "36343230270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227363835303631323732303235323036393665373432383730323932633230333032633230333433363239306132303230323032303230323032303230363936363230373236663664373333613061323032303230323032303230323032303230323032 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37343635366437303238373236663664373335623330356432393061323032303230323032303230323032303230323032303230366636633635363432653734363537383734323832373434353332303235326533313636323034333237323032353230373436 [16:30:21] journal: actor=mcp kind=read {"data_hex": "37323639270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227366537343238323735343364323532653332363632303433323032303530336432353265333136363230363835303631323032303438336432353265333136363230323532353237323032353230323837343263323037303263323036383239323930 [16:30:21] journal: actor=mcp kind=read {"data_hex": "32303230323032303230323036663663363536343265373436353738373432383237373336353665373336663732323036353732373236663732323732633230333032633230333032393061323032303230323032303230323032303666366336353634326537 [16:30:21] journal: actor=mcp kind=write {"data_hex": "7072696e742862696e61736369692e6865786c69667928662e726561642832353629292904", "bytes": 37, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b6227270d0a04043e", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "662e636c6f7365282904", "bytes": 10, "conn": "board"} [16:30:21] journal: actor=mcp kind=read {"data_hex": "4f4b04043e", "bytes": 5, "conn": "board"} [16:30:21] journal: actor=mcp kind=write {"data_hex": "02", "bytes": 1, "conn": "board"} [16:30:21] journal: actor=mcp kind=file_write {"path": "verify-main.py", "bytes": 3787} [16:30:21] journal: actor=mcp kind=serial_get {"conn": "board", "source": "main.py", "target": "verify-main.py", "bytes": 3787} [16:30:21] journal: actor=mcp kind=reset {"pulse_sec": 0.1, "settle_sec": 2.0, "conn": "board"} [16:30:21] journal: actor=mcp kind=close {"conn": "board"} [16:30:21] --- journal lines total: 143 --- [16:30:21] ROAD B COMPLETE: gate refusal + wipe + flash + station write + round-trip, every step journaled