Session Date/Time: 08 Oct 2026 14:00
[00:00:13] Jonathan Rosenberg: Morning, Dan.
[00:00:14] Daniel Petrie: Good morning.
[00:00:23] Chris Wendt: Hey, guys.
[00:00:25] Daniel Petrie: Hi, Chris. Hey, Chris.
[00:00:34] Chris Wendt: Guess we'll get in a minute for...
[00:00:40] Scott Godin: How's life in Ottawa?
[00:00:46] Chris Wendt: Ottawa?
[00:00:50] Scott Godin: Now we're here.
[00:00:51] Chris Wendt: Morning. No.
[00:00:53] Daniel Petrie: Oh, good morning.
[00:00:57] Chris Wendt: I'm outside of Philadelphia.
[00:01:00] Jonathan Rosenberg: Guys able to hear me?
[00:01:01] Daniel Petrie: Yep.
[00:01:02] Speaker 4: Yep. Yep.
[00:01:03] Scott Godin: Hey, Jonathan.
[00:01:04] Daniel Petrie: Hey, Thomas.
[00:01:06] Thomas McCarthy-Howe: Hey, Scott.
[00:01:11] Scott Godin: Looks like a good wine collection back there, Jonathan.
[00:01:14] Thomas McCarthy-Howe: I know. I'm not... I'm trying not to look at
[00:01:16] Speaker 4: it. Yeah.
[00:01:18] Jonathan Rosenberg: You can really call victory bottles. They're like some of my, you you know, know, prizes that I drink. So they're all empty.
[00:01:26] Daniel Petrie: You
[00:01:27] Jonathan Rosenberg: can't quite see the shower, but they're all, like... Oh, there's one I have to show you.
[00:01:32] Daniel Petrie: You know you know it's nice to share, Jonathan.
[00:01:35] Thomas McCarthy-Howe: Yeah. Sharing is caring.
[00:01:39] Jonathan Rosenberg: Alright. So I had to drink this bottle. This liquid's on the label. It turns out this is not a... This is actually a a trophy bottle. I don't... If anyone knows anything about wine, this this is a Oh, yeah. Which is a cult Yes. Syrah style wine from Central Coast Of California. So this is... I drunk this with Cullen Jennings, actually. You know, it seemed like you're the right guy to drink a bottle like this. Yep.
[00:02:14] Chris Wendt: Awesome.
[00:02:16] Daniel Petrie: Are you in in Boston, or where are Yeah.
[00:02:20] Jonathan Rosenberg: Boston today. Yeah. Yeah. I can prove it. So there's a mighty Nice.
[00:02:29] Thomas McCarthy-Howe: Well, I got... Hold on. Let... Let's see. You are in Cambridge?
[00:02:34] Jonathan Rosenberg: Nope. I'm on the Boston side.
[00:02:36] Thomas McCarthy-Howe: Boston side.
[00:02:37] Daniel Petrie: Yeah. And that... That's the Charles.
[00:02:39] Jonathan Rosenberg: Right? Make out the Massap Bridge in the distance, probably.
[00:02:42] Daniel Petrie: Oh,
[00:02:43] Jonathan Rosenberg: yeah. Yeah. Yeah. So... And, like like, Cambridge's.
[00:02:49] Thomas McCarthy-Howe: Sure. I'd say you're fully,
[00:02:51] Jonathan Rosenberg: like right over there.
[00:02:52] Thomas McCarthy-Howe: A thousand smooths away from that. Yeah.
[00:02:56] Jonathan Rosenberg: Yeah. This place is, like, right smack dab in the middle of government center. So
[00:03:00] Thomas McCarthy-Howe: Oh, yeah. Okay. Control.
[00:03:02] Jonathan Rosenberg: Yeah.
[00:03:02] Thomas McCarthy-Howe: Okay. I'm I'm I'm aligned. I get it.
[00:03:04] Jonathan Rosenberg: Yeah. Nice. Yeah.
[00:03:09] Chris Wendt: I'm in Downtown DC today.
[00:03:11] Jonathan Rosenberg: It's a
[00:03:15] Chris Wendt: nice day, though. Beautiful day.
[00:03:17] Thomas McCarthy-Howe: I think it's my least favorite American city.
[00:03:20] Daniel Petrie: Really? Yeah.
[00:03:23] Chris Wendt: It's not Detroit. At at at the moment, maybe.
[00:03:28] Jonathan Rosenberg: Yeah.
[00:03:31] Chris Wendt: I I think it's a beautiful city, like, you know, in terms of the Smithsonians and all that stuff. So I enjoy that part of it. But
[00:03:41] Thomas McCarthy-Howe: It just attracts all the wrong people. Yeah. That's why I don't like it.
[00:03:52] Chris Wendt: Anyway, don't know. Do we have critical mass? Are we waiting for anyone?
[00:03:58] Daniel Petrie: Looked like Jonathan had some... Something he had to attend to, I think.
[00:04:02] Thomas McCarthy-Howe: I think he was listening. I could hear the pop.
[00:04:08] Chris Wendt: Right.
[00:04:09] Daniel Petrie: Right.
[00:04:10] Chris Wendt: Yeah. I think we've had a show and we've had a show and tell every every interim call.
[00:04:18] Thomas McCarthy-Howe: Culture. Culture is so important.
[00:04:20] Daniel Petrie: Yeah. Yep.
[00:04:23] Thomas McCarthy-Howe: And now that now now that I'm an adult, if I had a chance to go back to kindergarten, which I didn't get to go to kindergarten. But if I if I if I did, I would have some really great show and tells now that I know... Just just to scoop what you could have done.
[00:04:38] Jonathan Rosenberg: I I wouldn't pick kindergarten as a starting point. I I certainly think
[00:04:42] Speaker 4: about how you pull
[00:04:42] Jonathan Rosenberg: through over all the time, I'm being much wiser and, you know, think about how stupid you were in high school. I'm almost shocked sometimes.
[00:04:50] Chris Wendt: So... Yep.
[00:04:52] Daniel Petrie: Yep. Alright. Alright. Anybody hear from Hank? I, you know, I pinged him a few times. I I I didn't... You know, and all the emails, addresses that I had, I got no response.
[00:05:06] Chris Wendt: Yeah. He's a hard guy to track down.
[00:05:09] Daniel Petrie: I, you know, I even responded on the... His PR and and and I hope that he would respond, but I nothing.
[00:05:22] Chris Wendt: Alright. Should we call this meeting to order? Sure. Called. I'll just mention that I assume on interims, you do the same that we should note note well. We're a small crowd, so I think we can just have a general conversation as we have. I just wanted to check. There there wasn't any slides submitted. Right?
[00:05:50] Daniel Petrie: I did. I submitted slides.
[00:05:52] Chris Wendt: Oh, did you? Okay. And I need to approve.
[00:05:54] Daniel Petrie: Late last night.
[00:05:55] Chris Wendt: Okay. Apologize. I will quickly approve that.
[00:05:59] Daniel Petrie: I mean, I think we've got at least two agenda items. I don't if there's more of this. You know, one, I wanna talk about the changes that I made and a few issues that came up while I was doing the edits and a few issues that came up when I was doing some examples just kinda working through is exercise... Test exercise. And then we've got the charter, I think, to just... To discuss. I don't know if there's other things. Yep.
[00:06:26] Chris Wendt: Okay. This slide should hopefully be in the queue. Do we wanna talk about that first, I said Which... Or the... Your core document? Or what's the best order to go in here?
[00:06:41] Daniel Petrie: I don't know if we want... I mean, I'll probably consume a lot of time on this. I don't... And, you know, I don't know. Do we wanna do the charter just so that we make sure that we cover it? Yeah. I would take
[00:06:51] Thomas McCarthy-Howe: the charter first. Yeah.
[00:06:52] Jonathan Rosenberg: Did did you submit a revision to the core doc yet, Dan?
[00:06:56] Daniel Petrie: No. I sent the link out. Oh. Oh, shit. You didn't see it?
[00:07:00] Jonathan Rosenberg: No. Hold on.
[00:07:02] Daniel Petrie: Yeah. I sent a link out. I'm sorry. Oh, that's too bad.
[00:07:04] Jonathan Rosenberg: I apologize. I probably missed it.
[00:07:06] Daniel Petrie: Yeah. I sent a link out to the... I I linked to the to the repo, to the editor's copy. Because if there's just a few issues and I, you know, I couldn't get the... I couldn't update the examples yet, and so I didn't feel like it it was at a point where I should submit it. You know, I... The the exact... The reason I didn't do the examples is because they are... They're machine generated, you know, because they're doing
[00:07:30] Jonathan Rosenberg: I'm sorry. Where did you send this? It's not via email. What what what did say
[00:07:33] Daniel Petrie: it was? On the v con... Oh, one... Oh, gosh. Nobody got it. Missed it. I
[00:07:37] Speaker 4: got it. No.
[00:07:37] Chris Wendt: I I I I got it.
[00:07:39] Daniel Petrie: Okay. Yeah. It's... Should be on the list.
[00:07:42] Jonathan Rosenberg: On the on the v con mail? Oh, okay.
[00:07:43] Daniel Petrie: Yeah.
[00:07:44] Speaker 6: Oh, okay. Hold on. Yep.
[00:07:51] Jonathan Rosenberg: WTF, man.
[00:07:52] Thomas McCarthy-Howe: Wow. And I I... And by the way, I almost got the updates to the overview done based on your new draft there. So I'll put those up pretty soon.
[00:08:02] Jonathan Rosenberg: Yeah. I I have I
[00:08:03] Speaker 6: have no mail from you on the mailing list. That's disturbing.
[00:08:10] Chris Wendt: I will... Let me let me set Let me resend it to the list. So... And and I apologize. I didn't put it in the... I didn't send an updated agenda.
[00:08:24] Jonathan Rosenberg: Now look at the list archive.
[00:08:30] Speaker 6: Wow. Well, this is really it.
[00:08:34] Jonathan Rosenberg: No. I I saw you... I'd seen in the mail archive, but it never showed up on my inbox.
[00:08:39] Chris Wendt: Yeah.
[00:08:41] Jonathan Rosenberg: Probably delivery failure. Time and email is getting less and less reliable over time.
[00:08:45] Chris Wendt: K.
[00:08:46] Jonathan Rosenberg: Alright.
[00:08:49] Speaker 6: Okay. I would have looked at it ahead of time. Okay.
[00:08:56] Chris Wendt: Alright. I can share my screen on the Charter if that works. Let me just figure out how to do that. Can you guys see that?
[00:09:24] Thomas McCarthy-Howe: Yep. I
[00:09:25] Daniel Petrie: can see it. I don't know if I can read it.
[00:09:27] Chris Wendt: Yeah. Let me see if I can...
[00:09:29] Daniel Petrie: Let me make my screen bigger here. Oh, yeah. I can read it. I'm good.
[00:09:36] Speaker 4: You're good? Okay. Yeah.
[00:09:41] Jonathan Rosenberg: Okay.
[00:09:43] Chris Wendt: I don't know who wants to talk to it.
[00:09:46] Jonathan Rosenberg: Well, I mean, I I I did it. So, I mean, I don't know. I I think it's pretty self explanatory. Yeah. To be honest Got
[00:09:56] Speaker 6: it. Got
[00:09:57] Jonathan Rosenberg: it. We could do the... You know what would be best? Like, let's do the Amazon thing where, like, everyone turns off their video for one minute, everyone just reads it, and then one minute, we can discuss it. That's my suggestion. So... K. Refresh your number if you have. If you haven't, you gotta read it now.
[00:10:14] Daniel Petrie: It's a
[00:10:15] Chris Wendt: good idea. Okay. So we'll we'll start on this page and give a minute to read.
[00:10:20] Jonathan Rosenberg: Or send send the link out. You can read it on your own. So... Yeah.
[00:10:24] Speaker 4: Yeah.
[00:10:26] Daniel Petrie: Let me pull up the
[00:10:29] Speaker 6: What is that? PR.
[00:10:38] Jonathan Rosenberg: Yeah. I'll put it in the
[00:10:40] Chris Wendt: You you can see my screen. Right? I just wanna make sure.
[00:10:44] Thomas McCarthy-Howe: Yep.
[00:10:44] Daniel Petrie: Yeah.
[00:10:45] Chris Wendt: No. Yeah. Okay. Does anybody... I mean, I think the top part makes sense to me. Any real discussion items there? Anybody have any? I think that's sort of describing the problem statement and adding the AI component to it.
[00:12:24] Thomas McCarthy-Howe: You you know what? I did I did have one, update to the the second part, which I which I should have PR ed, and I did not. And I and I will... And my my comment was
[00:12:38] Chris Wendt: The second part being which one?
[00:12:41] Thomas McCarthy-Howe: Yes. Yeah. Yeah. So my my update to that one was... And I'll bring it up here so I can
[00:12:49] Daniel Petrie: I can
[00:12:50] Thomas McCarthy-Howe: I can speak with some authority on that? Hold on. So where'd you go? No. Where was it? Apologize.
[00:13:34] Chris Wendt: And I think these are extent... Even though the diff doesn't really show it, it is sort of extensions of the existing thing with some clarifications if
[00:13:45] Speaker 4: I'm... Yep.
[00:13:51] Thomas McCarthy-Howe: Yeah. So what I had suggested was on the on the two opposing forces block here was... Oh, just to rename to say... Instead of saying trying to enforce privacy of personal data, my suggestion was respecting and enabling the personal data rights of the subjects in the conversation Because, you know, it... We we came at it with privacy when we first started this, but what we've come to understand is not... Privacy is just one aspect of responsible data handling.
[00:14:29] Jonathan Rosenberg: Right? Totally. Yeah. Like, right to right to get my data, right to ask for deletion, right to know audit. And I I think that that change is great. So I'm I'm all in. Yep. Yep. We, you know, we can Yeah. I don't know if you just wanna literally leave it as a review comment, or we can merge PR, and then you can open
[00:14:48] Thomas McCarthy-Howe: this up. I'll make it a... I'll make the review I'll make the review comment. That's the easiest way.
[00:14:52] Speaker 4: Okay. Yep. Yeah.
[00:14:54] Chris Wendt: I like that change too.
[00:14:56] Thomas McCarthy-Howe: K.
[00:14:57] Chris Wendt: Any other comments at the... In this top section? No. Okay. I think these changes are pretty straightforward. Again, just adding the AI agent thing here.
[00:15:28] Jonathan Rosenberg: Yeah. I think that... That's... This is the main thing. This red line 42 to 45.
[00:15:35] Chris Wendt: Right.
[00:15:49] Daniel Petrie: I'm... You... I I maybe not constrict it to, you know, an extension, you know, extensions.
[00:15:56] Jonathan Rosenberg: Okay. That's good. Yeah.
[00:15:59] Daniel Petrie: I mean, it's a mid. But...
[00:16:00] Jonathan Rosenberg: Yeah. That's a good change.
[00:16:06] Scott Godin: K. Does the term AI have to be defined anywhere?
[00:16:10] Jonathan Rosenberg: God, no. Please let's not do
[00:16:11] Speaker 4: that. This...
[00:16:15] Jonathan Rosenberg: I I would... It doesn't do it with agent proto, and it just... I I don't mind. You
[00:16:24] Scott Godin: sure you're not supposed to call it SI?
[00:16:26] Speaker 4: No. Oh, come on.
[00:16:31] Scott Godin: Sorry.
[00:16:32] Jonathan Rosenberg: I heard that all of it's gonna rename the company to open SI. You know,.
[00:16:42] Daniel Petrie: It's
[00:16:45] Chris Wendt: like re... Renaming the Gulf Of Mexico. Right?
[00:16:49] Jonathan Rosenberg: No. It goes beyond that. That one's even dumb. I'm like, you know, if
[00:16:52] Speaker 4: that's Right. Like
[00:17:01] Jonathan Rosenberg: The only thing I'll note is the keyword is in this thing is exam... Include but are not limited to. So what I didn't wanna do was litigate a full requirement set in the charter, but make enough examples in the charter that it's super clear the kind of stuff we're talking about. So that's why it's... You know, it it... There's not... There are not zero examples. There's quite a few, but it's not exhaustive. I think that's the main... That's another mistake I think you can make with charters is to try and write the spec in the charter. We should not do it.
[00:17:34] Speaker 4: Yep.
[00:17:40] Chris Wendt: Yeah. I agree. I'm not hearing a lot of any... Or sorry. I'm not hearing any pushback on this. No. I'm good. I'm good with agreement.
[00:17:51] Jonathan Rosenberg: It's like a typo in here. Think I duplicated the last sentence by accident, but... Yeah.
[00:17:56] Chris Wendt: It's, like, the last space here too.
[00:17:59] Thomas McCarthy-Howe: Yeah. Okay. So I'm I'm I'm being dense. Where the heck is the charter in GitHub?
[00:18:06] Daniel Petrie: Oh, it's in the core... In the in the... In with the core spec.
[00:18:11] Thomas McCarthy-Howe: It's in with the core spec. Okay. Thank you.
[00:18:13] Jonathan Rosenberg: Yeah. It took me a while, by the way. So...
[00:18:15] Daniel Petrie: Well, there there...
[00:18:16] Jonathan Rosenberg: You have you have cloned or forked this repo from way back when so many times, and it's somehow Three
[00:18:22] Daniel Petrie: or four times.
[00:18:22] Jonathan Rosenberg: It's operated. So... Yeah.
[00:18:24] Daniel Petrie: Yeah. And and it... Then it's possible there's another copy in one of the other forks.
[00:18:29] Jonathan Rosenberg: There is.
[00:18:29] Daniel Petrie: Know, that that... So...
[00:18:31] Jonathan Rosenberg: I I see, like, I see, like, thirty minutes on git lit... Git up lineage on this.
[00:18:36] Daniel Petrie: Yeah. I know. Yeah. I need to
[00:18:39] Chris Wendt: clean up some of the other... Should I create a a separate charter reply, probably?
[00:18:45] Jonathan Rosenberg: No. I don't think it's necessary. I mean, I think this this one seems right. It's...
[00:18:50] Daniel Petrie: Which is the the the current one?
[00:18:53] Jonathan Rosenberg: Yeah. It's under ITF... I guess the user is ITFWGVcon. So someone created a working group user in GitHub, I guess. Chris
[00:19:04] Chris Wendt: did that.
[00:19:04] Jonathan Rosenberg: Yeah.
[00:19:05] Chris Wendt: Well, I... Yeah. I think I forget the exact history there, but, I was involved.
[00:19:12] Jonathan Rosenberg: Do you... Can you... So I obviously can't... I don't know who owns this repo.
[00:19:17] Daniel Petrie: I I
[00:19:17] Jonathan Rosenberg: I log can in to approve it.
[00:19:20] Daniel Petrie: I I I can do that. I don't know. I think Chris probably can as well. But...
[00:19:24] Jonathan Rosenberg: Okay. Yeah. That's a... If you if you, like, lost the password, that's a good reason not to use this.
[00:19:29] Daniel Petrie: Yeah. Yeah. Yeah. Know. This is the active...
[00:19:32] Chris Wendt: No. No. Yeah. Yeah. Yeah.
[00:19:34] Daniel Petrie: And and Yeah. If if you go to the top of this repo, you'll get the, you know, the the the editor's copy that that, you know, I was hoping to discuss today.
[00:19:43] Jonathan Rosenberg: Oh, okay. Great. Okay.
[00:19:50] Speaker 4: Yeah.
[00:19:55] Chris Wendt: Any any other comments there? Or sounds like there's a couple of pull requests that are gonna happen, but, otherwise, do we need to discuss it anymore? I think there was some review offline as well.
[00:20:08] Thomas McCarthy-Howe: Yeah. I I just...
[00:20:09] Daniel Petrie: Well, I
[00:20:10] Speaker 4: can do that.
[00:20:12] Daniel Petrie: Was it was it posted to the list? Oh, I mean, saw Tom.
[00:20:16] Chris Wendt: I probably just... Was there something else?... Did it now. Sorry?
[00:20:22] Thomas McCarthy-Howe: Yep. That that... I just add... Added my comment there.
[00:20:26] Chris Wendt: Yeah. Just now, I think.
[00:20:28] Speaker 4: Yep.
[00:20:35] Chris Wendt: Okay. Yeah.
[00:20:40] Daniel Petrie: So what's what's the process now? You know, we we accept this PR and then we discuss this at the work group again?
[00:20:48] Chris Wendt: Or I can... Do we wanna... Yeah. I need to I need to consult with Charles on taking this forward. But do we think we're ready, or should we give it a...
[00:21:01] Daniel Petrie: I I just... I I I think there's probably not
[00:21:03] Chris Wendt: enough. Or...
[00:21:04] Daniel Petrie: I think, know, the work group hasn't had enough, you know, comments yet for us to say, you know, you know, to ask for a a vote on approval or something like that. I think it's probably worth discussing that at, you know, in San Francisco. But, I mean, I'm I'm all for it.
[00:21:23] Chris Wendt: Yeah. And and I'll I'll just work with Charles to make sure I understand the process and all that stuff as well. So
[00:21:32] Jonathan Rosenberg: I I I would strongly suggest we we parallelize the... I don't necessarily wanna, like, wait till November before we even submit the charter, but I would re... The recharted, but I would ask Charles what he thinks we should do. I I do think we should merge this PR. We should get Thomas PR and then one other bug fix. So get a clean draft charter in the repo, and then we can post that and then say, hey. You know, this this had some review and and discussion amongst these people here, and now we're looking for input from the broader group. Anyone have comments? We can put that on the list, like, today or whatever.
[00:22:07] Daniel Petrie: Because I I can merge it right now if you want me Let's
[00:22:10] Jonathan Rosenberg: do it. Let's do it. I mean, like, we're all here, man. I I love meetings like this where it's like a small number of people can actually get shit done.
[00:22:17] Chris Wendt: Okay. I'm okay with it. I mean, we can certainly merge it. We're all
[00:22:23] Daniel Petrie: Where are you? Wait here.
[00:22:26] Chris Wendt: I lost my place.
[00:22:35] Jonathan Rosenberg: Why the hell can I?
[00:22:36] Daniel Petrie: Oh, I... Do I have to approve it? Why can't I just merge here? Yeah. I'll I'll do that offline. Sorry. I'll do that right after the meeting. Right? It won't take up time here.
[00:22:47] Chris Wendt: Was it... So is anybody else planning on doing more pull requests? I I think...
[00:22:52] Jonathan Rosenberg: Yeah. But it sounds like Thomas
[00:22:54] Daniel Petrie: Thomas had
[00:22:55] Jonathan Rosenberg: a change he wanted to make on the team.
[00:22:58] Chris Wendt: I think I heard I heard you say you had some minor edits.
[00:23:02] Jonathan Rosenberg: Yeah. There's a there's a typo in the in the Yeah. In it too. And just... It it has... It duplicates the last sentence as duplicate.
[00:23:11] Daniel Petrie: So do you wanna do you wanna correct your PR, or do you wanna just, you know, what... No.
[00:23:15] Jonathan Rosenberg: I'll just I'll just...
[00:23:17] Daniel Petrie: I'll just...... Another one.
[00:23:18] Jonathan Rosenberg: Just another PR on top of the merge. Okay. Yeah. Alright.
[00:23:21] Chris Wendt: Why why don't you guys do that, and then we'll we'll make sure to merge the PRs, whether it's Dan or me either way after the meeting, and then we can announce that on the list that that's the new version out of this meeting. And then, you know, we can have any further discussion. But in parallel, I'll I'll start to reach out to Charles as well. Is that a good plan?
[00:23:44] Daniel Petrie: Okay. Because I think
[00:23:45] Jonathan Rosenberg: it's easier just to merge what's there now, and then I'll do my next PR against me.
[00:23:49] Daniel Petrie: Yeah. I'll I'll send out email. It's been merged and and...
[00:23:52] Jonathan Rosenberg: Sounds good.
[00:23:54] Chris Wendt: Alright. Why don't we move on? So what do we wanna talk about next? Dan, yours? Or... I don't know. I I don't know if it makes sense to talk about yours, Jonathan, the the new draft that you created. Which order do... Should we go on?
[00:24:12] Daniel Petrie: Oh, the redaction stuff? Is that what you're talking about?
[00:24:15] Jonathan Rosenberg: The redaction stuff. Right.
[00:24:16] Daniel Petrie: I... To be... I didn't get a chance to look at that yet. So I'm
[00:24:20] Speaker 6: Okay.
[00:24:21] Daniel Petrie: A little little naive on that.
[00:24:26] Jonathan Rosenberg: Okay. I can... It might be worth... Without having read the document, I can, like, scroll through it in, like, five minutes. You... It can completely explain, and you will understand what's in it. So I can do that if you want. I don't think it necessarily affects the baseline spec. Well, in a fundamental way, but, I mean, it would be... There is some proposed enhancements
[00:24:46] Daniel Petrie: to it.
[00:24:47] Jonathan Rosenberg: I do... I don't know. I... We could do it in either order.
[00:24:49] Daniel Petrie: Do you
[00:24:49] Chris Wendt: do wanna give the five minutes spiel?
[00:24:52] Jonathan Rosenberg: Yeah. Let's do that now.
[00:24:52] Chris Wendt: We can just focus for the rest of the meeting on the core spec.
[00:24:56] Daniel Petrie: Yeah. Let's
[00:24:56] Chris Wendt: do that. Okay. Sure.
[00:25:10] Jonathan Rosenberg: Alright. Here we go. So request screen share.
[00:25:22] Chris Wendt: Oops. Sorry. I need to approve it.
[00:25:27] Speaker 4: K.
[00:25:33] Jonathan Rosenberg: Okay. So what it does is it... So if it talks about what's in there now, okay, which is largely... There's a redacted object, and it's a reference to the prior thing, and you can remove stuff. It then... What I mostly have here is sort of a framework for thinking about where the different properties one might want in redaction. You know? And, you know, you could... Redaction, you can either indicate that there's a redaction or not. Okay? If you want automated processing, for example, to understand whether something had had redaction in it, it's useful to have some kind of indicator that there was redaction. Might wanna have... Even when you redact content, you might wanna have positioning and participant indicators, especially meaning where was the content redacted from and who's... Who uttered the content that was redacted. Another interesting property of redaction is it can be detectable or undetectable. Right? For audio video content, undetectable means you, like, replace it you replace it with something that is valid but not correct. Easy with text. So you could replace a Social Security number with a fake Social Security number. And it's also important to note that there's a a related cousin. This is just thinking about the universal reduction concepts here, right, of reaction called information tagging. In information tagging, you would identify a PCPII in a document, let's say a name. So Dan Petrie is in the document. It would tag a chat session or a tool call where it says Dan Petrie. It's, oh, oh, that's PII, and it's of type username. Why would you do that? Again, I've seen this use case. We... Actually, we have implemented this, in fact, where we wanna have, like, the normal context, and our agent can't see this if they were to just browse the transcript after the call, but the QM team or manager can. So we have... We embed data there along with permission to sort of allow for control over visibility of the content. So that's, like, not exactly redaction, but it's still... It it tags the data. So then I talked about what's the universe of of things you might wanna do in a Vcon to accomplish redaction. And I was able to list a bunch of stuff that's in there that you can do today and a bunch you cannot do. You can fully remove a dialogue object. Just, like, literally excise it from the document. And it it sometimes works, but it's sometimes weird. So for example, let's say, you know, I give an example, AI agent says, what's the Social Security number? User spoke... Speaks it, and then the agent says, got it. Thanks. If you literally remove the entire dialogue object, someone listening to the the recording hears this weird thing, then there was, like, a a hole in in the audio. There may be a hole. Actually, depends on the thing. If it's a meeting like this, and right now, Thomas went off mute and spoke a Social Security number and then went on mute, we could remove his dialogue object if we had per speaker tracks in in the Vcon, and we would not notice that he had spoken it. But in the context center use case, it would be noticeable. I think the thing you guys think is the right way is is... Or the current way really is that you just remove the content from the dialogue object, but but leave the dialogue object. And there... And that's that's good. So that works today. You can do dialogue object content substitution, so you replace it with something else. And so that's something you can do. However, there's no indication that that substitution has happened. And the and the use case that I was particularly interested in is the beep. So let's say the user speaks for three minutes, and I have an example in here, and for time stamp one minute twenty to one minute twenty five in that three minute recording, they spoke their Social Security number. We'd like to do some processing where we just beep out the moments where they spoke to Social Security number and substitute the content of the dialogue object with a new recording that's still that three minute thing, but just that five seconds now has a beep in it. That works except we've had information loss. There's no way for an automata to process the VCon and know that those five seconds were redacted. You'd have to, like Mhmm. Listen to the audio and know it's a beep or standardize on a beep frequency, and it's kinda silly. Like, there there... So there's sort of a a missing here... Thing here, and this gets back to what kind of data you might wanna convey is positional or participant indicators that indicate that there has been some kind of audio visual substitution without requiring parsing of the actual content. So that's one of the gaps I found in the specification. Not the biggest gap. Well, the biggest gap I found was this one in redaction of text. And, again, this is this is is a lot of this from my experience messing around with this with our AI agents at beat... At Five nine, and it's worried about this problem. So the obvious thing people do in text is you do character substitution. So you can replace, you know, x x x and or the words redacted with it. It's easy. It's detectable. However, it's it's sort of like... It's a convention based thing, and it can actually lead to false positives. So, like, as an example, like, you know, what if you had a conversation like this? Right? Which if you... This is chat now. Right? Like, what's your confirmation code? It's XXX. Let me look it up. Well, is XX... Was it... Did we redact the confirmation code, or is this confirmation code actually XXX? Yeah.
[00:31:16] Daniel Petrie: Mhmm.
[00:31:16] Jonathan Rosenberg: I don't know. Now maybe you say that's contrived, but I'll give you a not so contrived. Here's a transcript of a spoken audio where the user spoke a confirmation code in segments that has letters and numbers in it. Good luck on this one, by the way. Now why does it matter? And I and I do assert it matters to know that there was, in fact, a redaction here because of troubleshooting model training. Like, again, I think a lot about, like, when we were building AI agents at Five nine, super... We... We'd have people go look at these conversations, especially during implementation's life cycle, make sure something's working. How do we know that reaction is functioning properly? How do we know that this call worked? If this if this call had a problem and someone later on went and reviewed it, they wanna know was the problem that the machine didn't understand what the user spoke or that the... That they spoke the wrong information. Like, there's all kinds of troubleshooting capabilities lost when you would at least... When you have no way of knowing even what happened in this thing. So I do think you wanna know when it was redacted versus not. So...
[00:32:20] Daniel Petrie: Yeah. We we do that in in the redaction that we do is, you know, basically, the... A token goes in there. It's curly curly bracket, you know, name, curly curly... Yeah. And close curly bracket.
[00:32:30] Speaker 4: But, you
[00:32:30] Daniel Petrie: know, there's no spec on that. Right? Is... You know, there's no...
[00:32:32] Jonathan Rosenberg: Exactly. So so so what I'm suggesting for, you know, for Vcon enhancement is for the audio visual, a positional and reduction indicator that says, hey. This audio content has been redacted from this timestamp to this timestamp. There you go. That's... That would be an easy extension. And then for text redaction, know, you the the use case I was interested in is... And and being able to do it in tool calls. This is this is a specific thing that came up, on the audit list is like, hey. You can't do this. So let... Let's say in the future, we, you know, we merge Hank's draft. We vconify it. Right? I I would imagine we'll have something that looks like this. So there's an event. It's a type tool call. It was closed account by ID, and the account ID was provided, and there it is. Okay? So we wanna redact this guy here. So what I'm proposing is something like that where there's a, you know, a general... A well known standardized flag like this. And then, again, to avoid the false positives on any flag, you include a, like, a dictionary for each redacted thing. You you, you know, say, here's the here's the redaction indicator, and here's some metadata on the reaction. In this case, maybe there's type information included. And the the the interesting part is by adding this extra thing somewhere in the VCOM, we can figure out where it goes. If if someone actually typed in underscore underscore redacted underscore rep underscore zero zero one is a is a chat message, it would it would not trigger false alarm because you would... This this would not have been present. Mhmm. So it completely eliminates false positives and allows you to accommodate metadata. It also solves for my data tagging. So let's say I want to include the redacted version. Know, You say it was redacted, but also include 29, you know, the original account number. You could add a optional field call original value colon 293827344 so that the the original value is retained, and that becomes an option to someone producing the speed cut if you wanna produce them in that format. So so that's basically, you know, what I'm proposing here is is it... And and that's it. So that's that's the two extensions that...
[00:35:00] Daniel Petrie: So that works for text. What about audio and video?
[00:35:04] Jonathan Rosenberg: So audio and video is the thing I just described, which is the... Oh, you mean, like, include a
[00:35:09] Daniel Petrie: Oh, yeah. Put it.
[00:35:10] Jonathan Rosenberg: So if I did beep...
[00:35:12] Daniel Petrie: Yeah.
[00:35:12] Jonathan Rosenberg: Yeah. Yeah. Yeah. Would work for that too. Great point. So, basically, you'd you'd have the positional indicator indicating the time stamp range and the content where the redaction was. You'd include the redacted name. Say... Or the the... You'd say, you know, redacted reference equal... The redacted reference is underscore underscore redacted rep 002, and then that would include the... You know, the... An audio segment of the original audio. Now I had assumed in this case, there will be a transcript, and the transcript would have the text reaction. And if you wanna include the original value, you can include the original value in the text reaction. Could also do that. But we can have original audio content too this way if you
[00:35:50] Speaker 4: want to do that.
[00:35:50] Jonathan Rosenberg: Sure. So, yeah, that's the proposal. Yeah. I think it's important... And it's important property of this approach is it works independent of the schema. So no matter what kind of extension we have Yeah. We don't have... You know, it doesn't matter. Anywhere anywhere, you kinda Yeah. Like substitution, and all we have to do is find this welcome prefix.
[00:36:13] Daniel Petrie: And... That's kinda why why I didn't tackle it at all because I just felt like that, you know, there's so many schemas. How are we gonna do this all?
[00:36:19] Jonathan Rosenberg: But this
[00:36:19] Speaker 4: is great.
[00:36:20] Jonathan Rosenberg: Yeah. Yeah. Yeah. And I'm gonna I'm gonna credit Claude, actually. I I hadn't quite thought about this. I I asked it for... It didn't write this document. I'm still writing the document, but I did ask it for options on how to do this in in case something... It suggested this. Oh, that's good.
[00:36:37] Thomas McCarthy-Howe: Okay. Yeah. I think it's also pretty elegant for internationalization. I mean, it also doesn't... If you think about, you know, set... Separate languages and and how you would have to relate this, I think that's actually why it's over the
[00:36:51] Jonathan Rosenberg: Oh, that's true too. So the the... I I commented in the document, if you use the words redacted, literally,
[00:36:56] Thomas McCarthy-Howe: Yeah.
[00:36:57] Jonathan Rosenberg: You know, it it it... It's sort of weird in my view to have an English specific token as it was a programmatic token and just make it entirely programmatic. Yeah.
[00:37:07] Thomas McCarthy-Howe: And it probably has some, like, hidden meaning in French, like, vida, which is something probably naughty.
[00:37:13] Speaker 6: You know? Right. Exactly. Yeah.
[00:37:14] Jonathan Rosenberg: Yeah. So if it was accidentally written, it would be bad. You know? Okay. Awesome.
[00:37:24] Chris Wendt: Thank you, Jonathan.
[00:37:25] Daniel Petrie: No. That's great.
[00:37:26] Jonathan Rosenberg: Move over to... So what's the next step on this? I mean, I think the question is Yeah. This could potentially be done as an extension to vcon for redaction, or it could be folded into the core spec.
[00:37:43] Thomas McCarthy-Howe: Yeah. You know, I I would actually be a be a... In favor of core
[00:37:47] Chris Wendt: for this one. Yeah.
[00:37:50] Thomas McCarthy-Howe: Because you have the issue of... You know, you've got extensions now, wagging extensions.
[00:37:59] Jonathan Rosenberg: Yeah.
[00:38:00] Chris Wendt: And isn't there already mentions of redactions and things?
[00:38:04] Thomas McCarthy-Howe: Well, yeah, when there was... Well, originally, we we disclaimed redactions. That was out of the charter explicitly when we first started.
[00:38:14] Chris Wendt: Oh, okay.
[00:38:18] Daniel Petrie: I I could go either way. I mean, the only reason I would say make it an extension is if we can accelerate, you know, the the core. But I think, you know, the core is now... With, you know, with the changes we... I just made, we're a good six months from being ready for work group last call, I think. Just not not so much that the document is initially not necessarily stable. I mean, I think I I I think I could probably got a pretty... You know, it did a pretty good job on this on this pass, but it's all untested now. I mean, there's so many changes that, like, I I think the transfer works now with the... With all the changes and stuff, but I I have... Until I implement it and and try it, I I just... I'm not confident to say it's ready for work group last call.
[00:39:03] Chris Wendt: That's good. Oh, can I ask what the recharter does? How does that impact the core document at all?
[00:39:09] Jonathan Rosenberg: I I was careful on this, Chris. I I left the original deliverable there in the charter. It's still... We haven't finished it yet. So it says we have two deliverables, the original course that kind of extension for AI.
[00:39:22] Chris Wendt: Yeah. Or or or should it impact or not, I guess, maybe...
[00:39:25] Daniel Petrie: I I think it it does impact at... In the sense of I, you know, I included, you know, a text description of the of the example for AI. And I think, you know, I I think it's worth testing that at least, you know, manually that it works. And I I did a little bit of a, you know, a little exercise on that that I can I can show you what I did today or whatever on that? But but, you know, it was very simple test. But but I think these are things worth at least. I mean, this is why we did this, you know, the structure change. Right? Part of the reason why we did this structure change.
[00:40:01] Chris Wendt: I mean, my my my comment would be, like, because of the privacy stuff that we talked about, like, reductions is obviously a pretty important part of that. So maybe that should be more part of the core part of the spec, but just trying to think a little bigger picture there.
[00:40:18] Daniel Petrie: Yeah.
[00:40:19] Jonathan Rosenberg: Yeah. I mean, I I I think it belongs in the core spec. Again, you know, so I I don't... I haven't heard any dissent, actually. So I don't think Thomas thought so they have to go either way, but probably core. You know, I I I I know, Dan, you sort of wanna be done with it, but, like, I'd I'd rather I'd rather No. No. See success than be done six...
[00:40:40] Daniel Petrie: No. I'm... And I I think, you know, it's not gonna be... Like I said, it... I... We're six months from work at blast....
[00:40:44] Jonathan Rosenberg: Talking. Yeah. Right.
[00:40:46] Daniel Petrie: So I've I've already given that up. Yeah. We we bit the bullet on this on this this edit here.
[00:40:53] Chris Wendt: If we if we wanna make Vicon sort of a core pillar of this stuff, we should make sure we do it right.
[00:40:59] Jonathan Rosenberg: Yeah. Correct. Yeah.
[00:41:02] Daniel Petrie: Yeah. Yep.
[00:41:04] Chris Wendt: Alright. Good good conversation. Can you... I I don't know if I can take over the screen. It doesn't... I mean, I don't
[00:41:14] Daniel Petrie: I don't think I don't think this is a big change to the draft. Like, it doesn't have a big structural impact. Right? It's... I think it's, you know, it's it's fairly... Yeah.
[00:41:21] Jonathan Rosenberg: It's very stand alone. That's why I like Dan. Yeah. I'm gonna volunteer again and you may or may not reject it.
[00:41:27] Daniel Petrie: Yeah. No. You're... I'm happy to do a PR on this. I just didn't want this one big massive PR. Because it's... To me, that's... I I freaking hate big PRs. Right? Because they're, you know, they're a pain in the ass to edit and, you know, there's always something that you wanna... You do and then, and you so, you know, me a dozen PRs as opposed to one big one and I'm I'm happy. Okay. I mean, this obviously is not gonna be just, you know, a dozen PRs.
[00:41:52] Jonathan Rosenberg: But No. No. What what what I can do is this. Here's... Like, I'll... I think this is structured as a stand alone section in the document on redaction that that goes... I'll I'll condense much of what was in my standalone draft to a more simplified thing. There is this this... I think it's a... Maybe it's a top a top level
[00:42:15] Daniel Petrie: Yeah. I item. Yeah. I think... Like, everything else references the Right.
[00:42:20] Jonathan Rosenberg: Thing it talks to you and, you know, about it, so I'll define that just in that section as well. And then there's probably just small changes to the rest of the document wherever the word redox... You know, and that's it. So it's it's probably largely one section. It's a big section. It'll be a couple page, but I'll do it that. If you're good with that
[00:42:41] Speaker 4: Yeah. Yeah.
[00:42:42] Jonathan Rosenberg: Once you once you
[00:42:43] Daniel Petrie: Now that's easy that's easy to merge in. Right? I'm...
[00:42:46] Jonathan Rosenberg: I'm done. I I will do that. I will do that, and I'll wait till we merge the massive refactor on the core PR, though. Okay?
[00:42:54] Speaker 4: Yeah.
[00:42:55] Jonathan Rosenberg: Okay. Sounds good. Alright. Awesome. Excellent. We have a plan. Yep. Alright.
[00:43:04] Chris Wendt: Yes. Thank you for going through
[00:43:06] Daniel Petrie: So I... I'm sorry. Just to back up on that, I I want... Just to to be clear. So we're... We're going to merge this in before the o five submit? Right now, we're on o four plus edit, you know, the editor's copy. So do you wanna... Do we merge this in before o five or after o five? I would just...... Separate?
[00:43:28] Jonathan Rosenberg: No. Well, I don't really care.
[00:43:31] Daniel Petrie: Might be easier to review for people. I don't know. That's the only thing I can...
[00:43:34] Chris Wendt: Oh, we're...
[00:43:35] Jonathan Rosenberg: Rather than two big reviews, I think it's easier to do the big... Big, I'll do all of Now I do think the editor's copy should have your charges merged first. I'll do the diff against that. And then
[00:43:47] Daniel Petrie: They're already merged. I I
[00:43:48] Jonathan Rosenberg: Oh, they're already merged. Okay. Good. Perfect. Then I... Then unless there's big changes discussed here, I will basically just write up here against that. And the... And this is against the repo. I I think you're using that same recon... V... Yeah.
[00:44:03] Daniel Petrie: Same same repo as the as the Charter that you had... That you did the PR for.
[00:44:07] Jonathan Rosenberg: Got it. You got it.
[00:44:09] Chris Wendt: So we are we are... What is it? Two weeks away, three weeks away from the Good. Deadline for submission. Yeah. Yeah. So we should... Can we target? Is that too quick? Or...
[00:44:24] Daniel Petrie: No. No. I think it's... I I I mean, I have... There's some edits that that I did, you know, you know, one I'd like some feedback on it. I had, you know, four or five issues that came up that I I wanted to, you know Okay. Socialize and and get some input on. They're they're small issues. They're not, you know, any... You know, I'm happy submitting without those results. Totally. And then So you'll
[00:44:46] Chris Wendt: So you'll fix, finish up the stuff that you're doing. You'll include Jonathan's PR and submit it as the o five is what you're saying. Yeah. Okay.
[00:44:56] Speaker 4: Yeah. Got it. Good. And
[00:44:58] Chris Wendt: then we can talk about it in San Francisco.
[00:45:01] Jonathan Rosenberg: Yeah. And if there's no problem with respect to to... I'll have the PR submitted, like, early next week, maybe even before.
[00:45:08] Daniel Petrie: Just... You know, does it make sense? Because, you know, like, Jonathan and I... And I don't know. I... I'm sorry. I'll... You know, guys only got about thirty six hours to review this, and, Jonathan, you didn't get a chance to review it all. Does it make sense, again, for us to get together in two weeks after you've had a chance to digest this and have one more meeting like this to to discuss stuff? Or...
[00:45:29] Jonathan Rosenberg: I think we should cover open issues from your... Like, we're all here. Let's use the time.
[00:45:35] Daniel Petrie: Yeah. Yeah. No. No. I'm not saying that. I'm just saying, do we need another iteration?
[00:45:39] Jonathan Rosenberg: I think it's probably this. These have been extremely useful. We're gonna have...
[00:45:43] Daniel Petrie: I I... They error for me.
[00:45:44] Jonathan Rosenberg: Yeah. Yeah. So let's... Sure. So let's do another one. And
[00:45:49] Daniel Petrie: then we'll submit after that after that. Let
[00:45:52] Jonathan Rosenberg: me go... What's the... I'll check.
[00:45:56] Chris Wendt: Yeah. I meant to check that.
[00:45:59] Jonathan Rosenberg: What is two weeks?
[00:46:03] Chris Wendt: The IATF that... Well, I don't know which What's the date? Forget which week
[00:46:09] Jonathan Rosenberg: is it. I... The submission deadline for
[00:46:12] Speaker 6: Yeah. Let me '7.
[00:46:15] Daniel Petrie: Where's my calendar?
[00:46:20] Chris Wendt: It would probably be the second, I would assume.
[00:46:22] Jonathan Rosenberg: Okay. It is the November 2. Yeah. So about three weeks from now.
[00:46:28] Speaker 4: Yeah. It's okay. Yeah.
[00:46:29] Daniel Petrie: So two week... If we did it... Another meeting in two weeks, it's the October 22. Is that right?
[00:46:36] Jonathan Rosenberg: Let's see.
[00:46:37] Chris Wendt: Yeah. Since we're talking about it, let's settle on that. Yeah. It would be... If if everybody's good with this time, let's do the twenty second.
[00:46:44] Daniel Petrie: It's actually...
[00:46:44] Chris Wendt: Ten to twelve eastern.
[00:46:46] Daniel Petrie: And... Okay.
[00:46:48] Chris Wendt: I'll schedule that.
[00:46:49] Daniel Petrie: Ideal time for me.
[00:46:53] Speaker 6: Can... Yeah. Okay.
[00:46:58] Daniel Petrie: I mean, I... I'm flexible on the time, but, you know, in that... Anytime that week, I think, really works for me. But I think we have to do at least least two weeks.
[00:47:06] Jonathan Rosenberg: Hold on
[00:47:07] Daniel Petrie: a second.
[00:47:07] Jonathan Rosenberg: I I have something that evening, but... Or that that afternoon, let me go find out exactly when it is. I just gotta try... I gotta try before it.
[00:47:19] Chris Wendt: Mhmm. Let
[00:47:24] Speaker 6: me get my... I think it's okay.
[00:47:29] Jonathan Rosenberg: Okay. Yeah. Yeah. I I can I I can do it?
[00:47:33] Chris Wendt: Alright. I'll schedule that.
[00:47:39] Jonathan Rosenberg: Actually, going to a wine convention.
[00:47:43] Daniel Petrie: You want... Don't wanna miss that.
[00:47:51] Jonathan Rosenberg: Three days of drinking wine. It's actually... Like, it takes some... Well, takes a lot of spitting, actually. Was like
[00:47:57] Daniel Petrie: Okay. To make it through the week.
[00:48:01] Jonathan Rosenberg: Yeah. I mean, we just started 9AM at this thing. Like, 9AM on Friday. There's stuff Thursday, but it doesn't start till the evening, so we're fine. So, like, at 9AM, you you do not wanna be, like, pounding my mind. They decide, you know.
[00:48:15] Thomas McCarthy-Howe: Yes.
[00:48:15] Jonathan Rosenberg: Alright. So we said that the twenty second.
[00:48:19] Chris Wendt: Twenty second, ten to two eastern. Yes. Alright. Dan, do you wanna...
[00:48:31] Daniel Petrie: Yeah. Do you have slides, or do you want me to present to...
[00:48:34] Chris Wendt: Do you see them? Hopefully, you see them.
[00:48:36] Daniel Petrie: Oh, sorry. I was I was navigating my calendar here. Yeah. Alright. So I wanted to go through... I mean... And this is a huge, you know, hugely condensed summary of edits because there was a lot of lot of editing that... And iterations that I went through on on on the on the edits on this thing. But so... But I... So I have a list of changes. You know, I'll I'll run through that. A few open issues that came through... Came up to as I was editing things is like, you know, I was... Things that I was questioning a little bit or or I wanted to, you know, identify or whatever and and make... Have folks be aware of. And then I have... Oh, I I... Unfortunately, I I didn't update this this slide. But I I have two examples that I that I walked through just manually to to try to, you know, kind of test the, you know, the current spec. And one was, you know, with, you know, human AI agent and in tool conversation. Another one, I took the the, you know, the the agent coaching where the supervisors are... It talks to... Speaks to the agent, but the customer doesn't hear the the the supervisor. I took that as as a test case as well. And then, anyway, then I can I can show you what what would have been done there? But next slide. Or do I have ability to to do this now?
[00:50:01] Chris Wendt: I I I can change it or I can hand it over either.
[00:50:06] Daniel Petrie: So, obviously, I I defined a session object at the top level and session arrays or session array. I move the originator from dialogue to session because that's where it makes sense. It no longer makes sense when dialogue... If dialogue is who's contributing, originator is not really relevant in that case. It's it's a session concept.
[00:50:30] Jonathan Rosenberg: Did did you rename it in this process, Dan, or did you still call originator?
[00:50:33] Daniel Petrie: It's still originator. Okay. Oh, we can we can change that name.
[00:50:38] Jonathan Rosenberg: Don't because it does the name...
[00:50:39] Daniel Petrie: Does it... And don't take any of the names in here as as set in stone. I'm not... I'm, you know, I'm flexible on names. Right?
[00:50:46] Jonathan Rosenberg: Well, that's why I'm giving you... I mean, do... I'm giving you a few commentary now for as a... If everyone agrees, we just... Let's mark it as a, like, okay, you know, rename it to...
[00:50:55] Daniel Petrie: What would you like to call it? Participant? Well, it's not a participant. Right? It's the it's the person who initiated... Or maybe it's initiator. I don't I
[00:51:05] Jonathan Rosenberg: don't know. It's the person who started
[00:51:09] Daniel Petrie: the call.
[00:51:09] Jonathan Rosenberg: Okay. No. That is fine. Okay. Sorry. I I thought we're talking about the list of people who were in the...
[00:51:13] Daniel Petrie: No. No. No. It's still... It's parties. Parties are the... Anybody who's...
[00:51:17] Jonathan Rosenberg: Are are on the... Commoditron. Commoditron. Sorry for the confusion.
[00:51:22] Daniel Petrie: I moved and renamed party history events to the top level now with their events. Right? I mean, they were events before, but now with... It's a top level, you know you know, removed from dialogue and now it's it's standalone own object. So we have an events array at the top level. I added session references all over the places where it made sense Because now, we have those. I removed the recording set concept that went away because it's what, you know, we created the the session object to to kinda do a large portion of what the recording set was supposed to do. I removed the transfer type dialogue object as well and created four different events. So a consultation when when a call is started is the is the beginning of a consultative transfer. And these these are events, event types. A blind transfer, when we go from a call to, you know, to... Into a a transfer with no consultation. A consultative transfer, when the consultation ends and the exit transfer is is initiated. And then a... Oh, I gotta type by there. Sorry. Transfer abandoned. When the transfer doesn't actually get completed in either the blind or the consultant case. And it starts it... It gets initiated, but it it didn't... That's different from the transfer failed because they typed the wrong number or whatever. That turns into a new dialogue in the in the failure cases, it turns into a new dialogue. And, the dialogue is a incomplete dialogue. We still have that incomplete type of dialogue. And so, know the transfer failed because we've got a a it points you know the transfer either the blind or the consultant transfer points at a dialogue that... I'm sorry, at a session. It's the session that contains the dialogue that has a that it has the dialogue which is a incomplete dialogue. There's a table, I put a table all the fail you know the kind of cases I could think of for transfer you know failing succeeding and whatever. There's a table in the in the draft that I think lays this out pretty good. So I think I I think I thought that out pretty well. And maybe I missed something, but but I think that's... I did it. That's pretty solid. What's not solid with transfer is like all the other relationships and things like that, because I haven't gone through the exercise. I I didn't have time. That was... That's the next example that I wanna manually go through and and layout and test the the current spec with with, you know, you know, actually, you know, generating, you know, kinda hand generated lead time to just prove that all the relationships are there and and and that kind of stuff. So...
[00:54:19] Jonathan Rosenberg: Dan, one of the other use cases that can come out of a transfer is it's a conference at the end. You can... I don't... You can either do that as a separate event, or you can have consultative transfer have a boolean that indicates the result after the transfer was a conference and not a
[00:54:38] Daniel Petrie: kind of... Don't... I think you know that if you transfer to a session that has multiple parties and Right. And and dialogues. I'm sure. I... Have a look. I I I think...
[00:54:54] Jonathan Rosenberg: I'll I'll I'll look. It might be Yeah. More explicit...
[00:54:57] Daniel Petrie: You know, I mean, I I didn't... You know, I mean, there's there's a lot of stuff to think through with transfer. So it's... And, know, even if I, you know, I I say I think it's good now, I I... You know, that's, you know, that's one of the things that I'm, like, I'm uncomfortable. It's like, you know, we're nowhere near ready to work with last call because this stuff's gotta be tested. I mean, I need to implement this and
[00:55:16] Speaker 4: Yeah.
[00:55:16] Daniel Petrie: And verify before I'm comfortable with it.
[00:55:18] Speaker 6: It. Alright. Sounds good.
[00:55:21] Daniel Petrie: So... Yeah. Maybe it's is, maybe it is now. We'll we'll see whatever. I I merged Hank's CDDL that he added. It was not quite right, but it introduced a very interesting concept, which I I was unaware of is this concept of sockets in CDDL. And so the sockets give you these extension points. Places where, you know, if you have an enumeration that has a fixed set of values, or if you have an object that has some, you know, currently defined set of of parameters, you put a socket there and then the extensions can can define new values for those. So that was... It was... I I never heard of sockets, didn't know anything about it. Hey, did a partial thing. It wasn't quite right. He had... He was reusing some of the sockets in multiple places, which means if, you know, if you extended a socket, you you ended up with a parameter in two places there, you know, more than one place that you didn't want it. So I I went through and I took Hank's PR, and I put unique sockets in all of the objects, top level and and through... I I I... Couple objects I didn't. And so that's maybe up for review of whether we're like
[00:56:32] Jonathan Rosenberg: I I didn't... I was unaware of this. I don't know much about CDDL.
[00:56:36] Daniel Petrie: Yeah. I didn't get in there.
[00:56:37] Jonathan Rosenberg: I do. This strikes me as a bug and not a feature. Like, one of things I like about JSON is, like, that by default, this... Almost every, you know, everything is extensible. Here, you have to make it explicit. So my my strong recommendation is everything has a socket. Like, don't... I
[00:56:53] Daniel Petrie: I I... Okay. Yeah. So there were one or two objects I didn't think that needed it, but maybe, you know, they they they should all have it. But... Yeah. And that's... I mean, that's another comment I have is, know, you look further down here is... At least I thought I put it in here. Is this not... Oh, you know, I think Oh no, it's in the issues. I will get that later but the issue I put is that the JSON schema is open and tolerant of changes. The CDDL is very restrictive. Right? You know, that's the two different since. So that's a issue for discussion at some point whatever. But... Yeah. So I I I... So I did some fixes. There were a couple other things that I thought that Hank had identified some issues that actually, you know, that I... When I looked at them, they actually unraveled a few more issues. And and so there's some other... With some other corrections related to Jose forms of of Vicon that I that I did some iterations on both the text in the... About those those formats and the... That... And the and the CDL is touched as well. And then I, you know, so I did that first. I did just the correction to what Hank did with with, you know, the additional sockets. And then I did another modification on top of that to update, you know you know, so I I corrected it for the o four draft schema. And then on top of that, I did a correction for, you know, the the o five or, you know, potential o five schema, which is the current, you know, the current draft. So I had, you know, both of those in the history for the the CBVL. Let's see. Cleaned up text on the extension point. You know, exit going through that exercise made me realize that there was some needed text in the spec itself to identify, you know, here's an extension point. Right? You know, in in the text that this may be... This is a place where, you know, we're likely to need to to extend. And so, I tried to do a better job of identifying places where that might happen in the current spec, as well as you know, the consideration section for authors of of extension. So I tried to you know, capture all that. All that stuff came through this either... You know, in... While going through this iteration of the CDDL. So it was a good exercise even though we decided if we don't want CDDL. It it was it was a good exercise. So, you know, I'm I'm testing the the spec. I filled out the... You know, I I just... Actually, just said I just filled out the extending section... Extending BCom section. It's about stuff that I, you know, kinda realized is is constantly constantly doing that. I updated the JSON schema to the current tech spec, you know, the the candidate o five. I cleaned up some ambiguities and issues. I already mentioned that on the on the Jose stuff. And I did not update the examples because they're, you know, they're... Most, if not all of them, are tool generated. And so I need to update my tools to to be able to to to do that for the current spec. And one, I just... It was short on time. And two, I would kinda wanna have this meeting before I started changing code. Any questions on that before I go to the next next slide? Okay. Next slide.
[01:00:26] Chris Wendt: Actually, I gave you control. Oh,
[01:00:30] Daniel Petrie: how do I... Oh, here. Here we go. Open issues. So I went in with a kind of a perhaps harder requirement for the session object than than maybe we want. I don't know. I just wanted to review that. I basically said that a session object is required if the events or the dialogue or the attachment arrays are not empty. So we... It needs to be, present if if those are not... I, you know, I can see potentially you might have......
[01:01:16] Jonathan Rosenberg: Compatible, Dan. It's not back to compatible, Dan.
[01:01:18] Daniel Petrie: It's not.
[01:01:20] Jonathan Rosenberg: Thought that last time we... I mean, I I don't have a phone to pick on that, but I know you really wanted to preserve...
[01:01:26] Daniel Petrie: No. I'm I'm back... I'm backtracking a little bit on that. I I I think there... I mean, and that's the other thing. I I actually should've said that on the on the price side. I added a migration instruction set. I mean, I've had one each time we've done the the kind of schema change where it's required some some modification. I I added some, you know, kind of high level migration instructions or considerations. And I think it mostly works. I think it will work. I think we... People can migrate this. And so that, you know, that's my concern is in migration. Right? And and I think there is a migration path. I could go either way of this. I can loosen this or or leave it in. So I just... I I started with the hard line, and I'm I'm happy to backtrack. And that, you know, that probably requires a larger work group input than, you know, than than the, you know, five of us or six of us making that decision.
[01:02:25] Jonathan Rosenberg: Okay. Let me... Can I ask a dumb question?
[01:02:28] Daniel Petrie: Sure.
[01:02:29] Jonathan Rosenberg: I mean, this working group is small. Right?
[01:02:31] Daniel Petrie: Yep. Which
[01:02:32] Jonathan Rosenberg: is great. Besides you and Thomas, who actually has an implementation of Econ that participates in the working group?
[01:02:40] Thomas McCarthy-Howe: Yeah.
[01:02:41] Daniel Petrie: There are a few people who are you can... Quite silent. Ed guys. Yeah. But there are a lot of implementations. Right. You know, so, you know, Jeff Palmer's having a, you know, VConn conference next week.
[01:02:53] Jonathan Rosenberg: I saw that. Yeah.
[01:02:53] Daniel Petrie: And and so, you know, there are a lot of silent participants on that. You know, like, Crexendo, you know, they're, you know, they're participating. They have an implementation. Yeah. You know, we're also working with them, you know, with integrating our our stuff with with with their solution. And so the... And there's a lot of... I mean, there's there's a bunch of people who are I don't want that. Out Interesting. And are not so not so verbose on the on the work
[01:03:26] Chris Wendt: group list. Okay.
[01:03:28] Daniel Petrie: I I think they are monitoring though. I mean, I think there... You know, there's a lot of silent observers.
[01:03:36] Edward Guy: Yeah. You can. I... It's easy. We... One of my adjacent teams has an implementation, and it's it's got some changes to it. So it's... But it's... It'll take time.
[01:03:50] Jonathan Rosenberg: Yeah. Yeah. Okay. I I I only ask because, like, I I just wanna make sure. Like, I I I think it is important we talk to people who have implementations besides yourself to get feedback on that breaking backward compatibility. So... K. I I I... My suggestion... Strong suggestion is to pose that as a stand alone question to the mailer saying, hey, guys.
[01:04:13] Daniel Petrie: Yeah.
[01:04:13] Jonathan Rosenberg: Doing this restructure. Let... Let's... In in the interest of progress, just make it breaking in o five. It's fine. K? And then ask the question, so you only have two weeks, three weeks, or, like, we're not gonna get... And then if you just raise a question on the list, like, Note that we're making the changes breaking from prior drafts. How important is it? Is it a big problem for people or whatever? You know, what do you think about breaking back? But it's what they're
[01:04:38] Daniel Petrie: Right.
[01:04:40] Edward Guy: Yeah. Not a problem from this end.
[01:04:44] Daniel Petrie: So move on to the next one then here I think it's alright I think that's a great idea. Other session relationships, I so I define this you know I think this is kind of your idea and you know in the last meeting is to hit define you know there the you know when sessions point to other sessions or refer to other sessions that you label that relationship. And so I made up for I don't know if they're right for. I don't know if there's more or less And so that that needs some review and thought input rather than, you know, this this stuff that I made up. Okay.
[01:05:22] Jonathan Rosenberg: I'll I'll take a look. It's not like... What what what does child mean? Because that's a... What does child mean, Dan? What's an example of child?
[01:05:29] Daniel Petrie: What do mean? It's a sub con... Sub session?
[01:05:34] Jonathan Rosenberg: How is that
[01:05:35] Daniel Petrie: thing breakdown? So, I mean I and maybe these aren't the right labels for them but right and there's a couple different concepts right where you might have like alright so you have a conversation that leads into another conversation that leads into another conversation. Those are kind of peers right? The child relationship is like, you know, like in here we have chat and we have, you know, that is kind of out of band a little bit. Know, or might be held on another application platform. And so, know, this conference right here, we're having there's there's audio, video, and there's, you know, attachments of slides. The, you know, the audio and video might be one child and the chat session another child, cause, you know, we use Slack or something like that instead of the, you know, the video conferencing like that. So, I mean, I think those... That's kind of a child relationship. Breakout, I see is more of a, you know, like a... You know, we've got a conference that starts out big, and then it gets broken up into a bunch of pieces temporarily for work groups, and then they all come back together maybe at the end of the discussion. And so, those are the concepts. I'm not sure the right ones. I I just... I threw some stuff out there. Right?
[01:07:06] Jonathan Rosenberg: And and... I'll this is area where I think... Because we have two separate things. So we already have the graph relationship elsewhere. Like, we already know that there's a pointer from a to b. So this this relationship has to bring, like, some application layer context to it. Mhmm. And so breakout has a very clear, like, yep. I know what that means. Right. Child and peer feel like you are just merely describing graph constructs without any kind of application notion. So I I, like, I think if we're gonna put this in here, it is very clear... Like, you know
[01:07:44] Daniel Petrie: Yeah. Specifically... Know? I did... There's also actually, you know, the the session relationship is an object, that... So, a session has... Can have an array of these. It's kinda like, get your idea. So, there's a point... There's a reference to a session and there's a type. But I added a third parameter which is description, which was just open text. So you could describe that. Now, because I felt that even if we have some you know, finance set of of types, we still want a further description of what that thing is. Now maybe that's... Maybe maybe the type needs more, you know, semantic, you know, think it
[01:08:20] Jonathan Rosenberg: is I see. And I'm largely thinking of tools for visualization and data exploration where you can't use a description for that. I'll I'll take a look and send some comments. Like like, for example, when the... When we get to the AI agent extension, we'll want a new one called sub agent. Like, that's a very... And that's very, very specific on, like, this was an AI agent chat, and it's on the sub agent that, you know, blah blah. Like, so that's very application specific. So that... I think these are gonna be like that. So... Alright. I'll I'll take a look. Thank you. Yeah.
[01:08:47] Daniel Petrie: I I I didn't spend a lot of time on it. I threw some stuff on the... You know, out there, and and I I I know it needs, you know, more thought and a little little cleanup. But I got the concept out there. Right?
[01:08:59] Jonathan Rosenberg: Yep.
[01:09:02] Daniel Petrie: And then is dialogue index still needed for events, attachment, and dialogue objects? Oh, yeah. Is that right? Dialogue is... No. I think I meant to put something else there and said dialogue. I don't know. Anyway, I I left that, you know, there were some objects that still had dialogue. Some that I had already that I added session, you know, references to. But there were objects that had... That now have session references and dialogue objects references. I think most of those are... Well, I I think two or three of those need to go away. And I'm, you know, on my next edit pass, I will... My plan was to mark them as, you know, to be deprecated, right, or removed or whatever. And leave that in as a comment for the net, you know, for the the the submission. Because I... It's hard for me until I actually test this stuff. Right? You know, in in details, it's hard for me to tell that we don't actually need the the dialogue. But I I I mark the places where I think it should be removed. You know, I think in events, it it probably isn't... You know, it it was in party history events, and and so that's why it's in events now. You know, I I just... I, you know, removed that use use the existing object and added session concept to it. It's in attachments or it was in attachments and the attachments now have session reference. And I I I I... There was a typo. I I meant to type some other object instead of dialogue there. I I don't remember what it was. But I... So I I think my my... You know, it is... You know, everybody's okay with that. I'll mark those as, you know, to be removed. And
[01:10:44] Jonathan Rosenberg: Let let me make this one suggestion, Dan. Like, the way I think about it is we're gonna have a bunch of, like, common objects that are gonna get used in various places and references to dialogues, events. I can imagine we're gonna see that. Then, ultimately, this is a graph. This object is a graph.
[01:11:03] Daniel Petrie: Yeah. Yeah.
[01:11:04] Jonathan Rosenberg: We're good giant graph. Right?
[01:11:05] Daniel Petrie: Yeah.
[01:11:06] Jonathan Rosenberg: So, my suggestion is we have this... There should only be one way of pointing to a dialogue. You know? And so let's define the schema for the... That dialogue reference object. Whether it gets used inside anywhere else is sort of highly contextual. So for event, in general, you wouldn't use it. But I can imagine in the future, let's say we define a type of event called, like, you know, we we... You know, recording upload. I have something stupid. Like, it's it's it's something about the actual audio content. Right? That, oh, guess what? Someone pressed a button, and this particular piece of audio was uploaded to the server. Okay?
[01:11:49] Daniel Petrie: Right.
[01:11:49] Jonathan Rosenberg: So in that case, you'd want a new type of event called... Isn't it... Be an extension. You make an extension called, like, a new event called recording upload, and you wanna reference the dialogue to which that recording talks about.
[01:12:01] Daniel Petrie: Right.
[01:12:01] Jonathan Rosenberg: You're not So create your own way of pointing to dialogues in that extension. There should be a single common way of pointing to dialogue. So so then make it just an optional field, and it's dependent on the type of event as to whether it's needed. That's my suggestion.
[01:12:15] Thomas McCarthy-Howe: Alright.
[01:12:17] Daniel Petrie: Dialogue is needed for analysis. I changed analysis with... You know, I added session, obviously, but I also added analysis. Yeah. Because the the point of the references on analysis were what's the input that went into this analysis. So it's basically needs to be able to point to any individual piece in in the Vcon, and so I, you know, I I added not only sessions, but I added analysis because analysis can be, you know, generated from analysis. Right?
[01:12:47] Jonathan Rosenberg: Absolutely.
[01:12:48] Daniel Petrie: And so, was something I added. Let's
[01:12:53] Speaker 4: see.
[01:12:56] Daniel Petrie: We had a discussion of parties. And the parties that are listed in the dialogue are the contributors, and the parties that are listed in the session are all the participants, or who potentially receive some piece of the, you know, that conversation. And then the events, you know, mark, you know, who, when, and where they were they were they were here. That all works great with audio and video. For an email message or a text, it's a little weird. Because you've got a email thread and you drop somebody off and add somebody on to that. It is weird to put an event for a text message to to do that. And so I'm wondering if for text messages, we want to have, you know, like, a receivers or something like that. That's an open issue to think about. We need to solve that, but I I I think I just wanted to point that out.
[01:13:59] Jonathan Rosenberg: I think... So my my gut is that the... This... The... A group chat, a la Slack, is much more like an audio and video call, that it it has events for participant ad joins because it's a persistent chat. Right? Right. Email, which are single
[01:14:18] Daniel Petrie: and and text messages don't. Right?
[01:14:21] Jonathan Rosenberg: Yeah. That's... I guess, that's probably true for text messages. So so I wonder if we just... A better way to think about those is... I'm just throwing this out there. It's like, there's not really a notion of a session for an email. A thread is a linkage concept. So one of the things you can do is what if we model each email... An individual email has its own session. The parties are the recipients, then and there's obviously twos and and ccs and bccs. But the originator is the sender, and then you track threads because threads can also fork with this references that has one session reference, another session, and then the dialogue is also there, and it actually contains the content. I mean, that's one way to model it.
[01:15:10] Daniel Petrie: So, basically, create a new session whenever the the parties change.
[01:15:14] Jonathan Rosenberg: No. I'm suggesting something even more fine grained, which is every email is its own session, and a thread is merely a link... A set of linkages. I guess, I've just made it...
[01:15:28] Daniel Petrie: It it feels a little heavy if you have one...
[01:15:30] Jonathan Rosenberg: Yeah. Yeah. Yeah.
[01:15:31] Daniel Petrie: It just contains one dialogue just so that, you know...
[01:15:33] Jonathan Rosenberg: Yeah. Yeah. I don't know how... Actually, I don't even know. So in an email today, you add... There is a thread ID in defined somewhere in in message headers. Right?
[01:15:47] Chris Wendt: I don't know.
[01:15:48] Jonathan Rosenberg: Does it change when participants change? That's what I don't know. Know. Don't know how this works. I
[01:15:55] Daniel Petrie: I I wasn't even aware of the... I thought that it was just a manipulation of the the subject that that is what
[01:16:01] Jonathan Rosenberg: I think that there's definitely... We'll set thread ID. I don't know. Thread ID. There's no universal thread ID. I use message ID and reply to any references.
[01:16:15] Daniel Petrie: Oh, fucking god.
[01:16:16] Jonathan Rosenberg: Okay. I don't know. I mean, you know the reason why, like, only grandpa uses email anymore. And I...
[01:16:25] Daniel Petrie: We this we have this out of that now, but I just... I I mean, these are the issues that I think need need some thought. Right?
[01:16:29] Jonathan Rosenberg: Yeah. Yeah. Okay.
[01:16:32] Daniel Petrie: And, you know, I'm happy posting, you know you know, you know, o five with this still an issue. It's... I don't really feel like we have to solve, you know, all all of these things before the next... This draft is submitted. But I I just... I wanted to identify what the stuff that I found, you know, in doing this. And then here's my... Sorry.
[01:16:51] Edward Guy: Let me just make make a point. The... With text, you might have the history. So you might be added... Yeah. Somebody else might be added into a text session now. They may or may not have the the session history, so you'd consider that. Different than an email.
[01:17:11] Daniel Petrie: Yes. The... You know? Yeah. Right. So the the vcon captures what, you know, what... Where they were participating, what they weren't, you know, by, you know, session and dialogue. What... In in in the the join and and and drop events should bracket that so that you know what they
[01:17:34] Jonathan Rosenberg: Oh, wait. Wait. There's an interesting question. Like, it's very app specific as to whether what participant when added has access to conversation history. Like, in WhatsApp, they do not.
[01:17:43] Daniel Petrie: Yeah. Yeah. Yeah.
[01:17:44] Jonathan Rosenberg: Yeah. In Slack, they do. Mhmm. And, like, I've just... Is there some need for indication Right. Visibility of history to a participant when they join?
[01:18:00] Speaker 6: Yeah.
[01:18:07] Daniel Petrie: So... Yeah. I mean, we we could potentially, you know, I mean, one, you know, thinking out loud solution is there. Alright. You know, point point back to point in time. Another event, basically, it says that, you know, this this participant was caught up up to this point in time.
[01:18:22] Jonathan Rosenberg: Yeah. Yeah. It's a good idea. I think you could probably do it as a property of the event itself. So if you have a participant join, you know, an optional field which is for... Just for text chats, which indicates the message ID or point in time at which that user had access to history upon join. I think that'd be that'd be super useful.
[01:18:43] Speaker 4: Yeah.
[01:18:44] Jonathan Rosenberg: There's, a lot of... A lot of the way it goes to my head with these vcons getting used for non repudiation use cases, and so knowing what someone potentially saw Right. Is pretty interesting.
[01:18:54] Daniel Petrie: Yeah. And then I think that's an important concept to be sure we can capture. So I don't... Unless there's more on that. You know, as I said, CDDL is strict. JSON is permissive. Everybody okay with that? I don't know. It's up for discussion. The examples need...
[01:19:15] Jonathan Rosenberg: What are we do about it? I I think... Well, I thought... What I'm suggesting is you just... Yes. This email is permissive. We should just put... Because the JSON is effectively normative via the text of the document. Right? You... The normative specification is...
[01:19:31] Daniel Petrie: Jason Jason is not normative. It's... The j... Jason is...
[01:19:35] Jonathan Rosenberg: I understand. But the the document text
[01:19:37] Daniel Petrie: Right. Syntactic based
[01:19:39] Jonathan Rosenberg: on document. Does it not? Yes. Yes. So how do want...
[01:19:43] Daniel Petrie: I mean, it it is it is defining JSON structure concepts. Yes.
[01:19:49] Jonathan Rosenberg: So Yeah. My my statement is, therefore, the normative text is permissive.
[01:19:56] Daniel Petrie: Yes.
[01:19:57] Jonathan Rosenberg: So then you should... If the CDL is to work, you should have the CDL explicitly defined with equal level of extensibility as the JSON.
[01:20:07] Daniel Petrie: It has extensibility, but it's not permissive. You have to
[01:20:10] Jonathan Rosenberg: You have to code hard code from... You have to hard code every single point of extension. That's what I'm saying.
[01:20:16] Daniel Petrie: Yeah.
[01:20:16] Jonathan Rosenberg: Like, if you wanna put CDDL in there and you wanna try and make it as close to the normative text as possible, you must make the CDDL allow extensions everywhere.
[01:20:26] Daniel Petrie: Alright. That's a discussion we need to include Hank on. Yeah. He's gonna push back on that, I think. But, anyway, I... I'm with you, I think. So I... Yeah. I said it's a different different group people to have that discussion. Examples need updating. I already mentioned that. And, you know, I had already pointed out a few examples that we're missing that need... That I need to add to to to draft. So that's kind of you know what I had for open issues you know again not going down too deep on there. I'm sure there are lots of other little issues but this is the the high level stuff for where I am. Then, you know, as a you know, just as a test exercise, I went through some conceptual cases to try to kind of test the draft. And, I did use Claude for this.
[01:21:26] Jonathan Rosenberg: Not forbidden. It's good. It's good for this kind of stuff.
[01:21:29] Daniel Petrie: Yeah. No. I mean, it's... I I I... Claude is very helpful for reviewing things. I I I do find that it's it's helpful to go through. Help me fix text. So here's the concept we've got you know the concept that we talked about in the last meeting. You know you've got you know a customer talking to an agent and a supervisor talking to the agent. The supervisor of the agent can hear you know the other two parties. The customer cannot hear the supervisor. So basically the the supervisor could talk and coach the agent, but the customer doesn't hear them and hears the supervisor doing that. And in this particular example the customer calls the agent it's you know I kind of removed the complexity of context center stuff. I know it's more complicated than that but I just want to look at focus on this particular topology. And then the supervisor you know sometime later you know joins a conversation with the with the agent after the customer join. And so you see, you look at the lower half of this diagram. We've got the three sessions. We've got session zero, session one, session two. Session one and two are children of session zero, And they... The session one and two represent the two different kind of conversations we have. We have the customer... The the conversation between the agent and the and the customer, and we have a conversation between the agent and supervisor, which can also hear the, you know, the customer. Right? And then, so I laid... You know, the bottom half, these are kinda like timelines for the sessions, and then these dots here are events. Right? So we've got a party... You know, the customer joins first. That's that's party zero. Then the the agent joins shortly after. That's party one in in session zero. Now this was the interesting thing that came out of this... Actually, I even have, like, four different observations here that I will discuss afterwards, so I... If I didn't catch all of them. But the interesting thing here is that the events... Those events belong, you know, belong on session zero, the the parent session, because they occur in both session one and session two. And so I put them on session zero. And there's... Yeah. I think missing text in the current draft is why and where you put your events. And, right, that's, that's something that needs, I think, better It is not explained in there, and and I think that needs some text in, about that even some some guidelines or rules or whatever. So that's that was, you know, issue one. And then we have session two. We have two events. Right? The, the, supervisor joins and the supervisor drops off. Now, the other interesting thing here that I found is like... So basically, session one ends when the customer drops off. Right? And, yeah, in in this example, I had the supervisor and the agent, you know, debriefing afterwards. Right? And so that's why I see that the session two, you know, goes longer than session one. But the kinda weird thing here is that the... So we have dialogue, zero one two and zero one and two for the customer recording, the agent recording, and the supervisor recording. Same in this... As at the... As the parties just to make this simple and easy to track. The... You know, so even though we had two parties in in session one, which was the customer and the agent, when the a... When the customer dropped off, session one ended. Because that is... Basically, it's not an interesting conversation anymore. But the dialogue for the agent lasts longer in time. And so I put text when I wrote this up originally, I put text in that the that it... The session should, you know, the session duration should encapsulate the starts for all of the dialogues that it that it references as well as the durations, but that's not true in this case. So that text, I think, is wrong, and I think this is kind of an application decision as to when that session ends, as opposed to, you know, a hard set of rules that we wanna put in here. But I I don't know. There's there's another issue that I identified in going through this exercise. I thought it was interesting. What... There were, like, four things. Here, let me go to the... Those list of issues and then... Oh, this is just a description of what what actually happens in the in that in that call. And this is the the JSON, but let me jump to the issues here. So, know, I'll go back to the date.
[01:26:31] Jonathan Rosenberg: Sam, one question in in your... Can you go back to that that diagram?
[01:26:35] Speaker 4: Yeah.
[01:26:38] Jonathan Rosenberg: The dive into... Yeah. The diagram. Yeah. Yeah. The three dialogues, are they... Like, the customer channel, is that still we... Having the audio that the customer spoke and the audio that they hear, or is it just the audio that...
[01:26:54] Daniel Petrie: It's just they spoke. What they hear is indicated in the session. Right? The the the participants in the session indicates who heard what.
[01:27:04] Jonathan Rosenberg: Yeah. I get that.
[01:27:04] Daniel Petrie: Yeah. And so I've got... So I I I... Looking at... I'll come back to that that point, because there's something I wanna point out there too. But let me let me just walk through those... The the four issues that I found in doing this, and then we'll look at the JSON and... For the sessions. That's the interesting part of this to kind of illustrate those those issues. So the customer is in the parties of session one only but dialogue zero in is in the the dialogue of sessions one and and two right and you know I look at the json and and that this is a little more clear Session one ends I already talked about the session one ends you know partway through but you know the dialogue one which continues it goes beyond the end of that that session one even though dialogue one is in that session. Then dialogue zero with you know the customer is in session two but party zero is not in the session parties. Is in the session two parties right because the customer wasn't didn't hear it wasn't able to hear the supervisor. And then session zero has no dialogues of its own. But it lists parties zero one and two but party never heard. And so I think this is wrong. I think this is incorrect. But let me go back to the to the JSON and it is a little easier to to... Can you guys see that? Is that big enough to
[01:28:58] Jonathan Rosenberg: Okay. To read?
[01:29:02] Chris Wendt: I can read it. It's a little light, if anything. Yeah.
[01:29:12] Speaker 4: But it's fine.
[01:29:13] Daniel Petrie: Okay. So we have session zero, which is the parent session. It... It's got two, you know, two child sessions and, you know, again, I don't wanna get into the the session relationship syntax or whatever issues, whatever I already talked about those. But what I think this this is wrong. This this Jason, I think what should happen here is the parties should be for the parent. The parties should be one and two because they were the receivers of everything of all the child sessions. And there should be an originator here which is party zero customer. They initiated the whole thing. So I mean that's that was the kind of the conceptual thing that I thought was was... And so I think you know this Jason's wrong, but that that was that was one issue. The the other issue you know in early... Oh, it's so like if we look at the bottom at session two, we have parties which is two and one. Two being the supervisor and they initiated the call. They're so they're the first the first in in that list. Alternatively, we could you know could they send one and two and then say originator was was two. Both both work according to the the current syntax. But then we have dialogues zero, one, and two, and zero is not listed in the parties because they didn't receive all of the the dialogues all of the dialogue information in this in this conversation. So I think that's correct, and I think that works. But I just... I mean, I thought it was an interesting example and, you know, worth some some exploration and and thought to to make people... Sure people are okay with that.
[01:31:16] Jonathan Rosenberg: So, Dan, I I think what's important here is that this is a very, very clear semantic rule that you can write down, and then you can structure the Vcon however you want. And you can... And a and a recipient of the Vcon can understand what happened based on these rules. And so, like, he... There's a great use case for illustrating me to do that. Yeah. I wrote I wrote in the Zulu a proposed rule that I think works for what you've done here, which is that... Go ahead.
[01:31:49] Daniel Petrie: No. I I mean, I have some text for some of these things too, but I I just... I wanna discuss the issues before I Yeah. Wrote anything down. Right? I
[01:31:56] Jonathan Rosenberg: think if you... Because what you want is you wanna have... If you write the rule, then you can, like, validate that you can model the situation
[01:32:03] Daniel Petrie: Yeah.
[01:32:03] Jonathan Rosenberg: To be done as long as it falls there. So the rule I think makes sense for the use case you described is that in a... Like, for a given session, a user hears all the dialogues associated with the session for the duration between when they joined and left, assuming the dialogue had content for that point
[01:32:21] Thomas McCarthy-Howe: Right.
[01:32:22] Jonathan Rosenberg: Those ranges when they began left. Right? And I think if you have that, like, golden rule, then you can allow construction of ecom in various ways, and and you'll still have clarity as a receiver of ecom
[01:32:34] Daniel Petrie: Yeah.
[01:32:34] Jonathan Rosenberg: Onto what happened. There may be other rules we need to model these different situations. But but I think that helps deal with the case. You you point out a really interesting case where the duration of the dialogue doesn't match the duration of the session. Right. And I think we wanna support that. This is like...
[01:32:48] Daniel Petrie: Yeah. And I do too. I just... That's what came... I mean, I... I'm pointing these issues out because... And not that... I think in most most of these, I think I I have solutions for for them, and I thought they were interesting cases to to make sure everybody's on board that this is this is this makes sense. Right?
[01:33:04] Jonathan Rosenberg: Yeah. Yeah. And I I think so. A rule like this... And and the reason I think just to be clear why I think it's important to support that is a lot of times the way you get the audio recording is like a little tap, and and the tap is disconnected from the session events. This is a super common problem anytime you're using, like, SIPREC as the way of getting audio content or tapping on either switches on prem for audio content extraction. You just have this, like, of audio, and then you have to overlay events. So you can imagine if you could check the Vcon, if you don't wanna have to post process the audio, you just you just, you know, cut the audio on both sides, shove it in the Vcon, and then you use the sessions and the join events to capture who heard what on top of this audio that may exceed on either end the duration of the session. I think we want to allow that to work just fine. So that's the rationale in my mind. Was that why you thought the dialogues could be longer than the session?
[01:34:03] Daniel Petrie: I... You know, I didn't think it's... I didn't have this idea in mind until I went through this example. I thought, well, you know, oh, the the session should should encompass the... You know, all of its of its, dialogues. Right? I just... I mean, that... I wrote that text just not thinking about it. Right. And then I went through this example. I said, no. That doesn't... That's not... That's not always the case. That's not what you want, and and here's an example where.
[01:34:25] Jonathan Rosenberg: Right. But you didn't... But but, again, it it... Hey. I would call a a more proper... Let's say you weren't doing this with SIPREC. You were, like, you were doing this at a meeting server that could could time slice it. You wouldn't do it this way. You would just... Once the cuss... The consumer leaves, you'd cut the dialogue, and then you'd have a separate dialogue that represents the audio contribution of the agent
[01:34:49] Daniel Petrie: for the...
[01:34:50] Jonathan Rosenberg: You know? So then then you...
[01:34:51] Daniel Petrie: So the agent would have two dialogues, right, for the two pieces. Right? Yeah. It might it might be more reasonable. And and then... And I I think that, you know, both both work here. Right?
[01:35:01] Jonathan Rosenberg: Right. That's fine. So then I... I'm agreeing that both work. And to make a... For a receiver of the Vcon to make sense, you need some way to know Yeah. How to think about that. I I think I think this rule I wrote in the Zulip
[01:35:15] Daniel Petrie: Okay.
[01:35:16] Jonathan Rosenberg: Captures all of it. So...
[01:35:18] Daniel Petrie: I'm not sure where.
[01:35:20] Jonathan Rosenberg: Have to go to the top and click on the chat icon, the two chat bubbles. You may not... You should see it. Yeah.
[01:35:29] Daniel Petrie: Oh, no. I think I... Oh, I see.
[01:35:45] Speaker 4: Yeah.
[01:35:47] Scott Godin: Right. My
[01:35:48] Jonathan Rosenberg: main point is in this specification, there needs to be normative level statements about the semantic understanding that one takes away from from the Vcon based on relationships? Like, what does it mean for a dialogue to be associated with a session? These words I sent would... Something like this, if this is right, would need to be in the document that says this... Don't... Like, if this wasn't true, don't make a document that has a... Like, don't jam a die... A dialogue into a session. If it turns out people in that session weren't hearing that dialogue if they were in the session from between... Don't do that then because then you miss filter the e com. Right? This is how to interpret these relationships.
[01:36:28] Daniel Petrie: Yeah. I I I think I have text very close to this in there now. But, you know, you can... When you when you have a look through, you know
[01:36:37] Jonathan Rosenberg: Yeah.
[01:36:37] Daniel Petrie: I'll I'll me know if it needs more.
[01:36:39] Jonathan Rosenberg: Yeah. The the other thing is, Ed is pointing this out too. Like, session zero is really interesting. Like, it's not, it was... It's not entirely clear to me you need session zero if you... So you could alternatively use relationships between session one and session two as opposed to adding, like, an umbrella session zero?
[01:36:57] Daniel Petrie: It was needed because of the events. Right? Because there are events that belong to two sessions. I thought that that was better to have the parent session encapsulate those two sessions, and then you put the event......
[01:37:16] Jonathan Rosenberg: Event that's... I I guess there's the party... Go back to... Your your diagram is much easier for a process usually than...
[01:37:23] Chris Wendt: Yeah. Yeah.
[01:37:25] Jonathan Rosenberg: Unless you're in LLM, but none of us are...
[01:37:26] Daniel Petrie: So, you know, the... At the bottom half there, there's, you know, session zero. The the party zero and party one joins are on on the parent session because they are relative to both session one and two.
[01:37:48] Jonathan Rosenberg: Yeah. I'm I'm like, this is the one that I think requires more. Because, again, that's a... That is also... You've you made... You based... You made an assumption on a rule. You made a rule, and maybe you stated it maybe in the document. You didn't.
[01:38:00] Daniel Petrie: I I did not. I... But I I do have Wait. Wait.
[01:38:02] Jonathan Rosenberg: Let me catch my word. The rule you basically stated is if all join and leave events in a parent session apply to the children's session as well is effectively the rule. Because you basically said, in essence, party zero joined session one because they joined session zero. You need to have this level of semantic understanding to apply my rule in that rule in the Zulu. Mhmm. How do I know who heard what in this graph?
[01:38:36] Daniel Petrie: Right.
[01:38:37] Jonathan Rosenberg: So you have to have this rule...
[01:38:39] Daniel Petrie: Well, with the rule that the parties listed in the session hear the dialogues in that session with the exception... Or, you know, with the join and drop applied, the dialogues for session one and session two are children of session zero. Right?
[01:39:03] Jonathan Rosenberg: You you said... Okay. So session so session zero has no dialogues. Right? Session one has the dialogues. Right?
[01:39:11] Daniel Petrie: Session one and session two have dialogues. Session one and session... Yeah.
[01:39:16] Jonathan Rosenberg: So my point is I cannot know who heard what for session one. Session one has dialogues. Who heard what, Dan? Who heard what? The only way to know is you have to apply the party zero and party one joins from session zero.
[01:39:29] Daniel Petrie: Yeah. You have to look up... You have to look at the parents to see the events, which is a little awkward.
[01:39:34] Jonathan Rosenberg: It it it might be okay. Now the alternative, it's okay if you explicitly state that rule. Like, it's a normative strength rule. And they also apply to session two. Right? Because they
[01:39:45] Speaker 4: Yeah.
[01:39:46] Jonathan Rosenberg: Right? And they... And, again, we also have to clarify what type of relationship is this true before. I mean, where these relationship types... Is that true for any relationship? That... Is it always true that independent of the relationship type, the party join leave events on the parent comply... Off of the
[01:40:02] Daniel Petrie: left side? No. That's a good point.
[01:40:04] Jonathan Rosenberg: I don't know about that. Yep. By the way, I... If I can pretty sure it's not true. The alternative to all of this, by the way, is to just have party... Separate party zero join and party one join events on session one as well.
[01:40:16] Daniel Petrie: Yeah. To... You duplicate the events. Yeah.
[01:40:21] Jonathan Rosenberg: That might be better. And then it raises the question of why do we why do we need... If we added party zero and party one joins
[01:40:31] Daniel Petrie: and join we need session zero anymore.
[01:40:33] Jonathan Rosenberg: We need session zero.
[01:40:34] Daniel Petrie: Yeah. We don't.
[01:40:36] Jonathan Rosenberg: Unless it's a relation...
[01:40:37] Daniel Petrie: I mean, the point was to to, you know, have session zero was to reduce duplication. That that... That's it.
[01:40:43] Jonathan Rosenberg: I see. But there's still no duplicate...
[01:40:45] Daniel Petrie: What I mean, in a sense, there there is, I mean, this is a bigger converse... Right? The these are related conversations and, you know, so they are part of a, you know...
[01:40:57] Jonathan Rosenberg: But you can do a fast...
[01:40:58] Daniel Petrie: From one perspective, it is it is one conversation. Right?
[01:41:03] Jonathan Rosenberg: Yeah. Yeah. It's weird. It's it's a great use case.
[01:41:06] Daniel Petrie: Yeah. Yeah. No. It's a great... Instead of an
[01:41:08] Jonathan Rosenberg: umbrella is a relationship. So you could add a relationship type between session two to session one
[01:41:14] Daniel Petrie: Yeah.
[01:41:14] Jonathan Rosenberg: Where session two is called in, and you... The relationship type is a, like, monitoring relationship. Okay. This this session is monitoring this other session, and we have an understanding of what that means. That, you know, is is... There's a certain party of the the session being monitoring that's not observing the the thing, and you can see that from the participants.
[01:41:36] Chris Wendt: Right.
[01:41:36] Jonathan Rosenberg: That... That'd be the other way to do it, and then you don't need a session seater at all. I feel like that's probably slightly better, but that's... Requires thought.
[01:41:46] Speaker 4: Yeah.
[01:41:48] Daniel Petrie: K. No. I just... I... Like I said, I I... You know, I I have some solutions for some of these. You know, I don't... Whether the right ones are not, I, you know, I didn't really wanna get to this discussion then. I mainly... I wanted to... I thought this was interesting because it identified a, you know, a few interesting issues to think about.
[01:42:04] Jonathan Rosenberg: Yeah. Yeah. Super interesting use case.
[01:42:07] Scott Godin: Of the things I'd point out here too is that it's really difficult to tell that party zero is contributing to session two. It's it's hard to follow that. All... The only indication you have is
[01:42:22] Jonathan Rosenberg: that dialogue zero is in Yeah.
[01:42:24] Scott Godin: And trying to determine the party from the dialogue, you have to walk back to the session. I think it's just... It's it's complicated. I don't know if
[01:42:34] Daniel Petrie: we should go back to adding a... Well, the the dialogue label is the the contributor. So, you know, I mean, you you know that, you know, these dialogues are part of this conversation, and you know who contributed it from from the dialogue itself. I mean, it it... It's labeled as to which party. I I mean, I think that's captured.
[01:42:51] Scott Godin: Oh, okay. So the parties
[01:42:52] Daniel Petrie: are still in the dialogue? They're they're in the dialogue.
[01:42:55] Jonathan Rosenberg: The contributing parties on the dialogue. Yeah.
[01:42:57] Daniel Petrie: Right. Okay.
[01:42:57] Jonathan Rosenberg: But I I I do think that's why I think an explicit... Like, having an explicit relationship that this is a monitoring relationship also helps clue you in that you need to look for this weird asymmetry. Otherwise, it's... So it it wouldn't be something you'd normally see. Yeah. Yeah.
[01:43:18] Daniel Petrie: K. I think... Yeah....
[01:43:20] Jonathan Rosenberg: To move on this. And this is a this is a great, great use case. Yeah.
[01:43:23] Daniel Petrie: Yeah. We're running over time. Did people still have time, a little more time? Or...
[01:43:28] Jonathan Rosenberg: Oh, we had seventeen more minutes. Was this not... Oh, this was an hour and a half or two hours.
[01:43:32] Daniel Petrie: Oh, I don't know. What were we scheduled for? An hour or two?
[01:43:35] Scott Godin: No. We have seventeen more minutes.
[01:43:37] Daniel Petrie: Oh, okay. I didn't know we were scheduled, but I thought we were only scheduled for an hour. Okay. Great.
[01:43:41] Chris Wendt: Yeah. We're good. Yeah. Yeah.
[01:43:44] Daniel Petrie: So I don't know if you wanna talk more about this example. I had one other example with, you know, AI agents. And I thought it was interesting to go through the exercise. I don't know that I learned anything. I think... I mean, I think, you know, perhaps I didn't go deep enough to really point any ideas, but, you know, here I'm... I'll I'll... Where is... Yeah. So I... Here's the, you know, the kind of graph where the parties are you know one human in the rectangles with with rounded the gray rectangle with rounded rounded corners. And then the then they were AI agents which are the purple rectangles with rounded corners. And, so we have five parties. Right? We got a human. It's, you know, talking to an agent, party one, the top level agent. And then the top level agent, party one is talking to a debugger agent and a history agent parties two and three. And then the debugger agent party two is talking to yet another agent party four. And so we have... What do we have? Three... Four sessions here. We have, you know, session zero between the human and the top level agent. We use session one between the top level agent and the debugger. We have session two between the top level agent and the history agent, and session three between the debugger and the test runner agent. And then we have some tool uses which are the the green ovals or whatever, that that invoked by, by a couple of the agents, whatever. So I mean, took this case. I hacked together some some JSON. You can go to that link or the QR code, and that'll... You can look at the actual JSON in a JSON viewer if you want. I didn't learn too much. I... And I felt like, you know, it... Basically, like, it created, you know, one extension to be able to support and capture what I think is most of this stuff. Now maybe it's not the right way. Maybe it's not how that really works. This is my, you know, high level glossed overview of what, you know, this is actually happening behind the scenes. But I thought it was an interesting exercise to go through and and test the current spec. And so, basically, the the tool calls were were modeled as events. I created, I don't know, like, seven... Conceptually, you know, had seven different event events, you know, a tool call, a tool pen... You know, call pending, tool call, you know you know you know, partial answer, a tool call and, you know, response, tool call not allowed, tool call failed. I think there's one other... I think that came up with, seven different kinda events, whatever, for a conceptual extension for for events to support tool call. And you look at that. I I... I'm not gonna walk through it, but... Because it's... When it's big and it's hard to present. But there's there's JSON there you can have a look at if if you if you want to take a look at and you know how I you know kind of captured this. So I had the the conversation between parties was all text based with with I think actually I did put one event, I think, from the human, you know, pressed a... An approval button or something that it turned into event, like, you know, which is like a button event, right, which we already have in the core. And, yeah, like I said, it was interesting to go through. I, you know, maybe I just don't have enough depth to kind of prove anything that that was, you know, issue. I thought it worked. Right? And this is just a description of, you know, kind of what happens on on that that image. You know, what what what it ended up with, this is like a summary of the JSON. Right? So we had, you know, it was one extension that was used. There were five parties, and there were four sessions, ended up with 13 dialogues, which is... You know, I used text communication between all the parties. You know, it could have been JSON, right, between the agents or whatever. I didn't think that was important to really... To prove or disprove anything. And then there were 17 events that are, you know, identified in the in the diagram and in the in the kind of the the workflow that I... Or the, you know, the event flow that I... They had on the prior page. And then there were two attachments. Right? It was the kind of the input and the output. You know? So the the hypothetical problem was, you know, this, this, unit test is failing. Fix it. Right? And so you gotta, you know, code in and code out. Right? I I just modeled that as a single file. Right? But but, to simplify things. But, I mean, I think I think it kinda works. Right? But, you know, with the with the, addition of the session stuff and and and the events, I think I think we can capture stuff. I mean, I I... Lisa said that I'm sure I glossed over in simple... Overly simplified things, but I I I didn't I didn't find any new issues, you know, that, you know, with with the core spec, going going through this exercise. What I didn't do, and I didn't have time of... I wanna do the same thing for transfer. You know? I I... You know, I'm manually go through an example of transfer or maybe a a compound transfer where you do a transfer that then, you know, you transfer the result of that into another or something like that or bind and then a consult over, you know, a more complicated transfer case so that I can go through and, you know, just model everything and just kinda, like I said, manually test the the the current spec. But that's that's kinda where I am. Great. Anything else? Good. Nope. Good work.
[01:49:55] Jonathan Rosenberg: So I'm gonna do... I'll do a... Within main in the editor's version, I'll do a review, and then, also some of the PR on the redaction stuff. So that Yep. I'll do that as a separate... If there's any change at all, separate those two things.
[01:50:08] Daniel Petrie: Yep. Great.
[01:50:09] Speaker 6: Alright. Thanks.
[01:50:11] Chris Wendt: Alright. I think we have a plan then. And I did schedule... I already scheduled the next meeting. So I'll
[01:50:17] Daniel Petrie: Awesome.
[01:50:18] Chris Wendt: Send that announcement on the on the mailing list.
[01:50:22] Jonathan Rosenberg: And then I think the other... On the charter thing, Chris, I think you had an action to follow-up with Charles on the recharter. Yep. And then I will do. I think the the... There was a series of small... Dan had to approve my merge on the charter, and then I was gonna post the
[01:50:39] Daniel Petrie: Thanks for reminding me.
[01:50:40] Jonathan Rosenberg: Thomas had small PRs
[01:50:41] Daniel Petrie: on that.
[01:50:43] Jonathan Rosenberg: And then we'll set it to the list.
[01:50:44] Daniel Petrie: Correct.
[01:50:45] Jonathan Rosenberg: Alright.
[01:50:47] Chris Wendt: Cool. Alright. Thanks, Daniel.
[01:50:50] Daniel Petrie: Thank you. This was really helpful for me, and I thought we were pretty constructive here today.
[01:50:56] Jonathan Rosenberg: Yep.
[01:50:56] Chris Wendt: Yeah. Yeah. This this cadence is working really well. So I'm glad we're doing it.
[01:51:01] Jonathan Rosenberg: Exactly. Alright. Thanks, everybody. I'll be very soon.
[01:51:04] Daniel Petrie: Thank you.
[01:51:05] Jonathan Rosenberg: Alright, Chris.
[01:51:05] Speaker 4: Take care. Bye.
[01:51:06] Jonathan Rosenberg: Have a good day. Bye now.
[01:51:07] Thomas McCarthy-Howe: Bye. You. Bye bye.