The direct answer
Own the declared preprocessing children in one supported group scope, then require complete successful associated outputs before releasing their combined draft. First failure propagation, group exit and application readiness are different observations. Do not label untracked or unresolved work stopped, or substitute partial output for a required result.
Decide what a failed preparation screen is allowed to claim
A console prepares a note using two parallel local steps. One raises an error, so the interface reports failure. The other step’s status remains unknown. Displaying the error promptly does not establish that all declared preparation work has settled, and one successful fragment does not make the intended combined draft complete.
The map guide covers buffering and consumed results. The task-context guide covers creation-point scope. This worksheet asks a distinct lifecycle question: which children belong to the owner’s completion boundary, and which outcomes are required for release?
Choose one owned group rather than a generic concurrency label
The opened Python task reference identifies version 3.15.2, updated 31 October 2026. TaskGroup awaits its group’s tasks at context-manager exit. By contrast, default gather immediately propagates the first raised exception while other submitted awaitables continue; cancelling an already-done gather after that propagation does not cancel them.
Select one TaskGroup G-A owning exactly two fixed trusted local children, C-A and C-B. Both operate only on an already-authorized ordinary note N-A. C-A prepares title metadata; C-B checks permitted display fields. They call no model, network service or business operation. Their trusted, bounded, cooperative implementation is a prerequisite, not a consequence of the group API.
Freeze membership before accepting work. The proposed owner retains supported associations for both children and their required result identities. Do not pass group creation authority into a child, add replacement children dynamically or create detached descendants. Custom task factories, eager/context choices, nested groups, shield, uncancel and explicit TaskGroup.cancel are outside this profile. No scheduling-order claim is made.
Keep failure settlement separate from a successful result set
For ordinary non-cancellation child failures, TaskGroup cancels remaining members, waits and raises grouped failures. KeyboardInterrupt and SystemExit have special re-raise handling; body exceptions and external cancellation also need their documented handling. Cancellation cooperation matters: swallowing CancelledError can disrupt structured concurrency.
The proposed application keeps a non-success group disposition whenever supported exit evidence reports failure or cancellation. It does not flatten every exceptional path into one harmless “cancelled” label or catch it merely to publish an existing fragment. Actual exception/status mapping and cleanup remain unimplemented; unsupported outcomes stay unknown.
The Task result contract also distinguishes returned values, raised exceptions and cancellation: done includes all three, and a cancelled task’s result raises CancelledError. Therefore our release rule requires two successful result records, not two “done” badges. A cancelled child is never replaced with an invented empty success.
This worksheet supplies no exception-group decoder, cancellation controller or retry loop. It also makes no bounded-exit promise. If the owner has not established that the selected scope exited, it cannot promote pending settlement into a completion receipt simply because a user stopped waiting.
Make the ordinary positive useful and inspectable
Propose attempt record R-A linking N-A, trusted owner O-A, G-A, the complete C-A/C-B inventory and the two required outputs. Assign each output a bounded shape, its own child association and the same note revision. A familiar task name is not the evidence that establishes those associations.
| Field | Required independent evidence |
|---|---|
| Ownership | O-A owns this G-A and its exact two-child membership. |
| Work | N-A is the admitted note revision for both children. |
| Scope disposition | Supported exit evidence, separated from an earlier displayed error. |
| Required outputs | Successful, complete, shape-valid C-A and C-B results; no substitute defaults. |
| Release | Current input/output rights and the reviewed draft-combination rule. |
The positive requires both outputs to match R-A and pass their independent checks. Only then may the application assemble the declared draft for review. It must not repurpose C-A’s partial title metadata as a complete note when C-B is missing.
Actual runtime support, owner/child associations, trusted cooperative code, bounded cleanup, exit/result mapping and current rights are unimplemented or unknown here. They block real admission. Even complete local output supplies no approval to send a message, update a record or make a model request.
Review eight inert lifecycle cards
All cards are PROPOSED_UNRUN. Labels represent paper decisions, not created coroutines, tasks or observed exceptions.
| Card | Condition | Proposed disposition |
|---|---|---|
| 1. Ordinary draft | Owned group settled; both required valid results match R-A and current rights. | Conditionally admit combined draft for review. |
| 2. Early displayed failure | A gather failure is visible but another child remains unresolved. | No all-settled or stopped-work claim; withhold draft. |
| 3. Failed group | Supported group disposition reports a child failure. | Record failure; no partial-success release. |
| 4. Cancelled child | Scope appears otherwise normal but a required child lacks success. | Incomplete result set, not a completed draft. |
| 5. Noncooperative code | A child suppresses cancellation or has unsupported blocking cleanup. | Outside the trusted profile; no prompt termination claim. |
| 6. Untracked work | A helper creates work outside declared membership. | Hold coverage; the receipt covers no omitted work. |
| 7. Unresolved exit | External cancellation or unsupported handling leaves disposition unknown. | Retain uncertainty; no automatic replay or completion. |
| 8. Independent denial | Results complete but note revision, shape or current rights differ. | Withhold release independently. |
Do not turn a local join into control over outside effects
This selected plan admits no outside effects in its children. A different workload needs separate evidence for provider usage, queued jobs, process descendants and business outcomes. Group status cannot release an uncertain financial hold, reverse an external change or establish memory erasure.
No coroutine, task, group, loop, future, callback, cancellation, worker or runtime fixture was constructed or executed. No model or API experiment occurred. Only documentation and editorial work were performed. Boundary remains prelaunch with planned request-path checks, not a shipped task supervisor; its mock policy evidence does not validate this lifecycle.
Primary sources
Official references supporting the guidance. Examples in this guide are synthetic and are not reports of a production incident.