- 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>
After a traced run, crewAI printed a panel with the execution id and a
viewer link. The id is internal, and the panel exposed it for no purpose a
user has. Nothing is printed now. Instead, once the run's spans have
reached Wharf, crewAI writes `.crewai/last_run.json` in the project: the
execution id, when the run started and ended, whether it was traced
anonymously or under an account, and the AMP base url. `crewai eval` reads
it back, so the user evaluates their last run without pasting anything.
GrantSpanExporter.record_export replaces show_trace_summary at the two
finish points (an authenticated run's shutdown, an anonymous run's share).
Only a run whose every export succeeded is recorded — a partial export
would name a run the grader could not read whole. Recording is silent in
the TUI and under message suppression too, off under the test suite, and
inert inside a deployment, where the platform binds the execution before
crewAI's own tracing starts. The record is written atomically and a write
failure never fails the run.
The crew, flow and json_crew scaffolds now ignore `.crewai/` like the
declarative flow scaffold already did.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>