[MINUTES] DID WG Special Topic 2025-08-20

DID Working Group Special Topic Call - 2025/08/20 Summary

*Topics Covered:*

   -

   *DID Resolution Mocha Test Suite Review:* The group reviewed a newly
   developed Mocha test suite for DID resolution, built upon existing VC and
   CCG test suite frameworks. The initial implementation focuses on GET
   requests against sample DID resolvers.
   -

   *Test Suite Design Discussion:* A significant portion of the meeting
   debated the optimal design of the test suite. The core discussion centered
   around whether the suite should exhaustively test all DID methods or focus
   on a smaller set of core functionalities.
   -

   *Resolver Registration and Test Case Selection:* The group discussed how
   DID resolver implementers should register their resolvers and select the
   DID examples used in testing. There was strong agreement that resolvers
   should *not* mark their own homework, and that the test suite should
   provide a mechanism for the group to validate resolution results. The
   approach of using a limited set of example DIDs for core functionality
   testing was favoured over an exhaustive, per-DID-method approach.
   -

   *Test Case Structure and Organization:* The group explored alternative
   data models for organizing test cases, considering grouping by DID method
   versus grouping by general test categories (e.g., valid resolution,
   unsupported method). The group leaned towards categorizing by generic test
   categories to avoid inadvertently testing DID method specifics.
   -

   *Handling of Resolution Options:* The need to accommodate DID methods
   requiring specific resolution options (e.g., versioning in did:btc) was
   acknowledged. The consensus was that these options should be provided by
   the test cases themselves.

*Key Points:*

   - The initial DID resolution test suite provides a foundation but
   requires further development of test cases.
   - The group strongly prefers a test suite focused on core DID resolution
   functionality, rather than comprehensive DID method testing.
   - A key goal is to avoid placing an undue burden on resolver
   implementers by requiring support for all DID methods.
   - The test suite should use a set of standardized test DIDs to ensure
   consistency and fair evaluation.
   - The method for selecting and providing test DIDs and resolution
   options requires further refinement.
   - The group agreed on a process where resolvers register their endpoints
   and provide the DIDs they can support within the test suite.
   - The group will evaluate the results from this process and explore
   different data models for reporting resolution results.

Text:
https://meet.w3c-ccg.org/archives/w3c-ccg-did-wg-special-topic-2025-08-20.md

Video:
https://meet.w3c-ccg.org/archives/w3c-ccg-did-wg-special-topic-2025-08-20.mp4
*DID Working Group Special Topic Call - 2025/08/20 09:55 EDT - Transcript*
*Attendees*

Benjamin Young, Joe Andrieu, Kevin Dean, Manu Sporny, Ted Thibodeau Jr,
Will Abramson
*Transcript*

Will Abramson: Not too bad.

Kevin Dean: I was getting worried there for a minute.

Will Abramson: How is everybody? I guess there's only five. I was worried
too. I got auto to set up the IRC, but actually we're not going to do I
forgot that. We're just all in here. Is that correct?

Manu Sporny: Yes. …

Will Abramson: We don't need to scribe.

Manu Sporny: It's recording in transcribing. so I think we're good to go.

Will Abramson: Are we expecting Benj at the top?

Manu Sporny: Yes. Let me go ahead and ping him. Let me All right,…

Kevin Dean: Yeah, just confirm that it's recording and…

Kevin Dean: transcribing because nor no. I see the indication.

Will Abramson: Yeah. Yeah,…

Kevin Dean: Never mind. I see the indicator. Normally, I get something a
little more prominent than that, but I do see it, so never mind.

Manu Sporny: I just pinged him. Hopefully, he'll be here shortly.

Will Abramson: Marcus, I think he's on holiday with his family this week.

Will Abramson: I mean, do you know if Benjamin has something to show us?
I'm expecting Cool.

Manu Sporny: Yeah, he does. Yeah. I mean, we've got something set up and I
was able to raise an issue.

Will Abramson: Cool. …

Manu Sporny: I can probably at a high level kind of talk through,…

Will Abramson: let's give him another minute. I think it's fine.

Manu Sporny: but Yeah.

Will Abramson: Maybe it is worth just starting with. I don't know.

Manu Sporny: Yeah. let me go ahead and share my screen. So, what we have at
this point, is a did resolution mocha test suite.

Will Abramson: Could you drop in?

Manu Sporny: So the frameworks set up. Benjamin's been working on this over
the past two weeks. it uses the same kind of, basic setup, that we have for
the other test suites.

Manu Sporny: There's links won't be yep,…

Will Abramson: That's fine. I just want to open it.

Manu Sporny: Absolutely. here we go. there's a link and…

Will Abramson: Great. Mhm.

Manu Sporny: it's got this, standard stuff, table of contents, installation
instructions, how you run the test suite, and then how you get your
implementations integrated into the test suite. let me go ahead and show
what the output let's see this one. So the output basically it currently
looks like this. so it's a little messy, right?

