(
    missions: [
        (id: "EdgeSelfLoop"),
        (id: "EdgeSelfLoopMulti"),
        (id: "EdgeBackEdge"),
        (id: "EdgeBackEdgeMulti"),
        (id: "EdgeBackEdgeOver"),
        (id: "EdgeCrossingSingle"),
        (id: "EdgeCrossingMulti"),
    ],
    tasks: [
        (
            id: "back_src",
            type: "tasks::BackSrc",
            missions: [
                "EdgeBackEdge",
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "back_mid",
            type: "tasks::BackMid",
            missions: [
                "EdgeBackEdge",
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "back_dst",
            type: "tasks::BackDst",
            missions: [
                "EdgeBackEdge",
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "cross_a",
            type: "tasks::CrossA",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "cross_b",
            type: "tasks::CrossB",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "cross_c",
            type: "tasks::CrossC",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
        (
            id: "cross_d",
            type: "tasks::CrossD",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
        ),
    ],
    bridges: [
        (
            id: "self_one",
            type: "bridges::SelfOne",
            missions: ["EdgeSelfLoop"],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
            channels: [
                Rx(
                    id: "in1",
                    route: "self_one/in1",
                ),
                Tx(
                    id: "out1",
                    route: "self_one/out1",
                ),
            ],
        ),
        (
            id: "self_multi",
            type: "bridges::SelfMulti",
            missions: ["EdgeSelfLoopMulti"],
            config: {
                "alpha": 1,
                "beta": 22,
                "gamma": "long-config-value",
                "delta": true,
                "epsilon": 3.14,
            },
            channels: [
                Rx(
                    id: "in1",
                    route: "self_multi/in1",
                ),
                Rx(
                    id: "in2",
                    route: "self_multi/in2",
                ),
                Rx(
                    id: "in3",
                    route: "self_multi/in3",
                ),
                Tx(
                    id: "out1",
                    route: "self_multi/out1",
                ),
                Tx(
                    id: "out2",
                    route: "self_multi/out2",
                ),
            ],
        ),
    ],
    cnx: [
        (
            src: "self_one/in1",
            dst: "self_one/out1",
            msg: "messages::SelfLoop",
            missions: ["EdgeSelfLoop"],
        ),
        (
            src: "self_multi/in1",
            dst: "self_multi/out1",
            msg: "messages::SelfLoop",
            missions: ["EdgeSelfLoopMulti"],
        ),
        (
            src: "self_multi/in2",
            dst: "self_multi/out2",
            msg: "messages::SelfLoop",
            missions: ["EdgeSelfLoopMulti"],
        ),
        (
            src: "self_multi/in3",
            dst: "self_multi/out1",
            msg: "messages::SelfLoop",
            missions: ["EdgeSelfLoopMulti"],
        ),
        (
            src: "back_src",
            dst: "back_mid",
            msg: "messages::Forward",
            missions: [
                "EdgeBackEdge",
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
        ),
        (
            src: "back_mid",
            dst: "back_dst",
            msg: "messages::Forward",
            missions: [
                "EdgeBackEdge",
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
        ),
        (
            src: "back_dst",
            dst: "back_src",
            msg: "messages::Back",
            missions: ["EdgeBackEdge"],
        ),
        (
            src: "back_dst",
            dst: "back_src",
            msg: "messages::BackAlt",
            missions: [
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
        ),
        (
            src: "back_dst",
            dst: "back_mid",
            msg: "messages::BackAlt",
            missions: [
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
        ),
        (
            src: "back_mid",
            dst: "back_src",
            msg: "messages::BackAlt",
            missions: [
                "EdgeBackEdgeMulti",
                "EdgeBackEdgeOver",
            ],
        ),
        (
            src: "cross_a",
            dst: "cross_d",
            msg: "messages::CrossOne",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
        ),
        (
            src: "cross_b",
            dst: "cross_c",
            msg: "messages::CrossTwo",
            missions: [
                "EdgeCrossingSingle",
                "EdgeCrossingMulti",
            ],
        ),
        (
            src: "cross_a",
            dst: "cross_c",
            msg: "messages::CrossThree",
            missions: ["EdgeCrossingMulti"],
        ),
        (
            src: "cross_b",
            dst: "cross_d",
            msg: "messages::CrossFour",
            missions: ["EdgeCrossingMulti"],
        ),
    ],
)