feat(planner): default seid logging.level to error, user-overridable#452
Conversation
PR SummaryMedium Risk Overview Removed Tests were reshaped: Reviewed by Cursor Bugbot for commit 5054dfa. Bugbot is set up for automated code reviews on this repo. Configure here. |
5abf142 to
4b1b56f
Compare
Previously logging.level was controller-FORCED to "error" — applyForcedOverrides logged-and-discarded any user value. This makes "error" a DEFAULT instead: commonOverrides seeds logging.level=error, and mergeOverrides already lets a spec.Overrides entry win, so an operator can opt a node into a different level (info/debug/...) while the fleet default stays quiet. Removes applyForcedOverrides (its sole job was forcing logging.level) and the now-unused controller-runtime import. Tests: commonOverrides now asserts the default; forced_overrides_test.go -> logging_level_test.go verifies default-and-override end-to-end (incl. the full-node config-apply path). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4b1b56f to
5054dfa
Compare
What
logging.levelwas controller-forced toerror—applyForcedOverrideslogged-and-discarded any user value. This makeserrora default instead:commonOverridesseedslogging.level=error, andmergeOverridesalready lets aspec.Overridesentry win. So the fleet default stays quiet, but an operator can set a different level per node via the CRD:How
commonOverridesseeds the default (user-overridable via the existing merge precedence).applyForcedOverrides(its only job was forcinglogging.level) + the now-unusedcontroller-runtimeimport; renamedenforcedLoggingLevel→defaultLoggingLevel.commonOverridesnow asserts the default is set;forced_overrides_test.go→logging_level_test.goverifies default-and-override, including the full-node config-apply path (default→error,user→user value).Behavioral change to note for review
This relaxes an enforced constraint: operators can now opt a node into verbose logging (e.g.
debug) that was previously blocked. Intended per request; flagging so the log-volume/perf tradeoff is a conscious call. No CRD schema change (uses the existingspec.overrides); no webhook/CEL enforced it either.Ready for the standard controller cross-review (k8s + SRE).
Review caveats (xreview: systems-engineer + idiomatic-reviewer, both RATIFY)
[p2p]. So alogging.leveloverride lands when the node is (re)initialized, not on a livespec.Overridesedit. (Pre-existing behavior — the old forcederrorwas likewise stamped once at init.)validateLoggingvalidates onlylogging.format, notlogging.level— an invalid level (e.g."verbose", empty, case-wrong"ERROR") now passes config-validate and crashloops seid at startup (the old forced-errormasked this). Add a level enum check in sei-config so it's rejected at config-validate. Fails loud/fast; not a blocker for this PR.