fix(web): validate targetDid has did: prefix before proxying to AppView (ATB-49) (#77)
Add a startsWith("did:") guard in the POST /admin/members/:did/role handler
before the upstream fetch call. Malformed path parameters now return an inline
MemberRow error fragment without hitting the AppView. Covered by a new test.