Manu Sporny: But you can see that we've already integrated the Danube tech
stuff and…

Will Abramson: parents.

Manu Sporny: you can see that it's already running against the Danny Tech
implementation. So we can talk about some of the details. Is there a bunch
of did methods that have been kind of put in the current tests show adanium
tech either properly resolving it not. Benjamin, I just started kind of
going over the basic test suite,…
00:05:00

Manu Sporny: but perhaps you can take us through this.

Benjamin Young: Yeah, sure.

Benjamin Young: Sorry to be late. this is just a pick up from the other
similar VC and CCG test suites. It's based on the same Mocha framework.
There is one very naive test right now that just does get requests against
all the sample did resolver.

Will Abramson: Nothing.

Benjamin Young: So it's literally just the same ones that did resolver has
in their sample select list. and as you can see the table layout is jacked
up which is something we need to talk about because ds are massive. and
they're not grouped at this point either. and I don't know if we want that
necessarily, but what we would end up having is as we add additional
resolvers, we'd have more columns to the right.

Benjamin Young: And we'll do something about the extremely wide left hand
column. So, right now, this is just Danube. Yeah, that's so Manu. What you
scroll down to is at risk section. that's going to be there until I can
shut it off but that basically shows that there's only one implementation
passing. So once we have two passing that'll go ahead.

Will Abramson: So I have a question…

Will Abramson: which is so here we have just dids and then whether it
passes or not and passes it resolves and returns like a valid resolution
result with a conform and did document. Is that correct?

Benjamin Young: Yeah, Monu, can you go back to the code? the test itself is
five lines. it's what this was was getting it all set up and wired into
GitHub actions and…

Will Abramson: Mhm. Yeah.

Benjamin Young: the reporter and everything else. it's Yeah.

Will Abramson: Go for it.

Benjamin Young: Yeah. Go ahead.

Manu Sporny: I raised an issue. I think I know what you're getting at,
Will. I raised an issue that we should talk about on the data resolution
test suite.

Will Abramson: I guess my question is I think this is one test case, and
probably I don't know what we think but I was thinking maybe a did resolver
only needs to supply one passing test and maybe it's one pass for every did
method.

Manu Sporny: Yeah, that's the issue.

Will Abramson: Yeah. Right.

Manu Sporny: Yeah, that's the issue I raised.

Will Abramson: Okay. Yes, sure.

Manu Sporny: I'd like to talk about it today, but go ahead, Think you were
just mostly talking about infrastructure, not the specific tests.

Benjamin Young: right? Yeah.

Benjamin Young: So, the task I'd taken on was getting this set up and
functioning in terms of publication. we had tried to make it clear that
Digital Bazaar wasn't going to carry the water on this one. So we wanted to
set it up and have somebody else tease out the tests. I did find there is a
older Cypressbased resolution test suite that has a whole bunch of example
dates. I didn't try and run it because Cyprus is open core and I didn't
know how much of that was going to end up being something we'd have to pay
for.

Benjamin Young: But there are tests in this repo that could be consulted
and moved over potentially if they're even close to what's wanted now. but
it's really going to be on the group to figure out…

Will Abramson: Mhm.

Benjamin Young: what is a fully passing D resolution experience per method.
And the other thing that another either separate test or mixed in together
would be whether or not the FA failure cases are handled properly as well.

Joe Andrieu: What's it

Benjamin Young: Because I said, it's a super minimal test suite, so it's
not doing anything really. but some of these could be just failed get
requests where the resolver choked and died with a 500 error or it could be
that the resolver is coming back with a meaningful error response from the
did method and that has content written up about it in did resolution that
could be properly tested and whatever.

Benjamin Young: So really it's just about hunting down the musts and making
sure the tests map to that across however many did methods we're going to
test. Go ahead

Manu Sporny: Yeah, I think it's important to talk about this stuff, but I
think we're going very deep very quick instead of just looking at the
infrastructure and what's there. cuz Benjamin we haven't even talked about
how are these things kicked off GitHub actions how are the reports
generated when are they generated I think maybe let's start a bit more high
level before we jump into the very specifics

Will Abramson: No. Yeah,…
00:10:00

Will Abramson: I guess I say I agree with that. I would like to see at some
point in this call the process by…

Will Abramson: which someone can add a resolver to this in its current
state. Is that possible?

Benjamin Young: Yeah, sure.

Benjamin Young: Yeah, and the questions were added into why doesn't it test
X, Y, and Z? So, that's why we went down this road. if you go back to that
repo this pulls from if you go to the package JSON file see where this is
connected go down to dependencies. So there is the VC test suite
implementations it's pulling from the CCG's VC test suite implementations
thing for now that can be changed to the main W3C one. And then if you go
there, Yep. and then go to Danube,…

