- An ephemeral buffer that dropped spans at its cap still uploaded the rest
and recorded the run. The grader could not read that run whole, so it is
no longer recorded (the upload still happens). Test added.
- last_run_path() ran before the try in record_last_run; a cwd that
vanished mid-run would have raised out of a function documented never to
raise. It is inside now, with the same debug log and None.
- Tests: the "recorded once" check counted an unchanged mtime, which proves
nothing on a coarse filesystem — it now counts calls to record_last_run;
the first-start/last-end fold across export batches had no value test —
batches now arrive out of order and the ISO window is asserted.
- Docs: the conversational-flows comment said "one trace link" for output
that no longer exists; tracing.mdx now names .crewai/last_run.json, what
it holds, who reads it, and when it is not written. en, ar, ko, pt-BR.
85 passed (test_session_trace_export + test_last_run); ruff and mypy clean.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>