Migrates 5 SILENT_SWALLOW sites to full Result[T] pattern:
session_logger.py (4 sites):
1. log_api_hook - returns Result[bool] (was None)
2. log_comms - returns Result[bool] (was None)
3. log_tool_call - returns Result[Optional[str]] (was Optional[str])
4. log_cli_call - returns Result[bool] (was None)
file_cache.py (1 site):
- L98: removed dead code (try/except StopIteration around
next(iter(_ast_cache)) is unreachable because we just checked
len(_ast_cache) >= 10)
Updates tests/test_session_logger_optimization.py to extract
result.data from the new Result-based API.
All callers of these log_* functions previously ignored the
return value; they continue to ignore the new Result return
value (backwards-compatible).
The top-of-file docstring claimed 'logs/sessions/comms_<ts>.log' with
<ts> as a filename prefix. Actual: per-session subdir
'logs/sessions/<session_id>/' with plain filenames (comms.log,
toolcalls.log, apihooks.log, clicalls.log). The <ts>/session_id
is the PARENT DIR, not a filename prefix.
Per commit 73e1a36d (per-session subdirs), the per-session
directory is the unit of isolation. apihooks.log is a fourth
log file the old docstring omitted entirely.
Also added the new files (apihooks.log, outputs/ subdir) and
clarified the scripts/generated/ dual-write pattern.