Agent Startup Runtime Syntax Compatibility Automation: Passed Every Check, Failed on Every Machine

Three different, real checks can each honestly pass while the fourth, unchecked mode fails completely
A codebase can have real, passing type-checking, real, passing linting, and hundreds of real, passing tests — and still ship a defect that breaks every single deployment, when all three of those checks run the code through a DIFFERENT execution path than the one production actually uses. Type-checking that compiles the code sees valid, well-typed TypeScript. A test suite that runs through a compiling test runner sees the same. Neither one has any way to know that production itself runs the file through a faster, non-compiling mode with narrower syntax support — because nothing in the pipeline ever asked that specific question before this fix.
How the underlying problem shows up before you fix it
Production runs a component (here, a locally installed agent) under an execution mode that strips or transforms source syntax WITHOUT full compilation, for startup-speed or deployment-simplicity reasons — a mode with narrower language-feature support than the mode used for type-checking and testing.
A language shorthand or feature is used somewhere in the codebase that is valid, well-typed source code, and is fully supported by the compiling toolchain used for type-checking and tests, but is NOT supported by the narrower, non-compiling production runtime mode.
None of the existing verification steps — type-checking, linting, the test suite — actually execute the file through the exact production runtime mode; each one uses a different, more permissive execution path that cannot see the incompatibility.
The failure occurs at process startup, on every deployment target, rather than in a narrow edge case — meaning its blast radius is total (the entire component fails to run anywhere) rather than partial, even though the root cause is a single line in a single file.
The failure is silent from the end user's perspective: a supervising process retries the crashed process a fixed number of times and then gives up, with no error message ever surfacing to the person who installed the software and is waiting for it to work.
How a single shorthand crashed every installation, invisibly to every existing check
Centriu Guardian's locally installed agent runs under a Node.js execution flag that strips TypeScript type annotations out of a source file as plain text, allowing the file to run directly without a separate compilation step — a deliberate choice for fast, simple startup on an end user's own machine. This mode's central limitation is that it can only remove things that are purely type annotations with no runtime effect; it cannot generate NEW code the way a real compiler would.
One class in the agent's own cloud-communication code used a TypeScript shorthand — writing `constructor(readonly kind: X, ...)` directly, letting the compiler both declare the class field and assign it from the constructor argument in one step. In a real compiler, that shorthand expands into genuine generated code: a field declaration plus an assignment statement inside the constructor body. Under a mode that only strips type annotations from existing code, there is no assignment statement to strip TO — the shorthand relies on code that a compiler would have to write, and text-stripping alone cannot write it. The result was a syntax error at the moment this specific file loaded, which meant the agent process could not start at all.
Because this failure occurred at the very first moment the process tried to run — not in a narrow, occasionally-triggered code path but in the startup sequence itself — its effect was total: the agent crashed the same way on every single computer it was installed on, with no exceptions and no partial functionality. A supervising process retried starting the agent five times, by design, as a resilience measure against transient failures — and when a syntax error persisted across all five attempts (as any syntax error necessarily would, since retrying does not change the file), the supervisor gave up silently, with no message ever reaching the person who had just installed Guardian and was waiting for protection that would never start.
What makes this defect distinct from an ordinary bug is that it was invisible to every check already in place, for a structural reason rather than an oversight in any one of them. Type-checking uses a full compiler, which correctly expands the shorthand into valid generated code and sees nothing wrong — because from a compiler's perspective, there IS nothing wrong; the shorthand is entirely valid TypeScript. The lint step checks style and common mistakes, not runtime-mode compatibility. The 429 existing tests ran through a test runner that also compiles the code before executing it — meaning every single test exercised a version of the file that had already been correctly expanded, never the literal, un-compiled, text-stripped file production actually runs.
The fix itself is narrow: the shorthand is rewritten into its fully explicit form — declaring the class fields separately, then assigning them by hand inside the constructor body — which requires no code generation at all and is valid under text-stripping. The more consequential change is a new, dedicated test that submits every one of the agent's roughly 800 source files through the EXACT SAME strip-types treatment Node applies in production, checking that each one parses and loads successfully under that specific mode — closing the structural gap that let three real, passing checks coexist with a universal production failure, by finally asking the one question none of them had asked before.
What is actually built today
The specific class that previously used the incompatible TypeScript shorthand now declares its fields explicitly and assigns them by hand inside the constructor — fully compatible with the text-stripping runtime mode production actually uses, with no change to the class's own external behavior.
A dedicated new test submits every one of the agent's roughly 800 source files through the identical Node.js strip-types treatment used in production, checking that each file parses and loads successfully under that specific mode — not merely under the separate, more permissive mode used for type-checking and the existing test suite.
This new test runs as part of the same verification pipeline as type-checking, linting, and the existing test suite, adding a fourth, previously-missing check rather than replacing any of the first three.
A future contributor who unknowingly reintroduces a strip-types-incompatible language feature anywhere among the agent's ~800 files is caught by this dedicated test before it ships — not discovered later as a universal, silent production failure.
The fix required no change to the Node.js execution flag itself, no change to the agent's startup or supervision logic, and no schema or protocol change — it corrects the one incompatible line of source code and adds the verification step that should have existed already.
Every installation, silently broken (illustrative framing of the actual measured finding)
Before the fix, a person downloads and runs the Guardian installer on their own computer. The installer succeeds, the agent process is registered to start, and the supervising process launches it — which immediately crashes on a syntax error the moment it tries to load the affected file, retries five times as designed, and then gives up. The person sees no error message at any point; from their perspective, Guardian was installed and is simply not working, with no diagnostic information suggesting why. After the fix, the identical installation results in an agent that starts correctly on the first attempt, because the incompatible shorthand no longer exists anywhere in its source.
What changes operationally
Centriu Guardian's locally installed agent now starts correctly under the exact production runtime mode on every installation, and a dedicated new test verifies all ~800 of the agent's own source files against that specific mode before any future change ships — closing a class of defect that three existing, genuinely passing checks (type-checking, linting, 429 tests) were each structurally unable to catch.
When this is not the right fit
This automation governs the internal build-and-verification pipeline for Centriu Guardian's own locally installed agent — it does not change any user-facing behavior of a correctly running agent, does not add a customer-facing setting, and is specific to the exact Node.js execution mode this component uses; a component that runs through a full compilation step in production would not be exposed to this specific class of defect in the first place.
Trusting a compiling test suite vs. testing the literal production runtime mode
Running type-checking and tests through a full compiler is fast, standard practice, and catches the overwhelming majority of real defects — the blind spot is narrow and specific: any production execution mode that behaves differently from the compiling toolchain used for verification stays completely invisible to that verification, no matter how many tests pass, because the tests never ran the literal code path production uses. Adding a dedicated check that submits the real source files through the real production execution mode — even just for a syntax and load-success check, not full behavioral testing — closes that blind spot directly, for the specific and often-overlooked case where a fast development or testing loop and a fast production runtime are not, in fact, running the same thing.
Related systems
Main system: Centriu Guardian.
What it does NOT do
- Does not change Centriu Guardian's choice to run its agent under a fast, non-compiling Node.js execution mode — that architectural decision is unchanged; this fix corrects code that was incompatible with it and adds a check to catch future incompatibilities before they ship.
- Does not affect the agent's type-checking, linting, or existing test suite — this fix adds a fourth, previously-missing verification step alongside them, without modifying or replacing any of the three that already existed.
- Does not retroactively identify how many installations were affected before this fix shipped — a team with that concern would need its own historical crash-reporting or support-ticket data for the affected window.
- Does not change any user-facing feature or behavior of a correctly running Guardian agent — the fix is entirely about a startup failure that prevented the agent from running in the first place.
- Does not overlap with the outdated-agent messaging fix or the installer-verification script fix — both are separate, independent mechanisms from the same source commit, covered on their own pages.
Security and governance
Centriu Guardian's locally installed agent now starts correctly under its production Node.js execution mode on every installation, verified by a dedicated test that checks all ~800 of the agent's own source files against that exact mode before any change ships. Any personal or business data referenced in Guardian's fleet and device records 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
How could this pass type-checking, linting, AND 429 tests, and still break every installation?
Because none of those three checks ran the file through the exact, non-compiling Node.js execution mode production actually uses — each one used a full compiler, which correctly handles the shorthand and sees no problem. The gap was structural: nothing in the existing pipeline had ever asked whether the literal production runtime mode could load the file.
What is a "parameter property," in plain terms?
A TypeScript shorthand that lets a class declare and assign a field directly from a constructor argument in one line, instead of declaring the field separately and assigning it by hand inside the constructor body. A real compiler expands the shorthand into that longer, explicit form automatically; a mode that only strips type annotations from EXISTING code cannot generate that expansion.
Was every single installation affected, or only some?
Every one — the failure occurred at the moment the affected file was loaded during process startup, which happens identically on every installation, not in a rare or conditional code path.
Did the person installing Guardian see any error message?
No — the supervising process retried the crashed agent five times, as designed for resilience against transient failures, and then gave up silently. No message reached the end user at any point.
How is this prevented from happening again with a different incompatible feature?
A new, dedicated test now submits every one of the agent's roughly 800 source files through the identical production runtime treatment before anything ships — catching an incompatibility of this general kind immediately, rather than discovering it later as a universal, silent production failure.
What does Centriu Guardian cost?
It is sold by subscription with a published starting price — exact current values are on the central pricing page.
See how Centriu Guardian verifies its agent against its own production runtime
Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.
