Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
dc162ab
feat(py): the worker lifecycle: lazy spawn, timeouts, and the idle reap
jat255 Sep 23, 2026
c84cc10
docs(py): literal verbs in the worker lifecycle comments
jat255 Sep 23, 2026
4f1a04f
fix(py): a failed spawn no longer deadlocks against a concurrent aclo…
jat255 Sep 23, 2026
e00d7fe
fix(py): grant a non-directory read root only the rights a file can take
jat255 Sep 23, 2026
c59e1e4
test(py): the driver suite on macOS with Python 3.14 and on Linux
jat255 Sep 23, 2026
d93200d
fix(py): harvested source keeps a flush-left string and never fails t…
jat255 Sep 24, 2026
5a300c0
fix(py): guard the defaults of harvested lambdas, not only of defs
jat255 Sep 24, 2026
c876da6
refactor(py): start the worker through the backend seam
jat255 Sep 24, 2026
0492aa0
test(py): the worker's network access, and a dead worker's children o…
jat255 Sep 24, 2026
9eaa3df
fix(py): the worker raises KeyboardInterrupt only while model code runs
jat255 Sep 24, 2026
fe04ce4
docs(py): literal verbs in the backend and worker comments
jat255 Sep 24, 2026
f6c7032
test(py): the driver tests fail when the behaviour they name breaks
jat255 Sep 24, 2026
5ac4494
fix(py): handles sync one per message, and a closed or broken worker …
jat255 Sep 24, 2026
2c96ef2
fix(py): each driver failure says what actually went wrong
jat255 Oct 3, 2026
ff75624
fix(py): a measure source that fails to define is skipped, not fatal
jat255 Oct 3, 2026
e077e97
test(py): harvested source keeps the indent inside an indented string
jat255 Oct 3, 2026
ffedc51
fix(py): kill the worker's process group as soon as the leader exits
jat255 Oct 3, 2026
03bb834
test(py): the worker tests poll for outcomes and cannot hang CI
jat255 Oct 3, 2026
dfff79a
docs(py): worker comments say what the code does, in literal terms
jat255 Oct 3, 2026
a1d121e
test(py): pin the handle skip and the group kill at the exit
jat255 Oct 3, 2026
f42c09d
feat(py): best-effort guardrails for a worker that cannot be sandboxed
jat255 Oct 3, 2026
528e95c
fix(py): guardrails check a link's own entry, and a hard link's sourc…
jat255 Oct 7, 2026
f9728de
docs(py): the define helper guards defaults that raise an Exception
jat255 Oct 7, 2026
69e58ef
fix(py): guardrails follow a symlink named with a trailing slash
jat255 Oct 7, 2026
316bd75
test(py): a stalled test prints its stack
jat255 Oct 7, 2026
6994e54
fix(py): signal a worker whose group is left with only a zombie
jat255 Oct 7, 2026
46a7aa4
test(py): skip the zombie-group test where os.waitid is missing
jat255 Oct 7, 2026
54507ba
test(py): the per-handle sync test fails when a handle is shrunk
jat255 Oct 7, 2026
153419e
fix(py): the model can read a measure source back with inspect.getsource
jat255 Oct 8, 2026
ed52754
docs(py): trim the lifecycle and harvest comments
jat255 Oct 8, 2026
ec21831
docs(py): Windows reaches the backend through the unsafe opt-in
jat255 Oct 8, 2026
a8f6d52
docs(py): plainer Worker docstrings
jat255 Oct 9, 2026
760bdbc
fix(py): seed the session before the worker announces it is ready
jat255 Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/py-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ permissions: read-all
jobs:
check:
runs-on: ${{ matrix.os }}
# A deadlock in the worker tests fails the leg instead of hanging it.
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -75,6 +77,7 @@ jobs:
# kernel runs natively while tagging the syscalls with the 32-bit ABI,
# so the live tests check the 32-bit tables against the kernel itself.
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
Expand Down
2 changes: 2 additions & 0 deletions pkg-py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ build-backend = "hatchling.build"
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
# A test still running after this many seconds prints every thread's stack.
faulthandler_timeout = 300

[tool.ruff]
src = ["src", "tests"]
Expand Down
Loading
Loading