28 Commits
Author SHA1 Message Date
JPPhoto 8508c7d3ac fix(graph): validate downstream collectors after edits
Share resolved collector types within each validation operation and skip incomplete upstream collectors.

Remove the ineffective iterator fast path and cover If branches and queue compatibility behavior.
2026-10-05 20:46:53 -05:00
Alexander Eichhorn 3f17052192 test(graph): pin collector edit regressions
Add failing coverage for an edited collector that is never checked against the collectors it feeds,
incomplete upstream collectors blocking unrelated edits, and update_node renames failing on valid collector chains.
2026-10-06 02:26:32 +02:00
JPPhoto 7037d0ed55 fix(graph): validate collector edits consistently
Revalidate affected collectors after edits and restore nodes atomically on failed reconnection.

Check typed If collector branches and document validation impacts for workflows and queued graphs.
2026-10-05 18:29:19 -05:00
JPPhoto 74d5fd8ae7 perf(graph): bound collector type traversal
- Share visited collectors across branch source type unions.

- Add execution-counter coverage for layered If fan-out.
2026-10-05 17:02:46 -05:00
JPPhoto b5d90800ce fix(graph): revalidate collector dependents on input changes
- Recheck downstream type contracts when collector inputs change.

- Preserve inferred collector types through If branches and chained collectors.

- Add graph regressions and document validation behavior.
2026-10-05 15:56:37 -05:00
JPPhoto 7855613eba Fix collector iterator numeric type inference
Share promoted root type with iterator checks to reject mismatched consumers.
Add direct and If-fed regressions and document compatibility widening.
2026-09-26 16:21:12 -05:00
JPPhoto b62a32aa53 fix(graph): preserve numeric collector inputs
Promote mixed int and float collector roots to float.

Skip projection work for ordinary output types and simplify DAG-only traversal.

Cover numeric, allocation, deduplication, and If iteration paths.
2026-09-26 15:17:56 -05:00
JPPhoto 0bee89a602 fix: validate transitive If dependents efficiently
Follow collector paths when revalidating If branches and roll back invalid additions.
Reuse resolved nodes to avoid projection work for ordinary edges.
2026-09-25 22:37:42 -05:00
JPPhoto 71b7d5c5da fix: validate iterator types through If collectors
Check collector item roots for each resolved If branch feeding an iterator.\nSkip traversal container setup for ordinary output sources.\nCover mismatch rejection and allocation-free fast path with counters.
2026-09-25 17:17:55 -05:00
JPPhoto 567164021b test: bound shared If branch validation work
Count true and false input lookups during graph validation.

Catch repeated branch traversal without timing assertions.
2026-09-25 14:51:17 -05:00
JPPhoto f5f61c0c8e fix: deduplicate projected If branch sources 2026-09-25 14:32:10 -05:00
JPPhoto 49ea3fb87a fix: infer If output types from branches 2026-09-25 12:47:56 -05:00
JPPhoto 6b33b17aa8 fix: complete For loop V7 port validation 2026-09-03 00:46:13 -05:00
JPPhoto 332840c7fd feat(nodes): port For loop execution and editor support 2026-08-30 18:18:46 -05:00
Jonathan ccd5896caf Fix collector scoping and invocation validation (#9483)
* Fix collector scoping and invocation validation

* chore: ruff

* Harden collector scope and optimized validation

* Preserve nested collector scopes at arbitrary depth
2026-08-14 21:43:36 +00:00
Jonathan bb2c5307f0 Optimize iterator graph materialization (#9355)
* Optimize iterator graph materialization

* Update generated OpenAPI schema

* Optimize iterator graph expansion and memory

* Fix graph adjacency cache lifecycle

* Refactored `try...finally` behavior

* Optimize saved workflow graph restoration
2026-07-29 12:44:06 -04:00
JonathanandLincoln Stein 73af000929 Fix graph stall for collectors downstream of empty iterators (#9349)
* fix empty collector graph stalls

* fix empty collector after grouped materialization

* address empty collector review feedback

---------

Co-authored-by: Lincoln Stein <[email protected]>
2026-07-23 23:04:19 -04:00
JonathanandLincoln Stein f7aa5fcbbf Add chaining to Collect node (#8933)
* Add chained collect node

* test(frontend): align parseSchema fixtures with collect v1.1 and normalize undefined fields in assertions

* fix(nodes): block collect-to-collect links when inferred item types differ

---------

Co-authored-by: Lincoln Stein <[email protected]>
2026-03-24 01:39:52 +00:00
Jonathan 8cf83a9221 Implemented ordering for expanded iterators (#8741)
* Implemented ordering for expanded iterators

* Update test_graph_execution_state.py

Added a test for nested iterator execution ordering. (Failing at commit time!)

* Filter invalid nested-iterator parent mappings in _prepare()

When a graph has nested iterators, some "ready to run" node combinations do not actually belong together. Previously, the scheduler would still try to build nodes for those mismatched combinations, which could cause the same work to run more than once. This change skips any combination that is missing a valid iterator parent, so nested iterator expansions run once per intended item.

* Fixed Collect node ordering

* ruff

* Removed ordering guarantees from test_node_graph.py

* Fix iterator prep and type compatibility in graph execution

Include iterator nodes in nx_graph_flat so iterators are prepared/expanded correctly. Fix connection type checks to allow subclass-to-base via issubclass. Harden iterator/collector validation to fail cleanly instead of crashing on missing edges. Remove unused nx_graph_with_data(). Added tests to verify proper functionality.
2026-02-01 05:00:04 +00:00
psychedelicious ed7772d993 tests(app): add more tests for complex iterate/collect graph topologies 2025-06-30 23:39:28 +10:00
psychedelicious baae998b5b tests(app): add failing test for collector edge case
squash

squash
2025-06-30 23:39:28 +10:00
psychedelicious d66cd4e81b tests(nodes): add test for collect -> iterate type validation 2025-02-06 07:57:26 +11:00
psychedelicious dfb5e8b5e5 tests: add invoke method & output annotation tests 2024-10-31 16:21:07 +11:00
psychedelicious 965069fce1 tests: fix nodes tests
they now require a valid output
2024-10-31 16:21:07 +11:00
Ryan Dick 1d449097cc Apply ruff rule to disallow all relative imports. 2024-07-04 09:35:37 -04:00
psychedelicious ac56ab79a7 fix(app): add dynamic validator to AnyInvocation & AnyInvocationOutput
This fixes the tests and slightly changes output types.
2024-05-30 12:03:38 +10:00
psychedelicious da9991e361 tidy(nodes): remove commented tests 2024-03-01 10:42:33 +11:00
psychedelicious 0b81703c9f tidy(nodes): move node tests to parent dir
Thanks to the resolution of the import vs union issue, we can put tests anywhere.
2024-03-01 10:42:33 +11:00