anchorage_layer_simple/features/userwallet-login-state-machine.md
ncantu c3c11f0ef0 Update userwallet components, services and documentation
**Motivations:**
- Add new features and fixes for userwallet application
- Update documentation for pairing, login state machine, and sync
- Add new utilities for bloom filters, nonce store, and contract versioning
- Fix mempool websocket offline issues

**Root causes:**
- N/A (feature additions and improvements)

**Correctifs:**
- Fix mempool websocket offline handling
- Update ESLint configuration

**Evolutions:**
- Add login state machine service and hook
- Add sync loop service
- Add bloom filter utilities for anti-replay and state visibility
- Add nonce store and contract version utilities
- Update pairing confirmation and graph resolver services
- Add new documentation for features and fixes
- Update userwallet components (LoginScreen, SyncScreen)
- Update types for contract, identity, and messages

**Pages affectées:**
- userwallet/src/components/LoginScreen.tsx
- userwallet/src/components/SyncScreen.tsx
- userwallet/src/hooks/useChannel.ts
- userwallet/src/hooks/useLoginStateMachine.ts (new)
- userwallet/src/services/graphResolver.ts
- userwallet/src/services/pairingConfirm.ts
- userwallet/src/services/syncService.ts
- userwallet/src/services/syncLoop.ts (new)
- userwallet/src/services/loginStateMachine.ts (new)
- userwallet/src/types/contract.ts
- userwallet/src/types/identity.ts
- userwallet/src/types/message.ts
- userwallet/src/utils/canonical.ts
- userwallet/src/utils/identity.ts
- userwallet/src/utils/indexedDbStorage.ts
- userwallet/src/utils/relay.ts
- userwallet/src/utils/verification.ts
- userwallet/src/utils/bloom.ts (new)
- userwallet/src/utils/contractVersion.ts (new)
- userwallet/src/utils/nonceStore.ts (new)
- userwallet/eslint.config.mjs
- userwallet/package.json
- userwallet/package-lock.json
- userwallet/docs/synthese.md
- userwallet/docs/specs-champs-obligatoires-cnil.md (new)
- api-relay/README.md
- features/userwallet-pairing-words-only-finalise.md
- features/userwallet-anti-rejeu-etats-visibles-bloom.md (new)
- features/userwallet-bloom-usage-sync.md (new)
- features/userwallet-contrat-login-reste-a-faire.md (new)
- features/userwallet-ecrans-login-a-valider.md (new)
- features/userwallet-eslint-fix.md (new)
- features/userwallet-login-state-machine.md (new)
- features/userwallet-validation-conformite.md (new)
- fixKnowledge/mempool-websocket-offline-fix.md (new)
- mempool (submodule)
- hash_list.txt
- hash_list_cache.txt
2026-01-26 14:00:32 +01:00

2.4 KiB
Raw Blame History

UserWallet Machine à états login (3.1)

Author: Équipe 4NK
Date: 2026-01-26

Objectif

Implémenter la machine à états formelle du login (S_LOGIN_* , E_* , transitions) décrite dans specs.md, et lintégrer au flux login existant.

Impacts

  • Module : services/loginStateMachine.ts (états, événements, transition, getInitialLoginState, isTerminal, isErrorState).
  • Hook : hooks/useLoginStateMachine (state, dispatch, reset).
  • LoginScreen : utilise le hook, dispatch des événements aux points clés (build path, challenge, publish, Retour), affichage de létat (sr-only, aria-live).
  • Flux : E_SELECT_SERVICE / E_SELECT_MEMBER → E_PATH_OK | E_PATH_INCOMPLETE | E_PATH_INVALID → E_PAIRS_OK → E_CHALLENGE_READY → E_SIGNATURES_COMPLETE → E_PUBLISH_LOGIN_OK | E_PUBLISH_LOGIN_PARTIAL → E_LOCAL_VERDICT_ACCEPT | (reject) → S_LOGIN_SUCCESS | S_LOGIN_FAILURE. E_BACK, E_RETRY, E_SYNC_NOW, E_ADD_PAIR pour reprises.

Modifications

  • src/services/loginStateMachine.ts : types LoginState, LoginEvent, TransitionResult ; transition(state, event) ; helpers.
  • src/hooks/useLoginStateMachine.ts : état local, dispatch, reset.
  • src/components/LoginScreen.tsx : hook, dispatch dans handleBuildPath, handleBuildChallenge, handlePublish ; handleBack + E_BACK ; libellé état (sr-only).
  • src/index.css : .sr-only pour le statut.

États couverts

S_LOGIN_SELECT_SERVICE, S_LOGIN_SELECT_MEMBER, S_LOGIN_BUILD_PATH, S_LOGIN_CHECK_PAIRS, S_LOGIN_NEED_MORE_PAIRS, S_LOGIN_BUILD_CHALLENGE, S_LOGIN_COLLECT_SIGNATURES, S_LOGIN_PUBLISH_PROOF, S_LOGIN_VERIFY_LOCAL, S_LOGIN_SUCCESS, S_LOGIN_FAILURE, S_ERROR_RECOVERABLE.

Reste à faire (hors scope 3.1)

  • Timeouts (réseau, collecte signatures), backoff.
  • Gardes explicites (G_PAIRING_SATISFIED, etc.) côté UI avant dispatch.
  • S_LOGIN_NEED_MORE_PAIRS : boutons E_ADD_PAIR, E_SYNC_NOW dédiés.

Modalités de déploiement

Déploiement classique du front userwallet.

Modalités danalyse

  • Parcourir le flux login (sélection → chemin → challenge → publication) et vérifier les transitions (DevTools, log état si besoin).
  • Vérifier que Retour envoie E_BACK et navigue vers /.
  • Publication partielle → S_ERROR_RECOVERABLE, pas S_LOGIN_SUCCESS.

Références

  • userwallet/docs/specs.md (machine à états)
  • features/userwallet-contrat-login-reste-a-faire.md (§ 3.1)