---
model: claude-fable-5
service: claude
timestamp: 2026-07-02T16:16:24Z
git_ref: 65bf9df5
diff_cmd: git diff main..wkt/start_or_cancel_tests_474
---

# Raw output — gh #474 `start_or_cancel()` test suite

## Generated test code

> `git diff main..wkt/start_or_cancel_tests_474 -- tests/trionics/test_taskc.py`

Prose summary of the generated module
(`tests/trionics/test_taskc.py`):

- module docstring framing the `trio.Nursery.start()`
  startup-cancellation wart, the wrapper's repair, and
  the intent that `use_start_or_cancel=False` params
  double as upstream-trio wart-documentation (break on
  a trio upgrade → upstream may have shipped porcelain,
  re-audit the wrapper); cites gh #474 / PR #464 and
  `modden`'s `progman.open_wks()` as the source use
  case.
- shared children: `absorbs_cancel_pre_started()` (the
  graceful-teardown cancel-absorber which triggers the
  lossy RTE path) + `raise_val_err()` (fast-erroring
  sibling).
- `test_sibling_err_not_masked_by_startup_rte`
  (parametrized `use_start_or_cancel`): asserts eg
  contains exactly one `ValueError` and, wrapper-case,
  NO residual RTE (`eg.split(ValueError)` remainder is
  `None`); bare-case, the residual RTE carries trio's
  exact "child exited without calling" wording.
- `test_pure_oob_cancel_not_morphed_to_rte`
  (parametrized): wrapper-case runs clean and asserts
  `cs.cancelled_caught`; bare-case asserts the
  eg-wrapped RTE.
- `test_genuine_startup_rte_still_raised`
  (parametrized): no-cancel protocol bug → RTE with
  trio's wording from both call forms.
- `test_childs_own_rte_never_demoted_to_cancel`
  (parametrized `rte_arg` in `'never got started!'`,
  `1234`): child cancels the ambient scope then raises
  its own RTE synchronously (no checkpoint between →
  deterministically under-cancellation at catch time);
  asserts the RTE survives with `args[0]` intact.
- `test_started_value_and_args_passthru`: `.started()`
  value, positional args and the `name=` kwarg (via
  `trio.lowlevel.current_task().name`) all forward.

## Non-code output (verbatim highlights)

Behaviour probe (trio 0.29, scratchpad scripts) — the
decision basis for the test shapes:

```
== B-sibling-err use_soc=False
  start raised: RuntimeError('child exited without
    calling task_status.started()')
  top-level: ExceptionGroup([ValueError('sibling blew
    up!'), RuntimeError('child exited without calling
    task_status.started()')])
== B-cs-cancel use_soc=False
  top-level: ExceptionGroup([RuntimeError('child
    exited without calling task_status.started()')])
== B-sibling-err use_soc=True
  start raised: Cancelled()
  top-level: ExceptionGroup([ValueError('sibling blew
    up!')])
== B-cs-cancel use_soc=True
  start raised: Cancelled()
  top-level: clean return
== own-rte-under-cancel (both) -> RTE('never got
  started!') propagates unchanged
```

Key finding: with a WELL-BEHAVED (non-absorbing) child
an OOB ancestor cancel surfaces `Cancelled` directly
from `.start()` on trio 0.29 — the lossy RTE requires
the child to absorb its cancel pre-`.started()`, which
is what `modden`'s `open_from_wks` teardown did. Trio's
nursery-exit wait defers cancel delivery to children,
so all tested shapes are deterministic (0 flakes / 50
runs).

Mutation verification:

```
mutation 1 (checkpoint_if_cancelled removed):
  FAILED test_sibling_err_not_masked_by_startup_rte[True]
  FAILED test_pure_oob_cancel_not_morphed_to_rte[True]
mutation 2 (guard relaxed to 'started' substring,
            isinstance dropped):
  FAILED test_childs_own_rte_never_demoted_to_cancel[never got started!]
  FAILED test_childs_own_rte_never_demoted_to_cancel[1234]
```

Final runs:

```
tests/trionics/test_taskc.py: 9 passed in 0.03s
hammer: 0/50 runs failed
tests/trionics/ + tests/test_trioisms.py:
  23 passed, 5 xfailed in 3.02s
```
