# SHIPCHECK: An Autonomous ReAct Agent That Stops Cloud Outages Before They Happen

> Source: <https://dev.to/rajan_mishra_a9f78ad216b4/shipcheck-an-autonomous-react-agent-that-stops-cloud-outages-before-they-happen-5ag1>
> Published: 2026-09-26 00:09:15+00:00

*This is a submission for the [Sanity Challenge, Path One: Ship an Agent That Queries Real Content](https://dev.to/challenges/sanity-2026-09-16).*

Modern engineering teams increasingly rely on autonomous AI coding agents (Claude Code, Cursor, GitHub Copilot) to generate code and push infrastructure pull requests. However, when these agents evaluate whether a service can be safely promoted to production, they almost universally rely on **naive vector similarity search** (e.g., Pinecone, standard RAG).

**In production infrastructure, vector similarity search is dangerous.** If you ask:

*"Can I upgrade payment service from v2 to v4 tonight?"*

Vector search finds semantic text matches on "payment service" and happily responds *"Looks safe!"* — completely blind to upstream multi-hop dependencies, active cluster container versions, and contradictory documentation. The result? **Catastrophic P0 outages in production.**

**SHIPCHECK** is an autonomous pre-flight production release gatekeeper. Built as a full **ReAct (Reasoning + Acting) Agent**, SHIPCHECK connects directly to a live **Sanity Content Lake** via the **Model Context Protocol (MCP)**.

Before any code deployment or pull request is merged:

`DO NOT SHIP YET` to `SAFE TO SHIP` before touching live servers.`kubectl` rollout commands, migration schemas, and emergency rollback scripts.

`70rd1u6b` (Dataset: `production`)
Rather than using Sanity as a passive CMS, SHIPCHECK uses Sanity as the **cognitive brain and grounding environment** for the agent.

We designed 3 core document types in Sanity (`70rd1u6b`):

`component`: Represents microservices with their live cluster version, health status, and environment.`versionConstraint`: Encodes relational rules (` requiresComponent`, `operator`, `version`, `criticality`).` knowledgeEntry`: Stores architectural specifications, policies, and release notes with explicit semantic links:
`contradicts`: Directed references indicating which older specs are superseded.`isExceptionOf`: Encodes policy bypass conditions (e.g., emergency security hotfix bypassing a 24h soak period).`authorityLevel`: An integer from 1 to 10 ensuring the agent knows which document wins when specs disagree.
SHIPCHECK exposes Sanity to AI coding agents via a typed MCP JSON-RPC 2.0 interface. The agent autonomously invokes 4 specialized tools:

`query_sanity_component(componentName)`: Fetches live cluster state and metadata.` query_version_constraints(componentName, targetVersion)`: Discovers relational constraints.` audit_cluster_dependencies(dependencyName)`: Audits upstream pod versions.` query_knowledge_graph(query)`: Resolves documentation drift and exceptions by authority level.
When you instruct SHIPCHECK with:

The agent executes a 13-step ReAct cognitive loop:

```
[THOUGHT]       Deconstruct proposed change: Component="Payment Service", Target="v4"
[TOOL_CALL]     invoke: query_sanity_component("Payment Service")
[OBSERVATION]   Found active production component running v2.0.0
[THOUGHT]       Query version constraints linked to target version v4
[TOOL_CALL]     invoke: query_version_constraints("Payment Service", "v4")
[OBSERVATION]   Hop-1 Constraint: Payment Service v4 mandates Payment SDK >= v3.0.0
[THOUGHT]       Audit live production cluster state for Payment SDK
[TOOL_CALL]     invoke: audit_cluster_dependencies("Payment SDK")
[OBSERVATION]   Hop-2 Collision: Active cluster is running Payment SDK v2.4.1 (v2.4.1 < v3.0.0)
[THOUGHT]       Scan organizational knowledge base for documentation drift or policies
[TOOL_CALL]     invoke: query_knowledge_graph("Payment Service")
[OBSERVATION]   Stale Wiki (Auth 4) assumes XML payloads. Official v4 Release Notes (Auth 10) mandates JSON v2.
[DECISION]      Authority 10 supersedes Authority 4.
[DECISION]      VERDICT: DO NOT SHIP YET. Hard blocker identified.
```

`lib/agent/preflightAgent.ts`` lib/engine/groqTraversal.ts``lib/engine/remediationEngine.ts`
Building an agent that verifies other agents taught us two critical lessons:

*Built with ❤️ for the Sanity Context MCP Hackathon (Path One).*
