If two edges in a workflow have the same file edge label but come from different source nodes, mkconcore only wires up the first source. The second source node gets no out mount for that edge at all, so whatever it writes is lost, and nothing warns about it. concore validate also says the workflow is valid.
Small example, three nodes A, B, C with edges A -> C and B -> C, both labelled shared. Building with --type docker gives this run script:
docker run --name=A -v shared:/out1 ... docker-a&
docker run --name=B docker-b&
docker run --name=C ... -v shared:/in1:ro -v shared:/in2:ro docker-c&
B has no -v shared:/out1, and C mounts the same volume twice as in1 and in2. Posix has the same problem, the build script only creates the out1 link for A.
The cause is in the loop that fills edges_dict in mkconcore.py. It stores [source, [targets]] per label and only sets the source the first time it sees the label, so the source of any later edge with that label is dropped.
None of the graphml files in the repo do this, and since an edge label is one volume with one writer it doesn't look like something that should be supported. I think it should be an error in both mkconcore and concore validate.
What it looks like on dev:

If two edges in a workflow have the same file edge label but come from different source nodes, mkconcore only wires up the first source. The second source node gets no out mount for that edge at all, so whatever it writes is lost, and nothing warns about it.
concore validatealso says the workflow is valid.Small example, three nodes A, B, C with edges
A -> CandB -> C, both labelledshared. Building with--type dockergives this run script:B has no
-v shared:/out1, and C mounts the same volume twice as in1 and in2. Posix has the same problem, the build script only creates theout1link for A.The cause is in the loop that fills
edges_dictin mkconcore.py. It stores[source, [targets]]per label and only sets the source the first time it sees the label, so the source of any later edge with that label is dropped.None of the graphml files in the repo do this, and since an edge label is one volume with one writer it doesn't look like something that should be supported. I think it should be an error in both mkconcore and
concore validate.What it looks like on dev: