Complete resolution provenance readiness audit

This commit is contained in:
2026-09-12 13:25:38 +00:00
parent b9e4dfac92
commit 715364b079
6 changed files with 94 additions and 239 deletions

View File

@@ -1,6 +1,6 @@
# Source origins during resolution: implementation plan
Status: not started. Implement stages in order, starting with Stage 1.
Status: implementation complete (2026-09-12). All stages were completed in order.
The [feature roadmap](source-origins-during-resolution.md) owns the target contract
and consumer intent. This document owns implementation steps, validation, and
handoffs. It is written for one gpt-5.6-terra coding agent per stage; no stage
@@ -276,7 +276,7 @@ with Go 1.26.7 on Linux. No deviations or remaining Stage 4 risks were identifie
## Stage 5 — Audit the complete contract and hand off release readiness
Status: not started. Dependencies: Stage 4.
Status: complete (2026-09-12). Dependencies: Stage 4.
Scope: integration review, canonical documentation, roadmap completion records,
and proportionate fixes for remaining acceptance failures. No feature expansion.
@@ -321,6 +321,49 @@ tag or mark unavailable native macOS evidence as passed.
Validation: `./scripts/check.sh`, `go test -race ./...`, and the full checker above.
Completion record (2026-09-12): all acceptance criteria have named evidence:
1. `TestNotariusPathExampleUsesEntryProvenance` covers canonical main-file and
symlink target bases without process-CWD dependence.
2. `TestResolutionInputKeepsLayeredOriginsAndSources` covers imported scalars and
sequence elements.
3. The same layered test covers profile replacement and untouched base/import
siblings.
4. The layered test covers equal-text profile and CLI replacement.
5. `TestResolutionEntryQueriesExposeDetachedLoadInput` and
`TestResolutionInputDistinguishesNonFileRootsAndImportedFiles` cover defaults,
nulls, misses, CLI/file identities, `NoSource`, bytes, and readers.
6. The layered test verifies every composite location has a source;
`TestResolutionEntryQueriesExposeDetachedLoadInput` verifies unknown IDs miss
safely.
7. `TestResolutionInputRemainsFixedAcrossRecordedMutations` covers normalization,
deletion, addition, and move stability.
8. `TestResolutionInputUsesEntryShapesAcrossTypedAndDynamicValues` covers inline,
map, array, dynamic, escaped/signed keys, and invalid shape cases.
9. `TestNotariusPathExampleUsesEntryProvenance` verifies runtime, effective YAML,
and explanation history together.
10. `TestResolutionInputQueriesDoNotReadOrResolveSecrets` plus the Notarius test
verify no extra reader/credential access and preserved redaction.
11. `TestResolutionInputKeepsLayeredOriginsAndSources` and
`TestResolutionEntryQueriesExposeDetachedLoadInput` verify detached records.
12. `NotariusPathConfig`, its fixtures, executable example, and consumer-guide
link provide the maintained public-API/standard-library workflow.
The final review found that queries use only the callback guard and detached
metadata/source indexes; they do not extend callback lifetime, expose raw values, or
perform environment/filesystem work. The view is created only for resolver loads and
does not retain history. The comparison with `v0.2.0` found only additive exported
methods; loading, parser, path, composition, credential, and existing callback
semantics remain unchanged. Canonical Go, configuration, consumer, internal, and
roadmap documentation are synchronized; the feature roadmap is retained only until
release preparation. `./scripts/check.sh`, `go test -race ./...`, documentation and
import-boundary checks, and `CONFIGKIT_BASELINE_TOOLCHAIN=go1.25.5
CONFIGKIT_NEWER_TOOLCHAIN=go1.26.7 ./scripts/release-check.sh` passed on Linux with
Go 1.25.5 and Go 1.26.7. Publication remains unapproved: a maintainer must choose a
pre-v1 minor version, write its note, retire completed roadmaps, obtain exact
candidate native Linux/macOS evidence, and follow the release procedure. No version,
release note, candidate, tag, or push was created.
## Open Questions
None blocking implementation. The API, snapshot boundary, missing-value semantics,