mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
refactor(config): modularize config definition ownership by domain
Split config defaults, option metadata, runtime-option registry, and template sections into domain modules while preserving the composed public API in definitions.ts. This keeps ConfigService behavior stable and makes future config extensions easier to add with focused regression coverage.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
---
|
||||
id: TASK-78
|
||||
title: Modularize config definitions and validation by domain
|
||||
status: To Do
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-18 11:43'
|
||||
updated_date: '2026-02-18 11:43'
|
||||
updated_date: '2026-02-22 00:06'
|
||||
labels:
|
||||
- config
|
||||
- refactor
|
||||
@@ -42,15 +42,38 @@ Config defaults and resolution are still concentrated in large files (`src/confi
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #1 Config definitions/validation are split by domain with clear ownership
|
||||
- [ ] #2 `ConfigService` API remains backward-compatible
|
||||
- [ ] #3 Validation behavior remains stable under existing tests
|
||||
- [ ] #4 New domain-level tests prevent regression in future config additions
|
||||
- [x] #1 Config definitions/validation are split by domain with clear ownership
|
||||
- [x] #2 `ConfigService` API remains backward-compatible
|
||||
- [x] #3 Validation behavior remains stable under existing tests
|
||||
- [x] #4 New domain-level tests prevent regression in future config additions
|
||||
<!-- AC:END -->
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
<!-- SECTION:NOTES:BEGIN -->
|
||||
2026-02-21: Started execution via writing-plans/executing-plans workflow in opencode session `opencode-task78-config-domain-20260221T235604Z-p9x2`.
|
||||
|
||||
2026-02-22: Refactored `src/config/definitions.ts` into a composed facade over domain modules under `src/config/definitions/` (`defaults-*.ts`, `options-*.ts`, `runtime-options.ts`, `template-sections.ts`, `shared.ts`) while preserving exported API names and `ConfigService` behavior.
|
||||
|
||||
Added domain-level regression tests in `src/config/definitions/domain-registry.test.ts` for critical registry paths, duplicate-path guard, template section key uniqueness, and per-domain contributor coverage.
|
||||
|
||||
Updated contributor docs (`docs/development.md`) with config extension workflow by domain ownership and composition entrypoint guidance.
|
||||
|
||||
Verification: `bun test src/config/definitions/domain-registry.test.ts` (3 pass), `bun run test:config:src` (49 pass), `bun run test:core:src` (219 pass, 6 skip).
|
||||
|
||||
`make generate-config` currently blocked by pre-existing TypeScript errors in `src/main/state.test.ts` missing exports from `src/main/state` (outside TASK-78 scope).
|
||||
|
||||
Follow-up: wired `src/config/definitions/domain-registry.test.ts` into `package.json` config test lanes (`test:config:src` + `test:config:dist`). Re-ran `bun run test:config:src` => 52 pass.
|
||||
<!-- SECTION:NOTES:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Modularized config definition ownership by introducing domain-specific defaults, option registry builders, runtime-option metadata, and template-section modules under `src/config/definitions/`, with `src/config/definitions.ts` preserved as the single composed public API. Added domain-level registry tests and updated contributor docs for the new config extension workflow; config/core source test lanes pass.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
||||
## Definition of Done
|
||||
<!-- DOD:BEGIN -->
|
||||
- [ ] #1 Config and core tests pass
|
||||
- [ ] #2 Documentation updated for config extension workflow
|
||||
- [x] #1 Config and core tests pass
|
||||
- [x] #2 Documentation updated for config extension workflow
|
||||
<!-- DOD:END -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user