**Session Date/Time:** 24 Sep 2026 14:00 [00:00:48] **Chris Wendt**: Hey, guys. [00:00:50] **Daniel Petrie**: Hey. Hey. [00:00:53] **Chris Wendt**: My audio and video works this time. [00:01:02] **Daniel Petrie**: Yeah. How many years in the VoIP have we still having audio devices? Yeah. [00:01:07] **Chris Wendt**: The device selection then just seems to be the I guess it doesn't help that I have more devices than I should. [00:01:21] **Daniel Petrie**: Hey, Chris. What are guys? That's that's we can't see you can attend the the vCon show and talk about STIR/SHAKEN STIR/SHAKEN. Do you see my email again? [00:01:32] **Chris Wendt**: I did see your email. Yeah. I was traveling the past few days. Let me let me look at that. [00:01:41] **Daniel Petrie**: It'd be awesome. [00:01:42] **Chris Wendt**: Wanna talk about if I were to talk about something, it would probably be more interesting than just plain old STIR/SHAKEN. [00:01:49] **Jonathan Rosenberg**: But [00:01:49] **Daniel Petrie**: Yeah. It's just a update on what's happening happening in that space would be would be fantastic. Sure. [00:01:56] **Chris Wendt**: Yeah. Let me let me make sure I can make that. [00:01:59] **Daniel Petrie**: Oh, that would be awesome. That would be awesome. Hey, Jonathan. Hey, Jonathan. [00:02:08] **Jonathan Rosenberg**: Hey. Hey, guys. Are you able to hear me hear me? Yes. [00:02:10] **Daniel Petrie**: Yep. Yep. [00:02:12] **Jonathan Rosenberg**: Alright. I got I was using the wrong audio device. Once again, I'm using the device. [00:02:17] **Daniel Petrie**: We we already had this discussion [00:02:18] **Chris Wendt**: last time. [00:02:19] **Jonathan Rosenberg**: I'm I'm hearing echo from other folks too. I don't know if you're all getting that. Yeah. Yeah. [00:02:25] **Chris Wendt**: You're getting echo. Wonder if that's for me. [00:02:27] **Scott Godin**: Someone's mic's echoing. [00:02:29] **Jonathan Rosenberg**: I I gotta try and switch devices again. I have [00:02:31] **Chris Wendt**: to exit and rejoin if if [00:02:33] **Jonathan Rosenberg**: I thought I selected the right device on join too. Unbelievable. One sec. [00:02:39] **Chris Wendt**: Did that improve it when I muted? It's probably me. [00:02:44] **Daniel Petrie**: Let's see. Test? Yeah. [00:02:47] **Scott Godin**: Much better. [00:02:48] **Daniel Petrie**: Yep. [00:02:50] **Scott Godin**: Auto I echo. [00:02:57] **Daniel Petrie**: Wow. [00:03:04] **Jonathan Rosenberg**: It's not letting me pick a different every time this happens, I sort of curse Cullen. I mean, like, I I think we could have fixed this problem, but, anyway, WebRTC device selection is just atrocious. [00:03:21] **Daniel Petrie**: It's actually I I think it's lower level, Jonathan. A lot of it is, like you know? I mean, I don't know how I I don't I don't have to do a lot of work with the with the Mac side of things, but the the PC, you know, Windows side of of it's horrible. Yeah. It's just horrible. I mean, I'm I'm constantly working on on issues with that stuff, you know, at the software level. [00:03:43] **Chris Wendt**: Yeah. [00:03:44] **Daniel Petrie**: Twenty some odd years later. [00:03:50] **Jonathan Rosenberg**: Alright. Let's see. Did that fix it? Can you hear me? [00:03:54] **Daniel Petrie**: Yep. [00:03:54] **Jonathan Rosenberg**: Oh, better. Okay. Weird. So this the WebRTC settings was routing through the system default speaker, which was not my speaker phone. I had to change the system default at the Mac level, but I was unable to set it from WebRTC settings. This may be a maybe a meeting. It's just the four of us. No. Oh, we have six people on it. Never mind. [00:04:30] **Daniel Petrie**: Yeah. I [00:04:36] **Chris Wendt**: was assuming Thomas would attend. I don't know if we should wait or we could get started. What do you guys think? [00:04:46] **Edward Guy**: Only with text. [00:04:48] **Jonathan Rosenberg**: Pick pick text him or [00:04:50] **Jonathan Lennox**: I mean, he would be good. [00:04:55] **Jonathan Rosenberg**: And did you did you try and get Hank Burkholz for this thing, Chris? I remember you mentioned last time. I'm gonna see if we could I [00:05:05] **Chris Wendt**: did not specifically reach out to him, unfortunately. [00:05:09] **Jonathan Rosenberg**: Okay. [00:05:21] **Chris Wendt**: But, yes, it would be good to encourage him to attend. I guess our next meeting will be in San Francisco or well, I guess we can see if we wanna have another goes. [00:05:34] **Daniel Petrie**: There goes. Yeah. [00:05:35] **Chris Wendt**: Yeah. Exactly. [00:05:44] **Jonathan Rosenberg**: We have Ed Guy joining us too. Hello, Ed. [00:05:49] **Edward Guy**: Hey, Jonathan. How are you? [00:05:50] **Jonathan Rosenberg**: Good. Been a while. [00:05:52] **Edward Guy**: Yeah. Trying to follow this and, you know, [00:05:57] **Jonathan Lennox**: trying to keep up [00:05:58] **Edward Guy**: with the email and everything and this [00:05:59] **Jonathan Rosenberg**: Yeah. But [00:06:00] **Edward Guy**: there's there's none, and then all of a sudden, there's a lot. [00:06:02] **Jonathan Rosenberg**: Yeah. It's been pretty quiet. This is definitely in the more sleepy side of the group, so I think it's just a handful. But I'm trying to make it exciting. That's that's my goal with this thing. Yeah. [00:06:12] **Edward Guy**: So so yeah. [00:06:13] **Jonathan Rosenberg**: And Chris want me to go away, but, I I you know, I think there's a big big activity in here. No. [00:06:19] **Daniel Petrie**: No. That's good input. Good input. [00:06:21] **Chris Wendt**: No. We've had some really good conversations for sure. [00:06:25] **Daniel Petrie**: So very much appreciated. Down to the last set of real issues, and we just need to nail this so we can get it done. [00:06:38] **Chris Wendt**: Alright. Why why don't we just get started? Hopefully, Thomas can join. I think the major agenda item is to talk about Jonathan's update, and and I don't know if you had any other core related issues you wanted to talk about then. But anything else that anybody wants to agenda, Besh? [00:07:05] **Jonathan Rosenberg**: I I might wanna suggest a quick conversation on reaction. This came out of there's been conversations on the audit buff. I don't know if are you guys on the audit mailer and following the conversations there? [00:07:20] **Daniel Petrie**: No. No. [00:07:20] **Chris Wendt**: No. Actually not. [00:07:22] **Jonathan Rosenberg**: Alright. Well, you should because there's discussion on whether or not we should be using vCon as the format for audit logs for AI agent conversations. And there's been some debate there with some commentary along the lines of, oh, we looked at it, and it doesn't actually work, so we're not gonna use it. And, you know, I I said, well, take a look at my draft. We're addressing some of the things that would make it work. And then there was another comment. Was like, oh, well, it also doesn't work with redaction. The redaction feature set is insufficient. [00:07:52] **Daniel Petrie**: I'd love to understand that because I think we've got redaction worked out. [00:07:57] **Jonathan Rosenberg**: I'm not sure it's sufficient either, Dan. So that's why the the I think there's more we can do, and and maybe I don't just understand it well enough to know how it works in vCon, but, like, that's why I wanted to put it on the agenda. [00:08:07] **Jonathan Lennox**: Okay. [00:08:08] **Jonathan Rosenberg**: Talk about what I think might be needed on this thing. So [00:08:13] **Chris Wendt**: Yeah. Sounds good. Thanks for that call out. Otherwise, I'll just officially say that we follow the Note Well, so Note Well. And otherwise, I think, Dan, you had a presentation, but I don't know. [00:08:29] **Daniel Petrie**: That's that's that's where we wanna go [00:08:31] **Chris Wendt**: first. Yeah. [00:08:32] **Daniel Petrie**: That's I don't know if we wanted to do some discussion on Jonathan's document first, and then and mine's kind of a [00:08:38] **Jonathan Rosenberg**: Okay. You know, [00:08:39] **Daniel Petrie**: taking taking taking what he did and and, you know, tweaking their approach a little bit. [00:08:45] **Jonathan Rosenberg**: Yeah. But I I didn't prepare any slides on that document. I had presumed since we're a pretty small group, everyone had read it now. I don't know if that's the case. I can take two minutes to open up the draft and sort of summarize what's in there if people want. Otherwise, we can just, you know, go into discussion. Does anyone want me to do a quick summary of the draft? [00:09:08] **Edward Guy**: I I'd love a summary of the draft because was supposed to read it beforehand and didn't. [00:09:12] **Jonathan Rosenberg**: Okay. Alright. Just give me a moment then to go do this and make sure I can figure out how to let's see. [00:09:20] **Thomas McCarthy-Howe**: But, like, good morning. Sorry to be late. [00:09:24] **Chris Wendt**: Yeah, Thomas. Thanks for joining. [00:09:28] **Thomas McCarthy-Howe**: Thanks for and [00:09:33] **Jonathan Rosenberg**: comes the next piece of pain is can I share a browser from a browser? Let's see how this works. Thomas, popcorn already for this conversation. Let's see. Oh, now where's the damn share screen tool? Leave preferences, volume. [00:10:08] **Chris Wendt**: It's the little computer icon on the bottom. [00:10:14] **Jonathan Rosenberg**: Oh, request screen share. Oh, I don't know what it's sharing. I have to request a screen share? Alright. I've never done this on Meetecho. Am I are you guys seeing my whole screen now? Like, what are you seeing? [00:10:29] **Thomas McCarthy-Howe**: I am seeing nothing there. [00:10:30] **Chris Wendt**: Not yet, but I did see something in it try to initiate the [00:10:34] **Jonathan Rosenberg**: Yeah. Do you you might have to we did. We did. [00:10:37] **Chris Wendt**: Okay. Let me check. Oh, Oh, yes. Sorry. I did I did need to do that. Okay. [00:10:55] **Jonathan Rosenberg**: Alright. As expected, this is not gonna work out of the gate. Yeah. Get permissions. Oh my god. One sec. I might have to alright. I have to leave the meeting for new permissions to Yep. Apply. So I will Yep. I will give you a help. I'll be back. [00:11:29] **Chris Wendt**: He's gonna do the song and dance while he's gone. [00:11:32] **Scott Godin**: I'm just Chris, [00:11:33] **Jonathan Lennox**: by the way, I think you're I'm getting hearing echo from [00:11:35] **Jonathan Rosenberg**: you, so you might wanna switch your devices or [00:11:39] **Daniel Petrie**: something. [00:11:41] **Chris Wendt**: Yeah. I know. I'm trying to ride the mute button, but so I apologize for that. Maybe I'll try to fix it. I don't know why the browser echo cancellation is not working, to be honest. Maybe maybe I'll rejoin, while Jonathan's gone as well and try. Wow. I'll be I'll be right back. [00:12:35] **Daniel Petrie**: Alright. Alright. [00:12:37] **Thomas McCarthy-Howe**: And then there were four. Here we're having a storm this weekend, Dan. [00:13:15] **Daniel Petrie**: Yeah. Yeah. I don't know what's what's going on here. Certainly, it it's it's it's feeling like something's coming in outside. [00:13:24] **Jonathan Rosenberg**: It's been [00:13:25] **Daniel Petrie**: windy and weird. [00:13:27] **Edward Guy**: I was out on the water yesterday. It was or the day before, it was starting to pick up, and it looks worse now. [00:13:33] **Scott Godin**: And Yeah. [00:13:34] **Edward Guy**: Now I'm on the Hamptons, and so it's [00:13:37] **Jonathan Rosenberg**: Alright. Now can you guys hear me? [00:13:41] **Jonathan Lennox**: Yep. Yes. [00:13:42] **Jonathan Rosenberg**: Alrighty. Let's see if this worked. Okay. Alright. Requesting screen share. [00:14:17] **Chris Wendt**: Okay. I will grant that. [00:14:27] **Jonathan Rosenberg**: Amazing. Yay. Five minutes later. [00:14:31] **Edward Guy**: Yay. Okay. [00:14:33] **Jonathan Rosenberg**: Alright. Just a second. Check some of those around so you can see what I'm doing. Alright. So this is more like a concept document, not like a final syntax kind of specification really meant to motivate, and so there's lot of use cases in it. The main thing is really here capturing a proposal for some changes to the underlying data model. And it aims to sort of introduce three new objects and sort of change a little bit the way one of them works today, or I guess change two of them and introduce two new. First thing is introducing the concept of a session as a container and introducing the idea that a session can contain many sessions. And the two main use cases for that or that are called out in the document are even in traditional conferences, no AI, sidebars are a good example. [00:15:27] **Edward Guy**: Did you have a question, Ed? Yes. Is anyone seeing the share? [00:15:32] **Daniel Petrie**: Yep. Yeah. [00:15:33] **Edward Guy**: Oh, okay. Just just me then. Okay. [00:15:37] **Jonathan Rosenberg**: So here we are at twenty five Yeah. [00:15:39] **Thomas McCarthy-Howe**: It's even come back and saw the range. Yeah. [00:15:41] **Jonathan Rosenberg**: Still can't get screen sharing to work. Not your fault. Like, just we didn't solve this problem. Goddamn it. [00:15:47] **Thomas McCarthy-Howe**: Yeah. Twenty five years after T.120, by the way. [00:15:51] **Jonathan Rosenberg**: Say it again? [00:15:52] **Thomas McCarthy-Howe**: Twenty five years after we wrote T.120. [00:15:54] **Jonathan Rosenberg**: Yep. Well, SIP is that old too, man. I I I say I tell people there's still several unsolved problems in core meetings. Okay? Let's be clear. Can you see my screen? The thing we just had is a still remains a common fixture and waste of times in meeting. Two, you're muted where people are muted and they don't know they're muted and they're speaking remains a constant problem. And three, like, can you all hear me? Which is a related problem, which is people can't know that they're being heard. We still have not actually adequately solved those problems in the meeting. Anyway, I think about these problems. Back to the topic at hand, session and container for conversation. Sessions can contain sessions. So example would be in a traditional meeting, a sidebar where the main meeting spawns one or more sidebars and maybe those spawn sidebars. You don't see that a lot, but we want a way to model those relationships so it's clear that this meeting started that other sub meeting, and it might have a different participants. It's it could be a non overlapping set. Like, there's some people who are only in the sidebar who work in the main meeting. But the sidebar looks like a meeting in all the ways you would think about it, and then so it really should have its own participants and dialogues and recordings and events and all those other things. So that's the notion of a session as a container. The AI agent use case, this is really essential because it allows us to model when one AI agent spawns sub agents. And what's really fascinating about that, and this may not be obvious from the example, but let's say I'm talking to Cloud Code that starts as a session with two participants, me and and Claude. And then I ask it a question, and it decides to spawn a sub agent. In that sub agent, the two things talking to each other are two agents. So Claude is now Claude one is now talking to Claude two. And Claude one will literally create the prompt. I want you to investigate blah blah blah. It launches the agent. It may speak to its sub agents or the sub agent may just report back. And when the final result is done, the results are passed up to the parent agent. So this, to me, is exactly how sidebars work in human meetings. And a big goal and why I'm very passionate about unifying VCONS with AI agent trajectories is I don't really see much difference between those things. Like, I think it's really important for us to model systems that are just conversations between entities and whether they're AI agents or humans or mix shouldn't make a difference in the format. And in fact, this example I just gave of Claude involved a human talking to an AI and then wanting a sub agent or an AI talk to an AI. But you might imagine that sub agent or sub session in a more complicated case, that might say send a text message to a human contact center use cases for this. For example, I didn't put this in the document. But let's say a customer calls up for customer support, says, oh, I wanna get an approval for a loan at this lower interest rate, and the agent says, sorry. I I I need to go gain approval for that hold on while I take care of that. It spawns a sub a sub agent. That sub agent, a loan approval person, a human, provides a summary of the loan application, talks with the human, the human gives approval, sub agent returns its its result back to the parent agent. So that's an example where the sub agent was spawned by an AI agent, and it converse with a human, not an AI. And I I think it's important we'd be able to represent all of this with one unified format. So that's why sessions and subsections is here. Second is introducing the idea of events, which are things that happen at a specific point in time. So so in my mind, like, a dialogue is a a recording of a conversation that has a start and finish, and it's a it's like a a stored object, a a voice recording, a transcript, an email. It's the actual content of the conversation. Event is a is a thing that happened that isn't necessarily communicated to participants in that way. In the traditional in the original Vcon, this was DTMFs and all the call control events that we're very familiar with. Join, leave, hold, unhold, mute, transfer. So they're all just modeled as events. And and by making them generic in this way, we can represent events that are agentic in nature too. So the primary use cases we need support are tool call requests and tool call responses. And, again, I make the case that this is not those tool call requests and tool call responses are not also things that are unique to AI. They also happen with humans. Let me give my favorite example in the contact center. Let's say I'm recording a human to human contact center conversation. The human contact center agent, is, using, like, some web application to approve loans. Again, we'll use that example. The screen's being captured, is which very common in the contact center, as well as we're recording click streams of the agent in their web applications. Also super common in the contact center. We wanna record these events that they opened up the loan approval page, that they typed in the user's name, that they clicked approve. So those look a lot like tool calls, but they're what the human does, which is clicking on links in a browser versus what the AI does, which is invoke APIs. Although, as we all know, AIs can also now click on links in a browser, so I really don't see a difference between those things. So I wanted events to represent the union of those. Dialogue, just mentioned, is a recording. This is largely unchanged from what was in the document before. And then I think this is the one where we'll have some discussion as as Dan had a different perspective on this. Parties and participants that are involved in the session, and I wanted to do this more by indirection with references. So your and at ease that you're able to say, okay. Here are the total some people who are here with all of their metadata, my name, my address, my phone number. And then if I was in the sidebar, just my ID is present in the sidebar list rather than duplicating the information. So that allows you to, model who did what. I also introduced more complicated notions of participants for, even dialogues, allowing us to separate the concepts of who generated the content and who received the content, and who and maybe who is speaking. And that is largely it. After that, I give a bunch of examples that I won't go through, but, you know, basic phone calls, online meeting, speaker separation. And I wanted to cover a variety of different ways of of how we might record the audio in a meeting. So that's basically what the document says. As you can see, I made it, like, not specific on syntax on purpose. We can debate that, but it's just introducing the data model. That's it. Questions? [00:22:41] **Thomas McCarthy-Howe**: None here. [00:22:42] **Jonathan Rosenberg**: None here? That makes sense. [00:22:47] **Edward Guy**: Yeah. Makes per makes perfect sense. I'm trying to think about it and how it would work how it would apply to a traders tour where you have parties that come and go and the channel stay up, but I think you're covering it. [00:22:59] **Jonathan Rosenberg**: Yeah. So what this basically says is in this model, you would have a a single session, and you'd have multiple dialogues. There's many ways to do this, actually. One one model is there's one dialogue for the whole thing, and it just records all of it. That's, like, simple recording. And there's a list of participants, and you don't know who contributed or who sent, but these were people who were there at some point. That's the simple version. The more complicated version is if you wanna record each individual segment based on a fixed set of participants. So for the first three minutes, these five people are in the meeting. The next three minutes, it was four people. The next five minutes, it was eight people. Each of those would be a distinct dialogue with their own distinct set of participants within them in a single session. And then you can do the audio portions either, you know, mixed or independent tracks. The the the proposal supports all these things. [00:23:52] **Edward Guy**: What was the top level object? [00:23:54] **Jonathan Rosenberg**: Session. [00:23:55] **Edward Guy**: Session. Okay. [00:23:57] **Jonathan Rosenberg**: Yeah. Yeah. Exactly. Yep. Other [00:24:04] **Edward Guy**: questions? How would it work with if you were if we're doing real time streaming, And does this model, work well with that? I know we're trying to talk about a static case, but if it were, if it were real time, would it, would it would it extend without breaking the model? [00:24:24] **Jonathan Rosenberg**: Well, I guess, Thomas proposed that. Right, Todd? There's no change from what Thomas to your proposal was. You wanna speak there? Thomas? [00:24:34] **Thomas McCarthy-Howe**: Yep. No no change there. [00:24:36] **Jonathan Rosenberg**: Yeah. So to clear, Edward, the answer is you could use a dash URL for the Yep. Recording, and that would then you'd be able to access it. I wouldn't say this is a natural format for streaming. It's really primarily for post. [00:24:48] **Daniel Petrie**: But Yeah. Right. Right. It I I think you get, at best, you know, semi real time kind of kind of support [00:24:58] **Jonathan Rosenberg**: Yeah. [00:24:59] **Daniel Petrie**: In in Deacon, not not I mean, it's not intended for for, you know, session setup. Yeah. [00:25:07] **Jonathan Lennox**: Yeah. Yeah. [00:25:09] **Jonathan Rosenberg**: Yeah. There's other protocols for that. So even in the contact center industry, I'm pretty familiar with the protocols in the space. I designed one for five nine that didn't use anything like this at all. It was, I would say, you know, with, but not SIP. G r it was a gRPC protocol. Genesys has had a very similar protocol I looked at. So there's, like there's just these proprietary SIP like things for streaming audio. That that's more what there is for real time. Alright. So, yeah, so the specific proposal is to, you know, add these in as as objects in the document. We talked about supporting back compatibility, so that would mean there's multiple ways to do things. So you could have dialogue at the top level or as this is basically proposing that dialogues are you normally use a child of session, but you would be able to support the existing implementations. Just you could do it with or without, and the document would recommend this is my proposal on a go forward basis just to put session at the top level and dialogue under it. But the syntax would still require supporting dialogue at the top level next week at backward compatibility. The other things to your role proposed here are backward compatible by introducing just a new way of doing things, including the participants array via index rather than ID rather than index, which we'll discuss in a moment. [00:26:31] **Chris Wendt**: Okay. Yeah. I was gonna ask. So the proposal is to incorporate this into the vcon-core document? [00:26:36] **Jonathan Rosenberg**: That is still my I think this is also contentious, but that is still my proposal. And and Yep. We should make that a specific discussion topic is extension for this main document. Right. [00:26:48] **Thomas McCarthy-Howe**: Yep. Yep. Yep. And and and by the way, I I think I agree. I think that's the main conversation to have. I don't I mean, I I I think this is an improvement on this on on the vCon. I think these are fundamental pieces of conversations that we didn't have a a way of, you know, representing, that they are first class ish objects. So whether or not they're they are introduced by an extension or in the core, I think it's a logistical problem. But I think the but but the the actual idea from my perspective, it makes a lot of sense. [00:27:34] **Chris Wendt**: What you mentioned that, I guess, Dan, you have some quibbles with, I think [00:27:41] **Daniel Petrie**: Yeah. So I have a a a, you know, kind of a tweak on this. I I mean, I I I see all the requirements that Jonathan is identifying here, I don't disagree with any of them. I, you know, I think they're, you know, the three three issues. Right? Is the a better concept of session, elevating events to to a full class citizen up at the top level solves, you know, a number of the you know, two or three of the problems that I had identified. And, you know, it and we it solves the other problem that we were had and that was, you know, probably not so so elegantly elegantly done in terms of of tying together, you know, various ways of of in in in which, you know, a session is recorded. You know, sometimes it's all in one channel. Sometimes it's in separate channels. Sometimes it's a talk spurts, you know, and and things like that. And so, this this there's a better job of tying it all together. What I I'm just I'm spinning it a little bit that I think simplifies things a little bit, you know, for the simple cases and and preserves the the hierarchy and and everything that we have here. Can I actually, can I talk to my slides? [00:29:04] **Jonathan Rosenberg**: Sure. Yeah. [00:29:07] **Daniel Petrie**: Chris, can you pull them up? [00:29:11] **Chris Wendt**: Oh, that's right. I yep. Give me a sec. So [00:29:24] **Daniel Petrie**: next slide. You know, we got one topic here today. I well, you know, I guess we have some subtopics, right, of extension versus not, and and, hopefully, maybe we can get the the charter, but I don't have any of Redaction. Redaction is Yeah. And redaction too. Yeah. And and I I can I can address that as well? Next next slide. So I I hope that this this is probably the, I think, the least contentious, And so I'm starting with this one in terms of so we we did have the concept of events. Right? It's not like this is a new concept. It's just we had that tied into to the dialogue object. And so, you know, we had these con these these events that we were capturing as part of the dialogue. And so this idea of of elevating, you know, the events up to, you know, top level object, a new events object, I think it's a great idea. It solves a a number of the problems we had of, you know, well, I had this event, and I don't have a dialogue to attach it to. And so we we eliminate that that that need. Right? And so we had these join, drop, hold, you know, key up, key down, all all these sorts of events that we'd already defined. And so, basically, we're taking that and we're elevating let's take that and elevate in the we've got a new top level event objects array. Right? And we put those things that we had, and maybe maybe we have to refactor them a little bit to make them a little you know, to make it all fit in a in a more generic sense. And and that's that's that's TBD. But I think this is fairly straightforward. I I don't really have an issue with this. You know, there's you know, we we had a transfer type dialogue object, and we can convert that. Perhaps that it needs a little more investigation, but I think we can convert that into an event. Perhaps it's three different events. Again, they're just not thinking all the way through, but, you know, is there a consultation start event, and is there a blind transfer event and a consult, you know, concert That [00:31:32] **Jonathan Rosenberg**: was exactly my proposal, Dan. And I did also didn't go through all of the permutations on transfers, fully enumerate the events and sequences. That'd be a homework. Yeah. [00:31:41] **Daniel Petrie**: Yeah. But I yeah. It it it requires more thought. I I just, you know, I did I spent, you know, five minutes thinking that through. But but and and I think that works, you know, without going through the details and and and and the depth of it. Or and then we reference party objects like like we do in in in the in in the, you know, the do already do in in these events. We can, you know, you know, actually, if they're party related, they we can reference the party object by index. And if there's, you know, if we the cases where we need to and and we probably do, need to reference the dialogue, perhaps not in all cases because maybe it does a dialogue doesn't exist for the for the event. We, you know, we again, we can reference the the dialogue by by index and the session object by by by index. And I'll I'll get to that. I know there's a a, you know, question how do we do that in in in the next doc. But I think so I think, you know, not really a lot of contention with with with the event object. I think it's it makes sense and it solves some problems. So [00:32:57] **Scott Godin**: One of the things Jonathan's document one of the things Jonathan's document said here was that he wanted events tied to parties. Like, they had to be tied to a party. And just want us to consider events that don't have a party, like network failures and different things like that so that we don't make that a requirement. [00:33:17] **Daniel Petrie**: Yeah. That's that's it was my thought that the party object reference is is an optional reference. Yeah. I I think [00:33:24] **Jonathan Rosenberg**: that changes well for the I think the system type of are good examples where it's optional. Yeah. Either make it optional or you had a participant called system, but I don't that's probably, like, just needless. So I'm good with optional. [00:33:38] **Daniel Petrie**: So so I don't know. Anything ignoring the reference by index issue, which we'll we'll get into, I I don't think anybody have any issues. I think I have a clear path of, you know, what to, you know, go forward with this, and and I can update the draft for [00:34:02] **Jonathan Rosenberg**: One thing in the proposal I wrote up, Dan, events is not a top level object. It's a child of session. Session is like the the new Uber container. [00:34:16] **Daniel Petrie**: Right? No. I get that. I I I think it's useful not not having to hunt for events. And and and we have a reference to the the session that they they belong to because it's labeled by you know, so you have that. Right? You have a a a, you know, an event, belongs to a session, and and we and we identify that by reference. [00:34:42] **Jonathan Rosenberg**: So I guess that this is getting maybe this is the same issue all over again, right, which is is the is the fundamental. Like, I think you're proposing, like, a flat model. Let me just understand. Like, if everything is flat and then when you wanna have references, they reference by index. [00:34:59] **Daniel Petrie**: Well, you have a tree by reference. Right? There's a tree by reference because you're you're I [00:35:06] **Jonathan Rosenberg**: don't that's the part I don't get. Maybe maybe maybe we but let's find let's defer that. Let's defer that. Let's go through the rest. [00:35:12] **Daniel Petrie**: Yeah. I mean, that's [00:35:13] **Jonathan Rosenberg**: Okay. [00:35:15] **Daniel Petrie**: That's, you know, coming into the next contentious issue. Okay. Next slide. Yeah. So here's where I think the primary difference of what I'm proposing versus what's in Jonathan's. And that is that we have a flat array of session objects. And we we identify the parent child relationship either by pointing to the parent or the child or both, by reference. And so we have the the hierarchy. The problem is that everything here is not fit neatly into a tree. Right? That's why we have these references because otherwise we have this huge denormalization. So is there any way we do this, we're going to have to have these references. Because what we're representing is not a perfect tree. It's a network, right? Any way we do this, there's no way to avoid having to do these references. And either we have a tree and then we reference to other objects or we have, you know, a flat and and we we we create pointers for the tree. Any way we do this, we can't do this as as a tree. It just it's not a tree. Right? [00:36:38] **Jonathan Rosenberg**: I I I Can you give me example? Don't agree with that. [00:36:41] **Thomas McCarthy-Howe**: Don't agree with that. Yeah. Yeah. Give me an example. [00:36:45] **Daniel Petrie**: Well, because we're if if we we we always have to reference an object outside of that tree. Right? So we have we have you know, if if we have sessions that have dialogues that have set and and and, you know, the sessions have sessions which have other dialogues, we still are referencing parties outside the tree. Parties yeah. We we are still referencing events because events you wanna reference in in it sometimes in from one place or another. You you still have, analysis that is referencing, what it was based upon, which may be a session or a a set of dialogues or an attachment. You know, we have all these references back and forth. It's not a tree. It doesn't fit in a tree any way we spin this. And so what I'm proposing is is that the tree is by reference. Right? You have the tree because you have, you know, the the root sessions and the sessions either point to the children or they point to the the parents or they point to both. And this gives you the the hierarchical tree. Right? And you can do this with all the objects. Right? And so it's just that they aren't contained in in the object because we we're we're normalizing the data so that we don't have to have multiple instances and everything is by reference. Has the same hierarchy, you know there's no hierarchical loss in this model. And I sent an example out in email, and I have it have it in in a slide upcoming in in how we how we, you know, accomplish it. There's no linkages lost. It's just that it it's we we we don't we reduce this this need for a recursive searching for things. It simplifies things a little bit. We reduce the need for having to have, you know, these foreign keys for reference because we have absolute references to to to to objects in in in instead of having to create maps and indices and all these things for IDs. Everything is there by reference and by reference by index. So we still have, you know, we still have a session which can contain a session. We do this by reference of by the concept of having parent and child relationships that we identify. And then, you know, we have the same data is contained in a session except that we don't contain dialogues, we reference them. Right? And we you know, session doesn't contain sessions. It references the ones that that are that are part of it. And so [00:39:52] **Jonathan Lennox**: So I'm gonna say something in both, you know, both for and against us. So the four is I mean, thinking about, like, things like events, I can certainly see a case, like, where, you know, like, a network interruption event you mentioned might affect more than one session and dialogue at once. So you wanna reference it more than one place. So that might say, you know, okay. This isn't a pure tree. The thing I'm gonna say against is once you have this, you're gonna have to have everything has to check to make sure there's not cycles because I am sure that if you, you know, let there be a cycle in the references, lots of things will be very unhappy. So you're gonna have to everything has to verify. I mean, if you have it just as a tree, it's syntactically, you know, forces there not to be cycles. Once you have references, cycles are possible. So something everything has to verify there's no cycle or else we have to define what a cycle means, which sounds terrible. [00:40:46] **Daniel Petrie**: We we have we there's no way avoiding of references. Anyway, we do it. There's references. You know? But I I think but [00:40:53] **Jonathan Rosenberg**: I think, Dan, where I to be clear, I I think it's a mix. I think there's only one thing that's by reference and its participants and parties. But sessions, dialogues, events, and we can even talk about analysis, it can go either way on that. But but but sessions, dialogues, events, I'm saying are not there's no k I can't think of a case where, like, we need a dialogue to be present in multiple sessions or we need an I mean, an event in multiple sessions. I I think that the the use case, Jonathan Lennox [00:41:22] **Daniel Petrie**: Your your k your conference sidebar case is exactly that. You can have a sidebar where where a user is being mixed into into both the main [00:41:32] **Jonathan Rosenberg**: conference and the sidebar. Participants, I agree. So I'm saying [00:41:36] **Daniel Petrie**: that a dialogue is the recording of that of that person speaking, and they are part of two different conferences at the at two different sessions at the same time. It's a single dialogue, belongs to two different sessions. [00:41:52] **Jonathan Rosenberg**: Oh, wait. I've never been in such a meeting. You're saying someone's speaking in a sidebar. [00:41:57] **Daniel Petrie**: You can can do a mix. I mean, our our our our our soft client supports this. You can have a mix where a person is speaking and and they that gets mixed into two separate conferences, two different two different mixes, right, if you will. The main conference and the sidebar. This happens all the time. [00:42:17] **Jonathan Rosenberg**: What's the use case? I've never seen this. Yeah. [00:42:19] **Scott Godin**: Jonathan? In teaching, [00:42:21] **Daniel Petrie**: In in you know, I I've got a I've got a class where I'm I'm you know, I I have some breakout sessions in my class, and and I the the the instructor wants to make an announcement to to these sidebars that are off doing working on on something, you know, by themselves. They wanna say, alright folks, in five minutes, we're all gonna come together back into the main conference. Right? [00:42:48] **Scott Godin**: Another example I can think of is contact center coaching scenarios where your you know, the agent can hear their supervisor, but the caller can't. And they're they're coaching them through a call, there could be two recordings for that. One from the caller's perspective, what are they hearing, and then one from the coach's perspective. So two sessions. [00:43:10] **Jonathan Rosenberg**: I see that. Call those [00:43:11] **Thomas McCarthy-Howe**: two sessions. I would call those two record two dialogues. [00:43:14] **Daniel Petrie**: Two dialogues. So you've got one one recording, you know, if if you're recording a single person, right, that it's getting mixed into two different sessions. Right? Yeah. [00:43:25] **Jonathan Rosenberg**: This is an interesting one. Let's let's pick this one up. This is a good one. Thank you, Scott. [00:43:29] **Scott Godin**: I think that's the question to answer, though. Can a dialogue be in two sessions? [00:43:32] **Jonathan Rosenberg**: That's what Dan is saying. Yes. In this in this case, you Scott, are you saying in this case, the answer is yes? So the the contact center agent let's just let me recap the use case. It's a we have three participants here. We have the the consumer calling in. We have the contact center agent. We have the coach. Oh, and I think what you're saying and this is a whisper scenario where the coach is whispering to the human agent, the contact center agent. The contact center is here. Here's the coach. The coach here is the agent. The human consumer, they only hear the contact center agent. They don't hear the coach. This is the use case, Scott. Right? [00:44:08] **Scott Godin**: It is. But Thomas brought up that maybe that's just two dialogues. So [00:44:12] **Jonathan Rosenberg**: Well, I think [00:44:12] **Daniel Petrie**: it's But, no, it's [00:44:13] **Jonathan Rosenberg**: Yeah. [00:44:14] **Daniel Petrie**: It's it's not two dialogues. Right? It's it's you know, the the there's there from a recording perspective, it it's it's the agent is is is being recorded, let's say, in one stream. And that's being mixed in two different conferences. What the agent says goes to the customer and what the agent says goes to the it is heard by by the supervisor. Right? Yeah. [00:44:45] **Jonathan Rosenberg**: That's a real interesting case. I do think it's two distinct sessions, right Yes. That have this relation. And this is another interesting use case because it doesn't have an obvious So I mean, [00:44:56] **Daniel Petrie**: in in in in the, you know, online ed, this happens all the time too for like I said, because, you know, people have these breakout sessions. And [00:45:06] **Edward Guy**: is a dialogue or a session more akin to a channel, you know, where everybody hears everything on it, or how do you how are you differentiating between the two? [00:45:17] **Jonathan Rosenberg**: To me, let me let me give the definition I gave in the document. The session is a container object. Right? And it has a start and an end, and it represents a what you might think of as a as a meeting. Right? It it's it's a thing that has participants that come and go. There's a shared context that defines the reason for its existence that's distinct from other sessions. A dialogue to me is like, we we we tapped off the wire. We recorded the information that was exchanged off of participants. It's a chunk of stuff that was exchanged as part of that session. Mhmm. That's that's to me the distinction between these two things. So And the we think about the context, the rationale for its existence being the primary definition of it, in this coaching use case that Scott just gave, which is an excellent use case for the conversation here, there are definitely two sessions. And I think what Scott what Dan is saying is for efficiency reasons, rather than do there's there's there's a recording of what the the contact center agent said. Rather than duplicating that dialogue in each session, you could do by reference, and then a single dialogue would be in multiple sessions. [00:46:23] **Edward Guy**: Well, I thought I heard the opposite. I thought you said that, what you described would be, we're all in this meeting here. Somebody somebody calls me on the side and says, you know, you excuse me. The, we have a sidebar, and the the I think you define the dialogue basically as something that everybody has access to all the same information. Common experience. [00:46:47] **Jonathan Rosenberg**: No. No. Dialogue session is [00:46:49] **Edward Guy**: not a common experience. [00:46:50] **Jonathan Rosenberg**: No. No. No. Sorry. A dialogue is literally like a tap on the wire kind of recording of content that was exchanged. And it could be single or multichannel. Those are just different ways. But it's it's a it's a or it's a record, where a session is the container object that represents a call with a a shared reason for being. All the participants don't have to be in the session for the entire duration. That's the new one. But there's a set of people who are there in the session at least for some part of the time. So that that's a distinction. But I I but I'm now convinced. Scott has convinced me that I'm wrong about the truth. Like, that that it is it is because this is a good use case where I think you want a dialogue to be present, in multiple sessions in this case. You want the contact center agent's recording file of their just their audio. That could be present and referenced in the session with the human, with the consumer, or the session with the coach. [00:47:48] **Thomas McCarthy-Howe**: Yeah. You know? And there's a there's another example that we don't have to dive into, but dialogues can also be emails, and you can surely send one email that would appear in multiple sessions. [00:48:00] **Daniel Petrie**: Yeah. I mean, the same thing happens in chat too. Right? You have different different groups that Well [00:48:06] **Jonathan Rosenberg**: well, hang on. Hang on. In in I don't an email thread to me is is one session. And so you [00:48:13] **Jonathan Lennox**: But yeah. But, I mean [00:48:15] **Daniel Petrie**: Your your participants list can change over the life of the time of of of that thread. Right? [00:48:21] **Jonathan Rosenberg**: That's right. Yeah. Yeah. But you would represent that. Again, let's talk I mean, to me, you'd represent an email thread Yeah. As email session. You'd have each email as a dialogue. And, again, in the model that I proposed, a dialogue has a a an a who contributed to the this content and who received this content Mhmm. Link. And, therefore, it's very clear, like, in you know, that that, okay, all the recipients would be those who received it, and the sender is the one one who sent it. And so an email thread [00:48:52] **Thomas McCarthy-Howe**: Well, that's [00:48:52] **Jonathan Rosenberg**: If if you change your participants, that's fine. Like, that for each [00:48:55] **Thomas McCarthy-Howe**: That that's very true. Yeah. Yeah. No. What I what what I was suggesting was, you know, that you were representing a a multichannel conversation that started with an email and then went into a chat conversation. K. That that is you can represent that using a vCon. And the and the email that is in that session may have also been sent to other people, which are in different sessions. But you're what you're trying to represent there isn't the the session of the of the email, but how in an omnichannel way, your how that conversation went. And this is a and that's only it's an expression. Right? You're you're you're you're not saying this is the everything which has happened, but how would you express a a multi an omnichannel, you know, conversation? That's how you would do it. So so I think I think that's I think I'm convinced too. [00:49:56] **Jonathan Rosenberg**: I'm not sure I follow that, but I I [00:50:00] **Thomas McCarthy-Howe**: don't Thomas think Yeah. So the part the part of the part of the the so the the the vCon is a is an expression, allows you to express conversations, right, to capture them and to so you can analyze them. It doesn't it doesn't require that it has all the emails or just one email or that it's only has emails. It can have emails. It could have a phone call. It could have messaging. All those are valid, and you can express, you know, a conversation that went over those modes by using those dialogues. [00:50:36] **Jonathan Rosenberg**: Yeah. [00:50:38] **Thomas McCarthy-Howe**: And if you have multiple sessions, that email may have appeared in multiple sessions. The same one, but for different purposes. It's not like you're trying to represent the email itself. You represent [00:50:51] **Jonathan Rosenberg**: I don't It will be a real world use case where where an email is in multiple sessions that I don't get. Like, I get it for the weird coaching case because we have two distinct conversations going on unrelated to each other in essence. [00:51:05] **Thomas McCarthy-Howe**: Yep. So I sent an email to 10 parties. [00:51:09] **Jonathan Rosenberg**: Yeah. [00:51:11] **Thomas McCarthy-Howe**: Five of those parties then called me up. Each of those calling me ups, I want to represent as a session. But I also want to represent that I sent in the email that started the phone call. And it's the same email. It's not a different email. It's the same email. [00:51:29] **Jonathan Rosenberg**: But then that email in in the model, you just described each call each phone call is a distinct session? [00:51:34] **Thomas McCarthy-Howe**: Correct. [00:51:35] **Jonathan Rosenberg**: And you want the email to be the first part of the first dialogue in each of those sessions. Is that what you're saying? Yes. [00:51:43] **Thomas McCarthy-Howe**: Correct. [00:51:44] **Jonathan Rosenberg**: Oh, I see. Well, that's an interesting [00:51:46] **Edward Guy**: use They're really they're they're subsessions in the terminology you're using before, Jonathan. Right? [00:51:51] **Jonathan Rosenberg**: Well, I think I think Thomas is proposing, if I'm understanding correctly, the way they model this use case, is that let's say let me repeat the use case. You know, user sends, a blast email to 10 people. [00:52:07] **Thomas McCarthy-Howe**: Some subset calls. [00:52:08] **Jonathan Rosenberg**: And and some subset call them back about it. Let's say three of them call back about it. So you would have three sessions. And in each of the sessions, there is the first dialogue is the email that started the thing. And then the second and then for each session, there's also the audio the audio recording. Now I'm not [00:52:28] **Jonathan Lennox**: sure if I [00:52:29] **Jonathan Rosenberg**: model it this way. I have to like, I think you might do better with the starting with the email as a single session that had the sender and all the recipients. And then what Edward is saying Ed is saying is it's like a sub session where it spawned a call, and each of those calls has its own distinct I I think that's [00:52:47] **Thomas McCarthy-Howe**: You you could. Yeah. You could. That that can also be. Right? I'm not saying I'm not saying that that's also a bad way of expressing it. I'm just Yeah. Yeah. [00:52:55] **Jonathan Rosenberg**: Yeah. Okay. Anyway, I think on time. [00:53:01] **Edward Guy**: Go ahead. I was [00:53:03] **Jonathan Lennox**: gonna say session's really a way of organizing, dialogues. Alright. Dialogues event participants [00:53:10] **Thomas McCarthy-Howe**: Yeah. Yeah. That's right. [00:53:11] **Edward Guy**: It right. The sessions that you just sort of maintain or dialogues, their associate events, and participants. [00:53:19] **Jonathan Rosenberg**: Right. Yes. [00:53:20] **Thomas McCarthy-Howe**: Right. Yep. And it it it it proves out, you know, Dan's point that, actually, there are things that do go by reference across sessions. [00:53:29] **Jonathan Rosenberg**: Yeah. But but back to the original flat you know, whether this is a tree or a graph is the question. I think the the coaching use case is really a good one as it demonstrates graph, not tree, both with a shared dialogue, which I'll I'll buy, you know, so I'm I'm sold on that. And even on the session level because it's like a it's a sort of a it's an odd use case where it's not clear that the parent call between the the customer and the contact center agent didn't really spawn the coaching session. And so they have a relationship with each other. [00:54:08] **Daniel Petrie**: Peer sessions. [00:54:09] **Jonathan Rosenberg**: But they're more peer sessions. And you can imagine oh, man. Like, this this gets whack. But, like, you can imagine a monitoring session where the coach monitors his region over two distinct calls with customers. So customer one calls in, talks to the agent, hangs up. There's a brief pause. Customer two calls in, talks to the agent, hangs up. The coach was listening and whispering through the entire thing, including the portion where there wasn't a customer on the call. What's the relationship between this thing? This is definitely a graph and not a tree. So that that's a good counterexample to my original hypothesis that it's a that it's a tree. So I'm I'm now sold on the graph model as being superior. Though I still wish to do IDs, not reference it, but let's separate that to the next topic of discussion. It does introduce the problem Jonathan pointed out, which is like, okay. Now, you know, welcome to cycle hell, which is you you have to your parser for this thing now runs the risk of having cyclical references, and you can have you know, you have to be prepared to do that. To the validity of termination is now more complicated to detect cycle detection is is not trivial. [00:55:27] **Thomas McCarthy-Howe**: Well, thank god we have robots. [00:55:29] **Jonathan Rosenberg**: Well, it can just give you a trap for a robot if you have a cyclical Vcon. I mean, that's what I'm saying. It's not a good thing. Another drawback, by the way, I think it's worth pointing out. This is my main original objection to flat with references, is it just makes comprehension more difficult. Like, like, when I look at a JSON document, like, it's very easy for a human being to understand the structure. Right? Once you have rep representation flattened by reference, it's no longer easy on inspection for a human to understand what actually happened. In fact, to visualize it, they'll need to convert it to a visual representation that looks like a graph or a tree. It also probably means LLMs are more likely to get it wrong for the exactly the same reason humans are likely to get it wrong. So I just think it makes comprehensibility worse, and it introduces this error this error condition, which is it might have cycles. But if we wanna model graphs, I mean, I don't I don't really see a way around it. So so I'm I'm sold. [00:56:30] **Jonathan Lennox**: I mean, the other possibility would be to have primarily trees, but with references. That's maybe that's the words of both worlds. But What [00:56:38] **Jonathan Rosenberg**: does it mean primarily trees, but with references? [00:56:40] **Jonathan Lennox**: You know, the the the normal cases, things are because, you know, all the phases we've described are sort of weird. And then there's sort of like a see also note that you could have that by the way, also look at this other session because it's related in this way. [00:56:55] **Jonathan Rosenberg**: Oh, I see. So support both. Like, the you're saying the the format supports both high traditional JSON hierarchies as well as by reference? [00:57:03] **Jonathan Lennox**: Yeah. Sort of by by reference is sort of an exception because it is the unusual case, I think. [00:57:07] **Jonathan Rosenberg**: It is the yeah. Definitely. These are all weird old corner cases. [00:57:10] **Jonathan Lennox**: So, like, you know, it's sort of like just like a, you know it's it's kind of like a just a not even just a not even a dependency as such, but like a see also, you know, by the way, this was also something going on here. And I don't I haven't I just thought of the stuff in my head, so I'm not positive. I understand it, but it's just a thing that might make sense. [00:57:30] **Jonathan Rosenberg**: Yeah. It it might it might, like you said, have exactly the, you know, the worst of all worlds because you're supporting both. So you have not fixed the problems with cycles or comprehensibility. [00:57:42] **Jonathan Lennox**: I think you've you've you've increased the comprehensibility in the normal case. [00:57:45] **Jonathan Rosenberg**: I see. That's true. Yeah. That's that's true. [00:57:49] **Daniel Petrie**: The the I I think, like, it's one of the reasons I'd argue for for, you know, flattening the the the session thing and and using the graph approach is that it simplifies the dialogue, the use of dialogues. Because in a lot of cases, you don't care what the relationships were. You know, a lot of a lot of you you do a lot of analysis where all you care about is who said what when. Right? And to do that, all you have to do is cycle through all the dialogues. You can ignore the session. A lot of times, you don't care about who heard it. You care about who said what. [00:58:29] **Jonathan Rosenberg**: Yeah. But why why does that matter, Dan? You can do that in any representation. You can [00:58:33] **Daniel Petrie**: Well, because no. Because it's it's it's you you start you have to hunt. It's it's more work to to cycle through a tree than it is to to cycle through a list. You know? It simplifies the simple analysis. It keeps the simple analysis simple. And if the relationships of the dialogues is important, which is a complex concept, then you you you that part is a little more complex in in in the graph representation. And so it it simplifies the simple, and it and it complicates the complex. And I I think that that is is a is a better approach because you can be dumb about it and it's, you know, iterating through an array. Or if you really care about who heard what when and and, you know, who was participants, that's a complex concept. Right? That's you know, that's not the average type of analysis. That's an advanced concept and so yes, that's more complicated, but it's a complicated thing begin with. And I I I I I don't have a problem making the complex a little more complicated and as long as it keeps the simple simple. [00:59:54] **Jonathan Rosenberg**: Yeah. The part I just don't buy is that it's not in the year 2026, having code that walks a tree, I just don't buy that that's complicated. I mean, it's just not. [01:00:03] **Daniel Petrie**: It's it's not complicated, but it's unnecessary. Right? It's it's an an an unnecessary to to to to to have to to traverse that when all you want is who said what when. [01:00:16] **Jonathan Rosenberg**: Yeah. Well, I I still I still don't I don't I don't think it's that more complicated. I mean, I I think you're probably my guess is, like, well, that's how your code works. So, I mean, this kinda makes sense. [01:00:27] **Daniel Petrie**: No. I mean, I can change my code. [01:00:29] **Jonathan Rosenberg**: This is [01:00:29] **Daniel Petrie**: this is not about my code. What I'm what what this does is it doesn't break existing dialogues. We have all the hierarchy that you are looking for and we don't break or burn people who are early adopters. And I think that's important. And, you know, and we get all the the the functionality that that that that was in your proposal. [01:00:57] **Jonathan Rosenberg**: Alright. Well, anyway, my my point was I had already been sold in this conversation on graph, not tree, which is, I think, the main point because we at least identified some cases. Then I think the question was really just how do we support that? And there was either we do it flat by reference or we do we support both, which is what Jonathan was suggesting. I I think I'm still like, I I think it's a doing everything is not the best solution, I think. So I'm I'm not sure we gain enough by adding hierarchy in the JSON representation when we also have to support by reference. So I'm I I lean slightly in favor of the fully flat with reference model. [01:01:50] **Daniel Petrie**: I I didn't think it's simpler to not have to do both. Right? I mean, it's it's more complicated for for the implementation. [01:01:57] **Jonathan Rosenberg**: Yeah. Well, I mean, Claude's gonna write the code. It doesn't matter. [01:02:00] **Daniel Petrie**: I know. You know, if if we wanna look [01:02:03] **Jonathan Rosenberg**: at it [01:02:03] **Thomas McCarthy-Howe**: that way, it's like, then we [01:02:04] **Daniel Petrie**: can we can make it as complicated as we want, and then and it doesn't matter whether humans can comprehend it. Right? [01:02:10] **Jonathan Rosenberg**: Yeah. Yeah. [01:02:11] **Thomas McCarthy-Howe**: Think of the tokens. Think of the tokens. [01:02:14] **Jonathan Rosenberg**: No. But I I I my meta point is the I I I'm not it's less clear these days that how many lines of code it takes to analyze it is is any longer a relevant metric for evaluating the standard. But I in this case, I think that what matters is the likely prone to errors in the format of the syntax when you can have both forms of representation in a single document. Like, what happens if you [01:02:37] **Daniel Petrie**: Right. [01:02:38] **Jonathan Rosenberg**: If you have something that has a parent child relation via the JSON structure, but then you will also include references that are inconsistent with the JSON structure? So it says that this other thing is my parent, but I'm sitting underneath this you know, in the in the JSON structure, it's not my parent. Like, what then? So you introduce new new ways for the structure to be errored. Which I think is bad. And we have to swallow the the problem with, cycles anyway no matter what. So, so this is why I lean slightly towards just flat with references and not also supporting structure in JSON despite the loss of readability. [01:03:19] **Daniel Petrie**: Because readability doesn't matter. Claude's gonna do it. [01:03:23] **Jonathan Rosenberg**: Well, the problem no. But I think Claude actually, I think the question about how good like, you laughed at, but, like, how good is the AI at at understanding the tree structure when everything is by reference? I mean, it's worth doing a few experiments to make sure that [01:03:37] **Jonathan Lennox**: Yeah. I mean, certainly, if somebody just wants to has, like, you you know? I mean, people are probably gonna say, have my LLM spit out a Vcon without knowing and, you know, by looking at other vCon, and then then it's just gonna make up references. Right? Right. It's not gonna know how they want the semantic there. Right. [01:03:53] **Edward Guy**: And if you try to I [01:03:55] **Thomas McCarthy-Howe**: mean, it it it's pretty reasonable to assume that LLMs are trained on RFCs? [01:04:01] **Jonathan Rosenberg**: This is not enough of them to be useful, I don't think. By the way, we did an experiment on this, Thomas. It was granted, it was maybe nine months ago, so that's, like, ancient history in hell. [01:04:12] **Thomas McCarthy-Howe**: I'm like, [01:04:13] **Jonathan Rosenberg**: nine months ago, I had one I forget what model it was. I asked it to take an image and a of a like, I drew a diagram on my whiteboard, and I wanted an ASCII art version of it. And I was so hopeful that it would be able to perform this task. It failed so badly so badly at this task that it was shot. Yeah. And I think that again is an indicator that the amount of RFCs and ASCII art is not meaningful. But, anyway, I think this is a this is a small experiment worth doing before we do a formal thumbs up, which is to, you know, write some code to generate a, say, you know, a a recon of moderate complexity, say, 20 dialogues, five sessions, or something like that, all with references, and then ask it to describe the tree like structure or the structure of the graph represented there and see how well it does. And then ask it to invert it and see if it produces a vCon with valid references. And if it fails those things, I think that is certainly a worry with this approach. But, that would sort of be my proposal as a little little test. [01:05:21] **Thomas McCarthy-Howe**: That's a [01:05:21] **Chris Wendt**: great idea. Yeah. So I you have some more slides, Dan. Yeah. [01:05:26] **Daniel Petrie**: Yeah. Next slide. I can't remember what's what I hit. I think next, I hit the dialogue. Yeah. So changes of dialogue were pretty minimal in in in what I was proposing. Parties array continues to reference kind of the concept that that that Jonathan had identified as contributors just so we don't change things. And we add a new, you know, participants array for non contributing parties who are present or receiving or whatever. I I I'm not set on that name. You know? There's other names for that that that array of of parties, but, you know, participants passive receiving, you know, this I I you know, the name's not important. It's the concept. Right? I think that, you know, the concept of capturing those parties who were present or passive or receiving, but not contributing to the the particular dialogue. [01:06:20] **Jonathan Rosenberg**: I I think there was there is an important, subtlety on this that I put in my document that I think is worth calling out, which is this question of what does it mean to receive? Does that mean I received all of it, or does that mean I received some of it? And, I made a I I sort of my idea was it very clearly means you received all of it, at least from the perspective of the entity that was performing the creation of the vCon. Obviously, you can't guarantee receipt because there might have been, like, network downtime or whatever. But I I I thought it was important to be at least be clear on the definition of what it meant to be a recipient. [01:07:02] **Daniel Petrie**: I think that you can't do that because you can have you know, someone can be, you know, in the middle of a sentence, and someone can join. Right? And so that's what the events are for. The events are for to say, oh, this this person, you know, received some portion of this, but I have to look at the events to identify whether otherwise, you're forcing people to break that dialogue into multiple pieces based upon join or leave events. [01:07:32] **Jonathan Rosenberg**: Right. Which is Or [01:07:34] **Daniel Petrie**: you know? [01:07:35] **Jonathan Rosenberg**: But then that is exactly what I was proposing. So I was proposing that my proposal was to basically support both models with different things. Okay? You can have participants in the session object, and and that is the thing you're describing them, which is these are the people who were here at least for some portion and received at least some portion of some of the content contributed in this session. But I'm not making any statement about exactly what they portions they received. Then in the dialogue object, you can optionally, that's why I made this optional, and optionally include the recipient's thing that indicates this dialogue was in fact received all of it was received by these people. So that that allows you to support both models. If you don't wanna break it up, if you wanna split the dialogue into n, you know, and lots of little ones based on each participant set would require a unique dialogue. If you don't wanna do that, don't do that, and then you just don't include the participant's object for each dialogue. You you have the full list of who is in the meeting at the top, and you use the join leaves to try and ascertain who might have heard what, that's option a representation. Option b representation is if you actually want to be, like, very crisp on who received what portions of the audio, then you would include this participants. You would you would break up the dialogue, and you would have a participant subject. But I don't think there's a purpose. I don't think you need having participants at the session level and at the dialogue level, but the dialogue level doesn't mean they actually received it. That doesn't make any sense to me. [01:09:14] **Daniel Petrie**: Okay. So you're saying participants will be in the session [01:09:19] **Jonathan Rosenberg**: That's right. [01:09:20] **Daniel Petrie**: As well? Yes. Okay. [01:09:23] **Jonathan Rosenberg**: The the It basically models the thing you were Yeah. [01:09:26] **Daniel Petrie**: Yeah. Right. Okay. So the simple case, their participants are only in the session. [01:09:30] **Jonathan Rosenberg**: Yes. [01:09:32] **Daniel Petrie**: And the more detailed case, the participants are in the dialogue a subset of those participants are in in a in a dialogue Yeah. As well, but only if they heard the entirety. [01:09:49] **Jonathan Rosenberg**: Yeah. That's what I'm suggesting. [01:09:50] **Daniel Petrie**: I I [01:09:50] **Jonathan Rosenberg**: think that's [01:09:52] **Daniel Petrie**: that's a little confusing, I think. [01:09:55] **Jonathan Rosenberg**: Yeah. [01:09:57] **Scott Godin**: That's why you require the recording channel mapping, I guess. [01:10:02] **Jonathan Rosenberg**: No. It's not no. That that's solving a different problem, which is how you because the multichannel recording. Is that I I [01:10:07] **Daniel Petrie**: think So you have a a participant who didn't receive that whole session, but they're not listed in the parties or the participants for that segment? [01:10:20] **Jonathan Rosenberg**: Sorry. Say it again, Jim. [01:10:21] **Daniel Petrie**: So I I I've got a I you know, so, you know, it's some I you know, someone says something, and we have a dialogue that lists the parties, the person who was speaking. Okay. Let's assume it's just a single channel talk spurt. Right? Yeah. And so you the parties is one one one party, and then, the people who receive that in entirety are listed there. [01:10:51] **Jonathan Rosenberg**: That's right. [01:10:52] **Daniel Petrie**: And anyone who received part of it is not listed? [01:10:57] **Jonathan Rosenberg**: That is what I that is what I proposed in the document. [01:10:59] **Daniel Petrie**: I I I [01:11:01] **Edward Guy**: That's That's I think that seems too complicated. The the, you have the events that tell you when people joined or when they left. [01:11:11] **Jonathan Rosenberg**: Yeah. That might be sufficient. Think I'm gonna get yeah. Yeah. [01:11:14] **Edward Guy**: You could assume that the you could assume or seems probably the you could assume that if they were connected between the time they joined the time they left during a dialogue that they received the content or the content was intended to be received by them. You can't you know, as we talked before, we don't know if there was a network issue. [01:11:34] **Jonathan Rosenberg**: That that that's the alternative. I mean, I think that, like, I'm I'm largely sold on that simplification. Just as a note, again, back to complexity of parsing, you now have to you you would you would have to process the entire stream of join leave events and construct and ultimately derive this fact, which is who heard this based on the full sequence of events up to that time. [01:12:03] **Edward Guy**: Otherwise, you're you're having every time somebody refreshes their browser, they're gonna do leave and join, and that's a new dialogue. [01:12:11] **Daniel Petrie**: Yeah. I mean, it's so it's I mean, no. I mean, I I have more a problem of the fact that I didn't list a person who saw heard part of that. Yeah. It it seems like I'm glossing over the fact that or, you know, I'm hiding the fact that someone heard part of that. Yeah. I I worry more about that. [01:12:29] **Jonathan Rosenberg**: Yeah. [01:12:29] **Daniel Petrie**: The fact that it it it looks like that person didn't hear that even though they heard part of it. And maybe they heard most [01:12:34] **Jonathan Rosenberg**: of You would have to the I I get I by the way, I'm now agreeing we should remove this, but but I I think that's just an issue of having a clear definition of what this object means. You'd have to name it, like, participants who received all content, you know, kind of thing to make it clear. Yeah. Yeah. But I think I think the point is that Ed made, and it's a fair point. Like, this is just duple you don't need this. This is duplicative with the event stream. And so in general, like, a general truth of document structure is if you have multiple distinct ways of representing the same thing, it produces an error case of consistency problems. So you want one way of representing. So in this model, if you have the participant join leave events, you can fully construct who heard what portions. And let's just stay stay with that, and therefore because you understand what I'm saying. Like, if you had this there and it lists two people, but you had join events and leave events that showed that those two people also were there for the whole time, what's the conclusion? Like, did they or did they not hear the document? You now have no way to know what the answer is. Whereas if we only use the join leave events, there's no way to have an inconsistent answer to the question, who heard this piece of content? So, therefore, I am I am swayed by the argument that Ed is making, and we should remove this participant's array and instead rely on the join leave events. [01:13:56] **Daniel Petrie**: And so there will be a participants list in the session Yes. [01:14:02] **Jonathan Rosenberg**: Okay. And join leave events that name participants. [01:14:05] **Daniel Petrie**: Yes. Yeah. I I like that. [01:14:08] **Edward Guy**: Join leave to a dialogue? Now that's where I'm confused. [01:14:11] **Jonathan Rosenberg**: No. Session. To a session. But then Remember dialogue in the way I in this data model, a dialogue is just like a tap on the wire. It's audio it's bits and bytes in audio. [01:14:22] **Daniel Petrie**: I I think that it that's optional for dialogue. I think it's man you know, mandatory for a session, optional for dialogue. [01:14:29] **Jonathan Rosenberg**: What what's optional for dialogue? [01:14:32] **Daniel Petrie**: The the join leave reference. [01:14:34] **Jonathan Rosenberg**: Oh, no. No. Hang on. Hang on. Hang on. In in the model I had envisioned, join leave is strictly a property of session, not a property of dialogue. You know what think? [01:14:45] **Daniel Petrie**: Where does I the [01:14:46] **Jonathan Lennox**: I don't have a concrete compatibility design. [01:14:49] **Daniel Petrie**: I I I don't have a concrete case, but I I think I mean, I I wasn't even thinking about backward compatibility. But I think I I don't know. I I have to think this through. I think that we optionally will want to reference dialogues. It's it's more gut feeling than than I can put it needs more thought. Right? But I I I had it listed as I think if we back to the back up a a two two slides, I think I had it listed as, you know, optional dialogue reference optional session reference mandatory. Yeah. Last the last bullet there. [01:15:24] **Jonathan Lennox**: And the other thing I [01:15:25] **Edward Guy**: would say is that that the participants are defined at the top level as part of the session, and they're referenced by other places. [01:15:34] **Daniel Petrie**: Right. [01:15:36] **Jonathan Rosenberg**: Well, not exactly either. So in the current vCon model, parties is a top level thing outside of a session altogether. [01:15:44] **Edward Guy**: Ah, okay. [01:15:45] **Jonathan Rosenberg**: And that's the full Yep. Data, your name, your email, your, you know, your whatever it is. And then in anywhere else, whether it's in a session, in a dialogue, in an event, it just references that. Yeah. [01:15:58] **Edward Guy**: That that's consistent with what I what I was trying to say, but didn't say properly. Alright. No problem. [01:16:03] **Daniel Petrie**: Yeah. Yeah. I I don't I I'm not positive about that. I I and I'm you know, maybe after digging into the I'll I'll just find that, you know, we don't need the reference, the dialogue in in in events. But I [01:16:19] **Jonathan Rosenberg**: Well, I guess, here let me let me let's partially [01:16:22] **Scott Godin**: there's gonna be events that are specific to the recording. You're gonna want an optional reference there. [01:16:26] **Daniel Petrie**: Yeah. I I I I think there are, but I I I can't put a concrete I and we can we can table that one then. [01:16:32] **Jonathan Rosenberg**: I have one. An extra use case. Let let's say we have a multimedia meeting that was what we're doing right now. We have chat, we have voice, and we have video, and each of those are recorded separately. Right? But someone is present in the voice but not the chat, or someone's presence in the chat but not the voice. How would you model that? That's a good example where you would actually think about join. This is a doozy. [01:17:06] **Edward Guy**: Yeah. I always knew that. [01:17:07] **Daniel Petrie**: Kind of [01:17:08] **Jonathan Rosenberg**: it's it's kinda like channel. [01:17:09] **Daniel Petrie**: Those are two the the chat and the voice are kinda two subsessions in a session. Right? [01:17:14] **Jonathan Rosenberg**: Yeah. That's probably [01:17:15] **Daniel Petrie**: In a way. [01:17:16] **Jonathan Rosenberg**: Yeah. I think that's probably I was about to say, you don't want dialogue either because if I've if I've split the dialogue by time, like, so that I have each speaker as its own dialogue [01:17:25] **Daniel Petrie**: Yeah. [01:17:25] **Jonathan Rosenberg**: You have is no way to add remodel this with join leave on the individual dialogue. So you need to model Right. This is three distinct sessions. And there's another thing, by the way. There's another good example where we have like, I guess you could still do a parent child, but that these deep sessions are related. Right? They're all part of the meeting, so we wanna be able to model that. Yeah. But, yeah, then the participants join leave each each session individually, and you have a unique session per media type. I think that's the best way to model this. [01:17:57] **Daniel Petrie**: Yeah. So I I need a couple more things here. I I think I had two two slides left here. Alright. Let's skip yeah. To this one. This is the example. I emailed that because I know this is an eye test. I I emailed this tip to the to the work group. But this was basically the yep. [01:18:21] **Scott Godin**: Sorry. One sec. Before we move on from participants Uh-huh. Contributors. I was a bit confused over whether a contributor was also a participant or whether those are two independent things. Can you contribute without receiving? [01:18:36] **Jonathan Rosenberg**: We just what you mean? [01:18:38] **Daniel Petrie**: Contributor is who's who is who is putting input to the the actual [01:18:43] **Scott Godin**: cap Like, a cap part. [01:18:44] **Daniel Petrie**: Conversation. Right? So oh, so But is this implied that [01:18:48] **Scott Godin**: they also received, or do they need to be in both lists if they're contributing [01:18:52] **Daniel Petrie**: in this? [01:18:54] **Jonathan Rosenberg**: No. No. I I I think we've actually answered this question very crisply with the change. Let's go back to slide because go back, Dan. I think we disagreed we are going to remove the participants or passive or receiving, whatever we're gonna name it, that is being stricken. We're not gonna with that. The only thing is parties that references contributors. To know who heard it or who saw it, you would use the participant join leaves that are properties of the session itself. So the the contributor would have joined the meeting, and then there'd be a dialogue which lists them as a party, and then you would know that they were, in the meeting, and then they spoke this segment. Right. [01:19:32] **Daniel Petrie**: So there's a single parties list in the in the session. It lists everybody who potentially received, the, you know, the, the conversation. Yeah. And to to know who specifically who receives, you know, any particular snippet, you have to look at events. [01:19:52] **Scott Godin**: Yeah. But so are you saying there's no contributors now? [01:19:55] **Jonathan Rosenberg**: No. There's [01:19:55] **Daniel Petrie**: There's only just parties. Yeah. And it is there's a parties parties list at at the top level, which are are contributors and participants. The way you know contributors is you have to look at the dialogue. [01:20:08] **Jonathan Rosenberg**: Nope. Oh, man. Dan and I are now saying different things. [01:20:11] **Scott Godin**: Yeah. I figured you were. [01:20:11] **Daniel Petrie**: No. I think we are. [01:20:12] **Jonathan Rosenberg**: No. I don't think so. So let me let me let me start from the beginning. In the Bcon, there's a top level object called parties, which just list peoples. And then Yep. It doesn't say anything about where they were, what they heard, what they said. That's like our database, like our CRM. Okay. Great. Now I can reference those things. Whenever I use a reference, I'm just using the word participant for a reference for one of those things. Okay? Yes. So participant is the index or ID. We'll get to that in a moment, but a participant is the reference. Okay? I'm saying there is a and it could be participant can be can mean the meaning depends, right, on on the object we're gonna create. I'm saying we're gonna create an object on a dialogue, which he's calling parties, but maybe we should call it contributors so it ain't confusing, that list the people ish things that whose content contributed to the record that we have in this dialogue. That's Yes. That's what we have. And we do not have a separate object that represents the peoples of that the parties that received it. We just do drive that from joint leave. That is what I thought we just agreed to. [01:21:18] **Scott Godin**: So in a conference call like this, if [01:21:20] **Daniel Petrie**: So you're [01:21:21] **Scott Godin**: never unmutes or never talks, then They're not in the parties list? [01:21:26] **Daniel Petrie**: So the session doesn't create have a list of parties? [01:21:32] **Jonathan Rosenberg**: It have it has a list of I'm trying to maybe we're talking about different things. Like, I'm trying to separate parties and participants. Parties [01:21:42] **Daniel Petrie**: I was have named union [01:21:44] **Jonathan Rosenberg**: males and and what have you, and a participant is a reference to that. So pointer versus object. [01:21:49] **Daniel Petrie**: Okay. Alright. So I I and that's what I was talking about is a reference. And in a session has a reference to all the parties that either contributed or participated or received. [01:22:03] **Jonathan Rosenberg**: That's right. I'm agreeing with that. This is this is there's a list of the way you would think about [01:22:07] **Jonathan Lennox**: either the folks in [01:22:08] **Jonathan Rosenberg**: the meeting, that's the there's a list of those by reference in [01:22:12] **Daniel Petrie**: the in the section. [01:22:13] **Jonathan Rosenberg**: In the session. Yes. [01:22:14] **Daniel Petrie**: Yes. So we are saying the same thing. Okay. Got it. That I think that's that's what I was saying. I I sorry. I was confusing. I I the terminology between reference and the party array of, you know Yeah. They're both both arrays array of references versus array of objects. [01:22:30] **Jonathan Rosenberg**: Scott, does that answer your question, or you're still not this is still not clear? [01:22:33] **Scott Godin**: I I thought you said that there was only contributors at the session level, but I think that's not what you're saying now. [01:22:40] **Jonathan Rosenberg**: That's not what I'm saying. [01:22:41] **Scott Godin**: I just think if you're in the conference, whether you're contributing or not, you're listed at the session. [01:22:45] **Jonathan Rosenberg**: That's correct. [01:22:45] **Scott Godin**: That's That makes more sense to me. Yeah. Yeah. [01:22:48] **Jonathan Rosenberg**: So you're in the meeting. If you joined and you didn't speak, but you were, like, sticking around, you're still listed at the session level. If you look at the dialogues, if you never uttered a word, you would never show up as a contributor. I I I I think that word parties as the definition of this thing is what's thrown us off, by the way. Yeah. But but you're never you're never a contributor to you're never listed in any dialogue object as a contributor. If if you utter something, then it depends on how the dialogue was constructed. If you have one giant audio recording for the whole thing, then you would be listed if you ever uttered something at some point during the meeting. If, on the other hand, we broke it by talks per or by by speaker channel, if you didn't contribute to that talks per or that channel, then you would not be listed. [01:23:39] **Daniel Petrie**: Yeah. I I think we we were in our agreement. It was just the terminology. Got it. [01:23:44] **Jonathan Rosenberg**: All of this obviously needs very crisp [01:23:47] **Daniel Petrie**: Yeah. Yeah. [01:23:47] **Jonathan Rosenberg**: Documentation, to have clear definition with examples. Yeah. [01:23:51] **Daniel Petrie**: Yep. Alright. Can we move to the I mean, so this was an example, right, that I I put together. I used Jonathan's four four point six or whatever example, and then I added a few extra objects in there just to to kinda embellish it a bit. But, basically, we've got a parties array. Right? We've got a sessions array. We've got a dialogue array, and we I didn't pull out events. I didn't think that was contentious or anything, and I didn't put, you know, analysis again because there wasn't I didn't see there as being any significant changes. And so, you know, so we have and and I didn't even define all the parties here that are referenced. I I defined three parties, and you can extrapolate from there. I defined two sessions. The first session is the parent to the second session. I I did a pointer from the child to the parent. We could do the other direction. You know, that's I think it needs a little more thought and and and and, you know, maybe we wanna do both. I don't I don't know. And it it's on the list of issues that I have that's on the prior slide here. But but so we have, you know, this this subsession. The subsession has a conversation between you know, there's a there's a conversation between parties zero and two. The parent session hit a hit a conversation between parties one, two, and three zero, one, two, and three. And and then we have dialogues, right, that that that are pretty much unchanged from what's what's currently in the in the the draft, and they're referenced from the from the session. Right? So I'm sorry. I I, it was I I read that wrong. I, dialogue the first first session is dialogue is it contains dialogue zero, one, two, and three. It's the conversation between party zero and one. [01:26:01] **Jonathan Rosenberg**: And I'm missing then where's the reference for oh oh, I I see. I see. So the sessions have a list of the dialogues in them. I see. [01:26:10] **Jonathan Lennox**: Right. [01:26:10] **Daniel Petrie**: Yeah. The list of dialogue references. [01:26:14] **Jonathan Rosenberg**: Forward. There's a question of the reference is forwards or backwards. So the dialogue to represent the you know, point to the sessions, do the sessions point to the dialogues? You don't want both, again, for consistency problems. [01:26:26] **Daniel Petrie**: Yeah. I I did it from sessions to dialogues Yeah. Because I thought that's where it's it's needed. [01:26:32] **Jonathan Rosenberg**: I think that's better. Yeah. [01:26:35] **Daniel Petrie**: I don't know. [01:26:36] **Scott Godin**: Backwards might be but, like, when you're building it up, you're gonna build your session first, then your dialogues are gonna be added in after. So pointing backwards might be easier to implement. [01:26:45] **Jonathan Lennox**: I agree. And if you're streaming it, [01:26:46] **Edward Guy**: you know, it's essentially the same thing. Yeah. It's pointing back to where, you know, the the parent session or the owning session would be a the the easier way to do it. [01:26:55] **Jonathan Rosenberg**: So so you wanna flip it, Scott? [01:26:58] **Scott Godin**: I just think it makes sense. Like, if you go and add a new dialogue to a to a session that exists, you just add it in with the parent pointer as opposed to going back and modifying the the array of dialogues in the session. [01:27:10] **Daniel Petrie**: Right. Yeah. [01:27:12] **Jonathan Rosenberg**: This gets back to what's easier for redaction purposes, and this is this was my big beef on indexes in general. But if you want to be able to easily delete an entity and have the entire structure still valid, if that's a useful design constraint, then to Scott's point, you actually kinda want the backward references. [01:27:37] **Daniel Petrie**: The the redaction is is dressed, from that respect. You basically you can, create an empty object. Leave the object in place but you delete its contents. Right? And and then there's no shift in in pointers. There's no shift in in indexes or references. I mean, this is addressed in the in in the the current document. This this is the same thing we have today. Right? You wanna redact parties. You wanna be able to redact, you know, a dialogue or or whatever. You leave the object in place and you leave it empty, right, or, you know, some, you know, husk of of of an object, when when you do redaction. [01:28:22] **Edward Guy**: Kinda like dialogue too. [01:28:27] **Jonathan Rosenberg**: Right. [01:28:27] **Daniel Petrie**: Yeah. Right. So you you leave the object in in the in in the array of of objects. The reference is still valid to that to that where where you want to keep them, and it doesn't shift any any of [01:28:45] **Jonathan Lennox**: the investments. [01:28:45] **Jonathan Rosenberg**: The problem is there's still a record that something happened. Right? That was so there there's this interesting question of whether you wanna be able to redact without clear indication that there was redaction and whether you wanna redact with clear indication that there was redaction. They're both valid they were valid use cases for both of them. [01:29:03] **Jonathan Lennox**: And you can always create a new new VCon that just doesn't have [01:29:07] **Daniel Petrie**: a redaction at all. Right. Yeah. I mean, that's that's, you know, they they basically create an amendment amended beacon, right, if you if you wanna erase it completely. [01:29:17] **Jonathan Lennox**: And the point the point of redactions is to so that you can reference you can say you can compare beacon and say, yes, there's something here. If you're if it's actually secret, then, you know, don't do that. Yeah. Okay. [01:29:37] **Daniel Petrie**: And that's addressed in to some extent in the in the redaction section as well in terms like, you know, you we may you do you want to completely remove the dialogue? Do you wanna leave the dialogue there? Do you wanna, you know, remove the, you know, the the list of parties or or not? And [01:29:54] **Jonathan Rosenberg**: Yeah. Okay. There there's still some missing use cases for redaction, but we would get to that. I I think you're [01:29:59] **Daniel Petrie**: Love to hear them. [01:30:00] **Jonathan Rosenberg**: Yeah. Yeah. But your point is if the primary redaction use case that the spec itself supports outside of just rewrite it for whatever you want [01:30:10] **Thomas McCarthy-Howe**: Gotcha. [01:30:11] **Jonathan Rosenberg**: Is keep the object, then the forward versus backward reference doesn't make a difference. We should never deleting an object. [01:30:18] **Daniel Petrie**: Right. Right. [01:30:21] **Thomas McCarthy-Howe**: Yeah. [01:30:22] **Jonathan Rosenberg**: Okay. Alright. I I don't have a strong feeling on forward versus backward reference. I I think from comprehensibility, I do think sessions referencing dialogues makes more sense because I think the back to Jonathan's comment where the tree is the most, common case, this is the way you would model the tree. Right? It's the downward references. So this session books and dialogues. [01:30:46] **Daniel Petrie**: Yeah. [01:30:46] **Jonathan Rosenberg**: Sessions have parties. We see that here too. The parties are not backward references to the sessions or dialogues. They are downward references from session or dialogue. So I I think, to me, what's here is the most natural way to do it. So I I would [01:30:59] **Daniel Petrie**: I I think that's the aesthetic, you know, approach, but, you know, I I'm you know, I don't have a super strong opinion in in this favor. [01:31:09] **Jonathan Rosenberg**: Okay. [01:31:15] **Daniel Petrie**: Yeah. So let's let's back up a slide. [01:31:18] **Chris Wendt**: Oh, back up a slide. [01:31:21] **Daniel Petrie**: And whoop. [01:31:24] **Jonathan Rosenberg**: Too far. [01:31:28] **Daniel Petrie**: Back up one. Right. [01:31:30] **Chris Wendt**: Oh, two slide? [01:31:32] **Daniel Petrie**: No. Just one. There. Is there a there's [01:31:35] **Chris Wendt**: a I'm sorry. I'm sorry. This one. Right? [01:31:38] **Daniel Petrie**: No. There was next slide. Oh, I'm sorry. Next slide. Zero one oh, okay. Sorry. I thought this issue I thought this thought this slide was before the the example. Sorry. So the the issues, I mean, think what that that I would say basically are the ones that we've we've been kinda discussing here. You know, events reference dialogue and session versus session and and dialogue reference events, you know, not both. The you know, you know, using the the index instead of the UUID or an ID. And then section session object refers to the parent versus the children. I I suppose, potentially, we could do both, but I I don't know why I don't think that's a good idea. [01:32:37] **Jonathan Rosenberg**: But I have a different proposal actually too, anyway, on this one, which is that rather than having the idea of parent child, there's a relationship, and the name of the field defines a relationship. So for example, in the conference call, we would have spawn sidebar or sidebar. Like, so the parent meeting would have a link called sidebar that references the session, which is the sidebar. And I say that because when we think about AI agent trajectories or even these coaching sessions, the relationships are not like, what's interesting is not parent child, which is the thing is the nature of the relationship. And I'm saying, like, in in a coaching session, you'd literally wanna we'd we'd introduce a you know, this wouldn't be in the main spec. I'm saying there'd be a spec call, you know, that that's that's for contact center, and it would have a coach, which we have. We'll just add a coaching link type that points to the session that is the the coaching one for this, or that that the user was coached on. Like, you know what I'm saying? And that would allow us to model these more complex cases that don't have to do a strictly always parent child that we don't need a graph. As soon as it's a graph, then you want to describe the nature of the relationships rather than say just saying parent child. See what I'm saying? [01:33:58] **Daniel Petrie**: So going back to our prior example, we've got we've got a chat session and a and a video conferencing session. [01:34:06] **Jonathan Rosenberg**: Yep. [01:34:08] **Daniel Petrie**: But we get a different we we have a different set of parties that are involved in in those two, but they're overlapping and Yes. And are part of the same, you know, video video conference or whatever. [01:34:22] **Jonathan Rosenberg**: Yeah. [01:34:24] **Daniel Petrie**: How does that [01:34:27] **Jonathan Rosenberg**: I'm making go back to your example. Like, I think this is why I can't Back to the [01:34:32] **Daniel Petrie**: slide, Chris. Thanks. [01:34:33] **Jonathan Rosenberg**: Right. So everything here is exactly the same. Okay? But in instead in in this in the current picture here, session zero is the is the parent or session one is the parent? [01:34:45] **Daniel Petrie**: Session zero is the parent. [01:34:47] **Jonathan Rosenberg**: Okay. Because, [01:34:48] **Daniel Petrie**: it's there's a parent reference in the, in the bottom of session one. [01:34:52] **Jonathan Rosenberg**: Okay. Okay. So everything here is exactly the same, but instead of in session one, you have the word parent colon zero, I'm suggesting you call it for an online meeting, it's called, like, channel of and then zero, right, which indicates this session is one of the channels in this other session. [01:35:20] **Daniel Petrie**: So we're gonna create a new name for every time we're referencing something different? [01:35:26] **Jonathan Rosenberg**: Well, we'll have well, we will create a new name for different relationship types is what I'm suggesting. So [01:35:32] **Daniel Petrie**: How about we label the type instead and and keep the because other then then you have to understand every possible extension here of of reference to be able to traverse that tree. [01:35:49] **Jonathan Lennox**: Yeah. If you did this Yeah. I think it's something you know, the the the fact of a graph link and the nature of a graph link are different things, and I think it should be should be possible to understand it without you know? If you don't care, then [01:36:01] **Daniel Petrie**: Okay. [01:36:02] **Jonathan Rosenberg**: Okay. I'll I'll I'll buy that. So maybe we split it into two things, and there's, you know, a link and a link link type or whatever on the type is is an enumerated string set that's extensible, and then the link is the thing you traverse. Because if we're gonna have a generic that that makes sense actually if this is a generic graph structure. Then we have nodes and links. Right? And nodes are these top level lists of of objects, and then the links that she'll literally just call it link to indicate that to understand what this is. And link is a is a is a is a unidirectional link that links to is the other thing, and then we'll have a different field that's what it is, link type. That'd be my proposal then. [01:36:47] **Jonathan Lennox**: It's like we're reinventing HTML here. [01:36:51] **Jonathan Rosenberg**: Now we're we're doing you know, what was the subject that there this there was this w three c spec that was like the the semantic web. Right? That's that's, like, closer to what this is. We're we're trying to invent a semantic which is exactly what we call is it? It's a semantic model for conversation. Yeah. That's exactly [01:37:07] **Daniel Petrie**: it. Yeah. [01:37:08] **Jonathan Rosenberg**: Yeah. That's what it is. [01:37:09] **Daniel Petrie**: So it's just to poke into it a little more. So we would have, you know, a a link to, you know, to other sessions, and a session has a link to other sessions. And that's can be, you know, a single thing or or an array. Do each of those items [01:37:33] **Jonathan Rosenberg**: That's weird. Is anyone else hearing buzzing for Dan? [01:37:37] **Jonathan Lennox**: Yeah. I'm glad glad Dan, I think your your headset your it's gone bad. Maybe your battery died. [01:37:42] **Daniel Petrie**: No. My I'm shaving. No. My I just got a call came in. It it hijacked my headset. [01:37:48] **Jonathan Rosenberg**: Okay. I [01:37:50] **Daniel Petrie**: see. So so we we have a a session link parameter in inside of session, and it can reference one or more sessions. [01:38:04] **Jonathan Rosenberg**: Yeah. No. No. I I think it's my my proposal specifically is a session has an array of links. Each link, it's an object, has an I has the ID, the index select ID, and the type. Got it. We'll we'll get to the index ID in this moment. That is that's what I'm saying. [01:38:21] **Daniel Petrie**: Okay. Alright. So it's an object, which is both a link and a type identifier. [01:38:27] **Jonathan Rosenberg**: Yeah. [01:38:27] **Daniel Petrie**: Okay. Got it. [01:38:30] **Jonathan Rosenberg**: Okay. Yep. Cool. [01:38:36] **Chris Wendt**: Okay. [01:38:36] **Jonathan Rosenberg**: Go back to your next your open next slide open issues. [01:38:40] **Daniel Petrie**: I think we talked about everything. [01:38:42] **Jonathan Lennox**: I think [01:38:42] **Jonathan Rosenberg**: we covered so the only thing we haven't fully drained is the IDs versus and I was never proposing you IDs, by the way. It was it was the document scoped IDs, so they can actually be numbers. But I had I thought they were useful as even just, you know, session one, session two kind of, you know or main main meeting sub bot. You know, there would be strings that are unique to the document, but they could be descriptive, although the spec doesn't require it. They're just main requirements. They're unique within the vCon and reference by ID rather than index. I still like that better despite your my main argument had been redaction resets indexes, and you said no. No. No. Because you don't redact by deletion of the object itself. I hear you, but, like, I still think people are gonna do it, and it's easier to do it with ID. But [01:39:38] **Jonathan Lennox**: Yeah. It it feels I mean, I, index feels fragile to me. Yeah. Like, getting it wrong means that everything's playing at the wrong thing, and then [01:39:45] **Jonathan Rosenberg**: it's just completely Exactly. Kerfuffle. No. [01:39:48] **Daniel Petrie**: I mean, it it's it's it's not any more fragile than you can get an ID wrong just as much as you can get a [01:39:54] **Jonathan Lennox**: Oh, you can an ID yeah. You can get an ID I mean yeah. I mean, certainly, you can get an ID wrong, but, I mean, at least in terms of sort of I'm thinking of how, you know, it writes it out and looks up the idea of the thing it's referencing and puts it in. I mean, obviously, you can get a thing where the ID doesn't exist, and that's a validation. Another you got another, vCon validation thing because we have to validate that indexes aren't out of out of Well, [01:40:17] **Jonathan Rosenberg**: I mean, it [01:40:18] **Daniel Petrie**: I mean, it's it it it applies to either one. I don't think I don't see how that's, you know [01:40:23] **Jonathan Rosenberg**: No. I I think before no. I think there are a lot more fragility errors on on NSCs. Like, so when you're, you know, the because any anything that changes the order, for example, completely breaks the document. So, or even, like and and so one can imagine, like, when you're reading a database in real time, right, in a real time system, if there's active rights happening, like, read operation doesn't guarantee order of records if you were read the next thing just a moment later. You know? So it it seems like it's just gonna be like, to the only way to usefully generate it is you have to you have to construct the entire thing in memory to make sure all the indexes are correct and then generate the object. You can't you know, it's it's likely to fail. [01:41:17] **Daniel Petrie**: You just need to have a lock on it when you create a new object. That's all. I mean, there's no there's no you just take you lock the database, you create a new object, and you have your reference that [01:41:27] **Jonathan Rosenberg**: Yeah. But let let me let me give you a counter example. Like, let let's say the way I'm generating this is this is how we we're sort of doing this stuff. Everything is generated off of events that get received on a message bus, and events can come out of order. So what happens if the [01:41:42] **Daniel Petrie**: participants join [01:41:43] **Jonathan Rosenberg**: just let me finish, Dan. Let's say let let me put what if participant join event and participant one join and participant two join events, they can come in, you know, different orders. And I get them in the opposite order that they temporarily happened in. And so when I'm constructing the Vcon, like, I I I I would if I just can't even just add this. If I I can't add it to the lit if I wanna insert it in the event list in time order, I can't really do that because I'll break all the other indices because it it arrived. [01:42:22] **Daniel Petrie**: That's in the draft today is that that dialogues happen not necessarily or in in are added not in order of time. That's that's that's you know, that's true for for just about anything in there. They are added in in in any order, and if you time is important, you have to sort them. That there's never that that that's clearly stated in the in in the draft, and it has been for a while. You know, that's the you you know, because you're right. Things happen and get received in different different order than than time. And so there there's there is no assertion that, events or dialogue or anything is [01:43:04] **Jonathan Rosenberg**: in chronological order. I'm trying to I'm trying to construct an example that's illustrative of the fragility of indices as opposed to IDs as, you know, you know, as problematic. I I you know, and what's interesting is we and maybe Jonathan Lennox will remember this. Like, we we had this problem with SDP. Right? I I I think we had the m lines. We were we we if memory is serving correctly, like, they're they're just ordered. And we later on added a, like, media line ID because we found lots of things problematic with that. It's does this ring a bell, or am I am I misremembering this problem? [01:43:49] **Jonathan Lennox**: Yeah. And, you know, the whole thing where you have to leave empty m lines and offer answer forever because otherwise things don't match up. [01:43:58] **Jonathan Rosenberg**: That's right. Yeah. [01:43:59] **Jonathan Lennox**: Yeah. I mean, that that is I mean I mean, that is true. If things are done by index, I mean, with the redaction, you could end up with I'm I'm just, you know, concerned you'd end up with, like, you know, hundreds of dead dead objects, you know, for widely edited. [01:44:16] **Jonathan Rosenberg**: Right. Yeah. So basically, [01:44:17] **Daniel Petrie**: the deletion But that's, you know, that's a few 100 bytes. Right? I mean, this is not [01:44:21] **Jonathan Rosenberg**: Yeah. [01:44:21] **Jonathan Lennox**: I guess. Yeah. [01:44:24] **Jonathan Rosenberg**: I I just you you we we were burned by this. I mean, that's what I'm saying. I can and I'm trying to even think of can you if you look at other specifications, there's many specifications have been written that have to have references inside of document. Anything else ever do it by index? Because that most of the ones I can think of do it by ID. Like, it's just there's not a common design pattern in in I'm not I'm looking if you can demonstrate a counterexample. Like, I'd like to see it. [01:44:52] **Daniel Petrie**: I mean, I don't know. It it it it simplifies things. Right? I mean, you you have index, and it's it either exists or it doesn't. You do have to test it. You can't assume that it that exists, but but it's it's a simple reference. You don't have to look it up. You don't have to create an index. You don't have any foreign keys. You don't have to create maps. [01:45:10] **Jonathan Rosenberg**: But that's not true. I mean, this is, again, an error condition is let let's say there's only 10 participants and you have a session that represents participant with ID 12. Oops. Yeah. No. [01:45:21] **Daniel Petrie**: I'm not saying you don't I'm saying you don't have to you don't you do have to anything you put in there, you have to test. Right? You can't assume it's there. The there's no there's you know, that's that's a a moot a issue either way. Right? [01:45:36] **Jonathan Rosenberg**: You know? I mean, I [01:45:37] **Jonathan Lennox**: guess My the other thing I might say You don't have sorry. Go ahead. [01:45:40] **Daniel Petrie**: With with the index, you don't have to create this a foreign key. You don't have to create, you know, a map. You don't have to iterate through searching for something. It it's it's it's quick and simple. You do have to test whether that's a valid, know, index or not. I mean, that that that anything you put in there, you have to test whether it's valid or not. Right? But it it simplifies the the the search. It simplifies the referencing. It it it just makes the, you know, navigating the graph easier. [01:46:15] **Jonathan Lennox**: So And I feel like for human comprehension, labels are better than numbers because humans aren't good at counting things, but maybe that's not something It [01:46:24] **Daniel Petrie**: that only assumes that you, you know, that you put a label that's easy. Right? I mean, I I I [01:46:33] **Jonathan Lennox**: I mean, the I mean, I mean, yeah, I mean, obviously, if put a UUID, people can't parse that either. But if it's a number or a string or something, people can say, oh, it's you know, look for the just scan for the label and find it. [01:46:44] **Daniel Petrie**: But you have to scan. If you know it's an index, you can go straight to it, whether you're human or a computer. [01:46:53] **Jonathan Lennox**: I I can't easily find object 17 in a JSON array of large objects, but I know maybe you're better counting things by eye than I. [01:47:04] **Daniel Petrie**: I mean, just use a viewer that that shows the index. Right? I mean, that's what I do. [01:47:09] **Edward Guy**: So I think one of the ways to test this is by looking at the redaction case. We have a long conversation. You know, we have a long a long session, bunch of dialogues, bunch of, participants, and, we need to redact the fact that, you know, Thomas wasn't there. I mean and completely redacted. Like, wipe him off the face of the earth. You know? So and he was, Thomas was, index number five, which is probably which is pretty close to where he came in. [01:47:36] **Thomas McCarthy-Howe**: There I go. [01:47:38] **Edward Guy**: Yep. There you go. You're gone. And, how does it change the vCon? What and why does it matter? [01:47:46] **Daniel Petrie**: I mean, it depends on what your purpose I mean, it re redaction is not a one thing. Right? It it depends what your goal is in redaction, what you're trying to to to redact. Right? [01:47:59] **Edward Guy**: And so That's why I [01:48:00] **Daniel Petrie**: said What you redact and how much you redact and, you know, it it really is is, you know, it depends on on what what it is that that you're trying to hide. Right? And so there isn't one one solution for that. There are, you know, it's it's shades of gray. Right? You can redact. You you need to redact it. [01:48:23] **Thomas McCarthy-Howe**: Extreme case. [01:48:25] **Daniel Petrie**: Yeah. Yeah. Yeah. And so you, you know, with with it today, the most extreme you can add is you you leave an object, an empty object there, an empty party object, that empty dialogue, that empty whatever object there, and it it as a placeholder. And that's what's what's in the text in the in the draft today. [01:48:44] **Thomas McCarthy-Howe**: Yep. That's [01:48:45] **Daniel Petrie**: right. And if that is not sufficient, then you have to create a new amended BCON. [01:48:51] **Jonathan Lennox**: Yeah. And if you're worried about leaking information about you know, by the fact that we're inactive, you could always just have your generator salt randomly salt with with empty objects so that people don't know what was real and what is salted. Right. [01:49:06] **Jonathan Rosenberg**: Well, I guess I I do I do think this is a real use case, guys. There is a use case where I wanna remove a participant from the thing or I wanna move a dialogue from the thing, and I don't want its present I don't want it to be clear that something was redacted. It's not the only use case, but it's a use case. [01:49:23] **Daniel Petrie**: That's you know, that's really less of a redaction and more of an amended [01:49:28] **Jonathan Rosenberg**: How however you'd like to call it, it's a use case. And that use case, if you use indexes, requires you to regenerate the whole document. If you use IDs, does not. That that is a that is a clear difference between these two approaches, and I I think it's something that people will wanna do. [01:49:50] **Chris Wendt**: So I I just wanna do a time check. We have, like, ten minutes left. I do wanna make sure, it's been a great conversation, but I suspect we probably wanna have another the ability to reconcile this discussion into some text and have another discussion. But I'd love to go into San Francisco with something fairly solid if possible, but just curious for your feedback on if that's possible and what time frame we can do that in. [01:50:26] **Jonathan Rosenberg**: My here would be my concrete proposal on this. I think we have agreed on everything with the exception of this issue, which is still open. My proposal is that we do two things in parallel. One is Dan and I am willing to contribute text. If you if you don't want my text, different story, but if you don't you know? But but I'm happy to help. We update the document with the things we have agreed upon, and we keep current index thing, which is how the document works today. So it's a change to move to IDs. Update the document with everything else, but it uses indexes. This way for the next session, whether it be in in San Francisco or an in our meeting, that is the meeting where we're looking at a revised document that has all these other pretty significant changes in it, and we can we can discuss this last, open issue or any other open issues that arise that surely will upon reading the document. So I I my main point is I think it's more important to take the big changes we have agreed upon and put them in the document than it is to finalize this last open issue for the change. And the only thing that's relevant is do we think it goes in the main document or not? That we can't write a single line until we come to that conclusion. I [01:51:35] **Daniel Petrie**: am I'm sorry. [01:51:37] **Jonathan Rosenberg**: So, anyway [01:51:38] **Daniel Petrie**: The the the the whole session concept, is that what you're asking? [01:51:41] **Thomas McCarthy-Howe**: Is it is it an extension, or is it is it an addition? [01:51:45] **Jonathan Rosenberg**: Well, all of it. This whole thing, sessions, events Yes. You know, the like, all of that. Right? Is that [01:51:51] **Jonathan Lennox**: a new I don't see how it could be an extension. It's just like a complete [01:51:55] **Daniel Petrie**: Yeah. I I think we we have to minimally, we have to do events. We you know? Otherwise, it just breaks that. Totally breaks that. And I think this is the time to break that, right, events. Session conceptually could be an extension. I I think it's worth putting in the main. [01:52:15] **Jonathan Rosenberg**: Okay. I I strongly think it should go in the main document. And Yeah. But if we all agree, we don't debate [01:52:20] **Thomas McCarthy-Howe**: it. Yeah. Agree. [01:52:21] **Jonathan Rosenberg**: Then he would disagree with that. [01:52:22] **Chris Wendt**: No. No. I think that would be a better outcome of all this conversation. [01:52:27] **Jonathan Rosenberg**: Excellent. So then my proposal stands that the next step is [01:52:31] **Daniel Petrie**: Yeah. Yeah. No. I I I can I can take a stock and and I I think, you know, 90 semi percent of what we discussed is you know, I think we were in agreement? And, you know, let me get that into text, and we can make sure that, you know, we're all saying the same thing. [01:52:49] **Chris Wendt**: Yeah. So what's a reasonable time frame for that, and should we schedule an interim and decide when to do that now? [01:52:58] **Daniel Petrie**: I need it's gonna I'm gonna need a few weeks to [01:53:02] **Jonathan Rosenberg**: Alright. So this is where, like alright. I'm gonna I'm gonna put this out there. As you all know, I mean, I'm currently in a middle between job situation, which affords me time for authoring. I am willing to do this PR, and I can do it in way less than several weeks. Like, meaning, I'm have it, like, next week. And so if you're open to this giant PR, I would be willing to write it and then you and and merge it, and then you just have to accept it and merge it in, or you guys wait for Dan. That's the that's the question. [01:53:34] **Daniel Petrie**: Give me give me two weeks. I can do this. [01:53:39] **Jonathan Rosenberg**: Is my is my tech toxic? I don't I don't understand, Dan. I'm like, why I [01:53:42] **Daniel Petrie**: I mean [01:53:43] **Jonathan Rosenberg**: What's the problem here? Is it your baby? You don't want anyone submitting [01:53:48] **Jonathan Lennox**: a PR? [01:53:48] **Daniel Petrie**: Mean, I I've I've you know, I mean, I can take a PR, but I you know, it I think I have a handle on the document. Right? And, if there's a whole bunch of changes, then then I don't have a handle on it anymore. Right? It gets it gets it's I I don't have the context, and so it makes it harder for me to work on it afterwards. [01:54:09] **Jonathan Rosenberg**: Okay. Well Well, I mean, I mean, the nature of the ITF is wanting contributions, and, like, I I No. [01:54:14] **Daniel Petrie**: I mean, you you you you contributed. Right? [01:54:17] **Jonathan Rosenberg**: This is [01:54:17] **Daniel Petrie**: a this is a great contribution. And, and and, I mean I mean, it's not like this isn't wasn't a contribution. Right? I mean, you you took the effort, and you and you proposed this. [01:54:27] **Jonathan Rosenberg**: About that. I'm just saying I I think there there is a there is a place for other people to literally produce text that goes in the document that makes meaningful improvement to the document. It is not a bad thing [01:54:36] **Chris Wendt**: for the [01:54:37] **Scott Godin**: We don't we don't [01:54:39] **Chris Wendt**: wanna discourage that for sure. So I think you have the option to to disagree with some of the text or modify it or or or whatever in terms of a PR, but I think we should welcome contributions like that. [01:54:57] **Daniel Petrie**: Well, I mean, I think that's what we have. Right? That was that Jonathan created this document. That was the contribution. And and let me make It's not it's not [01:55:07] **Jonathan Rosenberg**: as to the document. I think the question is the question is who's taking the action item out of this meeting? Is it for Dan to take what I wrote and just produce basically, this in his brain now, write new text That is the p the change of the current spec. Or do I just or or do I produce a PR, of the current spec? That that is who's taking that action item to basically produce the PR and the spec? Is it Dan or me? That is the open question. That is the only thing we're debating right now. And I think, Dan, you're expressing a desire that it'd be you. Yes. And I'm I'm I'm saying I'm volunteering. I I guess this is ultimately chair of this call, but or editor's call, so I'm not I'm not gonna fight too hard. But but I am I am like if you write it, you should know that I am likely to still submit a PR later on. [01:55:50] **Daniel Petrie**: Yeah. Yeah. No. I'm I that's great. [01:55:52] **Jonathan Rosenberg**: Clarifications and kind [01:55:53] **Daniel Petrie**: of No. I'm I'm I'm I'm hope that there is comments. Right? I'm I'm not saying I want comments or I don't want edits. I absolutely do. Let me take a spin at this. [01:56:05] **Jonathan Rosenberg**: Okay, Dan. Fine. Fine. [01:56:08] **Chris Wendt**: Okay. So I actually did learn that you you you are not allowed to schedule interims less than two weeks away. So I would propose, if we're all good with it, doing it two weeks from now. I would have to get the request in right away. [01:56:25] **Jonathan Lennox**: Let's do it. Let's do it. [01:56:26] **Jonathan Rosenberg**: Do we do we wanna pick a date right now just as we did last time so that we can guarantee [01:56:30] **Chris Wendt**: Yeah. What about two weeks exactly [01:56:33] **Daniel Petrie**: for Exactly. [01:56:34] **Chris Wendt**: Yeah. Does that work for everyone? [01:56:37] **Jonathan Rosenberg**: One second. I [01:56:39] **Chris Wendt**: think that would be the eighth Eight. At 10AM eastern. [01:56:43] **Daniel Petrie**: Works for me. [01:56:45] **Thomas McCarthy-Howe**: Yeah. Works for me too. [01:56:46] **Jonathan Rosenberg**: One sec. One sec. October 8. Yeah. Works for me too. [01:56:54] **Thomas McCarthy-Howe**: Great. Yeah. [01:56:55] **Chris Wendt**: Okay. I will do that. [01:56:58] **Jonathan Rosenberg**: I I would also strongly suggest is I don't get trying to get Hank Burkholz to come to that conversation is good. I also think it would be a really good idea. We could take this one offline, Chris, to have a separate conversation, maybe a small group meeting with Miria, who's running the audit off, to talk about vCon and audit because, again, there had been some and you guys should join that because I think this is a great opportunity to to bring bring these these worlds worlds together, and I don't wanna be the only one fighting that battle. So I [01:57:29] **Daniel Petrie**: I would I would love to be part of it. [01:57:32] **Chris Wendt**: Yes. So so So, yeah, Jonathan, if you could introduce us Yes. I will I'll do that. Plug into that as well. [01:57:40] **Thomas McCarthy-Howe**: Yeah. Before yeah. And, me as well, obviously. If before we break, could could you just give me one of the the redaction cases that you [01:57:49] **Jonathan Rosenberg**: Yes. The the redaction case that doesn't work is where I don't wanna remove a participant or a dialogue in its entirety. I just wanna substitute a little bit of information. Like, let's say the user's account ID appears in the text message. [01:58:01] **Thomas McCarthy-Howe**: Yeah. [01:58:01] **Jonathan Rosenberg**: I wanna I don't wanna remove the entire text message. I just wanna convert the ID, you know, to x x x x for the account ID. K. How do we handle that case? And this shows up in tool calls as well where that Yeah. Account ID could be in an event. So how do we deal with that use case? [01:58:16] **Thomas McCarthy-Howe**: Very straightforward. K. Thank you. [01:58:18] **Jonathan Rosenberg**: The the current spec doesn't really discuss it, and so I I don't I I do think there is a the [01:58:25] **Daniel Petrie**: I think there's even an example in the in the draft. [01:58:28] **Thomas McCarthy-Howe**: I think so. [01:58:28] **Jonathan Rosenberg**: I don't remember. I [01:58:30] **Daniel Petrie**: think there's an example of [01:58:32] **Jonathan Lennox**: Is that in the [01:58:32] **Daniel Petrie**: doing doing exactly that in the in the draft. [01:58:36] **Thomas McCarthy-Howe**: Yeah. Is it Yeah. [01:58:37] **Jonathan Rosenberg**: What's what's the substitute? Is it literally substituting with x x x x in place? [01:58:41] **Daniel Petrie**: Really. I I think it labels it as, you know, like, name or location or, you know, or or something like that. [01:58:49] **Jonathan Rosenberg**: Okay. Because I I because my main point was I think there needs to be a first class semantic object, which is redacted text that can show up in different places, and that's recognized as redacted. So you're not depending on parsing the character x because you could have x x x could actually be what I typed. [01:59:06] **Daniel Petrie**: And in in the example, it it it it sticks in a parameter saying that, you know, this you know, basically, a label of the type of redaction that it was. You know, this was somebody's identity. This was somebody's phone number or some this was somebody's Yeah. Yeah. And it account number. [01:59:23] **Jonathan Rosenberg**: Look for it because I I don't remember this. That that was the use case that came up as not supported in the document, and I wanna make sure. [01:59:29] **Daniel Petrie**: Yeah. [01:59:29] **Jonathan Rosenberg**: And I I also thought it was not supported. So if I concluded that, maybe I Yeah. [01:59:33] **Daniel Petrie**: Yeah. And that's in I'm pretty sure it's in the in the examples appendix. [01:59:38] **Thomas McCarthy-Howe**: And and yeah. Yeah. [01:59:39] **Jonathan Rosenberg**: Well, it can't be an example. Just an example. I'm saying that the the the specification needs to support support a redacted entity as a first class It does. [01:59:46] **Daniel Petrie**: It doesn't define a a media type. I mean, it because there's so many different types of redaction and just, you know, it it you know, this it's this is in the analysis. Right? This analysis objects, which is a transcript of the [02:00:01] **Jonathan Rosenberg**: No. But that's what I'm saying is wrong. Like, for forget forget on audio call. What if I have a chatbot session, an AI agent session between a human and a bot? It's just Sorry. [02:00:11] **Daniel Petrie**: I mean, you can do the same thing. It doesn't define the media type. And they you you know, someone needs to [02:00:18] **Jonathan Rosenberg**: Alright. I will write a proposal. I will write a proposal down because we're we're we're we're doing this right now. I I think it's Well, [02:00:23] **Daniel Petrie**: before you write a proposal, Jonathan, read the draft. [02:00:27] **Jonathan Rosenberg**: I'll read I mean [02:00:28] **Daniel Petrie**: Look and look at the examples. Alright? Alright. Because this this is there's an exact example that is in the draft. [02:00:36] **Jonathan Rosenberg**: Okay. I will look and I'll put a comment on the list. [02:00:38] **Daniel Petrie**: And and then it's it's in this case, it's in in for analysis, but it could just as easily do in you know, for a text message. Right? I mean, it it it's no analysis. And it and it's there's there's there isn't the semantic for this. I mean, there's there's the the, you know, there's a an approach for this. But But I'm [02:00:56] **Jonathan Rosenberg**: saying that's the problem. That is the I believe that is the problem. I will write up. I will read the draft, and I will submit an email with what I think is the problem once I'm I'm clear on how you're you're saying it's done. I'll go find that example. Okay? [02:01:10] **Thomas McCarthy-Howe**: Thank you, John. Thank you. Yep. [02:01:12] **Jonathan Rosenberg**: Alrighty. Alright. So I have two action items. I'm gonna do that email, and I'm also gonna set up this meeting with Myriad. And Dan has the action to turn around a a version based on the changes we agreed to, and then Chris is gonna set up the next interim in two weeks, October 8. [02:01:29] **Thomas McCarthy-Howe**: Yes? Yep. [02:01:29] **Chris Wendt**: Yes. We also talked [02:01:32] **Daniel Petrie**: about with go ahead. [02:01:35] **Chris Wendt**: I was just gonna bring up we have talked about a recharter. I would love some input into what the rechartering would look like. I I I think we wanna take care of this core core stuff, but that would be another maybe goal to have a robust discussion on rechartering. [02:01:54] **Jonathan Rosenberg**: I think this needs a conversation with Myriad because, again, when I it looked like that audit group was thinking they would be chartered to do this work. And I had proposed on the list in audits that that vCon be rechartered to this portion of the work, and that was where there was disagreement. That's why I think that that [02:02:09] **Thomas McCarthy-Howe**: was Okay. [02:02:09] **Jonathan Rosenberg**: We're not aligned [02:02:10] **Thomas McCarthy-Howe**: with the [02:02:10] **Jonathan Rosenberg**: audit guys. It's gonna go nowhere. Okay. Okay. [02:02:13] **Chris Wendt**: Alright. Thank you for that clarifying that. Yep. Yep. [02:02:15] **Daniel Petrie**: So with that, an an action item just to have a audit conversation. [02:02:21] **Jonathan Rosenberg**: That's what I'm saying. I'm taking the action item to send the mail to Mary. I'll include Dan and Chris and Thomas, and we'll have a follow-up conversation on the ITF organizational structure and whether when you know, and vCon is a container object for this this work. Okay? [02:02:37] **Chris Wendt**: Yep. Got it. Thank you. [02:02:38] **Jonathan Rosenberg**: Alrighty. Alright. Thanks, everybody. [02:02:41] **Chris Wendt**: Thank you, everyone. Thank you. [02:02:43] **Scott Godin**: Take care. Bye. [02:02:43] **Jonathan Lennox**: Bye bye. [02:02:44] **Thomas McCarthy-Howe**: Bye. [02:02:53] **Jonathan Rosenberg**: Here is my cursor.