AI Context Rot, Hypertext Philosophy, and Building NumPy in JavaScript

Published on 28.03.2026

AI & AGENTS

Real-Time Agentic RAG: Eradicating Context Rot With Spark and Iceberg

TLDR: AI systems that rely on stale knowledge bases suffer from what the author calls "context rot" — where the retrieval layer feeds the model outdated facts, making responses confidently wrong. This article proposes using Apache Spark 4.1 with Intent Driven Design and Apache Iceberg v3 deletion vectors to keep RAG pipelines truly current.

Summary: There is a problem in production AI systems that nobody really wants to admit out loud: your Retrieval-Augmented Generation pipeline might be lying to you, and it might be doing so with great confidence. Vaquar Khan, a Senior Architect at AWS with over two decades of experience in enterprise systems, calls this phenomenon "context rot." The idea is deceptively simple. Your knowledge base gets indexed at a point in time. Your AI agent then retrieves from that index. But the world — your product catalog, your documentation, your customer data — keeps moving. The index does not. So your agent retrieves what was true last Tuesday and presents it as fact today.

The solution Khan proposes is to stop treating the knowledge base as a static artifact and start treating it as a living, continuously synchronized data stream. He points to Apache Spark 4.1's Intent Driven Design as the orchestration layer that can coordinate high-frequency updates, and Apache Iceberg version 3's deletion vectors as the mechanism that makes efficient, targeted removal and replacement of stale records practical at scale. The combination, in theory, allows the retrieval layer to stay synchronized with upstream data sources in near real time, eliminating the temporal lag that causes context rot.

What is genuinely interesting here is the architectural shift this implies. Traditional RAG designs treat the vector store as something you periodically rebuild or batch-update. Khan's approach requires thinking about it more like a streaming database — one where deletes and updates are first-class citizens, not afterthoughts. The Iceberg deletion vector approach is particularly clever because it avoids the expensive full re-indexing that would otherwise be necessary when records change.

That said, there are things worth questioning here. The article focuses heavily on the technical plumbing and somewhat glosses over the operational complexity of running Spark 4.1 in production alongside an Iceberg catalog that is being mutated continuously. Real-time synchronization at scale introduces new failure modes: what happens when the update pipeline falls behind? Does the agent degrade gracefully or confidently serve stale data anyway? The author is largely silent on observability, alerting, and the failure taxonomy that any team attempting this in production will immediately need.

Key takeaways:

  • "Context rot" occurs when RAG knowledge bases are not kept synchronized with live data, causing AI agents to return confidently outdated answers
  • Apache Spark 4.1 Intent Driven Design can orchestrate high-frequency knowledge base updates
  • Apache Iceberg v3 deletion vectors enable efficient targeted record removal without full re-indexing
  • The architectural shift requires treating vector stores as streaming databases rather than static snapshots
  • Operational complexity around failure modes and observability remains underexplored in this approach

Why do I care: As someone who thinks constantly about system reliability and the gap between demos and production, this matters enormously. Most AI agent architectures I see in the wild are built on top of knowledge bases that are refreshed weekly at best. If you are building anything that claims to give current answers — customer support, internal tooling, anything touching live business data — context rot is a real and immediate problem. The Spark plus Iceberg stack is not lightweight to adopt, but the underlying insight is sound. You need to design your retrieval layer for mutation, not just for reads.

Real-Time Agentic RAG: Eradicating Context Rot With Spark & Iceberg


Reading Without End: The Crisis of Linear Knowledge

TLDR: Hypertext did not destroy deep reading — it made visible something that was always true: linear texts were always suppressing alternative paths in order to maintain interpretive coherence. The crisis is not one of attention spans, but of a fundamental shift in how we relate to knowledge, closure, and the act of understanding itself.

Summary: Andrei Mochola opens with a provocation that deserves to land fully before you rush past it: the crisis of linear reading did not begin with the internet. It began when the accumulation of knowledge exceeded the capacity of sequential containment. Footnotes multiplied. Bibliographies grew to rival the primary texts they referenced. The center of any serious work increasingly survived only through its peripheries. Hypertext, in this reading, did not create a new problem. It made an existing one impossible to ignore.

The argument Mochola develops is philosophically careful in a way that most technology commentary is not. Linear reading, he contends, always depended on a kind of epistemic trust — the reader's willingness to submit temporarily to the sequence another intelligence had already shaped. That trust was not naive. It was functional. It allowed incomplete understanding to proceed without paralysis. You could move forward through a difficult text without having mastered every surrounding context, because the sequence itself was a scaffold. Hypertext removes that scaffold. Every link makes visible how much remains outside your immediate line of attention.

