Implement final fixes and close out the implemetation roadmap

This commit is contained in:
2026-07-17 23:16:16 -05:00
parent 604c7a7945
commit 9fa9154dda
14 changed files with 463 additions and 879 deletions

View File

@@ -67,7 +67,7 @@ type artifactCodecEntry struct {
valueType reflect.Type
encode func(any) ([]byte, error)
encodeCandidate func(any) ([]byte, error)
metadata func(any) map[string]any
metadata func(any) (map[string]any, error)
decode func([]byte) (any, error)
}
@@ -132,10 +132,10 @@ func RegisterArtifactCodec[T any](registry *ArtifactCodecRegistry, codec contrac
return append([]byte(nil), content...), nil
}
if provider, ok := any(codec).(interface{ Metadata(T) map[string]any }); ok {
entry.metadata = func(value any) map[string]any {
entry.metadata = func(value any) (map[string]any, error) {
typed, err := exactTypedValue[T]("artifact metadata", value)
if err != nil {
return nil
return nil, err
}
return cloneMetadata(provider.Metadata(typed))
}