| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`--operator` closes the last two items of the live pass, from the side the
client cannot see:
- **a cap raised live starts what was waiting**, with no restart and no
reconnection. Draft-v6 §2.11 promises this and it was false for months:
`ops.set_node_settings` hot-swapped by assigning `webrtc._stream_sem`, an
attribute that has never existed. Now it goes through `set_capacity`, and
this is what says so from outside;
- **a vanished peer's slots are back before anyone asks.** §5 of the plan
makes that a hook on the connection rather than a timeout, and the
difference is two minutes of a node that looks full.
Plus the operator's view of the queue itself, which is the only window into a
transfer stuck at "waiting" — and which reported the module defaults instead of
the operator's values until this afternoon.
Two mistakes in the check, none in the code, and the second is worth keeping:
the first version set the node cap and the member cap both to 2, so one account
holding two transfers hit both at once. Raising the node-wide cap then correctly
changed nothing — per-member is checked first, by design — and the probe
reported the design working as a failure. It now puts the node cap below the
member cap so the queue is held by the machine, which is the only arrangement
where this can be measured at all.
The cap is restored to whatever the node was running before the probe touched
it, not to a default.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HCGdheDLxGReuKHga3BtST
|
|
|
It lived in `QE/`, which is deliberately not versioned — credentials and test
artefacts go there — so a tool that found several defects no test in the suite
could reach existed on exactly one machine.
What it found, none of it reachable from pytest: a cap that was never enforced,
a queue that granted a slot and never told the peer waiting on it, leases that
outlived the session holding them, and `transfers show` reporting the module
defaults instead of the operator's own values.
Not collected: the filename does not match `test_*.py`, and that is the point.
It talks to a real hub with real credentials and takes minutes; what belongs in
the suite is already there.
It still needs two things from `QE/`, which stay out of the repo: `e2e.py`, the
second implementation of the client whose `Client` speaks MNP over a real
WebRTC DataChannel, and `demo.env`. Both are located at run time and their
absence is explained in a sentence rather than raised as an ImportError from
four frames down.
Verified from the new location against the live node: 4/4.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HCGdheDLxGReuKHga3BtST
|