Skip to content

feat(stats): count refused and failed sessions - #5659

Merged
kixelated merged 24 commits into
mainfrom
quest/m1/session-outcomes
Oct 17, 2026
Merged

kixelated merged 24 commits into
mainfrom
quest/m1/session-outcomes

Conversation

@kixelated

@kixelated kixelated commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Admission refusals only reach relay metrics, and session stats cannot distinguish abnormal ends from clean closes. An embedder cannot record a refusal that happens outside relay admission.

Approach

Add fixed, copyable refusal and failure counters to Presence. Centralize gateway and network admission counting in the cluster, share enabled stats with metrics, and retain a refusal-only collector with one empty-root/default-tier entry when publishing is disabled. Preserve typed transport close causes and classify lease expiry without reading error strings. Native adapters (moq-quic on tokio and io_uring, plus iroh) identify local connection closes as session cancellations, preserving the distinction from clean end-of-content. Generic virtual-stream Closed retains its prior transport fallback.

A reconnecting cluster dial keeps its existing logical session: intermediate retries add no failure, and a typed terminal session error counts once after the first connection established.

Impact

  • Public API: add stats::Refusal, stats::Failure, their named counter structs stats::Refusals and stats::Failures, Handle::refuse, Session::fail, and Registry::is_enabled (re-exported from moq-stats).
  • Add transport::CloseKind, defaulted transport::Error::close_kind, and Error::IdleTimeout. FFI maps the new variant onto its existing Transport error, so the binding ABI is unchanged.
  • Stats wire: defaulted sessions_refused and sessions_failed objects in totals, presence and legacy sessions tracks. Live session counts and existing fields keep their meaning. MoQ protocol wire and codes are unchanged.
  • /metrics adds moq_relay_sessions_failed_total{tier,kind}.
  • JS has no matching Presence collector or type to update.
  • Relay refusals remain on the empty root/default tier until typed refusal attribution lands; an embedder supplies the root and tier it resolved.

Validation

  • just check against main passes on the merged head (6,864 Rust tests plus bindings).
  • Focused close-kind tests pass for the moq-quic tokio backend, iroh, and the io_uring adapter.

Follow-ups

  • Refusal metrics take a second registry snapshot. A focused follow-up can reuse the first, or measure a presence-only projection; no runtime regression was measured.
  • Per-physical-reconnect accounting needs a separate lifecycle contract. Typed refusal attribution and the expired refusal reason remain in the refusal-reason quest.

(Written by Claude Opus 5.5)

kixelated and others added 5 commits October 15, 2026 18:14
Co-Authored-By: GPT-6 <noreply@openai.com>
Share fixed session outcome counters across stats tracks, admission and metrics, preserving typed close causes and logical reconnect lifetimes.

Co-Authored-By: GPT-6 <noreply@openai.com>
…omes

Co-Authored-By: GPT-6 <noreply@openai.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Implemented session outcomes and kept this PR a draft. Final committed head is c93e963a418ddb887e9311b69aa465d1b6d69f13, tested against integrated base e654a20d8c4bece51855feca9253a6dccfd51615.

just fix and just ci check passed. The full check passed 6,691 tests, failed one io_uring ECN test on worker allocation (ENOMEM, shared 8,192KiB locked-memory limit), and canceled 37. One isolated characterization passed; that does not turn the failed full gate green. All-language interop remains unrun. Final optional Iroh typed-cause and strict real io_uring refusal proofs passed 2/2.

The implemented taxonomy uses typed causes, counts admission once in the cluster, preserves clean closes, and counts only terminal errors of an established outgoing logical session. Physical reconnect attempts retain their existing separate limitation. The earlier virtual-stream and connection/content-end regressions were fixed and their regressions pass.

Recommendation: keep the draft for review and complete current-base full verification plus all-language interop before merge. Suggested follow-ups are reuse of the existing metrics snapshot where registry identity is proven, or a measured presence projection, and a separate lifecycle contract for physical reconnect accounting. No runtime regression was measured for the extra snapshot traversal.

(Written by GPT-6)

kixelated and others added 3 commits October 15, 2026 23:21
…facing rules

Add sessions_refused and sessions_failed to the sessions JSON example, cut cluster-dial and setup-error internals from stats.md, and move the sessions_failed /metrics note into the existing /metrics alert list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	quest/m2/wire-stats/README.md
@kixelated
kixelated marked this pull request as ready for review October 16, 2026 18:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T07:11:42.945268Z c88602a New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 13 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9b7629c1-7989-4144-8536-fda88a6b153c
📥 Commits

Reviewing files that changed from the base of the PR and between a2131c0 and c88602a.

