Connect SXCHNGE account sign-up to Sendico's public immutable identity Facts intake, with a durable customer-owned individual binding and confirmed receipt before activation.
Approach
Implemented the public HTTP provider adapter under providers/sendico, a durable signup_facts handoff using shared database repositories with majority writes/primary reads, runtime configuration, and sign-up/resend/activation gates. Send only full name, normalized email and local customer reference. Keep organization scope and provider credentials in the server adapter. Preserve atomic account/token creation while making the initial activation token replayable through a server-secret-derived key. Typed EN/RU support guidance reaches sign-up and verification recovery through DTO/mapper/service/model/provider boundaries. Existing auth journeys plus bounded backend metrics measure the outcome.
Acceptance criteria
Sign-up registers an independent individual and submits supported assertions through the public HTTP API.
Customer binding and intake receipts are durable; retries reuse the subject, original snapshot and source reference.
Validation passed: GOFLAGS=-p=2 make test (all backend race tests and canonical frontend suites), make lint-backend, dart format --output=none --set-exit-if-changed for all 11 changed Dart files, and flutter analyze in frontend/app and frontend/packages/sxchnge_auth. Focused Go race and Flutter adapter/provider/widget checks also pass. Initial validation exposed an intake-retry activation cooldown issue, a Testcontainers reaper startup timeout, and a new locale fixture that double-disposed app-owned state. The flow and fixture were corrected; reduced Go package parallelism resolved container contention; the final full run passed.
Contracts: Sendico docs/api/identity-facts-intake.md and docs/api/individual-subjects.md (#2823/#2822). Intake acceptance is not verification/KYC or limit approval. Enable api.sendico only with provisioned endpoint/organization/source account IDs and a Vault-rendered unexpired same-account access token. Registration is non-idempotent upstream, so ambiguous results need the documented reconciliation procedure; no speculative repeat registration. Live provider resources, live email, deployment, merge and optional security scans were not performed. Preserve the unrelated notifications runtime configuration.
Durable documentation: docs/signup-facts.md, docs/auth-notifications.md and docs/implementation.md.
### Goal
Connect SXCHNGE account sign-up to Sendico's public immutable identity Facts intake, with a durable customer-owned individual binding and confirmed receipt before activation.
### Approach
Implemented the public HTTP provider adapter under providers/sendico, a durable signup_facts handoff using shared database repositories with majority writes/primary reads, runtime configuration, and sign-up/resend/activation gates. Send only full name, normalized email and local customer reference. Keep organization scope and provider credentials in the server adapter. Preserve atomic account/token creation while making the initial activation token replayable through a server-secret-derived key. Typed EN/RU support guidance reaches sign-up and verification recovery through DTO/mapper/service/model/provider boundaries. Existing auth journeys plus bounded backend metrics measure the outcome.
### Acceptance criteria
- [x] Sign-up registers an independent individual and submits supported assertions through the public HTTP API.
- [x] Customer binding and intake receipts are durable; retries reuse the subject, original snapshot and source reference.
- [x] Concurrent/ambiguous registration cannot silently create duplicate subjects; uncertain outcomes require explicit reconciliation.
- [x] Failed intake never reports confirmed success or bypasses activation through resend; activation failures roll back token consumption.
- [x] Input, loading suppression, localized recovery and semantic analytics remain correct.
- [x] Configuration, privacy-safe diagnostics, rollout and reconciliation limitations are documented.
- [x] Backend/frontend/UX reviews and required validation pass; changes are committed, pushed and delivered in PR #47.
### Notes
Delivered: https://git.sendico.io/tech/sxchnge/pulls/47 targeting main; branch identity-facts-46. Implementation a584c81; delivery record 7bf8b80. Owner tech; SXCHNGE project; backend/frontend labels. Primary module identity-facts; secondary modules auth, customers, runtime, shared database source and Flutter auth/verification.
Validation passed: GOFLAGS=-p=2 make test (all backend race tests and canonical frontend suites), make lint-backend, dart format --output=none --set-exit-if-changed for all 11 changed Dart files, and flutter analyze in frontend/app and frontend/packages/sxchnge_auth. Focused Go race and Flutter adapter/provider/widget checks also pass. Initial validation exposed an intake-retry activation cooldown issue, a Testcontainers reaper startup timeout, and a new locale fixture that double-disposed app-owned state. The flow and fixture were corrected; reduced Go package parallelism resolved container contention; the final full run passed.
Contracts: Sendico docs/api/identity-facts-intake.md and docs/api/individual-subjects.md (#2823/#2822). Intake acceptance is not verification/KYC or limit approval. Enable api.sendico only with provisioned endpoint/organization/source account IDs and a Vault-rendered unexpired same-account access token. Registration is non-idempotent upstream, so ambiguous results need the documented reconciliation procedure; no speculative repeat registration. Live provider resources, live email, deployment, merge and optional security scans were not performed. Preserve the unrelated notifications runtime configuration.
Durable documentation: docs/signup-facts.md, docs/auth-notifications.md and docs/implementation.md.
tech
added the backend label 2026-10-14 22:31:13 +00:00
tech
self-assigned this 2026-10-14 22:31:13 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Goal
Connect SXCHNGE account sign-up to Sendico's public immutable identity Facts intake, with a durable customer-owned individual binding and confirmed receipt before activation.
Approach
Implemented the public HTTP provider adapter under providers/sendico, a durable signup_facts handoff using shared database repositories with majority writes/primary reads, runtime configuration, and sign-up/resend/activation gates. Send only full name, normalized email and local customer reference. Keep organization scope and provider credentials in the server adapter. Preserve atomic account/token creation while making the initial activation token replayable through a server-secret-derived key. Typed EN/RU support guidance reaches sign-up and verification recovery through DTO/mapper/service/model/provider boundaries. Existing auth journeys plus bounded backend metrics measure the outcome.
Acceptance criteria
Notes
Delivered: #47 targeting main; branch identity-facts-46. Implementation a584c81; delivery record
7bf8b80. Owner tech; SXCHNGE project; backend/frontend labels. Primary module identity-facts; secondary modules auth, customers, runtime, shared database source and Flutter auth/verification.Validation passed: GOFLAGS=-p=2 make test (all backend race tests and canonical frontend suites), make lint-backend, dart format --output=none --set-exit-if-changed for all 11 changed Dart files, and flutter analyze in frontend/app and frontend/packages/sxchnge_auth. Focused Go race and Flutter adapter/provider/widget checks also pass. Initial validation exposed an intake-retry activation cooldown issue, a Testcontainers reaper startup timeout, and a new locale fixture that double-disposed app-owned state. The flow and fixture were corrected; reduced Go package parallelism resolved container contention; the final full run passed.
Contracts: Sendico docs/api/identity-facts-intake.md and docs/api/individual-subjects.md (#2823/#2822). Intake acceptance is not verification/KYC or limit approval. Enable api.sendico only with provisioned endpoint/organization/source account IDs and a Vault-rendered unexpired same-account access token. Registration is non-idempotent upstream, so ambiguous results need the documented reconciliation procedure; no speculative repeat registration. Live provider resources, live email, deployment, merge and optional security scans were not performed. Preserve the unrelated notifications runtime configuration.
Durable documentation: docs/signup-facts.md, docs/auth-notifications.md and docs/implementation.md.
identity-facts-46to identity-facts-46tech referenced this issue2026-10-14 23:03:08 +00:00
tech referenced this issue2026-10-17 05:18:02 +00:00