Repository navigation
feat: change-request round in DECADE-X onboarding - #44
Merged
Merged
Conversation
The TSP spec renames ON_HOLD to CHANGES_REQUESTED and adds a changeRequest to the onboarding request. The stand-in now serves it: a request asked for changes is corrected like a draft and submitted again (back to UNDER_REVIEW), and the automatic review asks every request for changes once before it approves (dx-onboarding.review.request-changes). The Membership Hub submits a CHANGES_REQUESTED request again when it polls its status. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
wolf4ood
approved these changes
Nov 11, 2026
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.
The TSP's onboarding spec (
dx-onboarding-api/dataspace-api-docs.yaml) renames the statusON_HOLDtoCHANGES_REQUESTEDand adds achangeRequestto the onboarding request. This PR makes the VE's TSP stand-in serve that flow, and makes the Membership Hub answer it.Every onboarding request is asked for changes once
This is a deliberate behaviour change. The VE has no TSP operator, so nothing would ever request changes and the new code path would never run. To cover it, the automatic review now sends every request through one change-request round before it approves:
SUBMITTED→UNDER_REVIEW→CHANGES_REQUESTED→ (applicant submits again) →UNDER_REVIEW→APPROVAL_IN_PROGRESS→APPROVEDchangeRequestit hands back is canned: a comment saying that nothing needs correcting and that submitting again is enough, with an emptyitemslist.dx-onboarding.review.request-changes.hostedand.external(bothtrueby default, inapplication.yamland incharts/dx-onboarding-api/values.yaml). With both off, a request goesSUBMITTED→UNDER_REVIEW→ approval.auto-approve). A request that waits for an operator stays inSUBMITTED.Consequences:
CHANGES_REQUESTED.participant.registration.poll-interval, 15s by default).dx-onboarding-api
OnboardingStatus:ON_HOLDbecomesCHANGES_REQUESTED. It still holds its DID and counts toward the pending-request quota.ChangeRequestrecord (requestedAt,comment,items[{field, documentType, note}],resubmittedAt), carried onOnboardingRequestand returned aschangeRequest.CHANGES_REQUESTED, the applicant can replace the data and add, replace or remove documents, as on a draft. Deleting the request stays draft-only.POST /{requestId}/submiton aCHANGES_REQUESTEDrequest runs the same checks as the first submit (completeness, DID free and resolvable), skips the pending quota, moves it toUNDER_REVIEWand setschangeRequest.resubmittedAt.submittedAtkeeps the time of the first submit, and no secondonboarding.startedevent is published.Idempotency-Keyof the first submit together with an outdated version is treated as that first submit sent again, not as the resubmit. Otherwise a retried first submit would get a 409 once the review has already asked for changes.AutomaticReviewnow takes a request on (UNDER_REVIEW) before it decides, andApprovalServiceapproves fromSUBMITTEDorUNDER_REVIEW.invalid-onboarding-request-statechanges from "Request no longer a draft" to "Request cannot be changed".membership-hub
DecadeXOnboarding.pollStatus: onCHANGES_REQUESTEDit submits the request again unchanged, under the version from theETagand the samedx-submit-<externalId>key, and reports PENDING. A refused resubmit fails that poll and is retried on the next one.Tests and docs
SpecConformanceTestnow also checks the status enum and the change-request schema against the yaml, so a rename in the spec fails the build.dx-onboarding-api100 tests,membership-hub102). The full e2e run has not been done on this branch.dx-onboarding-api/README.mdandonboarding.mddescribe the flow, including the state diagram;membership-hub/README.mdmentions the resubmit.Not in this PR
dataspace-api-docs.yamlstill says a submitted request can no longer be changed. That text belongs to the spec's owner.🤖 Generated with Claude Code