From the Field / Field Work

    It Never Stopped Running

    When every time entry triggered a cascade, Friday meant failure.

    Each Clarity Audit documents a real system engagement. An architectural readout. The goal is to surface structure.

    Every Friday, the system buckled.

    Over 20,000 time entries were logged steadily throughout the day, often one every few seconds. Most came from offshore teams submitting weekly hours in bulk. The volume wasn't surprising. It was expected.

    But each of those entries triggered automation.

    Every single one.

    The Architecture

    The structure seemed logical at first glance:

    • A time entry updated an hour record
    • That hour update triggered a recalculation on the associated project
    • The project update then triggered recalculation on the parent project

    The behavior was wired in. The system used event-based triggers to keep everything in sync. On paper, that looked like automation. In practice, it was a recursive loop with no limit and no boundaries.

    Each automation flow was scoped by name (hour logic, project rollup, aggregate flow) but not by execution context.

    One process updated another, which kicked off another, which reached back into the first.

    None of this was visible in a single place.

    Webhook storm chaos. An architecture where every small input is treated as an urgent event, without boundaries, batching, or orchestration.

    By Friday afternoon, the system was saturated.

    Operations queued indefinitely. New jobs couldn't start. Other automations failed outright, not because they were broken, but because the system couldn't recover.

    The only option was to shut everything down manually.

    Roll-up logic lagged. Project totals were incomplete. Reporting couldn't be trusted.

    And no one could tell whether the numbers were wrong or just not finished.

    The Fix

    The problem was the decision to treat every entry as urgent.

    The fix was structural.

    Instead of triggering a full chain of calculations for every time entry, a custom field was added to projects: requires time roll-up.

    When an hour was logged, the related project was flagged. Once.

    If it was already flagged, nothing happened. Whether one person logged time or a hundred did, the result was the same: one tag.

    Then, every 12 hours, a scheduled process queried for flagged projects and ran the roll-up logic. Once per project, with full context.

    No more reactive triggering. No more hidden recursion. Just a timed, visible sweep of the work that actually needed to be done.

    The webhook was removed entirely, replaced with a flag and a controlled batch every 12 hours.

    The Result

    A 50% reduction in total automation operations across the environment. No loss in functionality. No more Friday shutdowns. Roll-up logic became observable and predictable, and data integrity was restored.

    What People Noticed

    There were no objections to the delay.

    The truth is, no one had been relying on the numbers in the first place.

    They'd been wrong for so long, noisy, incomplete, timing-sensitive, that most teams had stopped trusting them entirely.

    After the change, nothing felt slower.

    What people noticed was that the numbers were finally consistent. And finally usable.

    What This Really Was

    The platform made it easy to react, to build flows that launched on every change. But the business process was batch. It needed rhythm. And integrity.

    The system expected regular input. What it got was thousands of people rushing to close their week. It was designed for data flow, not human behavior.

    Replacing automatic reaction with buffered control didn't limit the system. It made the system finally do what it was meant to do.

    Now it runs on purpose, at the right time, for the right reason. And the numbers can finally be trusted.