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:
2020
 
2121
 ## Status
2222
 
23
-Sprint 03 is in place.
23
+Sprint 04 is in place.
2424
 
2525
 Tracked today:
2626
 
@@ -34,7 +34,9 @@ Tracked today:
3434
 - watch option projection for debounce polls, hidden-path ignores, and directory-event emission
3535
 - `fgof-process` integration for one-shot build, run, and smoke command supervision
3636
 - 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`
3840
 
3941
 ## Public API Shape
4042
 
@@ -53,6 +55,9 @@ Current public procedures:
5355
 - `clear_devloop_command_spec`
5456
 - `clear_devloop_command_result`
5557
 - `clear_devloop_supervision_result`
58
+- `clear_devloop_job_spec`
59
+- `clear_devloop_job_state`
60
+- `clear_devloop_job_plan`
5661
 - `devloop_backend_name`
5762
 - `clear_devloop_state`
5863
 - `start_devloop`
@@ -70,6 +75,12 @@ Current public procedures:
7075
 - `devloop_smoke_command`
7176
 - `run_devloop_command`
7277
 - `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`
7384
 - `begin_devloop_cycle`
7485
 - `finish_devloop_cycle`
7586
 
@@ -83,20 +94,26 @@ Current semantics:
8394
 - `devloop_build_command()`, `devloop_run_command()`, and `devloop_smoke_command()` wrap `fgof-process` commands with loop roles and optional process options
8495
 - `run_devloop_command()` executes one command spec and preserves the raw `process_result`, including stdout, stderr, exit code, timeout state, and process error details
8596
 - `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
86101
 - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger
87102
 - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop
88103
 - negative `max_failures` values normalize to unlimited failures
89104
 - 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
91106
 
92107
 ## Dependency
93108
 
94109
 `fgof-devloop` depends on `fgof-watch` `v0.1.0` for watch-event types and
95110
 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:
97113
 
98114
 ```toml
99115
 [dependencies]
116
+fgof-jobs = { git = "https://github.com/FortranGoingOnForty/fgof-jobs.git", tag = "v0.1.0" }
100117
 fgof-process = { git = "https://github.com/FortranGoingOnForty/fgof-process.git", rev = "dd71a77c61985380c7e32f4a719fd8bb247625c7" }
101118
 fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" }
102119
 ```