fortrangoingonforty/fgof-devloop / 85ce6c4

Browse files

Document devloop job supervision

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
85ce6c4e413cffa933aec9fd8e1ef78f5c636c68
Parents
979f6d7
Tree
3fdf45e

1 changed file

StatusFile+-
M README.md 21 4
README.mdmodified
@@ -20,7 +20,7 @@ Current v1 target:
20
 
20
 
21
 ## Status
21
 ## Status
22
 
22
 
23
-Sprint 03 is in place.
23
+Sprint 04 is in place.
24
 
24
 
25
 Tracked today:
25
 Tracked today:
26
 
26
 
@@ -34,7 +34,9 @@ Tracked today:
34
 - watch option projection for debounce polls, hidden-path ignores, and directory-event emission
34
 - watch option projection for debounce polls, hidden-path ignores, and directory-event emission
35
 - `fgof-process` integration for one-shot build, run, and smoke command supervision
35
 - `fgof-process` integration for one-shot build, run, and smoke command supervision
36
 - command results that retain full `process_result` output, exit, timeout, and error detail
36
 - command results that retain full `process_result` output, exit, timeout, and error detail
37
-- focused model, watch-bridge, and process-supervision coverage in `fpm test`
37
+- `fgof-jobs` integration for long-running service ownership, wait observation, cleanup, and restart planning
38
+- pipeline-aware job observation that preserves terminal member state during group stop/continue events
39
+- focused model, watch-bridge, process-supervision, and job-supervision coverage in `fpm test`
38
 
40
 
39
 ## Public API Shape
41
 ## Public API Shape
40
 
42
 
@@ -53,6 +55,9 @@ Current public procedures:
53
 - `clear_devloop_command_spec`
55
 - `clear_devloop_command_spec`
54
 - `clear_devloop_command_result`
56
 - `clear_devloop_command_result`
55
 - `clear_devloop_supervision_result`
57
 - `clear_devloop_supervision_result`
58
+- `clear_devloop_job_spec`
59
+- `clear_devloop_job_state`
60
+- `clear_devloop_job_plan`
56
 - `devloop_backend_name`
61
 - `devloop_backend_name`
57
 - `clear_devloop_state`
62
 - `clear_devloop_state`
58
 - `start_devloop`
63
 - `start_devloop`
@@ -70,6 +75,12 @@ Current public procedures:
70
 - `devloop_smoke_command`
75
 - `devloop_smoke_command`
71
 - `run_devloop_command`
76
 - `run_devloop_command`
72
 - `run_devloop_cycle`
77
 - `run_devloop_cycle`
78
+- `devloop_service_job`
79
+- `attach_devloop_job`
80
+- `attach_devloop_pipeline_members`
81
+- `observe_devloop_job`
82
+- `release_devloop_job`
83
+- `devloop_job_restart_plan`
73
 - `begin_devloop_cycle`
84
 - `begin_devloop_cycle`
74
 - `finish_devloop_cycle`
85
 - `finish_devloop_cycle`
75
 
86
 
@@ -83,20 +94,26 @@ Current semantics:
83
 - `devloop_build_command()`, `devloop_run_command()`, and `devloop_smoke_command()` wrap `fgof-process` commands with loop roles and optional process options
94
 - `devloop_build_command()`, `devloop_run_command()`, and `devloop_smoke_command()` wrap `fgof-process` commands with loop roles and optional process options
84
 - `run_devloop_command()` executes one command spec and preserves the raw `process_result`, including stdout, stderr, exit code, timeout state, and process error details
95
 - `run_devloop_command()` executes one command spec and preserves the raw `process_result`, including stdout, stderr, exit code, timeout state, and process error details
85
 - `run_devloop_cycle()` starts a cycle, executes enabled build/run/smoke specs in order, skips later specs after the first failure, and feeds the outcome into `finish_devloop_cycle()`
96
 - `run_devloop_cycle()` starts a cycle, executes enabled build/run/smoke specs in order, skips later specs after the first failure, and feeds the outcome into `finish_devloop_cycle()`
97
+- `devloop_service_job()` builds a long-running service/job spec backed by `fgof-jobs`
98
+- `attach_devloop_job()` records an already-launched pid/process group and ownership expectations
99
+- `observe_devloop_job()` applies `fgof-jobs` wait results while preserving member-level terminal state
100
+- `devloop_job_restart_plan()` models whether a watched change should stop, start, restart, release, or require terminal handoff for a long-running job
86
 - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger
101
 - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger
87
 - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop
102
 - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop
88
 - negative `max_failures` values normalize to unlimited failures
103
 - negative `max_failures` values normalize to unlimited failures
89
 - negative `debounce_polls` values normalize to no debounce
104
 - negative `debounce_polls` values normalize to no debounce
90
-- Sprint 03 is intentionally one-shot and synchronous; long-running process groups and cleanup orchestration belong to the later jobs layer
105
+- Sprint 04 remains model-first: it plans and observes long-running job ownership, while actual spawning/signaling stays in the launcher layer
91
 
106
 
92
 ## Dependency
107
 ## Dependency
93
 
108
 
94
 `fgof-devloop` depends on `fgof-watch` `v0.1.0` for watch-event types and
109
 `fgof-devloop` depends on `fgof-watch` `v0.1.0` for watch-event types and
95
 watch option projection, and a pinned `fgof-process` commit for one-shot
110
 watch option projection, and a pinned `fgof-process` commit for one-shot
96
-process execution:
111
+process execution. It also depends on `fgof-jobs` `v0.1.0` for long-running
112
+job ownership and wait-state modeling:
97
 
113
 
98
 ```toml
114
 ```toml
99
 [dependencies]
115
 [dependencies]
116
+fgof-jobs = { git = "https://github.com/FortranGoingOnForty/fgof-jobs.git", tag = "v0.1.0" }
100
 fgof-process = { git = "https://github.com/FortranGoingOnForty/fgof-process.git", rev = "dd71a77c61985380c7e32f4a719fd8bb247625c7" }
117
 fgof-process = { git = "https://github.com/FortranGoingOnForty/fgof-process.git", rev = "dd71a77c61985380c7e32f4a719fd8bb247625c7" }
101
 fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" }
118
 fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" }
102
 ```
119
 ```