Skip to content

Write the cancellation cleanup finish time like the run's closed_at - #626

Merged
rmcdaniel merged 2 commits into
mainfrom
rust-325-cleanup-finished-at
Oct 22, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
rust-325-cleanup-finished-at

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Part of #325.

The Shared Server fixtures workflow has failed on main since #561. In main run 39671560431, every native cancellation cell (codec-deadline-health on all databases, execution-and-codec, mysql-execution, postgres-storage) fails the same assertion, cleanup closes at persisted terminal time:

  • expected 2026-10-21T23:12:52.433000Z: the run's closed_at;
  • actual 2026-10-21T23:12:52.433Z: the WorkflowCancelled payload's cancellation_cleanup.finished_at.

Native wrote finished_at as a raw chrono time, which prints as few fractional digits as the value needs. Published Workflow writes it as closed_at->toISOString() (six digits), and CancellationCascadeView treats a different string as a mismatch. It now uses the six-digit form, like the cleanup_deadline_at and requested_at beside it.

Verification

  • The cooperative cleanup integration test compared the two values only as parsed instants. It now also compares them as text. It fails without the change (…22.519Z against …22.519000Z) and passes with it.
  • The SQLite cleanup, cancellation and cooperative tests pass (54).

Not fixed here
postgres-storage (postgres-17) in the same run stopped earlier, in the operator metrics waiting_after_redispatch stage. Its health snapshot warned durable_resume_paths while the metrics snapshot just before it counted no run needing repair. That is a timing difference between two requests. It is diagnosed separately once this assertion no longer hides it.

Checkpoint: docs/rust-server-port-checkpoints/2026-10-22-cleanup-finished-at.md.

🤖 Generated with Claude Code

The WorkflowCancelled payload's cancellation_cleanup.finished_at was a raw
chrono time, printed with three fractional digits, while the run's closed_at
has six. Published Workflow writes it as closed_at->toISOString(), and the
shared fixtures compare the two as text, so every native cancellation cell
on main has failed since #561.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rmcdaniel
rmcdaniel enabled auto-merge October 22, 2026 00:17
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel merged commit bedd60b into main Oct 22, 2026
15 checks passed
@rmcdaniel
rmcdaniel deleted the rust-325-cleanup-finished-at branch October 22, 2026 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants