Skip to content

Commit 1e48dca

Browse files
committed
Document workflow trigger semantics
1 parent 75bee78 commit 1e48dca

3 files changed

Lines changed: 21 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,20 @@ All notable changes to `devloop` will be recorded in this file.
88
- Added a browser reload event server and a `notify_reload` workflow
99
action so workflows can explicitly tell downstream browser listeners
1010
to refresh after successful rebuild/restart steps.
11+
- Added declarative workflow `triggers` so downstream orchestration can
12+
be expressed directly in config instead of being inferred through
13+
secondary file watches.
1114

1215
### Fixed
1316
- Workflow failures such as process-readiness timeouts now log loudly
1417
but do not terminate `devloop`, so the watcher stays alive and the
1518
next successful edit can recover a broken local build.
19+
- Triggered workflows now run as part of the same execution tree,
20+
including when their parent workflow was reached via `run_workflow`.
21+
- Config validation now rejects ambiguous trigger graphs where a direct
22+
trigger target is also reachable through `run_workflow`, and
23+
triggered workflows are documented as single-run deduplicated within
24+
one execution.
1625
- Platform-specific release workflows no longer duplicate GitHub release notes when both assets are published to the same tag.
1726

1827
## [0.6.2] - 2026-03-26

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,12 @@ endpoint and exposes its URL to child processes as
223223
`DEVLOOP_BROWSER_EVENTS_URL` so client repositories can attach a tiny
224224
browser-side `EventSource` listener.
225225

226+
Triggered workflows are deduplicated within one execution. If two
227+
trigger paths both reach the same workflow, `devloop` runs it once from
228+
the first path that reaches it. Config validation also rejects graphs
229+
where a direct trigger target is separately reachable through
230+
`run_workflow`, because that would make ordering ambiguous.
231+
226232
Hooks can also be observed on the runtime tick when external state
227233
changes are not represented by file edits. For example:
228234

docs/behavior.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,13 @@ Workflows run step by step, in order.
6767
- A step must finish successfully before the next one begins.
6868
- `run_workflow` executes another named workflow inline.
6969
- `triggers` run downstream workflows after the workflow succeeds.
70+
- Triggered workflows are deduplicated across one execution tree. If two
71+
trigger paths reach the same workflow, it runs once from the first
72+
path that reaches it.
7073
- Recursive workflow graphs are rejected at config-validation time.
74+
- Config validation also rejects graphs where a direct trigger target is
75+
separately reachable through `run_workflow`, because that would make
76+
ordering and duplication ambiguous.
7177
- `write_state` renders `{{state_key}}` templates against the current
7278
in-memory session state.
7379
- `log` also renders templates against the current session state before

0 commit comments

Comments
 (0)