Skip to content
Centriu
Centriu Axis

Scheduled Detector Minute-Window Alignment Automation: Ten Detectors, Zero Firings, Ever

Six of Centriu Axis's proactive "detector" functions — the mechanism behind timed reminders and scheduled nudges, including a family specifically tied to billing cadences — each checked whether it was time to act by comparing the exact current hour and minute, as text, against an organization's own configured hour. The scheduler that triggers these checks runs on a fixed cycle landing on minutes 2, 12, 22, 32, 42 and 52 of every hour — meaning a configured time on the hour or half-hour (9:00, 9:30, 10:00) could mathematically never produce an exact match, because the scheduler is never actually running at that literal minute. The measured result: ten detectors in a billing-adjacent family had zero recorded firings in their entire history, and a related monthly sequence due to start the following month would have launched silently mute in exactly the same way. The fix replaces the exact-match comparison with a shared function checking whether the current moment falls within a 10-minute window starting at the configured hour — wide enough that exactly one scheduled run always falls inside it — applied identically across all six functions through a single programmatic rewrite, with a built-in check confirming afterward that no exact-match comparison was left behind anywhere.
Fires inside the real window
Ten detectors, now alive
Command center screen with real metrics
Ten detectors, silent for their entire history — until now.

A scheduled check and the schedule triggering it need to agree on more than just the hour

Building a rule that says "run this at 9am" is only half of what a scheduled system needs to get right — the other half is making sure the actual mechanism doing the checking runs AT a moment that can genuinely satisfy that rule. A scheduler that sweeps periodically, rather than firing at the exact literal instant configured, needs its own check to account for that gap deliberately; comparing against an exact instant when the checking mechanism itself never lands on that exact instant is a rule that reads as correct and can never actually be satisfied.

How the underlying problem shows up before you fix it

A scheduled task's own internal condition compares the current time to a target using EXACT equality, while the mechanism invoking that check runs on a periodic sweep that doesn't land on every possible minute.

A feature configured to fire "at" a round, human-friendly time (a top-of-hour, a half-hour mark) never actually fires, while a feature configured for an off-round time might coincidentally work — making the defect look inconsistent rather than systemic.

A capability has been live for an extended period with zero recorded activity, and that absence is attributed to "nobody has needed it yet" rather than investigated as a possible structural gap.

The same flawed comparison pattern is duplicated across multiple near-identical functions, meaning a fix applied to only the one function someone happened to be debugging leaves the rest with the identical, unfixed defect.

A fix for a systemic pattern is verified only by checking the specific instance that prompted the investigation, without a corresponding check confirming the same pattern doesn't still exist anywhere else in the codebase.

How Centriu Axis found a mute engine and fixed it everywhere at once, provably

The defect is stated directly in the fix's own documentation: an "hour matched" check inside these detector functions compared the current hour and minute, formatted as exact text, against an organization's own configured hour — a comparison that only succeeds if the check happens to run in the exact same minute the configured hour begins. The scheduler actually triggering these checks runs on a fixed periodic sweep landing at minutes 2, 12, 22, 32, 42 and 52 of every hour, never at minute 0 or 30. A configured hour like 9:00 or 9:30 is precisely the kind of value this scheduler can never land on exactly — meaning the comparison was written correctly, and could still never once succeed, for the most natural, common configuration values a person would actually choose.

The measured consequence, stated directly: a family of ten billing-adjacent detectors had zero firings recorded in their entire history, and a separate monthly content sequence due to begin the following month — with stages configured for specific days and times — would have launched exactly as silently mute, for the identical structural reason, if the underlying comparison hadn't been fixed first.

The fix replaces the exact-equality check with one shared function answering a different, correctly-scoped question: is the current moment within a 10-minute window starting at the configured hour? Ten minutes is deliberately wide enough that exactly one of the scheduler's own periodic sweeps is guaranteed to fall inside it, while a separate, already-existing deduplication mechanism prevents that same window from triggering the same action more than once. Because six separate functions each contained their own copy of the same broken comparison, and together represent tens of thousands of characters of largely identical code, the fix is applied as a single, programmatic, pattern-based rewrite across all six functions at once — reading each function's own current definition directly from the database, finding the specific broken comparison pattern inside it, and replacing it with a call to the new shared window function, function by function, in one pass. The same migration includes its own built-in negative-proof step: after applying the rewrite everywhere, it explicitly searches the six functions again for any remaining trace of the original exact-match pattern and raises an error, refusing to complete, if it finds one — turning "we're confident we got all six" into a check the migration itself performs and would fail loudly on, rather than a belief nobody independently verified.

What is actually built today

