Commit Graph
495 Commits
Author SHA1 Message Date
Nils Andreas Svee 89ec57d48c feat(managed): add transactional target updates 2026-08-09 18:51:46 +07:00
Nils Andreas Svee 87b41bb379 Merge pull request #49 from Lochnair/feat/tokio-managed-task
feat(managed): add unified Tokio managed task
2026-08-05 00:19:17 +07:00
Nils Andreas Svee 99b6ddfead fix(managed): preserve drain and pacing invariants 2026-08-05 00:09:46 +07:00
Nils Andreas Svee 8445c0cd99 fix(managed): harden stop and deadline ordering 2026-08-04 23:19:18 +07:00
Nils Andreas Svee 1af8afcfae fix(managed): correct pacing and drain cleanup 2026-08-04 22:33:00 +07:00
Nils Andreas Svee 1cb6e07706 test(managed): verify unified task lifecycle 2026-08-04 20:59:42 +07:00
Nils Andreas Svee fd3c29e63a feat(managed): add unified Tokio managed task 2026-08-04 20:38:52 +07:00
Nils Andreas Svee 49b34bf85c Merge pull request #48 from Lochnair/refactor/async-client-poll-core
refactor(client): share pollable async transactions
2026-08-04 20:10:04 +07:00
Nils Andreas Svee a24898ada6 refactor(client): share pollable async transactions 2026-08-04 19:17:33 +07:00
Nils Andreas Svee 0f02bf54ec Merge pull request #47 from Lochnair/feat/tokio-async-client
feat(client): add Tokio async client
2026-08-04 16:46:00 +07:00
Nils Andreas Svee b67dcfb425 test(client): focus async adapter coverage 2026-08-04 16:28:27 +07:00
Nils Andreas Svee 2f7932862a fix(client): reformat tokio dependency entry 2026-08-04 15:54:41 +07:00
Nils Andreas Svee b1e32d543c test(client): verify async lifecycle equivalence 2026-08-04 15:34:20 +07:00
Nils Andreas Svee 62a9c8899e feat(client): add Tokio async client 2026-08-04 15:34:19 +07:00
Nils Andreas Svee a542d4edf1 feat(client): add optional Tokio socket support 2026-08-04 15:29:35 +07:00
Nils Andreas Svee 069da5cee9 Merge pull request #46 from Lochnair/fix/managed-opening-drain
fix(managed): bound opening receiver drains
2026-08-04 14:39:23 +07:00
Nils Andreas Svee 56f54a7b4e fix(managed): classify opening overflow as configuration 2026-08-04 14:24:40 +07:00
Nils Andreas Svee 04e7893e3e fix(managed): bound opening receiver drains 2026-08-04 14:22:23 +07:00
Nils Andreas Svee a2d9b5af81 Merge pull request #45 from Lochnair/fix/transactional-close
fix(client): make session closing transactional
2026-08-04 13:54:46 +07:00
Nils Andreas Svee 3948e3dec9 fix(client): timestamp close events after send 2026-08-04 13:44:33 +07:00
Nils Andreas Svee ef19c45c1f fix(managed): transact group session close 2026-08-04 13:08:38 +07:00
Nils Andreas Svee 357e1356ea fix(client): transact blocking session close 2026-08-04 13:03:51 +07:00
Nils Andreas Svee da731edd0d refactor(session): prepare close transactions 2026-08-04 12:59:27 +07:00
Nils Andreas Svee d3a18b0331 Merge pull request #43 from Lochnair/refactor/transactional-opening
refactor(client): make session opening transactional
2026-08-04 12:45:58 +07:00
Nils Andreas Svee 185e0bf3e4 fix(managed): drain queued opening replies before retry 2026-08-04 12:34:13 +07:00
Nils Andreas Svee dd74f3800e fix(client): preserve no-test opening semantics 2026-08-04 12:18:31 +07:00
Nils Andreas Svee e270183f5d refactor(managed): transact group session opening 2026-08-04 12:12:05 +07:00
Nils Andreas Svee ff27ec24c6 refactor(client): transact blocking session opening 2026-08-04 12:11:32 +07:00
Nils Andreas Svee dad4d2a298 refactor(session): prepare opening transactions 2026-08-04 12:11:32 +07:00
Nils Andreas Svee 983aec5bab Merge pull request #44 from Lochnair/fix/probe-send-timestamps
fix(client): separate probe admission and send timing
2026-08-04 11:48:08 +07:00
Nils Andreas Svee e642f962d4 fix(client): separate probe admission and send timing 2026-08-04 11:36:25 +07:00
Nils Andreas Svee 8de478777d Merge pull request #42 from Lochnair/refactor/transactional-probes
refactor(client): make probe sends transactional
2026-08-04 01:13:39 +07:00
Nils Andreas Svee 9bc2ac90b3 refactor(client): commit probe sends transactionally 2026-08-04 01:04:42 +07:00
Nils Andreas Svee b5d0b1e52e refactor(probe): preflight pending insertion 2026-08-04 00:53:26 +07:00
Nils Andreas Svee 1a189854e7 Merge pull request #41 from Lochnair/feat/directional-codecs
feat(proto): add directional packet codecs
2026-08-04 00:48:25 +07:00
Nils Andreas Svee cabe0f6c24 feat(proto): add directional echo codecs 2026-08-04 00:34:12 +07:00
Nils Andreas Svee cc7f7fc9b2 feat(proto): add directional open and close codecs 2026-08-04 00:30:08 +07:00
Nils Andreas Svee e908c4ce4f refactor(proto): centralize packet envelope handling 2026-08-04 00:27:45 +07:00
Nils Andreas Svee 6ba76abca0 Merge pull request #40 from Lochnair/refactor/probe-scheduling
refactor(client): move probe scheduling out of SessionMachine
2026-08-04 00:16:21 +07:00
Nils Andreas Svee 1920d5e33c test(managed): make probe pacing assertions deterministic 2026-08-04 00:11:27 +07:00
Nils Andreas Svee 22b8bb80ea refactor(client): separate probe scheduling from session state 2026-08-04 00:11:27 +07:00
renovate[bot] 561e405d18 chore(deps): maintain cargo lockfile 2026-08-03 17:10:21 +00:00
renovate[bot] 1cb4d01746 fix(deps): update rust crate clap to 4.6.5 2026-08-04 00:06:02 +07:00
renovate[bot] 01787362f5 chore(deps): update github actions 2026-08-04 00:05:19 +07:00
Nils Andreas Svee 549efa8330 Merge pull request #38 from Lochnair/refactor/session-machine-state
Make session lifecycle state explicit
2026-08-03 23:41:59 +07:00
Nils Andreas Svee 4b4adc518c refactor(session): consolidate client session lifecycle 2026-07-31 11:10:23 +07:00
Nils Andreas Svee dc827908d9 refactor(session): separate negotiation from session state 2026-07-31 11:08:25 +07:00
Nils Andreas Svee dfe0534905 test(managed): cover group late replies during final drain
Exercise a real one-target ManagedClientGroup through timeout, Draining, a gated retained reply, LateReply classification, local close, and authoritative TargetFinished publication. Synchronize release after EchoLoss and a scheduler-handled no-op update so the ordering is deterministic rather than delay-dependent.

