Yichen Jiang
b25c5ad82e
feat(web): restore sidebar layouts and reclaim unattended terminals
2026-09-15 10:27:44 +08:00
Tianyi Cui
dd55f38614
docs(subprocess): record signal error isolation and fixture safety
2026-09-12 19:44:51 +08:00
Tianyi Cui
71334b9c78
fix(subprocess): preserve direct outcomes on signal failure
2026-09-12 19:14:34 +08:00
Tianyi Cui
c07df5aa65
fix(subprocess): confirm direct SIGKILL after group delivery
2026-09-12 18:49:15 +08:00
Tianyi Cui
4b99ace8fb
fix(subprocess): await direct fallback settlement before scope failure
2026-09-12 17:55:53 +08:00
Tianyi Cui
d8efd4f8cd
feat(subprocess): carry a duplex control pipe through managed launches
2026-09-12 15:03:00 +08:00
Dudu-0223
dafff8e51c
fix(subprocess): settle consumed empty scopes before exit notification
2026-09-11 17:05:15 +08:00
turtle1999
18a1955b7e
fix(ci): handle scope termination races and cyclic process snapshots
2026-09-11 14:50:46 +08:00
turtle1999
aaa02a3970
fix(subprocess): settle a Linux scope left active with no processes
...
Range observation waited for an active transient scope to leave `active`
before it would prove the managed range empty. systemd ends a scope only when
it observes the populated-to-empty transition, so a payload killed before the
manager placed it in the scope's cgroup leaves the unit active with an empty
cgroup forever. `waitForExit()` then polled a unit that could not change, and
`LocalSubprocessRuntime.disposeManagedProcesses()` awaited it without bound —
teardown hung for any command cancelled immediately after spawn.
Each state query now also reads the unit's process count. Once termination was
requested and the launcher has exited, a still-active unit reporting no
processes is the empty range: the launcher forked every process it will ever
fork, so nothing later joins that cgroup. The owner stops the leftover unit so
transient units cannot accumulate, and an unreported or `[not set]` count
stays unknown and keeps waiting.
The race needs a live user-systemd manager, so it stayed dormant wherever the
native scope path was unavailable and surfaced once CI routed lanes onto the
Blacksmith hosted image, whose runners accept that path. Ten repetitions of
`local.spec.ts > disposal kills still-running processes and awaits their exit`
in a Linux container with a user manager failed seven times before the change
and passed ten times after it.
2026-09-10 17:27:52 +08:00
Yichen Jiang
b79a227cec
fix(subprocess): preserve Linux cancellation before bootstrap consumption
2026-09-10 14:45:45 +08:00
pku-xht
ff6a49660f
fix(subprocess): tighten native containment settlement
2026-09-03 03:26:42 +08:00
pku-xht
bc681d7a54
fix(subprocess): harden cancellation settlement
2026-09-03 01:18:40 +08:00
pku-xht
ac1a5891c2
fix(subprocess): close remaining native containment findings
2026-09-02 22:49:46 +08:00
pku-xht
fc19a0a3fa
fix(subprocess): clarify provider failures and scope polling
2026-08-31 19:26:08 +08:00
pku-xht
8bb19f8f7f
fix(subprocess): close containment review findings
2026-08-31 14:36:13 +08:00
pku-xht
93c11689e7
fix(subprocess): address containment review findings
2026-08-29 15:44:13 +08:00
pku-xht
1760649ba7
refactor(subprocess): derive native owner state
2026-08-29 11:28:33 +08:00
pku-xht
6e7b152de7
fix(subprocess): preserve native runner contracts
2026-08-29 07:57:59 +08:00
pku-xht
40279aea17
fix(subprocess): preserve native runner stdio
2026-08-29 00:03:12 +08:00
pku-xht
a95f0b368f
fix(subprocess): contain escaped descendants with native owners
2026-08-28 18:15:49 +08:00
pku-xht
3caa9e4f5a
fix(subprocess): retain failed cleanup ownership
2026-08-26 22:16:20 +08:00
pku-xht
26969588b7
fix(subprocess): address native containment review findings
2026-08-25 21:51:22 +08:00
pku-xht
8e9bac4a27
fix(subprocess): align native containment contract
2026-08-25 20:06:00 +08:00
pku-xht
71e27e4667
fix(subprocess): close native lifecycle gaps
2026-08-22 07:35:51 +08:00
pku-xht
7228c821b7
refactor(subprocess): centralize stream settlement
2026-08-22 06:40:12 +08:00
pku-xht
6e1b8eda77
fix(subprocess): preserve runner result boundary
2026-08-22 05:30:09 +08:00
pku-xht
b6dc88be51
fix(subprocess): preserve forced Linux outcomes
2026-08-22 04:59:36 +08:00
pku-xht
f72ce2299a
fix(subprocess): keep native Job ownership in runner
2026-08-21 22:49:56 +08:00
pku-xht
153f1579e1
refactor(subprocess): restore native containment baseline
2026-08-21 22:08:49 +08:00
pku-xht
ac69b1e0c4
fix(subprocess): decouple Windows target stdio
2026-08-21 12:56:34 +08:00
pku-xht
f913c813d2
fix(subprocess): harden managed-range cleanup
2026-08-21 08:21:33 +08:00
pku-xht
e6bc1f2e1d
fix(subprocess): close managed launch gaps
2026-08-21 05:08:36 +08:00
pku-xht
273c2847e5
fix(subprocess): support packaged native runner
2026-08-21 01:17:12 +08:00
pku-xht
1fc04feb77
fix(subprocess): close native platform CI gaps
2026-08-20 23:59:55 +08:00
pku-xht
21820b6816
test(subprocess): cover async scope failures
2026-08-20 23:47:19 +08:00
pku-xht
436f9e9686
fix(subprocess): preserve native failure semantics
2026-08-20 23:24:22 +08:00
pku-xht
b9c0028f95
fix(subprocess): launch systemd scopes without pipe mode
2026-08-20 22:28:30 +08:00
pku-xht
eb60d74155
fix(subprocess): harden native range settlement
2026-08-20 22:16:24 +08:00
pku-xht
7185a62d58
fix(subprocess): harden native runner lifecycle
2026-08-20 18:41:30 +08:00
pku-xht
4c164cd163
fix(subprocess): close native containment CI gaps
2026-08-20 17:29:22 +08:00
pku-xht
894f6aeb8a
fix(subprocess): contain escaped descendants with native owners
2026-08-20 16:26:19 +08:00