Skip to content

bug: defaults merge replaces entire struct instead of field-wise #12

@EffortlessSteven

Description

@EffortlessSteven

Problem

In config_loader.rs:123-126, when merging overlay configs, the entire Defaults struct is replaced if any field differs. This means:

  1. Parent config sets defaults.base = "main", defaults.scope = "added"
  2. Child config sets defaults.fail_on = "error"
  3. Result: only fail_on is set — base and scope are lost

Fix

Implement field-wise merge for Defaults:

  • Option<T> fields: child overrides parent only if Some
  • Non-option fields: child overrides parent only if non-default

Source

PR #5 review — Codex P1 (comment #2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions