* Add SQLite state store for persistent resources
Add a local SQLite-backed state store for persistent process metadata and cross-instance resource leases. Wire the store into controller startup and persistent executable/container/network coordination, and manage schema updates through embedded golang-migrate migrations with compatibility authoring guidance.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improve persistent executable lifecycle handling
* Preserve process identity times in state store
* Update dependency notices
* Use structured executable lifecycle key hashing
* Simplify container startup retry handling
* Refactor container startup orchestration
* Handle persistent executable adoption before start gating
* Simplify resource lease persistence
Remove persisted lease expiration state and use updated-at only for leaseholder revalidation. Also make SQLite file DSNs compatible with Windows drive-letter paths.
* Require leasable resources for resource leases
Add a GetLeaseKey interface for resource lease operations and implement it on Container and ContainerNetwork. Remove the redundant statestore key helpers and normalize touched file headers.
* Clarify persistence API documentation
Describe persistent executable API and state-store behavior at a high level instead of copying source declarations into docs.
* Describe executable persistence as feature docs
Remove branch-oriented change wording so the documentation describes executable persistence as stable behavior.
* Use resource leases for persistent executables
Coordinate persistent Executable reconciliation through resource leases, use Executable.GetLeaseKey for process records, and add interface guards for leasable API resources.
* Extract executable persistence helpers
* Clarify resource lease contention logs
* Preserve reusable persistent executable records
* Configure state store WAL checkpointing
* Use executable spec lifecycle keys for persistence
* Require lease ownership on release
* Use effective executable lifecycle inputs
* Store process PID for adopted runs
* Guard persistent container setup with leases
* Flush shutdown response before stopping apiserver
* Gate persistent container startup with leases
* Close state store migration runner
* Align persistent executable lease handling
* Fix persistent container lease retries
* Format process identity values safely
* Harden persistent resource cleanup
Treat persistent network lease configuration failures as terminal startup errors instead of retrying indefinitely, and close process run output files when persistent runs are released.
* Simplify state store file setup
Remove the point-in-time SQLite file restriction pass and let SQLite own database and sidecar file creation. The state store now only ensures the parent directory exists before opening the database.
* Trim persistent state metadata
Remove unused metadata from resource leases and persistent process records while this schema is still in draft. Persistent process records now keep only durable process state, and lifecycle diagnostics sort changed executable environment names for stable logs.
* Clarify lease owner identity logging
Rename the lease contention log field from LeaseOwnerStartTime to LeaseOwnerIdentityTime because the value is a process identity discriminator and is not necessarily a wall-clock start time.
* Persist executable output files
* Skip timestamp pipe for persistent output
* Release persistent container lease after reuse
* Harden persistent output directory setup
* Format io platform files
* Simplify persistent process PID check
* Release persistent executable leases on stable states
* Use process abstraction for executable stop
* Release persistent resource leases on stable states
* Validate restricted directory owners on Windows
* Release executable leases for unknown state
* Add lifecycle-bound persistent monitors
* Fix restricted directory test on Windows
* Validate monitor timestamp in dcpproc helper
* Remove duplicate executable display start time
* Refine persistent lease release handling
* Respect state store migration busy timeout
* Use test contexts in lease tests
* Move persistent lease coverage to integration tests
* Remove unused container lease helper
* Return lifecycle env file read errors
* Use computed executable lease owner in tests
* Avoid chmodding explicit state store parents
* Use restricted integration state store dirs
* Guard adopted process watcher cleanup
* Validate restricted directory ACLs on Windows
* Secure statestore test directories on Windows
* Clean invalid persistent executable records on startup
* Reject deny ACEs in restricted directory validation
* Relax Windows restricted directory validation
* Separate elevated state store directory
* Rename comparable sync map
* Run invalid persistent cleanup asynchronously
* Simplify persistent cleanup lease skip
* Reload persistent record before cleanup
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>