One shared time-window function used by all six detector functions, checking whether the current moment falls within 10 minutes of a configured hour rather than requiring an exact match.

The 10-minute window sized deliberately to guarantee exactly one scheduled sweep falls inside it, relying on an already-existing deduplication mechanism to prevent a repeated trigger within that same window.

A single, programmatic, pattern-based rewrite applied identically across all six affected functions at once, rather than six separate manual edits with six separate chances to miss one.

A built-in negative-proof check, run as part of the same migration, that explicitly searches for any remaining trace of the original exact-match pattern across all six functions and raises an error if it finds one.

Confirmed today via direct inspection: the shared window function remains the current definition used by all six detectors, and a fresh search for the original broken pattern returns zero matches.

A reminder configured for 9:00 that could never actually fire (illustrative scenario, not a real client)

An organization configures a billing-related detector to check in at 9:00 each relevant day. The scheduler triggering that check runs at minutes 2, 12, 22, 32, 42 and 52 — never at minute 0. Before the fix, the exact-match comparison against "09:00" could never succeed at any of those actual running times, so the detector never fired, for the entire time it was configured this way. After the fix, the same detector correctly recognizes it is within its 10-minute window during the 9:02 sweep and fires exactly once.

What changes operationally

Six of Centriu Axis's scheduled detector functions — covering a family of billing-adjacent checks and other timed, proactive nudges — now genuinely fire at their configured hour, closing a gap where a naturally-chosen, round configuration value could structurally never have worked, verified by a built-in check confirming the fix was applied everywhere it needed to be, not just where the investigation started.

When this is not the right fit

This fix addresses WHEN a detector's own internal time check succeeds relative to the scheduler invoking it — it does not change what any individual detector actually checks for or recommends once it does correctly fire, which remains each detector's own separate, unmodified logic.

A rule that reads correctly vs. one that can actually be satisfied

A time comparison written as exact equality looks unambiguous and easy to reason about in isolation — the defect only exists in the relationship between that comparison and the specific, periodic way the surrounding scheduler actually operates. Centriu Axis's fix replaces an exact check with one scoped to match how the scheduler genuinely runs, and proves the fix was applied everywhere the same defect existed with an explicit, automated check built into the same migration, rather than trusting that six manual edits all landed correctly.

Related systems

Main system: Centriu Axis.

What it does NOT do

  • Does not change what any individual detector actually evaluates or recommends once it correctly fires — this fix addresses only whether and when the check itself succeeds.
  • Does not rely on manually verifying all six affected functions were fixed correctly — the same migration includes an automated, negative-proof check that searches for and raises an error on any remaining instance of the original broken comparison.
  • Does not risk a detector firing more than once within its new, wider 10-minute window — an already-existing deduplication mechanism prevents a repeat trigger within that same window.
  • Does not apply a 10-minute window that could ever miss the scheduler's own periodic sweep — the window is deliberately sized wider than the gap between consecutive sweeps, guaranteeing exactly one falls inside it.
  • Does not claim every detector-related issue in the platform is now resolved — this fix closes the specific, measured exact-match timing defect found across these six functions.
  • Does not require six separate, independently-reviewed manual edits — the fix is applied as one programmatic, pattern-based rewrite across all six functions in a single pass.

Security and governance

The fix is applied through a controlled migration reading and rewriting existing function definitions programmatically, with an automated verification step confirming no instance of the original defect remains before the migration is allowed to complete. Any personal or business data these detectors process remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Included at no extra cost with any Centriu contract. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

Why could a detector configured for an exact hour like 9:00 never actually fire?

The check compared the current time to the configured hour using exact string equality, while the scheduler triggering the check runs at minutes 2, 12, 22, 32, 42 and 52 — never at minute 0 — so an exact match at the top of the hour was mathematically impossible.

How many detectors were affected, and what was the measured impact?

Six functions shared the same broken comparison; a family of ten billing-adjacent detectors had zero recorded firings in their entire history as a direct, measured result.

How does the fix avoid a detector firing more than once in its new wider window?

An already-existing deduplication mechanism, unrelated to this fix, prevents the same action from triggering more than once within the same window.

How was the fix confirmed to actually reach all six affected functions?

The same migration includes a built-in check that searches all six functions afterward for any remaining trace of the original exact-match pattern and raises an error if it finds one — a verification step, not just an assumption.

Does this change what a detector actually recommends or checks for?

No — this fix addresses only whether and when each detector's own timing check succeeds; each detector's own underlying logic is unchanged.

What does Centriu Axis cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Axis keeps scheduled detectors firing on time

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Axis — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Axis — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review