Repository navigation
Make the verification result docs match what the code does - #72
Merged
ottonomy merged 1 commit intoOct 20, 2026
Conversation
…does `verified` means no *fatal* check failed, but the type comments, the README and the verification-results guide described it as "no check returned a failure" and showed a registry-only failure as a failed verdict. Say what the code does, and name the advisory (non-fatal) checks — `registry.issuer`, `recognition.profile`, `status.list-issuer`, the Open Badges checks, and any caller check without `fatal` — everywhere the verdict is described. The UI recipe and the prompt-ready appendix now show an advisory failure inside a verified result and a fatal one beside it. Also: `SuiteSummary.status` is `'failure'`, not `'mixed'`, for failures plus skips; the returned credential and presentation are the caller's original objects rather than anything "parsed"; and the timing guide's parse-failure example uses the id the code emits, `cryptographic.parsing.envelope`. A new test pins the policy through the verifier: a credential whose only failing check is `registry.issuer` is `verified: true` with a `trust.registry` summary of status `'failure'`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ottonomy
force-pushed
the
nightshift/44-make-the-verification-result-docs-match-what-the
branch
from
October 20, 2026 19:23
d70f0ab to
9c5ef80
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #44
Stacked on #71 — review and merge that first (or merge the stack together).
Departures
None. All four doc defects named in the ticket are fixed, and the acceptance
test is in place.
Decisions not in the issue
Where the test lives.
test/verify-credential.spec.ts, in a newadvisory (non-fatal) failuresdescribe block. It drives the publicverifyCredentialwith a fake HTTP service returning an emptydcc-legacyregistry, sotrust.registry.issueris the only failingcheck; it asserts the failure list is exactly that one id, that the check
is not fatal, that
verifiedistrue, and that thetrust.registrysummary has
status: 'failure'andhasFailures: true.How the API guide's examples were made truthful. The ticket says the
UI recipe and the worked example must stop showing a registry-only failure
as
verified: false, but not which way to resolve it. Rather than deletethe failing-verdict illustration, both now show both cases side by side:
credential 1 fails only advisory checks (registry, and an Open Badges
semantic check in the recipe) and stays
verified: truewithhasFailures: trueon those suites; credential 2 failscryptographic.proof.signaturefatally, which is what makes a verdictfalse. The appendix JSON for credential 2 therefore gained the realistic
"Not run after fatal" skip rows and matching summary entries. A reviewer
who would rather see a single simpler example can cut credential 2.
A new
### The top-level verdictsubsection was added near the top ofdocs/api/verification-results.md(and linked from the table of contents)so the advisory list is stated once and referred to from the recipe and
the appendix, instead of being repeated three times in full.
Advisory checks are named by their full ids in the README and API
guide (
trust.registry.issuer,cryptographic.status.list-issuer, …)and by their short ids in the TSDoc, matching how each surface already
refers to checks.
Two extra timing-guide ids. Besides the
cryptographic.parsing.parsing.envelope→cryptographic.parsing.envelopefix the ticket names, the prose in the
TimeServicesection referred toproof.signatureandstatus.bitstring; those are now the full ids thecode produces, so "every id in the guide is a real one" holds without
having to argue about prose-vs-example.
Left alone, deliberately:
VerifyCredentialOptions.credential/VerifyPresentationOptions.presentationstill say "parsed internally viaZod". That describes the input and what the verifier does with it (it
does parse, as a gate), not the returned object, so it is accurate and
outside the ticket's "nothing calls the returned credential parsed".
Agent-Run: 96643ad2-b7e6-44b0-a51f-a8f6831d5132