ADR-0007 lands in code: - Rename crates/rutster-signaling-sip → crates/rutster-trunk. The crate was a stub anyway (lib.rs with a doc-comment + crate_compiles() test); the rename locks the new boundary shape — the future rented-transport ingress (CPaaS media-leg fork / out-of-tree SBC glue, **no SIP stack**) lands here at spearhead step 5. - rutster-trunk/src/lib.rs doc-comment now describes the ADR-0007 split: CPaaS media-leg adapter as primary, out-of-tree SBC for on-prem graduation. Cross-refs ADR-0007 + ADR-0008 (FOB vs. green zone: trunk is green zone; SIP lives outside the trust boundary). - rutster-spend/src/lib.rs doc-comment updated to quote ADR-0007's 'rutster mediates both the provider call-control API and the brain tap' framing — the spend gate sits in that boundary, structurally preventing a runaway brain from exceeding spend/pacing. Pulling spend out into a service re-introduces the 3-vendor structural hole. Cargo bumps: - edition = '2024' (slice-1's pinned Rust 1.85 + edition-2024 floor already requires this; rutster-media's let-else pattern in OpusDecoder::decode · Slice-2's let-else in AcceptOffer's Uuid parse_str · all rely on edition 2024's stabilized let-chains / let-else). - repository = 'https://git.adlee.work/alee/rutster' (the self-hosted Gitea remote — matches 'git remote -v' origin). The github.com/anomalyco URL was stale from the pre-pivot copy. - Cargo.lock regenerated by cargo for the rename. No behavioral code changes — the trunk crate's body is still the stub crate_compiles() test. FOB membership (per ADR-0008) is unchanged: rutster-trunk will be FOB-internal at step 5 because it's the media-leg ingress (hot path); spend-spend stays FOB because spend is security-constitutive.
24 lines
1023 B
Rust
24 lines
1023 B
Rust
//! # rutster-spend
|
|
//!
|
|
//! **Status:** stub. Fills in at spearhead step 6 (spend cap / abuse gate).
|
|
//!
|
|
//! In-boundary spend and abuse control is constitutive of the wedge
|
|
//! ([ADR-0002](../../../docs/adr/0002-north-star-and-fused-core.md)): the
|
|
//! runaway brain structurally cannot exceed spend or pacing because it never
|
|
//! holds the wire — rutster mediates both the provider call-control API and
|
|
//! the brain tap, and the spend gate sits in that boundary
|
|
//! ([ADR-0007](../../../docs/adr/0007-trunk-rented-transport.md)). Pulling
|
|
//! spend out into a service re-introduces the 3-vendor structural hole the
|
|
//! fused vertical was chosen to eliminate.
|
|
//!
|
|
//! This crate will hold: spend caps, pacing caps, deny-by-default routing,
|
|
//! rate-limits, toll-fraud pattern detection — co-located with call
|
|
//! origination + the tap (the rented-transport ingress lives in
|
|
//! `rutster-trunk`, step 5). Depends on nothing in the workspace in slice 1.
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
#[test]
|
|
fn crate_compiles() {}
|
|
}
|