Skip to content

feat(run): pair dispatch lifecycle observations - #625

Merged
solomonneas merged 1 commit into
mainfrom
codex/568-9-dispatch-pairing
Jul 30, 2026
Merged

feat(run): pair dispatch lifecycle observations#625
solomonneas merged 1 commit into
mainfrom
codex/568-9-dispatch-pairing

Conversation

@solomonneas

Copy link
Copy Markdown
Collaborator

Summary

  • record each worker dispatch as requested before the external call, then observed and completed or failed after the call returns
  • attach the selected seat and a monotonic attempt to every new dispatch fact
  • serialize every checkpoint and paired event across worker, interrupt, and status writers
  • surface an unmatched dispatch request as at-least-once recovery work in runs recover and Doctor
  • preserve legacy dispatch projections while assigning aggregate dispatch and result-processing transitions their own event types
  • keep authoritative checkpoint recovery and shadow parity exact across dispatch crash windows

Issue #568 acceptance criteria

  • requested external work is synced before the action and terminal observation is synced afterward: test_dispatch_callbacks_follow_each_external_result_and_keep_attempt_identity
  • dispatch facts carry real seat and attempt values across parallel and repeated work: test_dispatch_facts_pair_each_real_attempt_without_reusing_pending_identity and test_lifecycle_run_dispatch_emits_only_identified_worker_dispatch_facts
  • requested work without a terminal observation is surfaced as at-least-once recovery: test_runs_recover_prints_pending_dispatch_only_after_validated_recovery and test_doctor_validates_checkpoint_before_reporting_pending_dispatch
  • checkpoint pairing binds event type, seat, and attempt and rejects incomplete or substituted pairs: test_recover_from_checkpoint_rejects_mismatched_dispatch_pairing_identity and test_recover_rejects_dispatch_pairing_checkpoint_at_tail_as_incomplete
  • authoritative recovery restores the projected tail and shadow parity catches up only one verified pair: test_authority_dispatch_checkpoint_is_base_stripped_and_recovers_exact_tail and test_authoritative_status_write_catches_up_final_dispatch_pair_before_append
  • legacy identity-less dispatch events remain readable while old shadow artifacts become stale under projector v4: test_identified_dispatch_fact_does_not_advance_aggregate_status and test_dispatch_semantics_v4_quarantines_old_v3_shadow_artifact

Verification

  • ./scripts/verify
  • 5360 passed, 3 skipped
  • coverage: 83.06%
  • Brigade receipt: 20260730-204031-work-verify-62bb15
  • independent closure review: clean

Refs #568

Co-Authored-By: Codex <codex@openai.com>
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • coderabbit-review

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: escoffier-labs/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 037d020f-1799-4d9f-b141-e082bad6cdeb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@solomonneas solomonneas self-assigned this Jul 30, 2026
@solomonneas
solomonneas merged commit f24760c into main Jul 30, 2026
28 checks passed
@solomonneas
solomonneas deleted the codex/568-9-dispatch-pairing branch July 30, 2026 21:11
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.

1 participant