fgof-devloop Public
Code
Use Git or checkout with SVN using the web URL.
No matching headings.
fgof-devloop
Watch-driven rebuild, restart, and smoke-loop helpers for modern Fortran tools.
fgof-devloop is intended to be a small standalone library for the reusable
parts of development loops: deciding when file changes should trigger work,
tracking run cycles, modeling restart policy, and eventually wiring those
decisions to fgof-watch, fgof-process, and fgof-jobs.
It is part of the FortranGoingOnForty lib-modules
catalog, but it is intended to stand on its own as a normal fpm package.
Current v1 target:
- stable dev-loop option and state types
- deterministic cycle and restart decision helpers
- watch-event shaping that can consume
fgof-watch - process-runner integration that can supervise rebuild and run commands
- examples for command-line tools and local service smoke loops
Status
Sprint 02 is in place.
Tracked today:
- package layout, CI, and standalone repo setup
- local sprint plan in ignored
.docs/sprints/ - stable option, trigger, cycle, decision, and state types
- pure run-cycle helpers for start, finish, stop, and restart decisions
- deterministic failure policy through
stop_on_failureandmax_failures fgof-watchintegration through shaped event summaries and trigger policy- loop-owned restart filters for directory events and minimum change counts
- watch option projection for debounce polls, hidden-path ignores, and directory-event emission
- focused model and watch-bridge coverage in
fpm test
Public API Shape
Primary modules:
fgof_devloopfgof_devloop_types
Current public procedures:
clear_devloop_optionsclear_devloop_triggerclear_devloop_cycleclear_devloop_decisionclear_devloop_watch_summarydevloop_backend_nameclear_devloop_statestart_devloopstop_devloopshould_start_on_opendevloop_start_triggerdevloop_change_triggerdevloop_manual_triggerdevloop_summarize_watch_eventsdevloop_watch_failure_summarydevloop_watch_optionsdevloop_watch_triggerbegin_devloop_cyclefinish_devloop_cycle
Current semantics:
devloop_optionscarries run-on-start, restart-on-change, directory restart, hidden-path ignore, debounce, stop-on-failure, and max-failure policydevloop_triggerrecords why work should begin, such as start, file change, or manual requestdevloop_watch_summarycondensesfgof-watchevent batches into file, directory, create, modify, remove, move, ignored, and failure countersdevloop_watch_options()projects dev-loop policy intofgof-watchoptions for debounce polls, hidden-path filtering, and directory event emissiondevloop_watch_trigger()turns successful watch summaries into change triggers while suppressing watcher failures, empty batches, directory-only batches when disabled, and batches belowmin_restart_changesbegin_devloop_cycle()increments the cycle counter and starts work only when the loop is active, idle, and policy permits the triggerfinish_devloop_cycle()records success or failure and returns an explicit decision to idle, restart, or stop- negative
max_failuresvalues normalize to unlimited failures - negative
debounce_pollsvalues normalize to no debounce - Sprint 02 is intentionally process-free so later process and job integration can build on deterministic state transitions
Dependency
fgof-devloop depends on fgof-watch v0.1.0 for watch-event types and
watch option projection:
[dependencies]
fgof-watch = { git = "https://github.com/FortranGoingOnForty/fgof-watch.git", tag = "v0.1.0" }
Build And Test
fpm test
Supported Platforms
- macOS
- Linux
Boundaries
- focused on reusable development-loop mechanics, not a full CLI app
- should remain useful on its own even if future tools wrap it with UI policy
- watch, process, and job integration should stay layered over stable state transitions
License
MIT