📒 Files selected for processing: 37
  • doc/bin/relay/http.md
  • doc/concept/stats.md
  • quest/m1/README.md
  • quest/m1/drain-cleanup.md
  • quest/m1/refusal-reason.md
  • quest/m1/session-outcomes.md
  • quest/m2/grant-label.md
  • quest/m2/uring-connection-log.md
  • quest/m2/wire-stats/README.md
  • rs/moq-ffi/src/error.rs
  • rs/moq-net/src/coding/codes.rs
  • rs/moq-net/src/error.rs
  • rs/moq-net/src/ietf/auth.rs
  • rs/moq-net/src/ietf/session.rs
  • rs/moq-net/src/lite/publisher.rs
  • rs/moq-net/src/lite/session.rs
  • rs/moq-net/src/model/resume.rs
  • rs/moq-net/src/session.rs
  • rs/moq-net/src/stats.rs
  • rs/moq-net/src/stats/outcomes.rs
  • rs/moq-net/src/transport.rs
  • rs/moq-relay/src/auth.rs
  • rs/moq-relay/src/auth/refresh.rs
  • rs/moq-relay/src/cluster.rs
  • rs/moq-relay/src/connection.rs
  • rs/moq-relay/src/internal.rs
  • rs/moq-relay/src/refusals.rs
  • rs/moq-relay/src/uring.rs
  • rs/moq-relay/tests/integration/auth_embedder.rs
  • rs/moq-relay/tests/integration/refusals.rs
  • rs/moq-stats/src/aggregate.rs
  • rs/moq-stats/src/lib.rs
  • rs/moq-tokio/src/transport/owned.rs
  • rs/moq-uring/src/quic/driver/mod.rs
  • rs/moq-uring/src/quic/mod.rs
  • rs/moq-uring/src/transport/adapter.rs
  • rs/moq-uring/tests/integration/main.rs

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 96ed6256-1866-4749-a5b4-ae6f977c9d73
📥 Commits

Reviewing files that changed from the base of the PR and between 0ea4992 and a2131c0.

📒 Files selected for processing: 35
  • doc/bin/relay/http.md
  • doc/concept/stats.md
  • quest/m1/README.md
  • quest/m1/drain-cleanup.md
  • quest/m1/refusal-reason.md
  • quest/m1/session-outcomes.md
  • quest/m2/grant-label.md
  • quest/m2/uring-connection-log.md
  • quest/m2/wire-stats/README.md
  • rs/moq-ffi/src/error.rs
  • rs/moq-net/src/coding/codes.rs
  • rs/moq-net/src/error.rs
  • rs/moq-net/src/ietf/auth.rs
  • rs/moq-net/src/ietf/session.rs
  • rs/moq-net/src/lite/publisher.rs
  • rs/moq-net/src/lite/session.rs
  • rs/moq-net/src/model/resume.rs
  • rs/moq-net/src/stats.rs
  • rs/moq-net/src/stats/outcomes.rs
  • rs/moq-net/src/transport.rs
  • rs/moq-relay/src/auth.rs
  • rs/moq-relay/src/cluster.rs
  • rs/moq-relay/src/connection.rs
  • rs/moq-relay/src/internal.rs
  • rs/moq-relay/src/refusals.rs
  • rs/moq-relay/src/uring.rs
  • rs/moq-relay/tests/integration/auth_embedder.rs
  • rs/moq-relay/tests/integration/refusals.rs
  • rs/moq-stats/src/aggregate.rs
  • rs/moq-stats/src/lib.rs
  • rs/moq-tokio/src/transport/owned.rs
  • rs/moq-uring/src/quic/driver/mod.rs
  • rs/moq-uring/src/quic/mod.rs
  • rs/moq-uring/src/transport/adapter.rs
  • rs/moq-uring/tests/integration/main.rs
💤 Files with no reviewable changes: 4
  • quest/m1/README.md
  • quest/m1/session-outcomes.md
  • quest/m1/drain-cleanup.md
  • quest/m2/uring-connection-log.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.

Walkthrough

The change adds typed transport close classifications and session refusal and failure counters. Relay admission and session closure paths record these outcomes, and /metrics exposes failure counts. Stats serialization and aggregation include the new counters. Documentation and plan references now describe or reflect the implemented outcome accounting.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to a2131

