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`))wkt/land_flake_update
parent
51795a4e07
commit
cb5e81d443
|
|
@ -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 <goodboy_foss@protonmail.com>`. 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.
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -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.
|
||||||
|
|
@ -61,7 +61,7 @@ dependencies = [
|
||||||
"trio-util >=0.7.0, <0.8.0",
|
"trio-util >=0.7.0, <0.8.0",
|
||||||
"trio-websocket >=0.10.3, <0.11.0",
|
"trio-websocket >=0.10.3, <0.11.0",
|
||||||
"typer >=0.9.0, <1.0.0",
|
"typer >=0.9.0, <1.0.0",
|
||||||
"trio >=0.27",
|
"trio >=0.34.0",
|
||||||
"pendulum",
|
"pendulum",
|
||||||
"httpx >=0.27.0, <0.28.0",
|
"httpx >=0.27.0, <0.28.0",
|
||||||
"cryptofeed >=2.4.0, <3.0.0",
|
"cryptofeed >=2.4.0, <3.0.0",
|
||||||
|
|
|
||||||
10
uv.lock
10
uv.lock
|
|
@ -991,7 +991,7 @@ requires-dist = [
|
||||||
{ name = "tomli-w", specifier = ">=1.0.0,<2.0.0" },
|
{ name = "tomli-w", specifier = ">=1.0.0,<2.0.0" },
|
||||||
{ name = "tomlkit", git = "https://github.com/pikers/tomlkit.git?branch=piker_pin" },
|
{ 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 = "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-typing", specifier = ">=0.10.0" },
|
||||||
{ name = "trio-util", specifier = ">=0.7.0,<0.8.0" },
|
{ name = "trio-util", specifier = ">=0.7.0,<0.8.0" },
|
||||||
{ name = "trio-websocket", specifier = ">=0.10.3,<0.11.0" },
|
{ name = "trio-websocket", specifier = ">=0.10.3,<0.11.0" },
|
||||||
|
|
@ -1671,7 +1671,7 @@ wheels = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tractor"
|
name = "tractor"
|
||||||
version = "0.1.0a6.dev0"
|
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 = [
|
dependencies = [
|
||||||
{ name = "bidict" },
|
{ name = "bidict" },
|
||||||
{ name = "colorlog" },
|
{ name = "colorlog" },
|
||||||
|
|
@ -1700,7 +1700,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "trio"
|
name = "trio"
|
||||||
version = "0.32.0"
|
version = "0.34.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "attrs" },
|
{ name = "attrs" },
|
||||||
|
|
@ -1710,9 +1710,9 @@ dependencies = [
|
||||||
{ name = "sniffio" },
|
{ name = "sniffio" },
|
||||||
{ name = "sortedcontainers" },
|
{ 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 = [
|
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]]
|
[[package]]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue