1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Terminal observer hook fired after `SkillHandler::run` returns. Hooks
//! are best-effort observers — failures MUST NOT abort the surrounding
//! execution.
use async_trait;
use crateSkillError;
/// Outcome of a skill execution observed by a terminal hook.
/// Post-execution hook fired after `SkillHandler::run` returns.
///
/// Hooks are best-effort observers — failures from `on_terminal`
/// MUST NOT abort the surrounding execution. Hook implementations
/// SHOULD bound their own work (timeouts, panic isolation) on the
/// adopter side. The patterns crate does NOT impose framework-side
/// timeout or isolation semantics in this initial version: extractor /
/// registry semantics with isolation are dispatcher-dependent and remain
/// out of scope for the patterns crate.
///
/// Implemented with `#[async_trait]` so adopter impls write standard
/// `async fn` instead of hand-rolled `Pin<Box<dyn Future>>`. The macro
/// produces an object-safe trait, verified by the const-fn assertion
/// at the bottom of this module.
// Compile-time dyn-compatibility assertion.
const _: fn = ;