Skip to content

v0.1.0b16

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Oct 14:59
· 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 taskkill with native Win32 Job Objects configured with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE. Agent processes are launched suspended (CREATE_SUSPENDED), assigned to the Job Object, and verified via IsProcessInJob before 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, and OpenCodeAdapter via BoundedLineReader and 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 ProcessTracker and atomic persistence of ProcessRecord (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 via RunLock.
  • 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