@@ -20,7 +20,7 @@ Current v1 target: |
| 20 | 20 | |
| 21 | 21 | ## Status |
| 22 | 22 | |
| 23 | | -Sprint 01 is in place. |
| 23 | +Sprint 02 is in place. |
| 24 | 24 | |
| 25 | 25 | Tracked today: |
| 26 | 26 | |
@@ -29,7 +29,10 @@ Tracked today: |
| 29 | 29 | - stable option, trigger, cycle, decision, and state types |
| 30 | 30 | - pure run-cycle helpers for start, finish, stop, and restart decisions |
| 31 | 31 | - deterministic failure policy through `stop_on_failure` and `max_failures` |
| 32 | | -- focused model coverage in `fpm test` |
| 32 | +- `fgof-watch` integration through shaped event summaries and trigger policy |
| 33 | +- loop-owned restart filters for directory events and minimum change counts |
| 34 | +- watch option projection for debounce polls, hidden-path ignores, and directory-event emission |
| 35 | +- focused model and watch-bridge coverage in `fpm test` |
| 33 | 36 | |
| 34 | 37 | ## Public API Shape |
| 35 | 38 | |
@@ -44,6 +47,7 @@ Current public procedures: |
| 44 | 47 | - `clear_devloop_trigger` |
| 45 | 48 | - `clear_devloop_cycle` |
| 46 | 49 | - `clear_devloop_decision` |
| 50 | +- `clear_devloop_watch_summary` |
| 47 | 51 | - `devloop_backend_name` |
| 48 | 52 | - `clear_devloop_state` |
| 49 | 53 | - `start_devloop` |
@@ -52,17 +56,35 @@ Current public procedures: |
| 52 | 56 | - `devloop_start_trigger` |
| 53 | 57 | - `devloop_change_trigger` |
| 54 | 58 | - `devloop_manual_trigger` |
| 59 | +- `devloop_summarize_watch_events` |
| 60 | +- `devloop_watch_failure_summary` |
| 61 | +- `devloop_watch_options` |
| 62 | +- `devloop_watch_trigger` |
| 55 | 63 | - `begin_devloop_cycle` |
| 56 | 64 | - `finish_devloop_cycle` |
| 57 | 65 | |
| 58 | 66 | Current semantics: |
| 59 | 67 | |
| 60 | | -- `devloop_options` carries run-on-start, restart-on-change, stop-on-failure, and max-failure policy |
| 68 | +- `devloop_options` carries run-on-start, restart-on-change, directory restart, hidden-path ignore, debounce, stop-on-failure, and max-failure policy |
| 61 | 69 | - `devloop_trigger` records why work should begin, such as start, file change, or manual request |
| 70 | +- `devloop_watch_summary` condenses `fgof-watch` event batches into file, directory, create, modify, remove, move, ignored, and failure counters |
| 71 | +- `devloop_watch_options()` projects dev-loop policy into `fgof-watch` options for debounce polls, hidden-path filtering, and directory event emission |
| 72 | +- `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` |
| 62 | 73 | - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger |
| 63 | 74 | - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop |
| 64 | 75 | - negative `max_failures` values normalize to unlimited failures |
| 65 | | -- Sprint 01 is intentionally process-free so later watch and process integration can build on deterministic state transitions |
| 76 | +- 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 |
| 78 | + |
| 79 | +## Dependency |
| 80 | + |
| 81 | +`fgof-devloop` depends on `fgof-watch` `v0.1.0` for watch-event types and |
| 82 | +watch option projection: |
| 83 | + |
| 84 | +```toml |
| 85 | +[dependencies] |
| 86 | +fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" } |
| 87 | +``` |
| 66 | 88 | |
| 67 | 89 | ## Build And Test |
| 68 | 90 | |