 Okay, great. So let's go through, I think today's, you know, so I would like to go through this, you know, the comments on this document. Any other topic, I mean, items you would like to discuss? No? Okay. So then I think then, so let's just first go through the, I'm not sure whether, you know, you have gone through all these, the spec, the document in detail or not. Let me go through the comments. Okay, let's go down. Hi, I still see your comment here. You think is it resolved? I think we agreed last time, we are going to sit it to resolve state, right? Or you still have some questions or comments? Sorry, what comment was there? Sorry, I can't see the screen. I'm driving to the next. Oh, you are driving? Okay. This is first, you're coming, you say, you know, on this, on the trigger, but I mean, this correlation thing should be out of scope. And then we discussed that last time in the, I think in the second meeting. Pardon? Sorry, I cannot hear you clearly. So you want to set it to be resolved? Yeah, I'm fine with that. Okay. So you're going to set it to resolve. Okay. I think the second one is also about the event state. So I assume you're going to set it to resolve, right? That's what you want to build. That's fine. Like, I don't agree with it, but it's not. But, you know, okay, I like to know. So these use cases, I think already show that we really need a state to handle the events. Similar to traditional works that do, but like, in my mind, we would not call it traditional or close to solving. I think that's fine. Make any more progress talking for the group ones. Okay. Okay. So then let's go through this. So let me see. Oh, so not hero. So is it okay? Like, you know, we said, you know, we have this on the different state. And then we have a start pulling. Is that okay with you? I think it's okay, but I have one concern about start state. If we use a flag of the start or not, I think if we have a hunger like state, I think all traditional become massacred. I think just one of them are true. And the rest of 99 are false. So I think I'm not sure the flag is effective or not. Okay. So which case you think it will not cover with a flag? Yeah, I think the flag works okay. But my concern is just a minor concern. If we had a hunger like state and all works sequential, in that case, only one of the states become true, right? Okay. Say it again. I didn't quite follow. Sorry. I think I understand your concern. This is Louie. So what you're suggesting is that in all the other states, other than the actual start state, this boolean would be false. Right. So what I would suggest here is that in fact, if the boolean, you know, that field start is not present, it defaults to be being false. So, you know, if it's not a start state, we just simply leave that field out. And that typically happens if there would be default values that if the field is not present, it takes on a very specific value. In this case, it would be false. So all we would really need to do is to have one start, one state with that shows start equal to true. Yeah. Okay. It took me the long way. Yeah. I mean, we would need to obviously make that quite clear that there is a default value for that if it's not present. And that would be false. Okay. So we probably need to add that clarification into the document. Yeah, certainly. Okay. Good. So, Luis, are you going to add that or? Yeah, I'll add that. Okay. Thank you. Yeah. Great. Okay. So that's, that's good. Okay. So let me see any other. Okay. So this is a heroic start state. And then, so team, I think, yeah, teams, that's result because he see that again, a hero here. Okay. You all say, okay, how do you pass a result of action to the next state in case of parallel? Do you have a list of output to the next state? Yes, we have a list of output to the next state. Is that solved? The hero up to, it's solved, right? Okay. Okay. Yeah. If you can put this as a result, you know, that would be good, you know, your market so that we do not to revisit, you know, this again. Okay. Great. And how about this one? This one say, do we allow to spend more than one function in action list in case of sequential, sequential more than one? Yes, we allow. So this is resolved. Is it right? Yes, but I have one concern. Okay. Go ahead. If the state had more than one function, so the meaning of state became ambiguous because if one state has two functions, actually there are two states inside. So I'm just wondering. So if that a state has two functions, so those two functions can be executed in sequence or in parallel, okay? I understand, you know, you can break that into two states if it's in sequence, right? Is that what you mean? Yeah. Okay. I think this is up to the user. We provide this flexibility, say, okay, if you have two functions executed in sequence, you can break them up into two states, or you can just, you know, put into one state. But these two functions execute in sequence, you know, it's up to the user how they want to, to the users how they want to position it or how they want to write the workflow. We, I think probably it's not, we do not need to put any restriction there, you know, because, yeah, that's my take. What do you, what do you think or do others think? Yeah, I think it's one way, I think. What's that? Yeah, I think that is one way, I think. I agree with that. Yeah, okay, we said. Okay. Yeah. Okay. So if you can resolve this, that would be good. Okay, I will do that. Okay. Another is yours again. Is the result value assumed that arrow value? That's because result value is not arrow value. I'm just wondering if we know successfully. I think example. Yeah, this also, you know, is this resolved? Yeah. Okay. So if you can, you know, resolve that would be good. Okay. And how about the next, yeah, the next thing what you mean, you propose parallel state, right? I think that's a good suggestion. I think, you know, all that I did in and also, so have you taken a look at that parallel state? Yes. Okay, is it good? Yes, it's good. Okay. After reading this parallel state section, I made a comment whether or not if, whether or not the parallel or sequential flag is necessary. Move up? Yes. May that one comment just before meeting regarding the state. Okay. So maybe, maybe we will go to that, your comment later. Can I just, I just go to sequence one by one. Is that okay? Yeah. So let's just say, okay, so the parallel state that's resolved. Yeah, I know if you have another comment, we can go to that. You have another comment say we specify range condition, such as, you know. The comment above that you are talking is a new one. This one. Yes. Oh, okay. If we introduce parallel state, actually, we no longer necessary because it implies sequential. Let me see. Into a parallel state, right? Action mode. Yeah. Will be no longer necessary, right? Action mode. Okay. Not necessary, right? Because in parallel state, right? This is like an embedded state, parallel state. Under each, okay, so it's a parallel state. So let me take a look at this. You are, so you comment on this place. Okay, let's see here. Parallel state, right? There's, yeah, there's no action mode. Okay. So, so how this is defined, let's see parallel. Just, I think to clarify here, I think before we get into the actual parallel state, I think that here you're commenting that if we introduce parallel state, then we no longer need to have a, an action mode in the operation state or the event state. Is that correct? That's your comment? Right. Okay. So the, the ability to have an action mode with, with a set of actions in both those states, both the operation state and the event state essentially is a convenience. So it allows, you know, within a, say an event state or an operation state, you actually have the ability to, to run these functions, set of functions in sequence or in parallel. And otherwise you have to now, you know, introduce another parallel state and to have it simply there present within the state itself, the operation state or the event state, makes it more convenient in terms of being able to, to simply add a set of functions, which may typically be the case within one of those two states. Yeah, I agree with that. But that convenience might, might confuse, might make user confused, which parallel state should be used. That is my concern. Right. So I mean the, we, we could look through some different examples or use cases where the one or the other could be used and see whether in fact it's necessary to have the sort of the action mode with being able to set parallels, sequential within, within a state, you know, just as a, as a proof. Yeah, I think this topic needs to be visited after we discussed the basic direction. I remember that in the first meeting, we talked a little bit about the basic direction. What, what kind of new feature are we going to try to solve or something like that? So I think my understanding is that we are having to discuss that basic direction yet. Yeah, I mean, I think we're still at the stage where, you know, this is certainly a way forward what we have in this document, but you know, we've, we're going to be having, I think we're, there's some other presentations that we're going to be having on other options. Yeah, so, so I think I got your point, Nahiro. So if we have this parallel state, right, implicitly, you know, it's, if there's no parallel state inside the operation state or inside the event state, that means it's a sequential, right? That's your point, right? Yeah, I guess we can think about this, you know, maybe we think about this and also maybe Louisie think about this and then, you know, everywhere else think about this. We probably, let's see, you know, whether we really need that action mode or not. We said action mode, if it's, you know, if in that, if we have the action mode, if the action mode specified parallel and then inside it, there's no parallel state, I think that's still useful, right? That still provides a way for the user to write it. That's a good way. What do you think, Nahiro? I know you have thought through this very well and I'm thinking, you know, so you are assuming always inside it, inside the operation state, there's a parallel function, executed parallel. So you think it will always put a parallel state inside it, but actually we can also allow the user to put a parallel function. It's not parallel state inside it. So the user can put, you know, functions executing sequence inside that operation state or they can put that, you know, the functions executing parallel inside that operation state or they can put a parallel state inside that operation state. That means, you know, that allows for, you know, more complicated use case with parallel state. But I think maybe majority use cases probably do not need this parallel state. It only needs, you know, either sequential or parallel execution of the functions. So I think, you know, putting that action mode there will make the, will provide an easy and straightforward way for the user to write its use case. Yeah, you are saying that the convenient way is necessary, right? Yeah, because in most cases, you know, I think, you know, in most cases people probably do not need this, you know, complication or parallel state embedded state. So they can just say, okay, this function is executing parallel or in sequence. But if their use case is really, you know, complicated and they need it, you know, on those embedded state, like, you know, inside operation state or inside event state, they need another, you know, some other states, right? Then they can use this parallel state. What do you think? I think probably that's that's, that's, I think that's probably, I think, you know, if we can provide this flexibility, it will be better than just say, okay, you'll always have to go through the use of parallel state. Maybe think about it. We can probably, you know, discuss that next meeting. So what do you think? If you, you can have some time to think more about that. That's my, my real point. I'm not sure other people will. So, well, my take is a state is not serial or parallel. State is a state. It's the actions within the state that are serial, parallel actions. I'm not sure I completely concur with having something called a parallel state. But that's just me. I think this parallel state was introduced because, you know, the hero was thinking, you know, there are some use cases which could be complicated, a little bit more complicated use cases. And those use cases will require, you know, like, you know, more than just, you know, functions executed in parallel. So they could be like, you know, some functions executed. So for example, in that part, so there could be like two function to fun. So in that state operation state, right, there are two, it's going to branch out to do this to, to two different states. And they call, we call this parallel state. And one state inside it, they could receive, you know, another event. But then the other state might not need to handle that event. Something like that. Now hero, is that right? Is that what you have in mind, you know? Yes. I have an example. Can I show you my example? Sure, where? Maybe you have some slide, I can stop sharing and you, you have your slide, or you have your document. Would you like that? Yes. Okay, so let me stop and you can share this, you can click share your document. Do I need to, uh, you can doc. Oh, you can share. Okay. I'm not sure how, whether you can share, but is there anything I need to do to make you, to enable your sharing? Oh yeah, you can share. Okay, let's go. This is written in the Amazon schedule. And here is a parallel state. Here is a parallel state. And there are four branches. And the current graph cannot express this. Okay. So here is the parallel state. And the branch has four, four states. Okay. Four branches, four parallel branches. And the current specification without parallel state cannot express, I think. Okay, yeah. So, so far, are you okay with now hero's explanation? Yeah, he's got a use case. Yeah, I guess that's fine. Okay. So, you are done. So let me, let me go through my again. Okay, hold on just a second. Let me switch to my, uh, can you see my screen? Oh, okay. So this is a, okay, so that's a parallel state. So action mode. That thing, maybe you can think about it, the hero, and then let's revisit it next, in next meeting. Is that okay with you? Yes. Okay. So now let's go to the, here, have another comment. Okay. Yeah, could you explain your comment and Louis, I think I address that too. Okay. Yeah, I have two comments. The first one is the right hand side of the diagram. So I think it's better to have another function and the filter between the function. So you are suggesting adding another filter between the functions? Yes. So correctly, the diagram has only one function in the right hand side. Oh, okay, I see. And the second comment is left hand side. The diagram says the event source receives the response from the problem. I think I just wondering if this is necessary because even if it is, you think, right? Yeah, hi. Hi, Nihira. Yeah, I've responded to those. Yeah, I think definitely what you say in for question number one, comment number one is that we should in fact add filters. So if you've got multiple occurring one after the other, we should have filters on the responses and again on the as each function is involved. So we're able to transform both the request going to the serverless function and the response that is returned back from the serverless function. And we can probably modify the diagram to show that clearly. And talking about the second one, so I agree that what we've talked about typically is that if we have an event source, we simply get a unidirectional stream of events from that source without any responses going back. But I'm thinking about maybe there are other instances where an event source may actually have, or there may be responses going back to that source. So that's what I'm showing this. It's not necessary that we actually have that call a that response filter. I have to show it in the diagram. So I can potentially remove it from the diagram if it's to avoid any confusion in terms of having a filter or at least a response even going back to an event source. So what do other people think about that? Yeah, so the first, I think the first one, you say would like a filter between the functions between the functions, right? Yeah, I think I also think that's a good suggestion. I think we need to add that. In terms of the response to the event source, we cannot, we do not, there could be some event sources that need response, right? So is your point saying, you know, no event source needs response from the workflow? Is that your point? I think that you are saying that the event source receives some response from the message queue or something, right? But my point is that event source typically does not get a response from the workflow. Yeah, I agree. So you say event source does not get response from the workflow, is that your point? Yes. But typically event source receives response from the event queue or something. Okay. So I think I heard someone else say, okay. Yeah, that was me. This is Barron. I agree. I think events are pretty much defined as asynchronous. If they are synchronous, if they're coming from something that expects a response, I don't think it's really categorized as an event. You'd go through like an API gateway or something like that. Okay. Yeah, I think so. So how will you solve it? Let's say the event does come to an API gateway and expects a response. How would that be solved? Good question. Yeah, so I mean, there are maybe use cases where the event source is something like an HTTP client and it's expecting a response to come back. And so I think traditionally, and then you would certainly expect like just a 200 okay or something like that. But if they're expecting some response which contains data and not sure. Yeah, I think you're right. The synchronous events do complicate the entire workflow. There's no doubt about it. But I'm not sure if we can say this because it gets complex. I mean, we don't support it. So if like there are some, so I think probably, you know, we cannot say, there's no, we cannot say 100% say that none of the event source, it would expect a response from the workflow with some result. So maybe we should expect her to just keep that, keep it here, this response just in case if there is an event source that would expect a use case that would expect a response, then we have it covered. Yeah, I mean, we could certainly update the diagram to make it quite clear that there are event sources that only emit events, but don't expect any responses coming back. And there are other event sources that do in fact have responses and expect responses coming back. And with data attached or payload attached to them. And that filter can be used to actually transform that data in some fashion. So, you know, we could just add another diagram to clarify that, add some text to clarify that. What do people think? Yeah, I think that would be great. Okay, so Louis, would you like to add that or you? Yeah, I'll certainly add something. Okay, great. Yeah. That's pretty much about it. Let's see the, we write, have we written down all the meeting minutes? So let's see, then we have all the meeting minutes covered. Oh, we didn't write that much. Okay, so. So, Doug, are you taking down the meeting minutes? Yeah. Go ahead. Go ahead and do it. I got distracted. Sorry. Yeah, so if you know, I think we discussed quite some, maybe with the idea later, you know, we, I think we discussed, we go through these comments and then so how we agree to resolve each of these comments. I can go ahead. That's fine, you know, maybe, yeah, or I can help write it down later or maybe someone catch that of a heart if you can help write it. Yeah, I can update those. Okay, Doug. So this is any other comments from any other comments on the document? Yes, I have one comment, very minor comment. Okay. Which page? The parallel, I think parallel. The one? Sorry. The parallel state. The section one. Okay, let me go there. Is here, right? Yes, I think there, I noticed that there is a one duplicated sentence. There's one duplicated sentence. Okay. Where is it at? Yeah, here. Each branch continue to. Oh, continue. Okay. Is this duplicated or not? Duplicated with what? It's continuous until reached state that has no next state. There are two sentences that start each branch. Oh, no, it's not duplicated. Here the first sentence says each branch has a list of states, right? It could be, you know, a branch out, right? So each one has a list of states with one state as a start state. Oh, no, it has a list of states. I'm sorry. Please look at the information passing section. Next section. Oh, okay, information passing. Okay, here. Okay. There is two states that start input data. Is this duplicated? Oh, yeah, yeah. This is duplicated. Let's see. The last one is a little bit different. You heard it in the request of some of this function when it moved from operation state. Yeah, this seems like duplicated. Thank you. I think this is duplicated. Okay, okay. So what do other people think? Luis, you think it's duplicated? Yeah, we can fix it. We can fix it. Okay, good. Okay. Okay. Thank you. Wow. Thank you for the catch. So any other comments? So any other comments which we have not addressed or resolved in the meeting? Yes, I think we have an information on how critical it works. I think we need to make down how filter works, especially how filter transforms the data. Oh, filter. How filter works? Yeah, how filter. I can imagine how to how to filter the data. But right now I can't imagine how to transform data. Okay. I think we need we to look at that and work out a way of actually developing a syntax with the semantics. That's sort of an open issue. I mean, it's more in the details. I think we initially wanted to get kind of setting the right direction here for the workflow here. But we can certainly look at that more closely. So what do you like is, you know, is say the details of how the filter filters out the information and then, you know, and transform the information, something like that, right? I think there are two cases because the filter means reduce the reduce and hold the data, right? But transform something, create another data. So the word filter it seems to me makes us understand the functionality. That is my feeling. Okay. I have a somewhat related question. In the case of, you know, several states in in sequence, for instance, does the last state get the out basically have reference to the output of all of the previous states or only the one directly before? So it's the previous one. So the last state get information from the previous one. But the previous one will get information from its previous one. So actually, the last state actually gets the information. It's like accumulated or filtered information of all the previous states. Do I explain that? Well, at least from, you know, is it Ben? Yeah, it's me. I'm not sure whether I address your question. Well, no, can you explain that again, please? Okay. So I suppose there are three states, right? One state two and state three, right? So state two is going to get information from state one. Okay. And then after the filter, whatever filter the user want to define, right? Of course, the user can choose not to define any filter on or whatever filter. So state two got that information. And then the state two is going to pass that information to state three. So so from the state diagram, it seems like the state three get information from state two, but actually the information, but that information already contains information from state one. Right. I guess it's up to state two to pass that through, as opposed to just saying like, you know, for instance, in a parallel workflow, I think we talked about last meeting, the next state would get essentially a list of all of the outputs of the previous states, they're very parallel. I was wondering if you can, can you generalize that so that, you know, basically everything gets more or less a map of state or events rather? Yeah. So, so, yeah, right. So for the parallel state, because it's one state branch out to multiple states, right? So that's why, you know, for example, if from state one, a branch out to parallel state, you know, there's three parallel states, parallel state two one, parallel state two two, parallel state two three, right? So these two one, two two and two three, they're going to get input from, from the state one, still get it from the previous state. It doesn't got it from, you know, you know, it's still the state that preceding it, it just because it's branch out, so they all, these three states have the same previous state. Does that make sense? Yeah, I guess I'll just see out how this plays out. Okay, yeah. So it's, yeah, it's, it's still get it from its previous state, it just, you know, because of branch out, so you feel, but actually it's the same thing, it's consistent. I mean, it should be no different from AWS step functions for parallel, parallel actions, right? No, yeah, no, no difference. Okay. So, so I think, you know, one, one, so here I mentioned, we need to, and define the, how the filter, really filters the information, right? Anyone would like to give that a shot? That's an open question. Open, I mean, work item. On a hero, back to give it a try to write something up. Okay. Okay, good. Because this is a, you know, document, anyone can add any, I mean, anything reasonable. Yeah. Okay, that's good. Any other questions or comments? So, so my question is to note now hero, is there, is there any, I mean, again, I want to go back to parallel state, is that what you need to achieve, you can't achieve using parallel actions. In your slide, you showed where some event happens, you go to a state, and then you have parallel states, one doing something on Azure, one doing something, I didn't see Google Cloud, but anyway, isn't instead of, go ahead. My question is, instead of introducing parallel state, because my only concern is now one workflow breaks up into multiple different workflows. So my question is, instead of allowing that, can't you, what you want to achieve, can't you achieve that using just parallel action, but within the same workflow? I would say this is, it's not separate workflows. This is, this is managed and executed as a single workflow. I think that's a key thing here. This is, this is not having a parallel state is not a separate workflow. Yeah, that's what we see in something like, I think it's in step functions, they have a parallel state, and that is a single step function, state machine. So it's treated and it's managed as a single entity. It's not a separate managed entity, single managed entity, it's not a separate thing. Although internally, certainly there is concurrency in terms of the parallel execution, it still manages a single entity. Yeah, I think, yeah, I agree. Good, yeah. So maybe, so maybe Nahir, would you like to share your diagram again, so people can understand that you'll taste better? Let me stop sharing, because I think that's important. Otherwise, you know, I'll stop sharing. Okay, if you can share. This might be worthwhile to actually, Nahir has posted that link. It might be worthwhile actually looking through some of his examples. We may not be able to do it right now, but it would be worthwhile having a look and seeing if the proposal that we have right now does address what he has in that Github. Would that be okay? Oh, Nahir, probably you can add your use case to this back, because we have a use case section. Maybe you can edit your use cases there, add this diagram there, so that, you know, we know, okay, there's such a use case, then we can go through the document to see whether it addresses your use case. Is that sounds, does that sound good? Maybe my English is getting a little bit, I just want to, I have a question. If we have, if we have a question. You mean on question? So I think the first question is, you know, to see whether your use case can be addressed without the parallel state or not. He would like to know. Yeah, in this, this is your use case, right? You have some. Yeah, this may or can not be expressed with parallel. If we, if we, if we execute the state using excitation, the graph, graph after me, so we, the last, last value have to be past state of the language. So, here I would suggest that you put your use case, you know, use case and this, I cannot see clearly this diagram, but if you can put your use case and the use case diagram in the, in the section, in the use case section of the document, that will help people, you know, help us to understand your use case and see that we really need a parallel state. Yeah, I can, I feel we need it to, to support those complicated use cases. I think that's a very key, key thing to. Yeah, okay. Okay, sounds good. Okay, any other comments or questions? Let me share my screen again. I think, you know, I would like, you know, so I think, you know, we, we have, you know, in next meeting, if we do not have, you know, a lot of comments, I think I would like to put this into some GitHub, and then, you know, later, you know, people can, you can have, you can pull, you know, new PR, modify it, or, you know, edit more sections. How's that? What do you think? What does everyone think? Pardon? Okay, good. How about other people? If no objection, I think, probably I will leave this for, open for comments for maybe one or two more meetings, and then, you know, it can kind of wrap this document up, and then I put into some GitHub for the workflow, workflow specification document. But of course, if, you know, we have a lot of comments coming in, then we're going to keep evolving this. But again, you know, no matter what, you know, everyone is free, you know, encouraged to modify it, or add new things to, to this spec, to make it more, how to say, make it more flexible and comprehensive, to support all the use cases you have. Yeah. Any other items you would like to discuss? So if not, I think we can end this meeting, and then we're going to continue in next meeting discussion. And then if not many comments, I think we can wrap it up. Okay, I guess, you know, it's all a silence. That's all from my side. If no more comments, I think that's all. Thank you very much, everyone. Thank you. Thank you. Thank you. Bye.