Add a silent-server control that verifies completion only after the final-drain deadline, and assert bounded join, queued-event draining through disconnection, target counters, terminal outcome equality, and group aggregates in both cases.

Harden the analogous single-client late-drain test with a viable one-probe run window and packet-shape checks. No production final-drain behavior change was required.
2026-07-28 15:55:18 +07:00
Nils Andreas Svee 7cc55bd619 fix(managed): decouple peer-close control from event delivery
Add a scheduler-owned saturating peer-close counter shared with the group session. Update it before best-effort TargetFinished publication so bounded subscriber overflow cannot hide the live shutdown condition, while retaining the existing events, bounded history, and aggregate accounting.

Make grouped CLI and TUI supervision consult the durable count on each existing activity loop and funnel both count and event observations through one-shot stop policy. Preserve interruption suppression, queued-event draining, structured failures, drop reporting, and peer-close diagnostic precedence.

Cover scheduler-only accounting, non-peer exclusions, receiver and removal races, deterministic capacity-one DropOldest eviction with an active target, frontend one-shot policy, and the existing process-level peer-close and interruption behavior.
2026-07-28 15:49:53 +07:00
Nils Andreas Svee bbe3261eb3 fix(managed): record peer closure in the receiver
After publishing the authenticated reply classification and session-close events, mark the target PeerClosed while the receiver still holds its lock. Wake the scheduler to publish and account for the single authoritative terminal outcome.

Add controlled-order regressions proving later scheduler sends and target removal cannot overwrite peer-close provenance, counters remain intact, and ordinary replies stay active.
2026-07-28 14:55:30 +07:00