Skip to content

[audit][area:foundation] preserve config option snapshots and reload regression coverage (priority:p2) #2278

Description

@ayden94

Context

/search-issue audited the foundation config package for bug-finding and refactoring candidates.

Audit Purpose

  • bug-finding
  • refactoring

Findings

P1

  • packages/config/README.md:109, packages/config/src/reload-module.test.ts:17-46, packages/config/src/module.test.ts:123-166: ConfigReloadModule watch lifecycle/shutdown contract lacks direct regression coverage.

P2

  • packages/config/src/options.ts:35-39,53-58, packages/config/src/load.ts:381-384,530-542: option snapshots do not isolate nested schema objects, so post-registration schema mutation can change bootstrap/reload validation.
  • packages/config/README.md:103, packages/config/src/service.test.ts:5-28, packages/config/src/load.test.ts:1186-1196,1232-1253: getOrThrow() object-like clone contract lacks direct regression coverage.
  • packages/config/README.md:95, packages/config/src/load.test.ts:195-213,310-343: array replacement precedence lacks direct regression coverage.

R&D Brief

none

Contract Impact

  • Behavior-change risk for option snapshot isolation.
  • Test-only gaps for documented config reload, clone, and merge contracts.

Suggested Resolution

  • Capture schema validation boundaries immutably at registration/snapshot time.
  • Add watch lifecycle/shutdown tests for ConfigReloadModule.
  • Add direct tests for getOrThrow() object clones and array replacement precedence.

Affected Packages

  • config

Affected Surfaces

  • package source/test: required (packages/config/src/options.ts, packages/config/src/load.ts, packages/config/src/reload-module.test.ts, packages/config/src/service.test.ts, packages/config/src/load.test.ts)
  • package README: needs-check (packages/config/README.md, packages/config/README.ko.md)
  • docs: needs-check (docs/contracts/behavioral-contract-policy.md, docs/contracts/testing-guide.md)
  • book: not-required
  • examples: not-required
  • changeset: needs-check because option snapshot behavior is public package behavior.

Why Now

Config is the repository's environment-isolation boundary; option snapshot and reload semantics must be locked down before further package integrations rely on them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:foundationFoundation group: core, dibugSomething isn't workingpriority:p2Medium prioritysource:package-auditCreated from package-level maintainability audittype:maintainabilityMaintainability and long-term quality improvementswave:1Execution wave 1

    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