Aller au contenu

BC-066C — Dormant Projection / Realtime Rationalization

Status: HISTORICAL For the current architecture, see: ./dependances.md, ../runtime/overview.md.

Projet : /mnt/data/cmonchoix-platform Branche : bc-048-samsung-wearable-enrichment

Verdict

BC-066C est fermable.

Option retenue : Option A — audit/tests/docs only.

Je n’ai retiré aucun composant de production, parce qu’aucun n’est “mort prouvé” avec un niveau de confiance suffisant pour une suppression sûre dans cette tranche.

Architecture avant / après

Avant :

  • composants déjà dormants ;
  • statut partiellement documenté ;
  • tests surtout mécaniques ;
  • pas de décision explicite entre placeholder et orchestration retained.

Après :

  • statut de chaque composant explicité ;
  • absence d’entrypoint runtime verrouillée ;
  • sémantique queue/worker/registry/projection caractérisée ;
  • décision BC-066D préparée sans activer la chaîne.

Inventaire Projection

Classe Rôle Consumer prod Consumer test Entry point Verdict
ProjectionEngine moteur placeholder de replay/dispatch ProjectionCatalogWiring interne oui ProjectionCatalogWiring::build() interne placeholder
ProjectionCatalogWiring helper de wiring/bridge aucun entrypoint live prouvé oui interne uniquement compatibility surface
EventSubscriberRegistry registre d’abonnés ordonné RealtimeCatalogRebuilder oui aucun live orchestration retained

Inventaire Realtime

Classe Rôle Consumer prod Consumer test Entry point Verdict
AsyncEventQueue queue mémoire FIFO AsyncWorker oui aucun live placeholder
AsyncWorker consommateur unitaire de queue aucun live prouvé oui aucun live active dormant
RealtimeCatalogRebuilder orchestration ranking → intelligence AsyncWorker oui aucun live orchestration retained

Graphe réel

Source Target Relation Prouvée Runtime live
ProjectionCatalogWiring ProjectionEngine internal new() oui non
ProjectionCatalogWiring CatalogProjectionWriter dispatch(product.created) oui non
AsyncWorker AsyncEventQueue pop() oui non
AsyncWorker RealtimeCatalogRebuilder process() / boot() oui non
RealtimeCatalogRebuilder EventSubscriberRegistry subscribe() + dispatch() oui non
RealtimeCatalogRebuilder CatalogRankingEngine rank() oui non
RealtimeCatalogRebuilder CatalogIntelligenceEngine rebuild() oui non

Aucun lien réel prouvé avec EventBridge.

Queue

Capability Present Placeholder Production-ready
FIFO oui non non
persistence non oui non
multi-process non oui non
retry/ack/visibility timeout non oui non
serialization non oui non

Worker

Cas Pop Process Result
queue vide 1 tentative non retour immédiat
DomainEvent 1 item process() rebuilder exécuté
objet non DomainEvent 1 item boot() seulement aucun write direct

Rebuilder

Étape Input Dependency Write
boot() none EventSubscriberRegistry non
process() DomainEvent registry indirect uniquement
handleProductEvent() event objet ranking + intelligence indirect via repository

Classification finale

Component Keep Remove Defer Reason
ProjectionEngine oui non oui placeholder encore utile pour tests et wiring
ProjectionCatalogWiring oui non oui surface de compat/wiring minimale
EventSubscriberRegistry oui non non orchestrateur cohérent, testé
AsyncEventQueue oui non oui placeholder FIFO testé, pas durable
AsyncWorker oui non oui futur runtime candidate, pas d’entrypoint live
RealtimeCatalogRebuilder oui non oui orchestration cohérente mais dormante

Décision préparée pour BC-066D

BC-066D devra choisir entre :

  • retrait assumé de la chaîne dormante ;
  • maintien dormant durable ;
  • activation future via une vraie décision runtime.

BC-066C ne tranche pas ce choix.

Note postérieure BC-066D

Le choix est maintenant explicite :

  • décision retenue : KEEP_DORMANT
  • la chaîne reste non opérationnelle
  • aucune suppression n’est décidée à ce stade
  • une activation future exige une BC dédiée avec design opérationnel complet

Note postérieure BC-066E

BC-066E transforme cette décision en certification finale :

  • inventaire exact verrouillé ;
  • aucune activation cachée détectée ;
  • fermeture BC-066 autorisée.