No unresolved issue identified here prevents merging after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 65.14% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 109 functions across 26 files. (5 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary change: adding refused and failed session statistics.
Description check Passed The description is directly related to the changeset and explains the problem, implementation, API impact, validation, and follow-ups.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 65.14% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 109 functions across 26 files. (5 skipped: 5 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

✨ Finishing Touches
✨ Simplify code
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8e8a5e7ba0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/cluster.rs
kixelated and others added 2 commits October 16, 2026 11:57
Main replaced the noq backend with moq-quic, so the noq-gated close
classification no longer compiled. Gate it on the quic feature and match
moq-tokio's own WebTransport session error. Also tidy Lease::close_session,
restore a misplaced test doc comment, and drop a stale driver comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7393469bd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/connection.rs
Admission starts the stats session, so a SETUP reply that fails before
supervision now records its failure kind on the native and io_uring
paths. A cluster peer link that gave up reconnecting after it had
connected counts as a transport failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 50e067b850

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

kixelated and others added 2 commits October 16, 2026 18:59
# Conflicts:
#	quest/m1/README.md
#	quest/m1/refusal-reason.md
#5689 linked the integration tests into one binary, so the adapter source
included by the transport module now resolves crate::quic at main.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

Merged main into ef8589b8f. Since the clean review of 50e067b8: quest conflicts resolved (Session outcomes and the deleted QoS/expired-error links dropped), and the moq-uring integration test now aliases quic at the merged test root after #5689, since the included adapter names crate::quic. The earlier TS compliance failure is the #5565 flake, fixed on main by #5713. just check passes.

(Written by Claude Opus 5.5)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ef8589b8f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-net/src/stats.rs
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for ef8589b8f7210edd1477129247c7dee8674e09fa:

Public API: adds stats::{Refusal, Failure, Refusals, Failures}, Handle::refuse, Session::fail, Registry::is_enabled, transport::CloseKind, transport::Error::close_kind, and Error::IdleTimeout (FFI maps it to Transport). Wire: MoQ unchanged; stats tracks gain defaulted sessions_refused and sessions_failed objects (documented in doc/concept/stats.md); /metrics gains moq_relay_sessions_failed_total{tier,kind}.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge October 17, 2026 03:07
@kixelated
kixelated added this pull request to the merge queue Oct 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 17, 2026
# Conflicts:
#	rs/moq-net/src/ietf/session.rs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a2131c0226

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/auth.rs Outdated
…first credential

A replacement credential can outlive the first credential's expiry, but the
lease consumer keeps that first close reason. A later clean close then counted
as an expired failure, and hid a real transport failure. A refreshed session
now classifies by the reason that ended the session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7f347d21ee

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/auth.rs Outdated
kixelated and others added 2 commits October 16, 2026 22:21
A revoked, refused, narrowed, or dropped grant aborts the session, but only an
expired one counted. Lease::ended now records the end as expired or application.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1505ddfc7c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/connection.rs
A grant that gains an unenforceable cap between admission and SETUP fails
Lease::preparing, which returned before the SETUP-reply classification. The
admitted session then ended clean. Classify the preparing error the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9ed7287d06

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/auth.rs Outdated
Comment thread rs/moq-relay/src/cluster.rs
Lease::close recorded only an expired revocation, so a refused, invalid,
narrowed, or dropped grant that beat a clean peer close ended the session
clean. It now records every revocation, and close_session relies on the
first recorded kind winning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dcccb6e2a6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-net/src/error.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e454fb8390

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/auth.rs Outdated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6cc4a7d7a1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/cluster.rs
Comment thread rs/moq-relay/src/auth.rs Outdated
…rminal peer link error

A refreshed lease's close now polls its union once, so a last credential
revoked just before a clean close still fails the session. An established
cluster link now counts every terminal error except a refused GOAWAY redirect,
which is the peer draining.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e75a0f1096

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/moq-relay/src/auth.rs
kixelated and others added 2 commits October 16, 2026 23:53
The refresh poll in Lease::close took the union's reason but classified it as
the session's own close, so a cap the relay could not enforce ended clean.
Both paths now share one classifier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Re-arming after the queue's merge-conflict ejection. Head c88602aa7406333ac86b84ed34299e6f29d8efd0:

  • Merged main twice. The one conflict, in ietf/session.rs, came from fix(net): close the session on malformed moq-transport input #5800 moving the close into fn close; the PR's IdleTimeout arm now lives there.
  • Codex rounds since ef8589b8, all fixed with regression tests unless noted:
    • A refreshed session classifies by its union, not its first credential's stale Expired.
    • A lease that ends its session (revoked, refused, narrowed, dropped, or the relay's own reason) counts as application; one ended by shutdown stays clean.
    • A typed revocation that races a clean close still counts. Lease::close records it, and the first recorded kind wins.
    • A refreshed union that ended before the supervisor saw it is polled once at close.
    • An admitted session refused by Lease::preparing before SETUP counts.
    • An established cluster link counts every terminal error. The exception is a refused GOAWAY redirect, which is the peer draining (declined in thread).
    • Session::closed and Error::from_transport docs name the code-less close results.
  • doc/concept/stats.md says how grant expiry and revocation count.
  • just check passes on this head.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge October 17, 2026 07:14
@kixelated
kixelated added this pull request to the merge queue Oct 17, 2026
Merged via the queue into main with commit 6b7f469 Oct 17, 2026
12 of 13 checks passed
@kixelated
kixelated deleted the quest/m1/session-outcomes branch October 17, 2026 08:37
kixelated added a commit that referenced this pull request Oct 17, 2026
…tion-log

Route #5659's refusal accounting through the shared Lifecycle: cluster
admission records its own refusals, and Lifecycle::admit records the LAN
and drain refusals for both runtimes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant