Back to Linktree

Context as a Variable: The Architecture Killing Context Rot / Le contexte comme variable : L'architecture contre la dégradation du contexte

August 24, 2026 2 min read
#Architecture #CleanCode #Engineering #SystemDesign

🇫🇷 Version Française

Le “Context Rot” (dégradation du contexte) est un défi majeur dans les systèmes complexes où les décisions passées deviennent obscures. En traitant le contexte comme une variable explicite plutôt qu’implicite, nous pouvons créer des systèmes plus résilients et maintenables.

Résumé exécutif et points clés

  • Contexte explicite : Sortir le contexte de l’ombre pour le rendre manipulable.
  • Dépendances réduites : Réduire le couplage temporel et logique.
  • Maintenance facilitée : Un système qui explique ses propres décisions.

Approche technique

L’idée est d’injecter explicitement le contexte via des interfaces plutôt que de compter sur des variables globales ou des états cachés. Voici une représentation simplifiée :

interface ExecutionContext {
  traceId: string;
  userId: string;
  metadata: Map<string, any>;
}

function processRequest(data: any, ctx: ExecutionContext) {
  // Le contexte est maintenant une variable passée explicitement
  console.log(`Processing for ${ctx.userId}`);
}

🇬🇧 English Version

“Context Rot” occurs when the hidden assumptions and environment data of a system degrade over time, leading to technical debt. By elevating context to a first-class variable, you turn implicit system behavior into an explicit, trackable architecture.

Executive Summary & Key Takeaways

  • Explicit Context : Stop relying on implicit environmental assumptions.
  • Decoupling : Passing context as an object reduces reliance on side effects.
  • Observability : Easier debugging because the state is always passed along.

Technical Deep-Dive

Moving away from static dependencies toward a dependency-injection pattern ensures that every function knows exactly what the environment looks like at the time of execution.

interface ExecutionContext {
  traceId: string;
  userId: string;
  metadata: Map<string, any>;
}

function processRequest(data: any, ctx: ExecutionContext) {
  // Context is now an explicit variable passed through the call stack
  console.log(`Processing for ${ctx.userId}`);
}

Conclusion & Resources

Treating context as a variable makes your system deterministic and testable. Always favor explicit flow over hidden environmental states to combat architectural decay.