The piece's most interesting move is its treatment of Wikipedia as a case study. Wikipedia does not merely present information — it structurally invites perpetual lateral movement. Every article is internally unfinished because every concept it contains is already linked to something that modifies, expands, or relativizes it. Traditional encyclopedias closed. Wikipedia by design does not. And this, Mochola argues, is not a flaw but an honest representation of what knowledge actually looks like: a navigable topology of provisional understanding, not a completed archive of settled facts.

The contemporary browser window becomes his final image — multiple tabs open not as evidence of fractured attention but as a visible record of structurally suspended reading. We do not leave tabs open because we are distracted. We leave them open because reading itself has become distributed across multiple unfinished cognitive obligations. What earlier cultures called interruption, we have quietly reclassified as concentration.

What the author does not quite address is what to do about it. The phenomenology here is sharp, but the essay ends where the hard work begins. He notes the "persistent low-level pressure" of managing omission — knowing that every chosen path excludes potentially relevant others — but stops short of asking whether this pressure is calibrated correctly for the cognitive architecture of human beings. Is this a feature or a slow-motion catastrophe? The answer matters, and the silence is conspicuous.

Key takeaways:

  • The crisis of linear reading predates digital media — it emerged when accumulated knowledge exceeded the capacity of sequential textual forms
  • Hypertext externalizes the latent multiplicity that was always suppressed in linear texts, making visible competing interpretive paths
  • Wikipedia represents a structural shift from closed authority to navigable, perpetually provisional knowledge topology
  • The open browser tab is a cultural artifact representing distributed, structurally suspended reading rather than failed concentration
  • The cognitive burden of managing omission — knowing every path excludes others — is real but undertheorized in this piece

Why do I care: This connects directly to how we build documentation, knowledge bases, and developer-facing content. We have been designing information systems that pretend the linear assumption still holds — step-by-step tutorials, sequential onboarding flows, docs-as-encyclopedia — while our users have already internalized a fundamentally non-linear epistemic model. Understanding this shift is not an academic exercise. It should be changing how we architect knowledge systems and how we think about the relationship between structure and comprehension in technical content.

Reading Without End: The Crisis of Linear Knowledge


Hypertext: Living in a Non-Linear World

TLDR: Before the web made hypertext ordinary, there were books and systems that already behaved like the internet — structured around branching, reference, and non-linear navigation. This piece explores how hypertext theory anticipated and shaped the cognitive habits we now take for granted.

Summary: Andrei Mochola's earlier essay in this series — the one that "Reading Without End" builds upon — traces hypertext not as a technical invention but as the externalisation of something already latent in how human knowledge organises itself. The linked structure of references, footnotes, and cross-citations that scholars had been navigating for centuries was waiting for a medium that could make its actual topology visible rather than forcing it into the artificial linearity of the printed page.

The conceptual move here is important: hypertext is not a disruption of reading but a revelation of what reading was always doing underneath the surface. When you follow a citation in an academic paper, you are already performing a hypertext operation — jumping contexts, loading a new authority, potentially never returning to the original thread in the way the author intended. The printed footnote was a link that couldn't click itself.

What is missing from this piece is a reckoning with the difference between the voluntary, deliberate lateral movement of scholarly citation and the compulsive, algorithmically-nudged lateral movement of digital platforms. The scholar choosing to consult a reference is exercising judgment. The reader clicking a related article recommended by a platform recommendation engine is responding to an optimization function designed to maximize time-on-site. These are not the same cognitive act dressed in similar clothing.

Key takeaways:

  • Hypertext theory predates the web and describes a cognitive reality that printed texts were already approximating through footnotes and cross-references
  • Non-linear reading is not a new behavior — digital media made its structure visible and navigable rather than inventing it
  • The distinction between voluntary scholarly lateral movement and algorithmically-driven platform engagement is crucial and underexplored
  • Understanding hypertext as revelation rather than disruption changes how we should think about designing information systems

Why do I care: For anyone building developer tools, documentation platforms, or knowledge management systems, this is foundational thinking. The question of how to structure information for non-linear access — without producing the cognitive overhead that Mochola's companion essay describes — is one of the genuinely hard unsolved problems in technical communication. Treating hypertext as a feature rather than a medium is still the default, and it is costing us.