Benjamin Young: you will see that they have that line. Yep. And that's all
the more that's needed is an endpoint URL tagged with just did resolution
for the moment…

Will Abramson: Right.

Benjamin Young: because where Marcus and I had gotten over email was that
just having one thing stated this endpoint did resolver and then letting
the test suite just hammer it with all available from the test suite side
dids and that responds was…

Will Abramson: That's good…

Benjamin Young: what we had discussed but that's all it's doing now.

Will Abramson: but I was expecting in here did that this resolver is going
to resolve this did right. I don't know I'm missing that but it's kind of

Benjamin Young: Go ahead Mike

Manu Sporny: Yeah, let's just go into the issue because we keep coming back
to it.

Will Abramson: Mhm.

Manu Sporny: I'm going to go to the issue I raised. So, there's a mismatch
in expectations, I think that's what's leading us to keep coming back to
this question. when we had discussed it last time, I think we had expected
to see something like this. So I've issu raised an issue on the Mocha
resolution test suite that specifies for each did resolver when you
register resolver are going to say these are the DIDs that I want you to
use for these specific tests. it's not meant to be a DID method test suite.
That's I think what it comes across as right now.

Manu Sporny: What we want is a did test suite that actually tests the
resolution stuff, but again, as Benjamin said, he did not sign up to do
that work. we have to find who's going to take this over and then figure
out how a resolver, suggests what dids can be used with that resolver and
for which test cases. let me stop there just to say,…

Will Abramson: So, engine

Manu Sporny: will I know you're looking at it and…

Manu Sporny: you're like, this is That is why it's not making sense to you.
I think we need to make a modification to it. which goes beyond what I
think Benjamin, had signed up to do. Anyway, I'll be quiet

Benjamin Young: You're fine. Yeah, I think actionably where the plan had
been was that the infrastructure would be set up and then that there would
be a group determined that would work on the test suite in relationship to
the data working group to determine…

Will Abramson: Yes.

Benjamin Young: how best to come at either this approach or the approach
that rcus and I determined. The reason Marcus and I didn't go the route you
describe here, Manu, is it's like having the student say, "This is what
Test me on what I know." And then it's like, "Hey, look, you passed what"
And the intent was to instead say, "Here's a bunch of didds. We don't
actually expect that you'll pass them all. but you should resolve all the
ones that you can resolve." And we're only testing the resolution response.
so relatedly the resolvers will not ever all pass all the tests or rather
not respond positively to a test for every did method because they may not
support them all.

Benjamin Young: We could this ultimately though is the decision of both the
working group and whoever is going to write this and…
00:15:00

Benjamin Young: really there needs to be better representation from
resolution implementers which digital bazaar notably is

Will Abramson: Cool. Thanks for Yeah,…

Will Abramson: I have a couple of things. so yeah, totally appreciate that
you guys didn't sign on to do this work and you just ported over what we
had, right, and showed it integrated in together. And I will say that, I'm
pretty busy, but I'm happy to take on some of this work. I think is
interesting and worth work. I'm happy to explore it and I'll also volunteer
Beno even though he's not on the call. I've asked him if I can. He hasn't
replied yet, but I talked to him about this before, He's an invite expert
with some decent technical chops. I think he has worked on test suites like
this before. So hopefully me and Beno and anyone else maybe we can pull you
into Benjamin.

Will Abramson: and then the second thing I wanted to say is I appreciate
what you're saying about marking your own work but I do not think it is
realistic for the did resolver test suite to have exhaustive cases for all
the did methods out there but maybe some middle ground is I don't know how
we specify this and obviously I don't think it can be normative but really
did method specifications that are defining test cases

Will Abramson: that are for this is a valid not found did this is a method
not supported or maybe not methods but not supported but then did resolvers
should say look this resolver is designed to resolve did method x and you
need to get the test cases from did method x and run them through this did
resolver test suite I mean obviously the did method as defining those test
cases might define in more detail the results that you're expecting And I
think we've discussed this before. I don't think the D resolution cares
about the deep details of those results, but it does care about okay, this
did method is saying this is valid and it should have a resolution result
with a valid conformant did document in it. I feel like that is the right
place to define those things if we aren't letting did resolvers define them
because I get it, right?

Will Abramson: that is like marking your own homework at some so I'll stop
that.

Manu Sporny: Yeah, a big plus one to what you're saying, I'm wondering if
Benjamin was not on the call where we had this discussion. it sounds we
definitely talked about this being not the way we wanted to do things like
that. we definitely said this is we do not want to do this. And so I think
maybe Benjamin you weren't on that call. and that's why it kind of got set
up in that and I went into in the issue here when we have found did work
when we take this approach we will get a lot of complaints from
implementers because they will start failing tests that they never intended
to pass and they don't want to show up as having red X's behind beside
their implementations so Will I feel very strongly that

