Configuration Source Trace
Mission
Answer precisely:
Where does this configuration value come from?
How is it overridden?
How does it reach runtime behavior?
Required Trace
For each material setting:
source
→ file/env/system property/DB/CLI/default
→ key/schema
→ loader/parser
→ validation/conversion
→ precedence/override
→ runtime object/state
→ consumer
→ branch/selection
→ behavioral effect
Search Strategy
Search from BOTH ends:
Consumer backward
branch/getter/field
→ assignment
→ constructor/setter/config object
→ loader
→ external source/key
Source forward
key/property/env/schema
→ parser
→ config object
→ consumer
→ runtime behavior
Inspect:
- property/yaml/json/xml files
- environment variables
- system properties
- command-line args
- DB-backed settings
- config defaults/constants
- profiles/overlays
- startup/bootstrap
- tests showing override precedence
Required Findings
| Setting | External Source | Key | Default | Override Precedence | Loader | Runtime Holder | Consumer | Behavioral Effect | Evidence | Status |
|---|
Status:
VERIFIED
PARTIALLY_VERIFIED
EXTERNALLY_INJECTED
NOT_APPLICABLE
UNRESOLVED
External Values
If the actual deployed VALUE is unavailable but source proves the injection mechanism, separate:
configuration mechanism = VERIFIED
runtime deployed value = EXTERNALLY_BLOCKED
Do not mark the entire configuration architecture UNKNOWN.
Counterexample Search
Search for:
- duplicate keys
- deprecated keys
- alternate loaders
- profile-specific overrides
- defaults that bypass external configuration
- DB/runtime overrides
- test-only configuration
Output
Create/update:
docs/reverse-engineering/configuration/<scope>.md
Update open questions/evidence ledger as appropriate.
Canonical Configuration Model
For full-baseline execution, consolidate behavior-changing settings into:
docs/reverse-engineering/models/configuration_model.md
Required fields:
| Setting/Selector | Source | Default | Override Precedence | Runtime Holder | Consumer | Behavioral Effect | Variant Selected | Evidence |
|---|
Prefer the settings that change architecture, routing, concurrency, integration selection, lifecycle, persistence, security, or externally observable behavior. Do not bury these selectors in an exhaustive property dump.