Files
rutster/.gitignore
opencode controller b816a7aea6 fix(slice-1): F2 — second offer returns 409 Conflict not panic
Adversarial review F2 (Med-High, confirmed): accept_offer asserted
audio_mid.is_none() on a path fed by unauthenticated external input.
A second POST /v1/sessions/:id/offer panicked the handler task instead
of returning a clean 4xx.

Replace the assert! with a typed RtcSessionError::AlreadyNegotiated.
routes.rs maps the variant to 409 Conflict, distinct from 400 Bad
Request for malformed SDP. debug_assert! documents the invariant for
tests; the production path returns Err, never panics.

TDD: unit test second_accept_offer_returns_already_negotiated_not_panic
red on the panic message; green after the typed error. Integration test
double_post_offer_returns_409_conflict_not_panic red on 400; green after
routes.rs is updated.
2026-06-28 19:53:50 -04:00

25 lines
330 B
Plaintext

# Rust
/target
**/target
**/*.rs.bk
*.pdb
# Cargo.lock is committed (this is an application workspace, not a library)
# Env / secrets
.env
.env.*
*.pem
*.key
# Editor / OS
.DS_Store
*.swp
.idea/
.vscode/
# Local worktrees (per using-git-worktrees skill; isolation, not content)
.worktrees/
worktrees/
docs/reviews/.*.kate-swp