81 lines
2.6 KiB
Markdown
81 lines
2.6 KiB
Markdown
|
|
---
|
||
|
|
model: claude-fable-5
|
||
|
|
service: claude
|
||
|
|
session: f4da6654-63f9-4641-b567-f200da46d697
|
||
|
|
timestamp: 2026-07-02T16:16:24Z
|
||
|
|
git_ref: 65bf9df5
|
||
|
|
scope: tests
|
||
|
|
substantive: true
|
||
|
|
raw_file: 20260702T161624Z_65bf9df5_prompt_io.raw.md
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prompt
|
||
|
|
|
||
|
|
> attempt to resolve
|
||
|
|
> https://github.com/goodboy/tractor/issues/474
|
||
|
|
> do it with /open-wkt.
|
||
|
|
|
||
|
|
Issue #474: "We need test suite for
|
||
|
|
`.trionics.start_or_cancel()`" — dig out the use case
|
||
|
|
from `modden` as a unit test (and provide motivation
|
||
|
|
for upstream `trio` to possibly provide better
|
||
|
|
porcelain around this case). The wrapper landed via
|
||
|
|
PR #464 with no tests.
|
||
|
|
|
||
|
|
## Response summary
|
||
|
|
|
||
|
|
New `tests/trionics/test_taskc.py` (9 tests) covering
|
||
|
|
`start_or_cancel()`, authored in wkt
|
||
|
|
`start_or_cancel_tests_474`.
|
||
|
|
|
||
|
|
Behaviour was first probed empirically (trio 0.29):
|
||
|
|
the lossy `RuntimeError('child exited without calling
|
||
|
|
task_status.started()')` only fires when the child
|
||
|
|
exits pre-`.started()` WITHOUT propagating the ambient
|
||
|
|
`Cancelled` — i.e. when the child (or lib code it
|
||
|
|
calls) absorbs the cancel in a graceful-teardown
|
||
|
|
pattern; a well-behaved child surfaces `Cancelled`
|
||
|
|
straight out of `.start()`. The `modden`
|
||
|
|
`progman.open_wks()` use case was reconstructed from
|
||
|
|
`modden/runtime/progman.py` accordingly.
|
||
|
|
|
||
|
|
Tests (each `use_start_or_cancel` parametrization also
|
||
|
|
pins upstream trio's current lossy behaviour as
|
||
|
|
wart-documentation):
|
||
|
|
|
||
|
|
- `test_sibling_err_not_masked_by_startup_rte` — the
|
||
|
|
`modden` case: sibling error OOB-cancels the shared
|
||
|
|
nursery scope; with the wrapper ONLY the root-cause
|
||
|
|
`ValueError` escapes; bare `.start()` adds the lossy
|
||
|
|
RTE alongside.
|
||
|
|
- `test_pure_oob_cancel_not_morphed_to_rte` — plain
|
||
|
|
ancestor `cs.cancel()`: wrapper → clean exit; bare
|
||
|
|
→ eg-wrapped RTE.
|
||
|
|
- `test_genuine_startup_rte_still_raised` — no
|
||
|
|
cancellation → protocol-bug RTE re-raised same as
|
||
|
|
bare.
|
||
|
|
- `test_childs_own_rte_never_demoted_to_cancel` — a
|
||
|
|
child's own `RuntimeError('never got started!')` /
|
||
|
|
`RuntimeError(1234)` under ambient cancel is never
|
||
|
|
demoted to `Cancelled` (exact-msg-match + str-guard
|
||
|
|
regression cover).
|
||
|
|
- `test_started_value_and_args_passthru` — happy path:
|
||
|
|
positional args, `name=`, `.started()` value.
|
||
|
|
|
||
|
|
Verified: 9/9 pass; 0 flakes across 50 hammer runs;
|
||
|
|
two impl mutations (checkpoint removed; guard relaxed
|
||
|
|
to substring match) each caught by exactly the
|
||
|
|
targeted tests; `tests/trionics/` +
|
||
|
|
`tests/test_trioisms.py` subset green (23 passed,
|
||
|
|
5 xfailed); ruff clean; 69-col style.
|
||
|
|
|
||
|
|
## Files changed
|
||
|
|
|
||
|
|
- `tests/trionics/test_taskc.py` — new
|
||
|
|
`start_or_cancel()` unit-test suite (gh #474).
|
||
|
|
|
||
|
|
## Human edits
|
||
|
|
|
||
|
|
Pending review — session paused pre-commit per user
|
||
|
|
deadline; nothing committed as of this entry.
|