Repository navigation
v0.1.0b16
Pre-release
Pre-release
·
5 commits
to master
since this release
Forge v0.1.0b16 — Process Lifecycle Hardening, Safe Recovery & Windows Native Job Object Containment
Highlights
- Native Windows Process Containment (Win32 Job Objects): Replaced best-effort
taskkillwith native Win32 Job Objects configured withJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. Agent processes are launched suspended (CREATE_SUSPENDED), assigned to the Job Object, and verified viaIsProcessInJobbefore the primary thread is resumed. Refuses uncontained fallback if Job Object assignment fails. - Cross-Platform Descendant Cleanup & Orphan Prevention: Kernel-enforced termination of all descendant processes when Forge terminates or when timeouts/cancellations occur. Prevents descendant processes from outliving Forge or holding inherited stdout/stderr pipes open.
- Bounded Stream Reading & EOF Independence: Eliminated stdout pipe EOF deadlocks in
BaseAdapter,AntigravityAdapter, andOpenCodeAdapterviaBoundedLineReaderand post-terminal bounded draining (POST_TERMINAL_DRAIN_TIMEOUT_SECONDS = 0.2). Adapters no longer block on unclosed inherited descriptors from child processes. - Auditable Process Lifecycle State Tracking: Introduced
ProcessTrackerand atomic persistence ofProcessRecord(STARTING,RUNNING,EXIT_VERIFIED,TERMINATED,CLEANUP_FAILED,UNRESOLVED) under.forge/runs/<run_id>/processes/<seq>_<stage>.json. Tracks start time ticks / creation times to protect against PID reuse. - Truth-Grounded Stage Completion & Reconciliation:
Stage.run()strictly verifies that zero exit codes originate from natural process completion (EXIT_VERIFIED) rather than forced termination. Stage recovery reconciles orphaned stages with mutual exclusion viaRunLock. - 100% Native CI Verification: 100% green test matrix across Ubuntu and Windows runners on Python 3.10, 3.11, 3.12, and 3.13 (1,129 passed, 0 failures).
Full Changelog: v0.1.0b15...v0.1.0b16