Manu Sporny: this is definitely not the way we want to do this. this is the
wrong way to go about the test suite. I think it's going to create a whole
bunch of complaints from did resolution implementers and cause some people
to just not add their implementations to the implementation. so, a plus one
to that. what you're saying, I think we need to move away from marking your
own homework thing. The way that we had discussed addressing that the last
time was that we are just telling them to put the DIDs that they support or
specific calls in …

Will Abramson: Mhm.

Manu Sporny: but we are in full control of saying whether or not the
response was valid. Meaning we will have a JSON schema that we run against
the DID document.

Manu Sporny: we will have a JSON schema that we run against the did
resolution result and they don't get to mark their own homework when it
comes to that. it's like and that is the thing we're supposed to be testing
here, we're supposed to be testing the DID resolution API request and
responses. We're definitely not supposed to be testing DID methods here, so
they do get to come to us and say the DID methods I support. But that's
kind of the same thing as coming to us and saying these are the VC API
endpoints I don't support endpoint I'm not set up to do that. I might have
a philosophical disagreement with that particular, thing. And so I'm
choosing not to do that.

Manu Sporny: So all we can really do in that case is basically say whatever
you have…
00:20:00

Manu Sporny: if you implement a did resolution at all for any did method we
want you as a part of the test suite and we promise we're not going to make
you look bad …

Manu Sporny: if you choose not to implement did method I'll stop there.

Will Abramson: Great. Thanks,…

Will Abramson: Benjamin.

Benjamin Young: Yeah, this list of supported bits that are valid that's
going to be a massive list for every single resolver with at least one per
method as far as I understand it.

Benjamin Young: Versus hey, we support these methods and then there's real
tension here because obviously the did methods underneath on the other side
beyond the resolver is the thing that's going to actually and have to keep
it available and resolvable. So yeah I don't know but ultimately what's
highlighted here is the test suite because running some JSON schema against
a response is trivial. We can do that but the test suite itself is
essentially going to have to iterate over all these values and then check
the expected responses.

Benjamin Young: which is possible. but that payload is potentially getting
very unwieldy very quickly.

Benjamin Young: Just some thoughts.

Will Abramson: Great. Thanks.

Will Abramson: Kevin

Kevin Dean: Yes, I would expect some grumbling in the initial deployment of
any testing framework simply because there already did methods out there
that are guaranteed we can pretty much guarantee some of them will fail.
but as we go through time it would be very surprising to me and that to see
a dead method come in for testing that fail the tests because if the tests
are made publicly available even if we stand up a server that can run the
tests on your behalf as if I were a DID method author I would not be
submitting something without having run

Kevin Dean: the test myself and identified all of the errors and areas of
discrepancy and fixed it so that on submission it actually runs because
there is an interest on the part of the DIG method implementers to have
something that is compatible and if the test suite is what determines
compatibility and det and determines adoption they've got the incentive to
ensure at multiple points during the development of their DID method that
it can pass the tests. I don't see a long-term problem with it. I certainly
see a short-term one for existing methods,…

Kevin Dean: but not a long-term one.

Will Abramson: Great. Thanks,…

Will Abramson: Man.

Manu Sporny: Yeah, this is why we're here, but we're definitely still
miscommunicating. Benjamin, you said that I don't think it's going to get
long at all. So, I'm wondering where that, is coming from. Meaning that
again, we're DID resolution. We're not testing DID methods. I think if we
say you have to did web or you have to support did fu and it is going to
show up for let's do a concrete example digital bazaar I think Benjamin we
do intend to submit a resolution a resolver meaning for did key or
something like that because we don't have enough implementations right now
and we really want to help this group get to

Manu Sporny: some kind of multiple implementations level we're hoping that
other people do more thorough implementations of bid resolution but I think
digitalizar is going to submit a resolver at some point in the next year we
will not submit a resolver if we are going to be showing up as failing 90%
of the tests like it's just because we want this to go up on the can IBC
website, we want it as another resolution thing. And if it shows up that
we're failing 90% of the DID resolver test suites because there are a whole
bunch of DID methods that we don't want to support and we're never going to
support we're just not going to submit our implementation, So, I again like
if we think that we are going down this route, we are very unsupportive of
it. I just want to be very clear about that.
00:25:00

Manu Sporny: is this list going to get out of hand? I don't understand how
it could. So, for example, if digital bazaar were submitting something, we
would just did web and did key as the things and that should get full
coverage, I would imagine, for the did resolution test suite. we might not
get some of the more advanced, examples, but I would imagine we might add
another four lines for the variations that we need. but certainly not we
get a very long list here. I think we would just have variations of did web
and We would probably just did web for the vast majority of these and call
it a day.

Manu Sporny: so I'd like to understand, I guess, Benjamin, why you think
this is going to get out of hand. and Kevin, I didn't quite understand what
you were saying about people are going to make sure that they align for
example if we said the thing I don't understand Kevin is I think you're
saying we'll just settle on did key or did web and everyone will get their
resolvers to align with that.

