feat(config): add project-scoped config overrides #504

Merged
freemo merged 1 commit from feature/m4-config-project-scope into master 2026-03-02 15:09:44 +00:00
Owner

Summary

Add --project flag to config set/config get/config list CLI commands for project-scoped configuration overrides.

  • Project-scoped values stored under [project.name] TOML tables in the global config file
  • Resolution chain: CLI flags > env vars > project scope > global config > defaults
  • config list --project name shows only project-scoped overrides with source annotations
  • Includes BDD tests, Robot integration tests, ASV benchmark, and updated documentation

Quality Gates

  • lint: PASS
  • typecheck: PASS
  • unit_tests: PASS (7522 scenarios)
  • integration_tests: PASS
  • coverage_report: PASS (98%)

Closes #259

## Summary Add --project flag to config set/config get/config list CLI commands for project-scoped configuration overrides. - Project-scoped values stored under [project.name] TOML tables in the global config file - Resolution chain: CLI flags > env vars > project scope > global config > defaults - config list --project name shows only project-scoped overrides with source annotations - Includes BDD tests, Robot integration tests, ASV benchmark, and updated documentation ### Quality Gates - lint: PASS - typecheck: PASS - unit_tests: PASS (7522 scenarios) - integration_tests: PASS - coverage_report: PASS (98%) Closes #259
feat(config): add project-scoped config overrides
All checks were successful
CI / lint (pull_request) Successful in 15s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 41s
CI / security (pull_request) Successful in 51s
CI / unit_tests (pull_request) Successful in 2m57s
CI / integration_tests (pull_request) Successful in 4m34s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 3m39s
CI / benchmark-regression (pull_request) Successful in 22m18s
b49059209a
Add --project flag to config set, config get, and config list CLI
commands, enabling per-project configuration overrides stored under
[project."<name>"] TOML tables in the global config file.

Project-scoped resolution slots between environment variable and global
levels in the ConfigService resolution chain. config list --project
shows only overrides for the named project with source annotations.

Implementation:
- ConfigService: add set_project_value() and get_project_overrides()
  methods for TOML-backed project-scoped persistence and retrieval
- CLI config commands: wire --project flag through set, get, and list
  subcommands; project-scoped list filters to overrides only
- Database persistence: project-scoped config stored as alternative
  backend for projects not using TOML
- Documentation: update docs/reference/config_resolution.md with
  project-scopable key lists, CLI examples, precedence diagram, and
  non-scopable key rejection behavior

Tests:
- Behave: 12 BDD scenarios in features/config_project_scope.feature
  covering set/get/list, precedence over global defaults, and
  non-scopable key rejection
- Robot: 5 integration smoke tests in robot/config_project_scope.robot
  for end-to-end project-scoped round-trip verification
- ASV: benchmarks/config_project_scope_bench.py measuring resolution
  overhead with project scope active

All nox quality gates pass: lint, typecheck, unit_tests (7522 scenarios),
integration_tests (Config Project Scope suite passed), and coverage at
98% line rate (threshold 97%).

