2.5 KiB
Source origins during resolution
Status: implemented (2026-09-12); release preparation remains separate.
ConfigKit now exposes fixed entry-state provenance during an active
Definition.Resolve callback:
func (r *Resolution) InputInfo(path Path) (FieldInfo, bool)
func (r *Resolution) Source(id string) (SourceInfo, bool)
These methods support application-owned normalization and other domain decisions before ConfigKit publishes its frozen result. They are additive: existing loading, composition, decoding, resolution recording, credential timing, and inspection semantics remain unchanged.
Canonical behavior
Go reference comments on Resolution own the API/lifetime definition. The
configuration contract owns entry
state, exact path matching, source records, misses, detachment, and callback-scope
behavior. The consumer adoption guide
and maintained NotariusPathConfig example
own the application workflow, including its canonical symlink-base choice.
InputInfo describes decoded configuration at callback entry, including retained
defaults and explicit nulls, and is unaffected by subsequent application changes.
Source resolves records already acquired for that load without filesystem,
credential, or parsing work. Both return detached records and require the existing
active callback context.
ConfigKit continues to provide provenance rather than filesystem policy. Consumers choose how to interpret relative paths, select default and CLI bases, and handle missing or composite file provenance. The maintained example leaves values unchanged with a warning when its chosen base is unavailable; it performs no existence or confinement check.
Evidence and handoff
The completed staged record is preserved at
28e7fc5:docs/roadmap/implementation.md; retrieve it with
git show 28e7fc5:docs/roadmap/implementation.md. It maps all twelve acceptance
criteria to focused lifecycle, provenance, ownership, consumer, explanation, and
secret tests. The final implementation commit is expected to run the source
checker and the documented two-toolchain gate before any release candidate is
selected.
Publication remains a maintainer decision. Release preparation must choose the version, write a version-matched note, retire this completed roadmap with link repair, obtain exact-candidate Linux/macOS evidence, and follow the release procedure.