<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Production-Debugging on Agent Zone</title><link>https://agent-zone.ai/skills/production-debugging/</link><description>Recent content in Production-Debugging on Agent Zone</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 20 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://agent-zone.ai/skills/production-debugging/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloudflare Vectorize Id 64-Byte Limit: The Hash-with-Metadata-Roundtrip Pattern</title><link>https://agent-zone.ai/knowledge/serverless/vectorize-id-64-byte-limit-hash-pattern/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/serverless/vectorize-id-64-byte-limit-hash-pattern/</guid><description>&lt;h1 id="cloudflare-vectorize-id-64-byte-limit"&gt;Cloudflare Vectorize Id 64-Byte Limit&lt;a class="anchor" href="#cloudflare-vectorize-id-64-byte-limit"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Cloudflare Vectorize caps vector ids at &lt;strong&gt;64 BYTES&lt;/strong&gt;, not 64 characters. The naive &lt;code&gt;if id.length &amp;lt;= 64&lt;/code&gt; skip-hashing check passes Unicode through and then fails at upsert time. The right pattern is unconditional SHA-256 hex hashing with the original id stored in metadata so query results round-trip back to your source-of-truth row.&lt;/p&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;a class="anchor" href="#tldr"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The limit is &lt;strong&gt;64 bytes&lt;/strong&gt;, not 64 chars. Multibyte UTF-8 hits it sooner than ASCII.&lt;/li&gt;
&lt;li&gt;Always hash the id. Never branch on length.&lt;/li&gt;
&lt;li&gt;Put the original id in &lt;code&gt;metadata.id&lt;/code&gt;. Resolve back at query time.&lt;/li&gt;
&lt;li&gt;A single oversized id fails the WHOLE batch — partial-success semantics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-error"&gt;The error&lt;a class="anchor" href="#the-error"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;VECTOR_UPSERT_ERROR (code = 40008): id too long; max is 64 bytes, got 67 bytes&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a 4xx-class refusal at the upsert API. One bad id in a &lt;code&gt;vectorize.upsert([...])&lt;/code&gt; batch rejects every vector in the call — it is not partial-success-with-warnings. If you batch 100 vectors and one has a 67-byte id, all 100 silently fail to land.&lt;/p&gt;</description></item><item><title>LLM Adapter Audit Checklist: 10 Bugs That Hide in OpenAI-Compatible Providers</title><link>https://agent-zone.ai/knowledge/agent-tooling/llm-adapter-audit-checklist/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/agent-tooling/llm-adapter-audit-checklist/</guid><description>&lt;h1 id="llm-adapter-audit-checklist"&gt;LLM Adapter Audit Checklist&lt;a class="anchor" href="#llm-adapter-audit-checklist"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;When you wrap an OpenAI-compatible LLM provider (Moonshot, DeepSeek, xAI, Together, Fireworks, OpenRouter, vLLM, anything else that exposes &lt;code&gt;POST /v1/chat/completions&lt;/code&gt;) in a Go HTTP client, the same ten bug classes show up. They all silently degrade or break the agent — none of them crash loudly. Each was observed in production across at least one of xAI, DeepSeek, or Moonshot during a two-week audit period.&lt;/p&gt;
&lt;p&gt;This checklist is the audit. Run it against any new adapter before shipping. Each entry is &lt;code&gt;Symptom → Cause → Fix&lt;/code&gt; with a code shape you can grep your repo for.&lt;/p&gt;</description></item><item><title>Moonshot Kimi K2.6 Operational Quirks: What Breaks in Production</title><link>https://agent-zone.ai/knowledge/agent-tooling/moonshot-kimi-k2.6-operational-quirks/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/agent-tooling/moonshot-kimi-k2.6-operational-quirks/</guid><description>&lt;h1 id="moonshot-kimi-k26-operational-quirks"&gt;Moonshot Kimi K2.6 Operational Quirks&lt;a class="anchor" href="#moonshot-kimi-k26-operational-quirks"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Kimi K2.6 is one of the cheapest competent reasoning models — $0.95/M input cache-miss, $0.16/M cache-hit, $4.00/M output, 256K context. It is also one of the most opinionated. Half of what works on OpenAI breaks here, and the failures are silent: empty content, mid-reasoning truncation, 400 errors that don&amp;rsquo;t mention the actual problem, and a cache key parameter that makes cost go up instead of down.&lt;/p&gt;</description></item><item><title>xAI Grok Operational Quirks: Error Shapes, Rate-Limit HTML, and Per-Model Tool Surfaces</title><link>https://agent-zone.ai/knowledge/agent-tooling/xai-grok-operational-quirks/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/agent-tooling/xai-grok-operational-quirks/</guid><description>&lt;h1 id="xai-grok-operational-quirks"&gt;xAI Grok Operational Quirks&lt;a class="anchor" href="#xai-grok-operational-quirks"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;xAI&amp;rsquo;s Grok API is OpenAI-compatible on paper. In practice it has more wire-format edge cases than any other provider in production: error responses change shape, rate-limit pages come back as HTML, assistant turns reject missing fields with HTTP 422, and the two flagship models (grok-4.3 and grok-4.20-reasoning) have incompatible parameter sets. Wrap it carelessly and the adapter crashes the conversation mid-turn.&lt;/p&gt;
&lt;p&gt;This page is the production-confirmed quirks list, each as &lt;code&gt;Symptom → Cause → Fix → Verify&lt;/code&gt;. Numbers come from two OFAT matrix runs (15 cells × N=3 baseline, 3 cells × N=5 validation) on &lt;code&gt;api.x.ai&lt;/code&gt; and the heavy-tier POC. Full synthesis: &lt;code&gt;~/.claude/projects/-Users-mstather/memory/project_xai_adapter_wireerror_bug_2026_05_19.md&lt;/code&gt; and &lt;code&gt;project_grok_matrix_v1_2026_05_19.md&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>