Skip to content

fix(cli): honor OS_LOG_LEVEL / --log-level instead of hardcoding silent (#1533) - #1539

Merged
os-zhuang merged 2 commits into
mainfrom
claude/keen-euler-BywzR
Jun 2, 2026
Merged

fix(cli): honor OS_LOG_LEVEL / --log-level instead of hardcoding silent (#1533)#1539
os-zhuang merged 2 commits into
mainfrom
claude/keen-euler-BywzR

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Summary

Fixes#1533.

os serve / os start constructed the runtime kernel with a hardcoded{ level: 'silent' } logger and no override, suppressing every plugin logger.warn / logger.error. A record-change flow whose condition or node faulted (logged via logger.warn in plugin-trigger-record-change) produced zero operator-visible output — the flow simply had no effect — directly undercutting ADR-0032's "fail loudly" promise when running via the CLI. (ADR-0032's own incident write-up calls out "the CLI forces the kernel logger to level:'silent'" as why the reporter "could not see any logs".)

What changed

The kernel logger level is now resolved (precedence order):

  1. --verbosedebug
  2. --log-level <level> → explicit level
  3. $OS_LOG_LEVEL / $LOG_LEVEL
  4. default → warn

Defaulting to warn (instead of silent) surfaces flow/hook execution-failure warnings and automation-engine errors out of the box, while the existing boot-quiet window still suppresses the noisier info-level startup chatter. Pass --log-level silent (or OS_LOG_LEVEL=silent) to restore the old fully-quiet behavior.

Details

  • New pure helper packages/cli/src/utils/log-level.ts (LOG_LEVELS, resolveLogLevel, readLogLevelEnv, DEFAULT_LOG_LEVEL) — unit-testable without importing the whole runtime.
  • serve gains --log-level and --verbose flags; replaces the hardcoded silent.
  • start and dev gain a matching --log-level flag and forward it (plus the existing --verbose) to the spawned serve.
  • Incidentally fixes a latent bug: both start and dev already passed --verbose to serve, a flag serve never declared (oclif strict parsing would reject it).

Tests

packages/cli/test/serve-log-level.test.ts — covers the warn default (the #1533 regression guard), env honoring, flag-over-env precedence, --verbosedebug, case-insensitivity/trimming, unknown-level fallback, and round-trips every documented level. All 8 pass locally.

Compatibility

  • Behavior change: the runtime no longer defaults to fully silent. Operators who relied on silence can set --log-level silent / OS_LOG_LEVEL=silent.
  • No API/schema changes.

https://claude.ai/code/session_01Sn5oqHMikzQMbzfzVbfVNi


Generated by Claude Code

…#1533)
`os serve` / `os start` constructed the runtime kernel with a hardcoded
`{ level: 'silent' }` logger, suppressing every plugin `logger.warn` /
`logger.error`. As a result a record-change flow whose condition or node
faulted produced zero operator-visible output — the flow simply had no
effect — directly undercutting ADR-0032's "fail loudly" promise when
running via the CLI (the silent logger is even called out by name in
ADR-0032's incident write-up).
Resolve the kernel logger level from, in precedence order:
1. `--verbose` → debug
2. `--log-level <level>` → explicit level
3. `$OS_LOG_LEVEL` / `$LOG_LEVEL`
4. default → `warn`
Defaulting to `warn` (rather than `silent`) surfaces flow/hook
execution-failure warnings and automation-engine errors out of the box,
while the existing boot-quiet window still suppresses the noisier
info-level startup chatter. `--log-level silent` restores the old
fully-quiet behavior.
The resolution lives in a small pure helper (`utils/log-level.ts`) so it
is unit-testable without importing the whole runtime. `start` and `dev`
gain a matching `--log-level` flag and forward it (plus the existing
`--verbose`) to the spawned `serve` — which also fixes a latent bug where
both already passed `--verbose` to `serve`, a flag it never declared.
@vercel

vercelBot commented Jun 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentJun 2, 2026 10:25am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tooling labels Jun 2, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review June 2, 2026 10:31
@os-zhuang
os-zhuang merged commit 1e0b6d7 into mainJun 2, 2026
12 checks passed
xuyushun441-sys pushed a commit that referenced this pull request Jun 6, 2026
feat(detail): derive related lists from relationships (read-side mirror of inlineEdit) (#1539)
objectui@c657e9b180a8c7aa56938d22d7baaee5dc8fc765
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

cli: serve/start hardcodes logger level "silent" — flow & hook execution failures are invisible (defeats ADR-0032 "fail loudly")

2 participants

@os-zhuang@claude