Closes #259
freemo added this to the v3.4.0 milestone 2026-03-02 07:59:23 +00:00
freemo force-pushed feature/m4-config-project-scope from b49059209a
All checks were successful
CI / lint (pull_request) Successful in 15s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 41s
CI / security (pull_request) Successful in 51s
CI / unit_tests (pull_request) Successful in 2m57s
CI / integration_tests (pull_request) Successful in 4m34s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 3m39s
CI / benchmark-regression (pull_request) Successful in 22m18s
to 36254f0f75
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 16s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 51s
CI / unit_tests (pull_request) Successful in 2m32s
CI / docker (pull_request) Successful in 40s
CI / integration_tests (pull_request) Successful in 3m38s
CI / coverage (pull_request) Successful in 5m22s
CI / benchmark-regression (pull_request) Has been cancelled
2026-03-02 14:33:22 +00:00
Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-02 14:33:34 +00:00
freemo force-pushed feature/m4-config-project-scope from 36254f0f75
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 16s
CI / security (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 51s
CI / unit_tests (pull_request) Successful in 2m32s
CI / docker (pull_request) Successful in 40s
CI / integration_tests (pull_request) Successful in 3m38s
CI / coverage (pull_request) Successful in 5m22s
CI / benchmark-regression (pull_request) Has been cancelled
to 876ae7434c
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 16s
CI / lint (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 34s
CI / build (pull_request) Successful in 15s
CI / security (pull_request) Successful in 40s
CI / benchmark-regression (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
2026-03-02 14:46:26 +00:00
Compare
freemo force-pushed feature/m4-config-project-scope from 876ae7434c
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 16s
CI / lint (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 34s
CI / build (pull_request) Successful in 15s
CI / security (pull_request) Successful in 40s
CI / benchmark-regression (pull_request) Has been cancelled
CI / integration_tests (pull_request) Has been cancelled
CI / coverage (pull_request) Has been cancelled
CI / unit_tests (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
to 5fd1cda3a2
Some checks failed
CI / lint (pull_request) Successful in 27s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 23s
CI / build (pull_request) Successful in 14s
CI / security (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 58s
CI / unit_tests (pull_request) Successful in 2m5s
CI / docker (pull_request) Successful in 38s
CI / integration_tests (pull_request) Successful in 3m13s
CI / coverage (pull_request) Successful in 3m46s
CI / benchmark-regression (pull_request) Has been cancelled
2026-03-02 14:48:37 +00:00
Compare
freemo force-pushed feature/m4-config-project-scope from 5fd1cda3a2
Some checks failed
CI / lint (pull_request) Successful in 27s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 23s
CI / build (pull_request) Successful in 14s
CI / security (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 58s
CI / unit_tests (pull_request) Successful in 2m5s
CI / docker (pull_request) Successful in 38s
CI / integration_tests (pull_request) Successful in 3m13s
CI / coverage (pull_request) Successful in 3m46s
CI / benchmark-regression (pull_request) Has been cancelled
to 0a9356bb11
Some checks failed
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 30s
CI / security (pull_request) Successful in 47s
CI / quality (pull_request) Successful in 15s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 24s
CI / unit_tests (pull_request) Successful in 1m51s
CI / docker (pull_request) Successful in 43s
CI / integration_tests (pull_request) Successful in 3m0s
CI / coverage (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
2026-03-02 14:56:25 +00:00
Compare
freemo force-pushed feature/m4-config-project-scope from 0a9356bb11
Some checks failed
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 30s
CI / security (pull_request) Successful in 47s
CI / quality (pull_request) Successful in 15s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 24s
CI / unit_tests (pull_request) Successful in 1m51s
CI / docker (pull_request) Successful in 43s
CI / integration_tests (pull_request) Successful in 3m0s
CI / coverage (pull_request) Has been cancelled
CI / benchmark-regression (pull_request) Has been cancelled
to 7d74be68aa
All checks were successful
CI / lint (pull_request) Successful in 14s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 33s
CI / build (pull_request) Successful in 14s
CI / security (pull_request) Successful in 35s
CI / unit_tests (pull_request) Successful in 2m52s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m53s
CI / coverage (pull_request) Successful in 3m42s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 16s
CI / build (push) Successful in 16s
CI / security (push) Successful in 29s
CI / typecheck (push) Successful in 32s
CI / benchmark-regression (push) Has been skipped
CI / unit_tests (push) Successful in 1m53s
CI / docker (push) Successful in 53s
CI / integration_tests (push) Successful in 2m49s
CI / coverage (push) Successful in 3m50s
CI / benchmark-publish (push) Successful in 13m7s
CI / benchmark-regression (pull_request) Successful in 28m12s
2026-03-02 15:05:21 +00:00
Compare
freemo merged commit 7d74be68aa into master 2026-03-02 15:09:44 +00:00
freemo deleted branch feature/m4-config-project-scope 2026-03-02 15:09:45 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Blocks
Reference
cleveragents/cleveragents-core!504
No description provided.