Problem
Netsuke currently treats dependencies as a graph. A consumer that needs an
aggregate workflow to run named gates in a defined sequence must either nest
netsuke build invocations or create synthetic proxy actions and rules solely
to impose ordering. Both alternatives make the manifest harder to read.
Requirement
Actions and targets should be able to request serial execution of their direct
dependencies. A declarative field such as dependency_order: serial would be
clearer than a bare serial flag.
For a serial dependency list, Netsuke should:
- run dependencies in declaration order;
- run a shared dependency at most once for the encompassing build;
- stop before later dependencies when an earlier dependency fails; and
- retain the existing parallel behaviour when the field is omitted.
The serial property should affect only the dependencies of the annotated action
or target. It should not act as a global worker limit or accidentally
serialise unrelated graph branches.
Example
Catnap currently implements its comprehensive all action with nested
Netsuke invocations so formatting, linting, tests, and spelling run in order:
https://github.com/leynos/catnap/blob/a4499e3a7c508325a39c2cb46f06532a63172863/Netsukefile#L3-L9
A native serial-dependency feature would allow that action to declare the
ordered gates directly. It would eliminate the nested orchestration while
keeping the public gates independently runnable.
Acceptance criteria
- Document the action and target syntax and its execution semantics.
- Preserve declared order in generated Ninja execution.
- Add regression coverage for ordering, shared dependencies, failure
short-circuiting, and the unchanged default parallel behaviour.
- Keep serialisation scoped to the annotated dependency list.
Problem
Netsuke currently treats dependencies as a graph. A consumer that needs an
aggregate workflow to run named gates in a defined sequence must either nest
netsuke buildinvocations or create synthetic proxy actions and rules solelyto impose ordering. Both alternatives make the manifest harder to read.
Requirement
Actions and targets should be able to request serial execution of their direct
dependencies. A declarative field such as
dependency_order: serialwould beclearer than a bare
serialflag.For a serial dependency list, Netsuke should:
The serial property should affect only the dependencies of the annotated action
or target. It should not act as a global worker limit or accidentally
serialise unrelated graph branches.
Example
Catnap currently implements its comprehensive
allaction with nestedNetsuke invocations so formatting, linting, tests, and spelling run in order:
https://github.com/leynos/catnap/blob/a4499e3a7c508325a39c2cb46f06532a63172863/Netsukefile#L3-L9
A native serial-dependency feature would allow that action to declare the
ordered gates directly. It would eliminate the nested orchestration while
keeping the public gates independently runnable.
Acceptance criteria
short-circuiting, and the unchanged default parallel behaviour.