@@ -20,7 +20,7 @@ Current v1 target: |
| 20 | 20 | |
| 21 | 21 | ## Status |
| 22 | 22 | |
| 23 | | -Sprint 02 is in place. |
| 23 | +Sprint 03 is in place. |
| 24 | 24 | |
| 25 | 25 | Tracked today: |
| 26 | 26 | |
@@ -32,7 +32,9 @@ Tracked today: |
| 32 | 32 | - `fgof-watch` integration through shaped event summaries and trigger policy |
| 33 | 33 | - loop-owned restart filters for directory events and minimum change counts |
| 34 | 34 | - watch option projection for debounce polls, hidden-path ignores, and directory-event emission |
| 35 | | -- focused model and watch-bridge coverage in `fpm test` |
| 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 |
| 37 | +- focused model, watch-bridge, and process-supervision coverage in `fpm test` |
| 36 | 38 | |
| 37 | 39 | ## Public API Shape |
| 38 | 40 | |
@@ -48,6 +50,9 @@ Current public procedures: |
| 48 | 50 | - `clear_devloop_cycle` |
| 49 | 51 | - `clear_devloop_decision` |
| 50 | 52 | - `clear_devloop_watch_summary` |
| 53 | +- `clear_devloop_command_spec` |
| 54 | +- `clear_devloop_command_result` |
| 55 | +- `clear_devloop_supervision_result` |
| 51 | 56 | - `devloop_backend_name` |
| 52 | 57 | - `clear_devloop_state` |
| 53 | 58 | - `start_devloop` |
@@ -60,6 +65,11 @@ Current public procedures: |
| 60 | 65 | - `devloop_watch_failure_summary` |
| 61 | 66 | - `devloop_watch_options` |
| 62 | 67 | - `devloop_watch_trigger` |
| 68 | +- `devloop_build_command` |
| 69 | +- `devloop_run_command` |
| 70 | +- `devloop_smoke_command` |
| 71 | +- `run_devloop_command` |
| 72 | +- `run_devloop_cycle` |
| 63 | 73 | - `begin_devloop_cycle` |
| 64 | 74 | - `finish_devloop_cycle` |
| 65 | 75 | |
@@ -70,19 +80,24 @@ Current semantics: |
| 70 | 80 | - `devloop_watch_summary` condenses `fgof-watch` event batches into file, directory, create, modify, remove, move, ignored, and failure counters |
| 71 | 81 | - `devloop_watch_options()` projects dev-loop policy into `fgof-watch` options for debounce polls, hidden-path filtering, and directory event emission |
| 72 | 82 | - `devloop_watch_trigger()` turns successful watch summaries into change triggers while suppressing watcher failures, empty batches, directory-only batches when disabled, and batches below `min_restart_changes` |
| 83 | +- `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 |
| 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()` |
| 73 | 86 | - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger |
| 74 | 87 | - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop |
| 75 | 88 | - negative `max_failures` values normalize to unlimited failures |
| 76 | 89 | - negative `debounce_polls` values normalize to no debounce |
| 77 | | -- Sprint 02 is intentionally process-free so later process and job integration can build on deterministic state transitions |
| 90 | +- Sprint 03 is intentionally one-shot and synchronous; long-running process groups and cleanup orchestration belong to the later jobs layer |
| 78 | 91 | |
| 79 | 92 | ## Dependency |
| 80 | 93 | |
| 81 | 94 | `fgof-devloop` depends on `fgof-watch` `v0.1.0` for watch-event types and |
| 82 | | -watch option projection: |
| 95 | +watch option projection, and `fgof-process` `v0.1.0` for one-shot process |
| 96 | +execution: |
| 83 | 97 | |
| 84 | 98 | ```toml |
| 85 | 99 | [dependencies] |
| 100 | +fgof-process = { git = "https://github.com/FortranGoingOnForty/fgof-process.git", tag = "v0.1.0" } |
| 86 | 101 | fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" } |
| 87 | 102 | ``` |
| 88 | 103 | |