Hypertext: Living in a Non-Linear World


How to Build Traceable AI Workflows With Retry and DLQ Visibility

TLDR: When AI extraction pipelines fail silently — returning a "wrong" result because the model took an unexpected branch rather than throwing an error — traditional debugging is useless. This article argues for structured tracing as the foundational pattern that makes AI workflows debuggable at all.

Summary: Daniel Romitelli, a Senior AI Engineer focused on deterministic enterprise AI, opens with an observation that will be immediately familiar to anyone who has run an LLM-based workflow in production for more than a week. The failure mode is not an exception. It is not a timeout. It is not a malformed response. The extraction result simply looks different from what you expected, because the model quietly took a different branch than the one you assumed it would take. Nothing broke. The system just did something other than what you wanted, silently, and with complete syntactic validity.

The insight driving this piece is that "email extraction" — or any similar compound AI operation — should not be modeled as a single atomic step. It is a workflow with branches, each branch representing a different interpretation the model might make of the input. Once you accept that framing, the need for structured tracing becomes obvious. You need each node in the workflow to answer a specific set of questions: what did this step receive, what decision did it make, what did it return, did it retry, and if so why? Retries, Romitelli argues, are where systems lie. A retry that succeeds obscures the fact that something went wrong on the first attempt. Without visibility into retry behavior, you are debugging a system whose history has been partially erased.

The DLQ — Dead Letter Queue — pattern is positioned here as the safety valve for the retry layer. Items that exhaust retries without resolution should not disappear into a void. They should accumulate in an inspectable queue where the failure context is preserved. This is a well-established pattern in distributed systems, and Romitelli's contribution is applying it explicitly to AI workflow architectures that have generally been built as if they were simple request-response systems rather than distributed processes.

What the article does not address is the cost side of this observability investment. Structured tracing, meaningful DLQ logging, and retry instrumentation all require engineering time and infrastructure. For teams running at scale, the case is clear. For teams still figuring out whether their AI extraction pipeline is doing the right thing at all, the advice to "instrument everything" may land as premature optimization dressed in architectural language.

Key takeaways:

  • AI pipeline failures are often silent branch deviations rather than hard errors — making traditional error detection insufficient
  • Compound AI operations should be modeled as branching workflows rather than atomic steps, enabling node-level tracing
  • Retries obscure failure history — visibility into retry behavior is essential for accurate debugging
  • Dead Letter Queue patterns from distributed systems apply directly to AI workflow architectures and preserve failure context for inspection
  • Observability investment has real costs that the article does not fully account for, particularly for smaller-scale deployments

Why do I care: This is the operational reality of AI systems that most conference talks skip over. The "it returned the wrong thing but didn't error" failure mode is genuinely pernicious because it defeats every monitoring strategy built on error rates and exception counts. If you are building anything that uses LLMs for structured data extraction — which in 2026 is basically everyone — you need a mental model for what "broken" looks like when the system is technically healthy. Romitelli's tracing approach is a solid foundation for building that model.

How to Build Traceable AI Workflows With Retry and DLQ Visibility


I Built a NumPy-Like Library in Pure JavaScript: This Is Exactly How I Did It

TLDR: A developer learning data science through Python became curious whether JavaScript could support the same kind of numerical computing that NumPy enables, and built a small library from scratch to find out. The result is a practical exercise in understanding how array operations, broadcasting, and mathematical primitives actually work underneath the abstractions we use every day.

Summary: There is something genuinely valuable about the "build it yourself to understand it" approach to learning, and Prasoon Jadon's project of constructing a NumPy-inspired numerical computing library in pure JavaScript is a solid example of that tradition. NumPy's magic, when you use it in Python, feels almost incidental — you write what looks like ordinary arithmetic and arrays of a million elements transform themselves in milliseconds. Building something like it from scratch forces you to confront what is actually happening underneath.

The project starts where any serious numerical library has to start: basic arithmetic operations on arrays. The interesting engineering begins when you move from scalar operations to operations that need to work across arrays of different shapes — the broadcasting semantics that NumPy users rely on constantly but rarely think about explicitly. Getting broadcasting right requires understanding how dimensions align, how singleton dimensions expand, and how to propagate these rules consistently across a matrix of possible input combinations.

