Context
/search-issue audited the foundation config package for bug-finding and refactoring candidates.
Audit Purpose
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
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.
Context
/search-issueaudited the foundationconfigpackage for bug-finding and refactoring candidates.Audit Purpose
Findings
P1
packages/config/README.md:109,packages/config/src/reload-module.test.ts:17-46,packages/config/src/module.test.ts:123-166:ConfigReloadModulewatch 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 nestedschemaobjects, 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
Suggested Resolution
ConfigReloadModule.getOrThrow()object clones and array replacement precedence.Affected Packages
configAffected Surfaces
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)packages/config/README.md,packages/config/README.ko.md)docs/contracts/behavioral-contract-policy.md,docs/contracts/testing-guide.md)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.