feat(session-limits): LS2 — adapter Claude niveau 1 (infra)

Câble la détection de limite de session dans l'adapter Claude :
- claude.rs : parse_event émet ReplyEvent::RateLimited ; nouvelle fonction
  pure parse_reset_ms + helpers ; parseur ISO maison ; doccomments T4.
- mod.rs : 26 nouveaux tests QA (#[cfg(test)]) + 2 tests existants alignés
  sur le nouveau contrat.
- conformance.rs : RateLimited ajouté aux événements non terminaux autorisés.

`cargo test -p infrastructure` = 188 passed / 0 failed, zéro régression.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 14:44:53 +02:00
parent 0bf1eb3b11
commit a1755e51bc
3 changed files with 545 additions and 12 deletions

View File

@ -210,7 +210,8 @@ pub(crate) mod harness {
other => panic!("le dernier événement doit être Final, vu: {other:?}"),
}
// Les événements avant le Final ne sont que des deltas / activités / heartbeats
// (tous **non terminaux** ; le heartbeat est une preuve de vivacité, lot 1).
// / rate-limited (tous **non terminaux** ; le heartbeat est une preuve de
// vivacité, lot 1 ; le RateLimited s'intercale comme un heartbeat, §21-T4).
for e in &events[..events.len() - 1] {
assert!(
matches!(
@ -218,8 +219,9 @@ pub(crate) mod harness {
ReplyEvent::TextDelta { .. }
| ReplyEvent::ToolActivity { .. }
| ReplyEvent::Heartbeat
| ReplyEvent::RateLimited { .. }
),
"avant le Final, seuls deltas/activités/heartbeats sont permis, vu: {e:?}"
"avant le Final, seuls deltas/activités/heartbeats/rate-limited sont permis, vu: {e:?}"
);
}