Platform requirements and capabilities
Jobman v1 inherits the Go 1.26 minimum operating-system requirements: Linux kernel 3.2 or later, macOS 12 Monterey or later, and Windows 10 or Windows Server 2016 or later.
v1 matrix
| Capability | Linux | macOS | Windows |
|---|---|---|---|
| Supervisor detachment | New session via setsid; assembled tests prove the target outlives the submitting process. | New session via setsid; the hosted native suite runs the same assembled detachment scenario. | Detached hidden process in a new process group; the hosted native suite proves the target outlives the submitter. |
| Target tree | Dedicated process group. | Dedicated process group. | The target starts suspended, is assigned to a named Job Object, then its initial thread is resumed. Descendants inherit Job Object membership. |
| Process identity | PID, /proc start ticks, and kernel boot ID. | PID, KERN_PROC start time, and kernel boot time. | PID, process-creation FILETIME, and system boot time from NtQuerySystemInformation. |
| Stop | Revalidated SIGTERM, then optional SIGKILL, to the process group. | Revalidated SIGTERM, then optional SIGKILL, to the process group. | Best-effort CTRL_BREAK_EVENT, followed after the configured grace period by guaranteed Job Object termination. |
| Pause/resume | Revalidated SIGSTOP/SIGCONT for the process group. | Revalidated SIGSTOP/SIGCONT for the process group. | Every current Job Object member is revalidated and suspended/resumed with the native process suspension API. |
| Live input | Private owner-only Unix-domain socket. | Private owner-only Unix-domain socket. | Private named pipe with a protected current-user, SYSTEM, and administrators DACL. |
| State privacy | UID ownership, mode, symlink, and hard-link checks. | UID ownership, mode, symlink, and hard-link checks. | New paths receive protected ACLs; existing state/database paths must be owned by the current user and must not grant broad-principal access. |
| Local storage | Known remote/distributed filesystems are rejected before SQLite is opened. | NFS, SMB, WebDAV, AFP, and FUSE state roots are rejected. | Remote drive roots are rejected. |
| Assembled-binary evidence | Full Linux lifecycle and crash-boundary suite. | Native detachment, output, tree cancellation, live input, pause/resume, and package tests. | Native detachment, output, Job Object cancellation, named-pipe input, pause/resume, ACL, and package tests. |
| Race evidence | Linux unit and assembled suites run with the race detector. | Platform, live-input, log, store, supervisor, and assembled-binary packages run natively with the race detector. | Platform, live-input, log, store, supervisor, and assembled-binary packages run natively with the race detector. |
| Architecture evidence | amd64, arm64, and 386 release-style builds. | amd64 and arm64 release-style builds. | amd64, arm64, and 386 release-style builds. |
Platform-neutral retry, dependency, wait, timeout, admission, cleanup, and notification policy is exercised by the package test suite on every native CI runner. Release-style builds remain CGO_ENABLED=0. Cross-architecture build jobs prove compilation only; they do not replace native lifecycle or race evidence.
Deliberate differences
- Windows console control delivery is inherently dependent on console attachment. Jobman treats it as best effort and relies on Job Object termination for the guaranteed forced phase.
- Unix process groups and Windows Job Objects are different primitives; their user-visible contract is tree-wide lifecycle control, not identical signals.
- Ending an entire operating-system user session may terminate jobs. The v1 guarantee covers closing the submitting terminal or SSH connection.