Summary
os serve / os start construct the runtime with a hardcoded{ level: 'silent' } logger and no override. As a result every plugin logger.info/warn/error is suppressed — including the record-change trigger's flow-execution-failure warnings and the automation engine's internal errors. A flow that faults at runtime fails completely silently, which directly undercuts ADR-0032's "fail loudly with an attributed, corrective message" promise when running via the CLI.
Version
@objectstack/cli7.6.0.
Where
@objectstack/cli/dist/commands/serve.js:
// Set kernel logger to 'silent' — the CLI manages its own outputconstloggerConfig={level: 'silent'};construntime=newRuntime({kernel: {logger: loggerConfig}});There is no env (OS_LOG_LEVEL / LOG_LEVEL) or flag to raise it. ObjectLogger defaults to info, but this overrides everything to silent.
Compounding swallow points (both go through the now-silenced logger):
@objectstack/plugin-trigger-record-change handler:
catch (err) { this.logger.warn("[record-change] flow '<name>' execution failed: " + err.message) }@objectstack/service-automation engine: flow register / trigger-bind / execution logs are logger.info / logger.warn.
Impact
A record-change flow whose condition or node faults produces zero operator-visible output — the flow just has no effect. While debugging objectstack-ai/hotcrm#365 I had to patch node_modules to set level: 'debug' before any of the binding/execution diagnostics appeared. Related historical report: #888.
Suggested fix
- Honor
OS_LOG_LEVEL / LOG_LEVEL (and/or a --log-level CLI flag) instead of hardcoding silent. - Ensure flow/hook execution failures surface on a channel the CLI's "manages its own output" mode does not suppress (e.g. always emit to stderr at
warn+, or a dedicated automation-error sink), so the ADR-0032 corrective messages actually reach the operator.
Found while upgrading objectstack-ai/hotcrm to 7.6 (objectstack-ai/hotcrm#365).
Summary
os serve/os startconstruct the runtime with a hardcoded{ level: 'silent' }logger and no override. As a result every pluginlogger.info/warn/erroris suppressed — including the record-change trigger's flow-execution-failure warnings and the automation engine's internal errors. A flow that faults at runtime fails completely silently, which directly undercuts ADR-0032's "fail loudly with an attributed, corrective message" promise when running via the CLI.Version
@objectstack/cli7.6.0.Where
@objectstack/cli/dist/commands/serve.js:There is no env (
OS_LOG_LEVEL/LOG_LEVEL) or flag to raise it.ObjectLoggerdefaults toinfo, but this overrides everything tosilent.Compounding swallow points (both go through the now-silenced logger):
@objectstack/plugin-trigger-record-changehandler:catch (err) { this.logger.warn("[record-change] flow '<name>' execution failed: " + err.message) }@objectstack/service-automationengine: flow register / trigger-bind / execution logs arelogger.info/logger.warn.Impact
A record-change flow whose condition or node faults produces zero operator-visible output — the flow just has no effect. While debugging objectstack-ai/hotcrm#365 I had to patch
node_modulesto setlevel: 'debug'before any of the binding/execution diagnostics appeared. Related historical report: #888.Suggested fix
OS_LOG_LEVEL/LOG_LEVEL(and/or a--log-levelCLI flag) instead of hardcodingsilent.warn+, or a dedicated automation-error sink), so the ADR-0032 corrective messages actually reach the operator.Found while upgrading objectstack-ai/hotcrm to 7.6 (objectstack-ai/hotcrm#365).