Repository navigation
Conversation
37c3524 to
2bd1cfd
Compare
|
This is nice work, Kent. It's going to make things much more robust. The teardown accounting in here was genuinely broken and I'm glad someone took it on. Will we need to do something like it in main and/or 1.3.6, in addition to 1.2.14? This is tricky stuff that I don't understand very well, but I thought my AI could help me check a few things. I ran an adversarial review with it, and it came up with some findings, but I didn't trust my own human judgment to filter it very well. Thinking about whether I had any value that I could realistically contribute, I decided to demand that my AI write tests that prove the failure modes it was claiming it had found. So, it did that, and I've raised a PR against your PR, with those failing tests. I'm not necessarily hoping that you merge my PR into yours, but that was the most efficient way I could demonstrate the findings, communicate something easy for you to reproduce, and be sure my AI wasn't hallucinating and I wouldn't waste your time. So, take the rest of this in the spirit of, "I'm pretty sure there's an issue here that's at least worth debating, and here is a concrete test that you can run that will let you explore the issue." Sorry for the hedging; I'm just not smart enough yet about the codebase to be more sure of my own judgment at this point... Everything below was run against the PR head (2bd1cfd) and its merge base (1cd9833), on Python 3.12.13 with hio 0.6.19, which is what CI resolves for this branch, IIRC. A couple general notes: First, I think the Second, the local inactivity timeout that Here are the specific findings from my adversarial review that I thought were worth sharing. 1.
|
|
This PR uses This workaround will not be necessary once ioflo/hio#163 is merged and a new version of HIO released. |
69a9b6b to
221caeb
Compare
0a05340 to
fc27c60
Compare
|
@dhh1128 your items #1 through #3 are fully addressed in the updated PR code. I will likely be cutting down this PR to the base fix and choreographing the rest of the changes as follow on PRs. I'll tag you in them accordingly with the fixes that correspond to your comments. I appreciate your review. At +1461 and -295 this PR is pretty big. I am going to cut that down into smaller, cohesive PRs. |
fc27c60 to
cfd028e
Compare
Treat receive cutoff as the start of a bounded drain instead of removing the connection immediately. Let Reactant settle parsing and response production while Directant waits for HIO transport output, stopping on txCutoff or one absolute drain deadline. Preserve incomplete-message diagnostics and cover peer EOF, multi-message parsing, multi-response cues, terminal send failure, deadline expiry, and idle-boundary input in focused Directant tests. Keep this change limited to Directant, Reactant, and their tests; caller-facing delivery results remain follow-up work.
cfd028e to
883fad0
Compare
Summary
Treat inbound direct-mode TCP receive cutoff as the start of a bounded drain instead of immediate teardown.
Scope
Limited to src/keri/app/directing.py and tests/app/test_directing.py. Sender-side delivery results and other transport follow-ups remain separate.
Validation
./venv/bin/python -m pytest -q tests/app/test_directing.py — 11 passed.