Weekly-Scope Null-Element Tool-Crash Automation: A Post Written With Zero Client Data, Silently

A tool that crashes internally can still produce an output that looks completely normal
An AI content-writing flow that depends on a lookup tool succeeding doesn't necessarily fail visibly when that tool crashes — if the surrounding code catches the error and lets the writing step continue anyway, the end result is still a post, still readable, still delivered. Nothing about the OUTPUT reveals that an entire category of input (in this case, everything about which client this post is actually for) never made it into the process at all. The failure is real, and it's completely invisible from the finished product alone.
How the underlying problem shows up before you fix it
A stored array field contains array "holes" (positions that were allocated but left empty) that a serialization step wrote out as literal `null` values rather than omitting.
A reader accesses a field on a SPECIFIC element of an array — often the first one — as a shortcut for checking a property of the collection, without first confirming that element actually exists and is an object.
The exact same filtering or validation logic exists in more than one place in a codebase, each written independently, meaning a fix to one instance leaves every other instance carrying the identical latent defect.
A tool crashing partway through a multi-step process is caught somewhere upstream, and the overall process continues to completion and produces output — without that output reflecting whatever the crashed tool was supposed to contribute.
A data-shape defect traces back to an old, no-longer-used write path, while the CURRENT write path already correctly guards against producing that same bad shape — meaning the live risk is entirely in stale existing data, not in anything still being written today.
How the crash was traced to seven old null holes, and fixed on both the code and the data
The investigation traced the crash to a specific field, on a specific set of real client records: each affected client's weekly-scope array began with seven `null` entries before any real day data. The shape makes sense as a leftover from an old screen that once reserved one array slot per day of the week and, when a client moved to a different scoping mode, emptied several of those positions rather than removing them — and whatever wrote that array out to storage recorded each now-empty slot as `null` instead of leaving it out of the array entirely.
The chat tool responsible for fetching a client's creative profile — read whenever the AI content agent needs to know a client's brand scope before writing something — read a specific field off the FIRST element of that weekly-scope array, used as a shortcut to check whether a week-specific override existed. For any client whose array happened to start with one of those `null` holes, this line threw immediately: reading a property off `null` is a hard, synchronous error in the underlying language, not a soft failure. The entire tool call failed as a result — not just the one field being read, but everything else that same tool call would have returned: the client's brand restrictions, its approved fonts, its brand colors, its entire creative scope. Whatever caught that failure further up the chain let the AI agent proceed to write the requested post anyway, just without any of that context, producing a normal-looking piece of content with none of the client-specific grounding that was supposed to shape it.
The fix has two parts, deliberately kept separate. On the code side, the filtering logic that strips anything-that-isn't-a-valid-day-object from a weekly-scope array already existed, but only inside one function, unexported, unavailable to the tool that actually needed it. It's now a single, exported, documented function, and the chat tool's own client-lookup code calls it before reading anything off the array, rather than casting the raw stored value directly and trusting its shape. On the data side, a migration cleans up the seven affected clients' own stored records — deliberately conservative, removing only entries that are not objects at all (the literal `null` holes) while leaving any incomplete-but-real day object exactly where it is, since deciding a genuinely present but partial day doesn't exist would be a judgment call this migration isn't in a position to make. Confirmed after applying it: zero clients left with non-object junk in this field, and the real day counts for affected clients preserved — one client's record held twenty genuine days once the seven holes were removed, down from twenty-seven raw entries.
What is actually built today
A single, shared, exported function strips any non-object entry from a weekly-scope array before anything reads a field off any of its elements.
The AI chat's client-lookup tool calls that shared function on the stored value before reading anything from it, rather than casting the raw stored data directly.
A conservative data migration removed only literal non-object holes from the seven affected clients' own records, leaving every genuine — even incomplete — day entry untouched.
The current WRITE path for this same field was confirmed to already reject non-object entries correctly — this defect was strictly a legacy data-shape issue, not an ongoing one.
Confirmed today via direct inspection: the shared filtering function remains the single implementation used by the chat tool's reader.
A post written blind (illustrative framing of the actual measured finding)
An account manager asks the AI content agent to draft this week's post for one of the seven affected clients. Before the fix, the tool meant to fetch that client's brand scope, restrictions, fonts and colors crashes silently on the very first element of a stored array, and the agent goes ahead and writes a generic post with none of the client's own specifics. After the fix, the same request correctly retrieves the client's real creative profile and the post reflects it.
What changes operationally
Centriu Atlas's AI content agent can no longer be silently starved of an entire client's brand scope, restrictions, fonts and colors by a stale null hole in stored data — closing a gap where a tool crash upstream produced a normal-looking but ungrounded post downstream, with nothing in the output itself revealing that anything had gone wrong.
When this is not the right fit
This fix addresses reading a client's stored weekly-scope data safely — it does not change how a client's scope is set or edited today, since the current write path was already confirmed correct and unaffected by this specific defect.
A silent catch vs. a genuinely fixed read path
Catching a tool's crash and letting the surrounding process continue anyway keeps a pipeline from visibly breaking, but it also hides exactly the information someone would need to notice that something upstream failed — the output still arrives, just quietly worse. Centriu's fix addresses the actual read defect at its source, and shares that fix as one single function every future reader of the same field is routed through, rather than patching the one call site that happened to be found first.
Related systems
Main system: Centriu Atlas. Complementary when relevant: Centriu Axis.
What it does NOT do
- Does not change how a client's weekly scope is set or edited today — the current write path was already confirmed to reject invalid entries and is unaffected.
- Does not remove a genuinely present but incomplete day entry from any client's record — the cleanup migration removes only literal non-object holes.
- Does not retroactively regenerate any post that may have been written without full client context before this fix — it corrects the read path going forward.
- Does not merge this shared filtering function into every unrelated part of the codebase — it is used specifically by the readers of this one field.
- Does not claim every possible cause of a silently degraded AI output has been found — this fix closes the specific, measured null-crash defect in this one tool.
- Does not affect clients whose weekly-scope data never contained a null hole in the first place — their records and behavior are unchanged.
Security and governance
The client-lookup tool resolves the requesting agent's own organization before reading any client data, and the cleanup migration touched only the specific field and clients confirmed affected. Any client or business data referenced remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.
Pricing and contracting
Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).
Frequently asked questions
Why did seven clients' data contain literal null entries?
An old screen once reserved one array slot per weekday for this data; when a client moved to a different scoping mode, several of those slots were emptied but not removed, and a serialization step wrote each empty slot out as a literal null.
What broke when the tool read one of those null entries?
The tool read a field off the array's first element without checking it was a real object first — reading a property off null is a hard error that crashed the entire lookup, not just that one field.
What happened to the post the agent was writing when this crashed?
It was still written and delivered — just without any of that client's brand scope, restrictions, fonts, or colors, because the tool that would have supplied them had already failed silently upstream.
Is this an ongoing risk for new client data?
No — the current write path for this field was confirmed to already reject non-object entries correctly; the defect was strictly in old, previously-written data.
How was the cleanup migration kept safe?
It removes only entries that are not objects at all (the literal null holes), leaving any incomplete-but-real day entry exactly as it was — confirmed afterward to leave zero clients with leftover junk while preserving every genuine day.
What does Centriu Atlas cost?
It is sold by subscription with a published starting price — exact current values are on the central pricing page.
See how Centriu Atlas keeps AI content grounded in real client data
Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.
