Skip to content

Rust #325: describe a parent waiting on an activity beside children - #866

Merged
rmcdaniel merged 1 commit into
mainfrom
rust-325-child-policies
Oct 29, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
rust-325-child-policies

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Part of #325. This follows #865, closing one of the cases its review noted as unobserved.

What changed

Published PHP 2.11.5 describes an open activity ahead of open children, in either order, as it does a timer. Native's child summary kept an already chosen timer wait but gave up beside an activity, so such a parent was described with no wait. An already chosen activity wait now stays the run's wait while every child is open (child_summary.rs).

Evidence

  • child-descriptions fixture: three new cases.
    • child_then_activity and activity_then_child: both described as "Waiting for activity …".
    • cancelling_child: a try_cancel child from a worker that doesn't declare cooperative cancellation. Published PHP and native both refuse it with 409 child_cancellation_policy_not_supported.
  • Recorded locally at this head: published 2.11.5 and native (an image built from it) pass all eight cases.
  • Tests: child_descriptions.rs covers the activity cases; on the previous source the parent had a null wait.
  • Full native suites, run locally: execution 634 passed, lib 359 passed. Contract unit test: 7 pass.

Not covered

A child with a retry or timeout policy, or a non-abandon cancellation policy under a worker that declares cooperative cancellation, is still described without its wait.

🤖 Generated with Claude Code

Published PHP describes an open activity ahead of open children, in
either order, as it does a timer. Native's child summary kept an
already chosen timer wait but gave up beside an activity, so such a
parent was described with no wait. An already chosen activity wait now
stays the run's wait while every child is open.

The child-descriptions fixture gains child_then_activity,
activity_then_child, and cancelling_child: a try_cancel child from a
worker without cooperative cancellation, which published PHP and native
both refuse with 409 child_cancellation_policy_not_supported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel rmcdaniel left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security risk-tiered review of exact head d42050b2c7bbbdad6a456a128d827390d85479a6: no security finding or separate Security hold.

The runtime change is confined to wait-summary precedence after child identity/status matching has already succeeded. It preserves an existing timer or activity summary only when every child wait is open and the retained task type is absent or matches that wait kind. It does not change endpoint authorization, namespace/principal selection, child identity validation, persistence queries, command admission, or cancellation capability enforcement.

Showing the retained activity wait beside open children does not introduce a new data class: the same activity type/reason is already the run summary when no child overrides it. The new try_cancel case is fixture-only and confirms the existing fail-closed 409 child_cancellation_policy_not_supported response for a worker without cooperative cancellation.

This review does not claim the separately documented retry/timeout/cooperative-cancellation description gaps are complete. Normal semantic review and the already-running CI remain required; no additional Security CI or production test is requested.

@rmcdaniel
rmcdaniel added this pull request to the merge queue Oct 29, 2026
Merged via the queue into main with commit d841887 Oct 29, 2026
57 checks passed
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