Capabilities at lib/src/main/kotlin/dev/arcp/messages/Session.kt:32 carries the class-level KDoc "Absent boolean fields default to false per §7", but its interrupt property at lib/src/main/kotlin/dev/arcp/messages/Session.kt:50 defaults to true. docs/guides/sessions.md:90 even calls this out (interrupt is the only boolean that defaults to true; all others default to false per RFC §7), so two pieces of documentation disagree about the same line of code. The asymmetry also leaks into negotiate at lib/src/main/kotlin/dev/arcp/runtime/CapabilityNegotiation.kt:52: a peer that omits interrupt from its wire Capabilities is deserialized with the Kotlin default true, so the AND-style negotiation reports interrupt = true even when neither side intended to advertise it.
Fix prompt: Pick one interpretation and apply it everywhere. If interrupt should default to true for SDK ergonomics, update the class-level KDoc to call out the deliberate exception (and reference RFC §10.5), and add a comment on the property explaining why. If RFC §7 governs, change the default to false and update docs/guides/sessions.md accordingly. Either way, add a CapabilityNegotiationTest case asserting that two peers that both omit interrupt end up with the documented negotiated value.
Capabilitiesatlib/src/main/kotlin/dev/arcp/messages/Session.kt:32carries the class-level KDoc "Absent boolean fields default tofalseper §7", but itsinterruptproperty atlib/src/main/kotlin/dev/arcp/messages/Session.kt:50defaults totrue.docs/guides/sessions.md:90even calls this out (interrupt is the only boolean that defaults to true; all others default to false per RFC §7), so two pieces of documentation disagree about the same line of code. The asymmetry also leaks intonegotiateatlib/src/main/kotlin/dev/arcp/runtime/CapabilityNegotiation.kt:52: a peer that omitsinterruptfrom its wireCapabilitiesis deserialized with the Kotlin defaulttrue, so the AND-style negotiation reportsinterrupt = trueeven when neither side intended to advertise it.Fix prompt: Pick one interpretation and apply it everywhere. If
interruptshould default totruefor SDK ergonomics, update the class-level KDoc to call out the deliberate exception (and reference RFC §10.5), and add a comment on the property explaining why. If RFC §7 governs, change the default tofalseand updatedocs/guides/sessions.mdaccordingly. Either way, add aCapabilityNegotiationTestcase asserting that two peers that both omitinterruptend up with the documented negotiated value.