From cb5e81d443c422118c178592595029a567e60052 Mon Sep 17 00:00:00 2001 From: goodboy Date: Fri, 6 Nov 2026 15:21:33 -0500 Subject: [PATCH] Pin qualified `tractor` and require `trio>=0.34.0` Advance the `piker_pin` lock from `b64c89f0` to the published `8fe574c1`, retaining the evaluated Trio 0.34.0 release. Require Trio >=0.34.0 for the updated cancellation APIs. Restore the Git source used before local editable evaluation; no environment sync is included. Record the human's overlapping charts, Gateway data reset and close/reopen qualification. Keep the full Gateway restart string error and Tractor teardown callback assertion explicit as separate recovery limits. Offline lock validation resolves 126 packages; this is not a fresh-install qualification claim. Prompt-IO: ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.md (this patch was generated in some part by `codex` (`openai`)) --- ai/ib-recovery-qualification-20261106.md | 71 +++++++++++++++++++ ...61106T201746Z_495c0915_612dfc_prompt_io.md | 41 +++++++++++ ...6T201746Z_495c0915_612dfc_prompt_io.raw.md | 21 ++++++ pyproject.toml | 2 +- uv.lock | 10 +-- 5 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 ai/ib-recovery-qualification-20261106.md create mode 100644 ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.md create mode 100644 ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.raw.md diff --git a/ai/ib-recovery-qualification-20261106.md b/ai/ib-recovery-qualification-20261106.md new file mode 100644 index 00000000..c6258697 --- /dev/null +++ b/ai/ib-recovery-qualification-20261106.md @@ -0,0 +1,71 @@ +# IB recovery qualification, 2026-11-06 + +This records human-operated qualification of the bounded #94 +landing on `wkt/land_ib_recovery`, starting from `495c0915` plus +the narrow history catch described below. It supplements the +historical evidence in `ai/ib-recovery-candidate.md`. + +## Runtime and dependency source + +The evaluated environment uses Python 3.13, Trio 0.34.0 and Tractor +`8fe574c1e447358dafd8ebf5ada3b0714c688f78`. Tractor was an editable +local checkout during evaluation. The human subsequently published +that exact commit as GitHub's `goodboy/tractor:piker_pin`; a read-only +remote query confirmed the published OID before restoring Piker's +Git source and recording the same OID in `uv.lock`. + +Offline lock validation resolves 126 packages successfully. No +environment sync was performed. This validates the lock metadata; +it does not claim a fresh installation from the published source. + +## Manual observations + +The human operated Gateway, chart windows and paper orders. The +agent did not operate live services or the account. + +- Same-feed overlap, close/reopen and paper order submit/cancel + worked after the existing order-dialog guard was imported. +- Different-feed overlap originally exposed a timed-out one-second + MNQ March 2027 gap query. PDB showed `timedout=True` and + `out is None`. Its uncaught `NoData` canceled sibling history and + quote tasks even though `pikerd` remained alive. +- After the narrow catch, the human reported the overlap journeys + working, then confirmed cases 5 and 6 with Ctrl+Alt+F: overlapping + live feeds survived the Gateway data reset; closing all charts + and reopening with `pikerd` left running restored live updates. +- Earlier Ctrl+Shift+R attempts left feeds live, but do not prove + that the intended Gateway data reset was triggered. + +These are manual observations, not automated timing or latency +measurements. Ctrl+Alt+R was not qualified here; Piker's utility +labels it a connection reset. + +## Narrow history backport + +Only the `NoData`/`DataUnavailable` catch around `get_hist()` in +`maybe_fill_null_segments()` is copied from +`0846cbd4a4197e47415689cf5e9d146ba3174c32`, authored by +`goodboy `. The existing gap fallback +remains in place; this does not import broader history repair. + +The new regression uses real null detection and checks that a +sibling in the same nursery still runs after either provider +exception. Both cases failed before the catch. With it, the two +focused history files passed: 17 tests. Earlier bounded-recovery +and Tractor qualification results remain separate evidence, not +fresh test runs of the final dependency commit tree. + +## Remaining recovery limits + +A full Gateway restart was triggered accidentally through its +auto-restart settings dialog. The disconnect delivered the string +`Peer closed connection.` to `deliver_trade_events()`. The string +branch then reached `err['reqid']`, raising `TypeError`; its `code` +local can also retain an earlier event's value. Full Gateway restart +recovery is outside this bounded landing. + +The earlier history-failure teardown also exposed a separate +Tractor completion-callback assertion after `BrokenResourceError`. +The history catch does not establish that this callback race is +fixed. Broader history recovery and these disconnect paths remain +downstream work. diff --git a/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.md b/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.md new file mode 100644 index 00000000..5e371ce8 --- /dev/null +++ b/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.md @@ -0,0 +1,41 @@ +--- +created_at: 2026-11-06T20:17:46.622316+00:00 +generated_by: + harness: codex + provider: OpenAI +git_ref: 495c0915 +scope: config +substantive: true +raw_file: 20261106T201746Z_495c0915_612dfc_prompt_io.raw.md +--- + +## Prompt + +The human requested a commit plan, then a fast-forward landing of +the #94 branch and PR updates. They agreed the temporary local +Tractor source must be replaced, published piker_pin themselves, +and reported "pushed it". They also supplied the manual recovery +results and full Gateway restart failure diagnostics. + +## Response summary + +Restore the Git Tractor source after local qualification and lock +its published piker_pin at 8fe574c1e447358dafd8ebf5ada3b0714c688f78. +Retain the evaluated Trio 0.34.0 lock and require Trio >=0.34.0. +Record the human's overlap, data-reset and reopen observations, +the narrow history extraction, and full-restart recovery limits. +Offline uv lock validation passed without an environment sync. + +## Files changed + +- `pyproject.toml`: Trio minimum; restore existing Tractor Git source. +- `uv.lock`: published Tractor OID and evaluated Trio 0.34.0. +- `ai/ib-recovery-qualification-20261106.md`: scoped evidence. + +## Human edits + +The human selected the bounded landing scope, performed live tests, +identified the more aggressive reset distinction, and published +the tested Tractor ref. The agent applied the metadata edits and +wrote the qualification record from those observations. No human +acceptance or task-state transitions are inferred by this record. diff --git a/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.raw.md b/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.raw.md new file mode 100644 index 00000000..e76cf1b3 --- /dev/null +++ b/ai/prompt-io/20261106T201746Z_495c0915_612dfc_prompt_io.raw.md @@ -0,0 +1,21 @@ +--- +created_at: 2026-11-06T20:17:46.622316+00:00 +generated_by: + harness: codex + provider: OpenAI +git_ref: 495c0915 +diff_cmd: git diff HEAD~1..HEAD +--- + +> `git diff HEAD~1..HEAD -- pyproject.toml` + +> `git diff HEAD~1..HEAD -- uv.lock` + +> `git diff HEAD~1..HEAD -- ai/ib-recovery-qualification-20261106.md` + +Restore the Git Tractor source after local qualification and lock +its published piker_pin at 8fe574c1e447358dafd8ebf5ada3b0714c688f78. +Retain the evaluated Trio 0.34.0 lock and require Trio >=0.34.0. +Record the human's overlap, data-reset and reopen observations, +the narrow history extraction, and full-restart recovery limits. +Offline uv lock validation passed without an environment sync. diff --git a/pyproject.toml b/pyproject.toml index 4ee67c82..e29b7f39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,7 +61,7 @@ dependencies = [ "trio-util >=0.7.0, <0.8.0", "trio-websocket >=0.10.3, <0.11.0", "typer >=0.9.0, <1.0.0", - "trio >=0.27", + "trio >=0.34.0", "pendulum", "httpx >=0.27.0, <0.28.0", "cryptofeed >=2.4.0, <3.0.0", diff --git a/uv.lock b/uv.lock index d6812cf5..5b6ab36f 100644 --- a/uv.lock +++ b/uv.lock @@ -991,7 +991,7 @@ requires-dist = [ { name = "tomli-w", specifier = ">=1.0.0,<2.0.0" }, { name = "tomlkit", git = "https://github.com/pikers/tomlkit.git?branch=piker_pin" }, { name = "tractor", git = "https://github.com/goodboy/tractor.git?branch=piker_pin" }, - { name = "trio", specifier = ">=0.27" }, + { name = "trio", specifier = ">=0.34.0" }, { name = "trio-typing", specifier = ">=0.10.0" }, { name = "trio-util", specifier = ">=0.7.0,<0.8.0" }, { name = "trio-websocket", specifier = ">=0.10.3,<0.11.0" }, @@ -1671,7 +1671,7 @@ wheels = [ [[package]] name = "tractor" version = "0.1.0a6.dev0" -source = { git = "https://github.com/goodboy/tractor.git?branch=piker_pin#b64c89f05a9fc8ac2878551eb5eda36574ebef6a" } +source = { git = "https://github.com/goodboy/tractor.git?branch=piker_pin#8fe574c1e447358dafd8ebf5ada3b0714c688f78" } dependencies = [ { name = "bidict" }, { name = "colorlog" }, @@ -1700,7 +1700,7 @@ wheels = [ [[package]] name = "trio" -version = "0.32.0" +version = "0.34.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1710,9 +1710,9 @@ dependencies = [ { name = "sniffio" }, { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/ce/0041ddd9160aac0031bcf5ab786c7640d795c797e67c438e15cfedf815c8/trio-0.32.0.tar.gz", hash = "sha256:150f29ec923bcd51231e1d4c71c7006e65247d68759dd1c19af4ea815a25806b", size = 605323, upload-time = "2025-10-31T07:18:17.466Z" } +sdist = { url = "https://files.pythonhosted.org/packages/92/dc/a2d25ed73ad49cfd79bf18d262577c3731c98e382284e28d522f49a0df35/trio-0.34.0.tar.gz", hash = "sha256:63b9485408bdfdde544fced107045a8c0086cdc4bd0ef2f797b9e0dd111b964b", size = 607457, upload-time = "2026-08-11T00:33:42.198Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/bf/945d527ff706233636c73880b22c7c953f3faeb9d6c7e2e85bfbfd0134a0/trio-0.32.0-py3-none-any.whl", hash = "sha256:4ab65984ef8370b79a76659ec87aa3a30c5c7c83ff250b4de88c29a8ab6123c5", size = 512030, upload-time = "2025-10-31T07:18:15.885Z" }, + { url = "https://files.pythonhosted.org/packages/77/1f/555f1364bed52a92a864181962b77f1b15adadeacf23b86105324363e461/trio-0.34.0-py3-none-any.whl", hash = "sha256:6c7c9f49917694dcdcd5f67abd168df5599eca480d61f29854d17a61a75c2f05", size = 511840, upload-time = "2026-08-11T00:33:40.552Z" }, ] [[package]]