feat(profiler/behave_shell): emit temporal.lifecycle_markers.exit_behavior

Resolves the E.4 hold from Phase E. F.0's Command.followed_by_prompt
gives us the exit-code proxy (prompt-after-last-command) we couldn't
get in Phase E.

Logic: last command without trailing prompt → abrupt; first_token_hash
in {exit, logout, quit, logoff} → graceful; any of the last K=3
commands' first_token_hash in {history, unset, rm, shred, clear, kill}
→ cleanup; else → graceful (clean Ctrl-D / window close).
This commit is contained in:
2026-05-04 00:42:25 -04:00
parent c8166a6071
commit 51ecd0924e
4 changed files with 154 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ from decnet.profiler.behave_shell._features.environmental import (
)
from decnet.profiler.behave_shell._features.temporal import (
escalation_pattern,
exit_behavior,
landing_ritual,
session_duration,
)
@@ -74,6 +75,7 @@ FEATURES: tuple[FeatureFn, ...] = (
session_duration,
escalation_pattern,
landing_ritual,
exit_behavior,
shell_type,
terminal_multiplexer,
locale,