Manu Sporny: Some people might have serious issues with did web and we
can't really push that, on did resolver implementers. some folks, for
example, might just be implementing a Bitcoin method or an Ethereum based
method and that's all they want to support. And if in the test suite we
take a position on you have to support did web or…

Will Abramson: Mhm. Yeah.

Manu Sporny: you have to did key, I also see that as kind of like an
untenable position. let me stop there.

Kevin Dean: No, just to cl No,…

Kevin Dean: just to clarify that they will ensure that their test that they
should ensure that…

Manu Sporny: Yeah. for the dead methods they choose.

Kevin Dean: what they submit will pass the tests for the features that they
wish to implement. so if they're not so for their methods, if they're…

Manu Sporny: Is that okay?

Kevin Dean: if they're not supporting DID web,…

Manu Sporny: Plus one.

Kevin Dean: they're not supporting DID web, but what comes out of the
resolver should pass for what they are supporting should pass the tests
that are testing what they claim to support. That's all. I

Manu Sporny: We're aligned.

Will Abramson: So I have a comment which I kind of echo a lot of what Manny
was saying to you Benjamin for me we are testing did resolution spec really
people need i to provide one test case one did that is valid when using
this resolver can resolve to a valid resolution result with a conformant
did document just one right because that proves that they can do
resolution. what we might want to do is maybe split up this data model a
little bit more so that people provide one valid for every did method that
their resolver supports. So you might have actually supported methods with
a map of the method name and then all the test cases for that method right
BTC here's a valid did web did.

Will Abramson: I mean most for me I don't know about other people I think
most resolvers are going to support one or a handful obviously the
universal resolver is a edge case but a lot of people just caring about
resolving the divids that they want they want a resolver that they can use
in their systems right that's how I see it anyway so maybe it's worth
breaking up the data model…

Will Abramson: because then you could say this resolver supports these five
did methods and has, full test coverage across all of them. that would be
pretty cool to know, but I don't know if it's worth it. So, this is what
people think. Benjamin. Mhm. Yep.

Benjamin Young: So to kind of clarify some of the language that we're sort
of circling around,…

Benjamin Young: we're really just talking about where the test fixtures
come from, not is the test code itself should be the same where you get a
URL and you test the response JSON.

Will Abramson: Mhm.

Benjamin Young: So the fixtures could be defined like they are here. but
the reason I said this would get really long, is because I was basing my
knowledge off the universal resolver and if you go back, monu, to the test
suite results. that list is the drop-down list from the values of the
drop-own list at the universal resolver. And my understanding was that
Danube Tech at some point in their history believed all of those would
result because they wouldn't have put them up there as samples. So my
expectation was that 80 to 90% of these would resolve. The ones that didn't
meant that those systems were down or no longer in existence or whatever.
00:30:00

Benjamin Young: and that's possibly the case but a quick skim looks like
it's more like 50% of these fail. so the point about fixtures being these
example wherever they come from are did method side of the house not from
the resolvers. So I wonder if it begins to point towards something like
example.com or any of the Ayanna example domains where we at least
encourage if not require D methods to have an example did that they either
state or they're consistently the same shape in so far as that's possible.

Benjamin Young: that then the did resolver ecosystem can always resolve or
always fail on or whatever and then if that fails then the method itself is
probably no longer a thing. that's one idea. I don't really care where the
fixtures come from but I do hear you Manu about it. it's going to look bad
like it does for the universal resolver right now. and again, this was
something that Marcus had proposed we do to simplify the suite. So, I'm sad
he's not here to explain. so wherever those fixtures come from, they are
being provided ultimately by the method. The resolver was given the
expectation that they would resolve. In this case, these were all supposed
to be successful cases.

Benjamin Young: and the sand underneath that house is going to move just
given the passage of time even if those fixtures are defined statically in
the test suite or more manageably by ver idiosyncratically per resolver.
Even if that's the case, the resolver is still at the behest of the method
provider to keep the thing up and make sure it's still valid and whatever.
So, those are the kind of three moving parts. Writing a test suite that
leans on fixtures from wherever is not a problem. and even refactoring this
to get them out is not a problem.

Benjamin Young: And grouping them by method was a feature that was already
becoming pretty apparent in here.

Will Abramson: thanks man.

Benjamin Young: So that's it.

Manu Sporny: Plus one. It sounds like we're converging. right. So agree
with Benjamin that trying I think this is one of the reasons we kind of
depend on the resolver to tell us which did methods they want to use. for
example we may end up providing a DID key that you can use any other one
but you can also use this if you're doing it with test did web is the
better example there where we might want to provide a did web that we know
that we're in control of that's always resolvable that we can decide what
the content is in there that they can choose to use it or they can choose
to use something else.