What makes this article worth the time is not the specific implementation details but the pedagogical point it demonstrates: the distance between a high-level API and the arithmetic it represents is much smaller than most developers assume. NumPy is powerful not because of exotic computer science but because it wraps efficient C implementations of operations that JavaScript developers could approximate in an afternoon. The gap is performance, not conceptual complexity.

The piece does not pretend that a pure JavaScript implementation will compete with NumPy's performance — NumPy's speed comes from BLAS libraries and C extensions, not from the ideas themselves. But as a learning exercise and a demonstration that numerical computing is not mystical, this is exactly the kind of ground-up exploration that produces developers who actually understand their tools rather than treating them as black boxes.

Key takeaways:

  • Building a NumPy-inspired library in JavaScript is an achievable learning project that illuminates how array operations and broadcasting actually work
  • Broadcasting semantics — handling operations across arrays of different shapes — are the conceptual core of numerical computing libraries
  • The conceptual distance between high-level numerical APIs and the underlying arithmetic is smaller than most developers assume
  • Performance differences between JavaScript and NumPy are real and come from C-level optimizations, not from fundamentally different ideas
  • The "build it yourself" approach to understanding libraries produces deeper comprehension than documentation reading alone

Why do I care: As JavaScript continues to push into machine learning and data science territory — through libraries like TensorFlow.js, ONNX Runtime Web, and the growing ecosystem of client-side inference tools — understanding how numerical computing primitives work at the implementation level becomes genuinely relevant for frontend and fullstack engineers. More practically, this kind of reconstruction exercise is one of the most effective ways to develop intuition about performance characteristics and API design. If you have ever wondered why certain NumPy operations are fast and others are not, building something similar in JavaScript will answer that question faster than any blog post.

I Built a NumPy-Like Library in Pure JavaScript: This Is Exactly How I Did It


Data, Surveillance, and the Law: What Is Policing?

TLDR: This article questions the foundational definition of policing itself — not just what police do, but what the concept of policing represents in relation to governance, surveillance, data, and the social contract. It frames modern data collection and monitoring through the lens of what it means to enforce societal norms at scale.

Summary: Harish Pillai, writing from an independent design perspective, uses this piece to ask a question that sounds simple until you sit with it: what actually is policing? Not in the narrow sense of uniformed officers and patrol cars, but in the broader sense of the mechanisms by which societies enforce behavioral norms, surveil populations, and deploy the apparatus of law against individuals and communities. The framing is deliberately expansive, because the argument is that contemporary data infrastructure has made policing legible in new ways — and that the traditional conceptual boundaries we use to think about it are no longer adequate.

The piece opens by connecting physical infrastructure to social control. Transportation networks are planned around strategic commercial and economic nodes, and those same nodes become the sites where surveillance, enforcement, and data collection are concentrated. The geography of policing is not neutral — it reflects and reinforces existing distributions of power and economic activity.

Where the piece becomes genuinely interesting for a technology audience is the implicit argument that data collection is a form of policing even when it is not performed by state actors. When platforms aggregate behavioral data, when smart devices monitor domestic spaces, when employers track productivity through software, they are performing functions that are structurally similar to surveillance policing — shaping behavior through the awareness of observation, and creating records that can be mobilized by state or private actors for purposes beyond the original collection context.

The article's weakness is that it gestures toward this argument without quite completing it. The connection between traditional policing and corporate data surveillance is asserted more than demonstrated, and the piece ends before it reaches any normative conclusions about what to do with the analysis. The question "what is policing?" is raised but not fully answered.

Key takeaways:

  • The concept of policing extends beyond law enforcement to encompass any systematic mechanism of behavioral norm enforcement and surveillance
  • Physical infrastructure like transportation networks reflects and concentrates existing power structures, making geography a dimension of policing
  • Corporate data collection and monitoring performs structurally similar functions to state surveillance, regardless of the collecting actor's legal status
  • The legal frameworks governing policing were designed for a context where surveillance required physical presence — they are structurally inadequate for data-driven enforcement
  • The article identifies important questions about the nature of policing in data-rich environments but does not develop its normative conclusions

Why do I care: For engineers who build systems that collect user data, this framing matters even if the philosophical register feels distant from daily work. The systems we build are not neutral. Location tracking, behavioral analytics, engagement metrics, and access logging all participate in structures of observation and control that have consequences for the people being observed. Understanding policing as a concept rather than just an institution helps clarify what we are actually building when we add a monitoring feature to a product.

Data, Surveillance, and the Law: What Is Policing?