@@ -20,7 +20,7 @@ Current v1 target: |
| 20 | | 20 | |
| 21 | ## Status | 21 | ## Status |
| 22 | | 22 | |
| 23 | -Sprint 01 is in place. | 23 | +Sprint 02 is in place. |
| 24 | | 24 | |
| 25 | Tracked today: | 25 | Tracked today: |
| 26 | | 26 | |
@@ -29,7 +29,10 @@ Tracked today: |
| 29 | - stable option, trigger, cycle, decision, and state types | 29 | - stable option, trigger, cycle, decision, and state types |
| 30 | - pure run-cycle helpers for start, finish, stop, and restart decisions | 30 | - pure run-cycle helpers for start, finish, stop, and restart decisions |
| 31 | - deterministic failure policy through `stop_on_failure` and `max_failures` | 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 | ## Public API Shape | 37 | ## Public API Shape |
| 35 | | 38 | |
@@ -44,6 +47,7 @@ Current public procedures: |
| 44 | - `clear_devloop_trigger` | 47 | - `clear_devloop_trigger` |
| 45 | - `clear_devloop_cycle` | 48 | - `clear_devloop_cycle` |
| 46 | - `clear_devloop_decision` | 49 | - `clear_devloop_decision` |
| | 50 | +- `clear_devloop_watch_summary` |
| 47 | - `devloop_backend_name` | 51 | - `devloop_backend_name` |
| 48 | - `clear_devloop_state` | 52 | - `clear_devloop_state` |
| 49 | - `start_devloop` | 53 | - `start_devloop` |
@@ -52,17 +56,35 @@ Current public procedures: |
| 52 | - `devloop_start_trigger` | 56 | - `devloop_start_trigger` |
| 53 | - `devloop_change_trigger` | 57 | - `devloop_change_trigger` |
| 54 | - `devloop_manual_trigger` | 58 | - `devloop_manual_trigger` |
| | 59 | +- `devloop_summarize_watch_events` |
| | 60 | +- `devloop_watch_failure_summary` |
| | 61 | +- `devloop_watch_options` |
| | 62 | +- `devloop_watch_trigger` |
| 55 | - `begin_devloop_cycle` | 63 | - `begin_devloop_cycle` |
| 56 | - `finish_devloop_cycle` | 64 | - `finish_devloop_cycle` |
| 57 | | 65 | |
| 58 | Current semantics: | 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 | - `devloop_trigger` records why work should begin, such as start, file change, or manual request | 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 | - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger | 73 | - `begin_devloop_cycle()` increments the cycle counter and starts work only when the loop is active, idle, and policy permits the trigger |
| 63 | - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop | 74 | - `finish_devloop_cycle()` records success or failure and returns an explicit decision to idle, restart, or stop |
| 64 | - negative `max_failures` values normalize to unlimited failures | 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 | ## Build And Test | 89 | ## Build And Test |
| 68 | | 90 | |