Manu Sporny: If they choose to use something else, then it's between them
and the did method to make sure that that thing constantly resolves because
we will be testing on a weekly basis or whatever some cadence and if they
fail to resolve it then it's going to show up at failing the resolution
test. okay I think Yeah. Yeah. And so I think Benjamin the language around
test fixtures these are just inputs into a test that we control meaning and
will I think the stuff that you and Beno are going to be writing you'll
need to figure out how many different variations of a did method you're
going to need for all the different did resolution tests.

Manu Sporny: So there, I don't know, 70 80 of them or something like that.
you're probably going to use the same input did web document for let's say
20 tests or 30 tests, right? Because for a particular test, you're just
wanting the method to resolve and then maybe you're switching up the
options, you're passing the resolver or changing the resolution result or
something like that. as an option that's passed to DID resolver to give you
something slightly different. But the core document the core did method
that's resolved kind of stays the same. It says input into the test. It's a
parameter that you are passing like these are all effectively parameters
that you're going to be passing for different tests.
00:35:00

Manu Sporny: and this kind of tells you if I'm doing a test where I need
the result to be that, this is an unsupported method. because there is a
normative statement in the dead resolution spec around getting a result
back. That's, a non-supported method and you must return, this value. you
have to then give that input to the resolver so you get back something that
you can test against. So this is clearly not set in stone. I think it's
going to be up to you and Vango to figure out how to break things up. you
had suggested doing it per did method I can see the benefit of doing that.

Manu Sporny: I'm also a bit concerned about things like Marcus' resolver. I
don't think we should optimize for Marcus' resolver. it's great and it does
everything, but let's not presume that every other resolver is going to do
that. you said I don't think we should be optimizing for a resolver
resolving, 50 different dip methods. We should optimize for one to a
handful. and I think that's how we get a lot more people willing to
participate in the test suite. the other thing I want to make sure that we
don't do is we don't fall into the trap of making this a it is not a DID
method test suite. That is a separate thing. There's going to be a DID
method working group. They're going to be doing, test suites on whatever
DID methods they end up, standardizing.

Manu Sporny: if that work starts and so that is not Our job here is to test
the interfaces for data resolution and…

Manu Sporny: I think and that's it.

Will Abramson: Cool. I think that mostly makes sense.

Will Abramson: Some of the things that I'm hearing that I don't understand
is you're saying that for example that valid list we might take those
valids and run them through a series of tests, And get results. I was
imagining much more that each of those flags on the left right supported
did valid that is a flag for a test and we are putting in a did that is
going to go through that test and should meet the test case right it's
almost like I don't know if 80 is too many but we might have a bunch of
those and ideally each of those flags would be for a conformance statement
from the spec but maybe

Will Abramson: I'm thinking about that wrong but that's kind of how I was
imagining and then that's why it wouldn't be much more valid for this this
is valid for this did method this did is not found so I don't know whether
I'm just thinking about that wrong I'd love to hear what people think the
other thing I wanted to say is there are some cases like in did BTC1 for
example we don't have a did there is no such thing as not found in our
world right So that's just a flag. not so I don't know how he handle those
things. I did methods don't support certain types of error codes but I
think it's fine. We probably just don't put that test case in. The other
thing I wanted to flag did BTC1 and maybe we need to consider this did BTC1
really requires often we use resolution options to provide material that is
critical for resolving the DID.

Will Abramson: and I don't know how we navigate that but there are cases
where some did resolution tests require specific kinds of resolution
options do you handle version correctly for example. but I guess maybe
those resolution options would be provided by the test case itself. it
would be like okay this is that can be resolved at version two for example.
But then also the problem with that is the for example did methods use
different version ids right so I think that also has to be something really
that's provided by the resolver saying okay this did with these resolution
options and the test would just be to check that resolution options has a
version ID and then run it through and check that the resulting did
document or really I think did document metadata has the same version ID
your test that you would
00:40:00

Will Abramson: So I know that complicates things quite a lot but anyway
Yeah. Yeah.

Manu Sporny: No, I don't think it complicates. I mean, we need to do that,
Meaning meaning we need to be able to pass options where it makes sense to
do so. And I mean, I think that's largely up to you, Will, and Bango to try
to figure it out. you're going to have to go through and do an analysis of
the, tests and then see the variations you need. going back to your first
question though, if we have 80 tests and we have 80 things on the left
here, I don't think we will end up there. I hope we don't end up there. if
we end up there, I think we're doing it wrong.

Manu Sporny: theres certain there I think and we haven't done the analysis
yet but once we do the analysis I think there will be a number of buckets
where you need to use one did or another right and then there may be
subbuckets within there where you actually do need to pass parameters and
so my hope here is

Manu Sporny: that, maybe we get to 10 to 15 big buckets and then in those
we,…

Joe Andrieu: Yes.

