feat: separate ticket issuer and subject identities#1
Conversation
Separate ticket issuer and subject identities so an operator-controlled relay can sign access for a different peer instead of assuming self-issued tickets only.\n\nAlso adds CI and a contribution guide so the repository can evolve through short-lived feature branches and PRs instead of direct main-only changes.
Add a compiled Quinn-based transport profile layer with low-latency and relay-oriented presets, plus an ARCHITECTURE.md that documents the control-plane/data-plane split and transport strategy with Mermaid diagrams.
Add a CLI surface for emitting named Quinn transport profiles so the QUIC foundation is directly inspectable and reusable without embedding library code.
e6a1787 to
9a2d14e
Compare
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (8)
📝 WalkthroughWalkthroughSnapPipe now models QUIC transport profiles, wires a ChangesQUIC transport and ticket flow
Sequence Diagram(s)sequenceDiagram
participant main
participant quic_profile as quic_profile(args)
participant QuicTransportProfile
main->>quic_profile: Command::Quic::Profile
quic_profile->>QuicTransportProfile: low_latency_interactive() / relay_backhaul()
quic_profile-->>main: pretty JSON profile
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
This commit reverts PR #1 (3 commits: feat(ticket), feat(quic), feat(cli) for the issuer/subject separation and QUIC transport foundation) and switches the license from dual MIT OR Apache-2.0 to Apache-2.0 only. License change rationale: the explicit patent grant and retaliation clause in Apache-2.0 are the right fit for B2B/infra tooling. The remaining lib.rs public API surface still benefits from that protection. Files affected: - .github/workflows/ci.yml, ARCHITECTURE.md, CONTRIBUTING.md, src/quic.rs: removed (were added in PR #1) - LICENSE-MIT: removed (license) - Cargo.toml: quinn dep removed, license = "Apache-2.0", repository URL updated to LOUST-PRO/SnapPipe (matches 2026-06-25 transfer) - Cargo.lock: quinn deps pruned - README.md: PR #1 sections reverted, Licensing section rewritten to reflect the single-license choice with note recording the date and reason for the switch - src/lib.rs, src/main.rs: PR #1's ticket feature and CLI additions reverted Verification: - cargo check --offline: clean - LICENSE-APACHE confirmed canonical (Apache 2.0, January 2004) - No published crates.io versions to update
Summary
This PR strengthens the SnapPipe control plane by separating the identity that signs a ticket from the identity the ticket authorizes.
What this changes
issuerandsubjectclaims to tickets--subject-public-keycargo fmt --checkandcargo testCONTRIBUTING.mdwith the short-lived branch + PR workflowWhy it matters
A self-hosted relay/operator often needs to sign access for a client peer. That is a different model from a purely self-issued ticket. This PR makes that distinction explicit in the signed data model instead of leaving it implicit.
Verification
cargo testSummary by CodeRabbit
New Features
Documentation
Chores