FLX-1008¶
2 node(s) can record audit values but this graph has no event audit configured: [priceSource, riskCheck]
| Severity | WARN |
| Category | AUDIT |
| Element | NODE |
The rule¶
A graph with audit-capable nodes and no event audit records nothing they log.
Why the compiler says this¶
These nodes implement EventLogSource — usually by extending EventLogNode — so Fluxtion gives them an auditLog to write to. Without an event audit registered there is no auditor to receive those records, so anything they write is discarded silently. The builder cannot tell whether they DO write; it can only see that they could.
How to fix it¶
If you expect an audit log, enable it: addEventAudit() on the processor config, at INFO or above. If these nodes never call auditLog, this warning is noise and nothing needs changing.
Example¶
Both examples are compiled and put through a real Fluxtion.compile on every build, so the first is guaranteed to produce this diagnostic and the second to build cleanly. Note that the failing example is valid Java — javac is happy, and Fluxtion refuses it for its own reasons.
The code that causes it¶
package com.telamin.fluxtion.builder.diagnostic.examples;
import com.telamin.fluxtion.builder.generation.config.EventProcessorConfig;
import com.telamin.fluxtion.runtime.annotations.OnEventHandler;
import com.telamin.fluxtion.runtime.audit.EventLogNode;
/** FLX-1008 — a node that can audit, in a graph with no audit configured. */
public class Flx1008Failing {
public static class PriceSource extends EventLogNode {
@OnEventHandler
public boolean onPrice(String symbol) {
// Writes to an auditLog that no auditor is listening to: discarded silently.
auditLog.info("symbol", symbol);
return true;
}
}
public static void graph(EventProcessorConfig config) {
config.addNode(new PriceSource(), "priceSource");
// nothing registers an audit, so nothing receives what the node logs
}
}
The code that fixes it¶
package com.telamin.fluxtion.builder.diagnostic.examples;
import com.telamin.fluxtion.builder.generation.config.EventProcessorConfig;
import com.telamin.fluxtion.runtime.annotations.OnEventHandler;
import com.telamin.fluxtion.runtime.audit.EventLogControlEvent.LogLevel;
import com.telamin.fluxtion.runtime.audit.EventLogNode;
/** FLX-1008 fixed — an audit is registered, so the records are kept. */
public class Flx1008Fixed {
public static class PriceSource extends EventLogNode {
@OnEventHandler
public boolean onPrice(String symbol) {
auditLog.info("symbol", symbol);
return true;
}
}
public static void graph(EventProcessorConfig config) {
config.addNode(new PriceSource(), "priceSource");
// If these nodes never call auditLog, the warning is noise and needs no change —
// the compiler can see that they COULD write, not whether they do.
config.addEventAudit(LogLevel.INFO);
}
}
Which builds raise it¶
Every build path — interpreted, in-process and AOT alike.
Reading it programmatically¶
This diagnostic is also written to the machine-readable report — the opt-in sidecar (-Dfluxtion.diagnostics.sidecar=true), or FluxtionDiagnostics.capture(...) for a caller that wants the objects:
{
"code": "FLX-1008",
"severity": "WARN",
"category": "AUDIT",
"element": { "kind": "NODE", … }
}
Select findings by severity, never by position: a failing build's report also contains any warnings it found, and diagnostics[0] is not the cause of the failure.
This page is generated from the compiler itself, so the wording above is exactly what a build emits. Do not edit it by hand — it is overwritten whenever the diagnostics are regenerated.