Manu Sporny: if they're more specific ones for the version ID thing, maybe
we do have, an entry for version ID. So maybe each parameter gets, a bucket
here and then we say although, and we say this is the value. so we have a
version ID test, And so we're for someone that's registering their DID
resolver. They come in and they go for the version ID tests, Here's the
version you should use for a successful,…

Will Abramson: Mhm.

Manu Sporny: version, response. and then maybe any other options that the
did method resolver, needs.

Manu Sporny: But I think that at that point we're down to kind of
fine-tuning it. And it may be well that you'll need to, do multiple
iterations of this. but will we have a bucket for every single test? I hope
not. That means we're probably doing it Hopefully we end up with about 10
to 15 properties here on the left for the general class of tests that
you're trying to do. hopefully for most of these things just like having a
valid and having a did come back at all is all we really need for let's say
20 tests or so. and then for ones where it's just this test is super
nitpicky. We need to pass multiple different options. It has to be on a
version document. It has to,…

Will Abramson: Cool. Yeah.

Manu Sporny: be in a certain time frame or whatever. we might want to at
that point maybe we have some weird entries in here. Yeah, head well.

Will Abramson: No, that's fair. I mean, I guess like you say, we just got
to do it and explore. And we talked about the first thing that we're going
to do is focus on valid. So, we're going to get this data structure working
or valid. I personally still like the idea of making this data structure be
split up by methods because if you have a look at the report again you
could imagine showing a report where there's a top heading this resolver
name right or maybe resolver a name with the description of a resolver and
then for each DID method there's a subheading and then there's all the test
cases that have been passed against that did method right and it shows you
okay this resolve is really good for this DID method but it's claiming

Will Abramson: to be good for some other DID method but isn't conformant in
X Y and Z places I think that would be really nice information that people
want to learn about different resolvers instead of having this big table
that we scroll to the end and see green check marks like per resolver on
the left it just might be a different way to structure the data right heat.

Manu Sporny: I'm worried that we would then fall into testing dead methods,
which I thought we really didn't want to do. I'm interested to hear on kind
of Joe's take on this. But if people are coming to this thing to figure out
how well a resolver supports a particular DID method, I think that's not
what we're trying to do here. then we should not go down that route, that
is what a be A test suite should have a bunch of resolvers for it and the
resolvers, should exercise every bit of the DID method because they're
going to be things that are very specific to a DID method that we're just
not going to cover in did resolution.
00:45:00

Manu Sporny: So I'm a bit concerned about I don't have any issue with I
think breaking it up by did method here maybe because for example keys from
did web is different from did BTC one right and you're not going to want to
run update and deactivate tests against did key it's just not going to work
right but for DID

Manu Sporny: key or sorry for those tests for activate and deactivate I
wouldn't list did key beside the test bucket because I know it's going to
fail right so I think largely again what we're trying to do here is test
the normative statements in the specification on here should be a normative
statement in the specification and whether or not the implementation is
capable of meeting the normative statement We don't care which did method
it uses to do it. We just care whether or not it passes the normative
statement or not. …

Manu Sporny: hope that helps.

Will Abramson: Thanks. to …

Will Abramson: Benj put his hand down. yeah, no, I think I was going to say
maybe you have convinced me that I think I was going a bit down into the
did methods and really this test what we care about is can a resolver
resolve and pass the resolution thing. so maybe we don't care about the DID
methods at all. It just feels weird to me. But maybe that is the way that
we go. And you just have to provide some dids that demonstrate your
implementation passes all of the resolution spec. But that could be well
and…

Will Abramson: then you across the board from different methods, right?
Marcus could pick a whole handful of different methods and provide
different ones for different test cases. But maybe that's fine. Joe

Joe Andrieu: Yeah, I'm not sure I understood…

Joe Andrieu: what you wanted me to chime in on. Manny, one what I'm hearing
will say is that for BTC1, we have features that the resolver has to
support that we need to test.

Joe Andrieu: So we're going to need to have per did method differences in
terms of the parameters that get sent to the resolver and we need a way to
represent that. And I agree with your general point that what we don't need
to be doing is fleshing out all the ways in which a did method might
respond. But we do have to check that the resolver can actually handle
these additional parameters that the BTC1 needs.

Will Abramson: Thanks Joe man.

Manu Sporny: Yeah, but I was looking for your input on Joe was the idea
that we would become a did method testing group.

Manu Sporny: I think that's out of our charter. I would expect a big
objection from you on …

Joe Andrieu: Yeah, agreed.

Manu Sporny: if I'm like okay.

Joe Andrieu: totally agreed that that's a clearer point. So, yes, I agree.
We should not be testing dead methods.

Manu Sporny:

Manu Sporny: Plus one we have to be able to pass in parameters for
different DID methods so that they can prove that they pass the resolution
for a certain type of resolution feature that they can pass that feature if
they want to support it. U but I don't want it to count as a strike against
a did method…

