Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ADR-26036: Config File Location and Naming Conventions


title: Config File Location and Naming Conventions date: 2026-03-23 tags:


ADR-26036: Config File Location and Naming Conventions

Date

2026-03-23

Status

proposed

Context

As the repository’s tooling grows, validation scripts need configuration files. Without a convention for where configs live and how they’re named, engineers face three problems:

  1. Discoverability: Where is the config for a given script? Which directory? What filename?

  2. Naming inconsistency: No pattern exists to predict a config file’s name from its script or validation scope.

  3. Duplication: Shared fields (e.g., tags) get copied between configs because there’s no inheritance mechanism.

ADR-26029 established pyproject.toml as the tool configuration hub for simple tool settings. But governance validation configs — deeply nested structures, conditional rules, correction mappings — need a dedicated location. ADR-26029 does not specify where those files live, how to name them, or how scripts discover them.

Decision

Adopt a centralized config directory at the project root with a hub-spoke structure of scope-isolated files.

1. Config Directory

All governance configs live in a single directory at the project root. The directory name is determined by the governance package (currently .vadocs/ per ADR-26043). Scripts discover the directory via pyproject.toml [tool.vadocs].config_dir. Any engineer or agent knows where to look without scanning the directory tree.

2. Hub-Spoke Structure

The directory uses a two-level layout:

Doc type configs do not reference each other — only the hub config. This is the sudoers.d pattern: each file governs a different scope, files are independently testable, the hub config provides the common foundation.

3. Naming Convention

KindPatternExample
Hub configconf.<ext>conf.json
Doc type spoketypes/<doc_type>.conf.<ext>types/adr.conf.json
Schema (optional)<name>.schema.<ext>conf.schema.json
Operational rulesvalidation/<concern>.<ext>validation/excludes.conf.json

The <doc_type> matches the validation concern (e.g., adr, evidence). The file extension is determined by the serialization format decision (ADR-26054).

4. Strict Additive Inheritance

Spoke configs add or tighten rules — they never remove or override hub-defined fields. A validator can always trust that hub vocabulary is available in every spoke context.

Consequences

Positive

Negative / Risks

Alternatives

References

Participants

  1. Vadim Rudakov

  2. Claude Opus 4.6 (AI Engineering Advisor)