Joe Andrieu: Yeah.

Manu Sporny: if we're never going to support this feature. We don't believe
in it. We don't want it philosophically we're opposed to it. we don't want
that to count as an X against them because they clearly don't want to
support it.

Will Abramson: Yeah. I was going to say I agree we don't want to be testing
did methods…

Will Abramson: but for me the way we demonstrate clearly we are not testing
is we don't DID methods to provide the responses that they expect a DID to
get resolved to. All our text, all of our tests, And all of our checks on
the resolution results that are retrieved by executing these resolution
requests through the resolver URL that is provided are generic and can be
applied across the board to anything that's resolved. that is the
distinction like we are not checking deep down into the actual results.

Will Abramson: But we still might want to check that for this DID method it
did resolver compatible like it is supporting all the DID resolver features
because you might have a DID resolver that supports a DID method but does
not properly support version for that did method for example and that would
be useful to know
00:50:00

Manu Sporny: I got a little lost at the front of what you were saying.
Will, but agreed with the stuff at the end. maybe if I can just point out
let me bring up VC data model Sweet. H where I hope we end up is as ugly as
this kind of layout is…

Will Abramson: Mhm.

Manu Sporny: but where I hope we end up is here where we have a did
resolution test conformance testing statement that is in the specification
here and whether or not an implementation passes it or not up here like
that that's where I'm hoping we're landing.

Manu Sporny: If we land here where we have a DID method on the left or
categorizing categorization by DID method, I am not supportive of that
because I think that puts us onto a slippery slope of being even conveying
that we're testing DID methods here and we are testing whether or not a
chosen DID method is conformant to the DID resolution things but again We
care about the resolution result in test suite in this specific group. That
I think is what we need to care about. if we put accidentally slip into the
we're testing did methods thing or…

Manu Sporny: even convey that. that's the wrong thing for this group to be
doing. That's it.

Will Abramson: Thanks. …

Will Abramson: Benjamin, we got to close.

Benjamin Young: Yeah, I think that makes the distinction really clear about…

Benjamin Young: what you want to see on the left. I'm not sure it's what
people shopping resolution services want to see on the left. but that's
maybe a different problem.

Will Abramson: Great. Thanks, man.

Manu Sporny: Yeah, that is not our job to help people shopping and it's
really did methods, It's not for resolvers. I think we need to do that
through some other mechanism like we are not supposed to be…

Manu Sporny: what we're supposed to be doing is just testing whether or not
the spec is implementable or not for did resolution. We're not supposed to
be giving people a shopping list on which did methods which did resolvers
they can use. I do agree with you Benjamin people do want that but that is
not our job for this very specific test suite.

Will Abramson: so I think I agree and…

Will Abramson: I'm convinced the only thing that I'm hesitant on is isn't
there a good interoperability argument that we can make if we are showing
look are all these different DID resolvers and look they're conformant
against the DID resolver spec for all these different DID methods and the
tests by which we're demonstrating their conformant are generic and have
been applied to all the DID methods that's pretty valuable but maybe it
isn't what we're trying to get to here kind

Manu Sporny: It is but crawl, walk, run. I think if we can get there, But
we are limited resources, limited time, can we just make it so that we can
get this spec done instead of mean that's great. I do agree with that would
be very powerful and I think if we get a big variation of the did methods
people are using here maybe we can do a post-processing step to show them
show some of these big tech companies that have always said that we don't
actually have interop to show them what every did document that this test
suite came back and…

Manu Sporny: we tested across 10 15 20 different

Manu Sporny: did methods they all had the same format they all met the did
core criteria that is interup right so I think we can make that argument
but let's not create even more work for ourselves and say we're committing
to that just yet I think that'll naturally come out of the test suite let's
see the variation that people use and if there's high variation…

Will Abramson: Mhm.

Manu Sporny: then we can make that point but if there's low variation then
we never signed up for trying to make that point and we can do that, later.

Will Abramson: Okay.

Will Abramson: That's great. I think that, gives me good marching points. I
probably will keep this data structure and explore with Benjamin let's just
get valid working and see if we can get some other implementations
submitting their results to this thing. I mean any final comments before we
close? I mean we'll review this briefly tomorrow right just for five
minutes check with the rest of the group since there's only six of us but I
think this has been a great discussion and it is recorded so that's always
useful yeah…
00:55:00

Manu Sporny: When you shut down make sure to end the call for everyone. And
you might want to stop transcription and stop recording. I want just to
make sure that we top left.

Will Abramson: how do I do that yeah I got it recording stop transcription

Manu Sporny: Yeah. Mhm.
Meeting ended after 00:55:30 👋

*This editable transcript was computer generated and might contain errors.
People can also change the text after it was created.*

Received on Wednesday, 20 August 2025 22:12:08 UTC