Correct curated prompt package contracts

This commit is contained in:
2026-08-13 00:11:31 +00:00
parent 0b869af75e
commit 5139c1a586
6 changed files with 210 additions and 19 deletions

View File

@@ -67,11 +67,21 @@ type Metadata struct {
}
type Package struct {
SchemaVersion string `json:"schemaVersion" yaml:"schema_version"`
RunID string `json:"runId" yaml:"run_id"`
Report Report `json:"report" yaml:"report"`
Briefing BriefingStanzas `json:"briefing" yaml:"briefing"`
SourceWarnings []weatherdata.SourceWarning `json:"sourceWarnings,omitempty" yaml:"source_warnings,omitempty"`
SchemaVersion string `json:"schemaVersion" yaml:"schema_version"`
RunID string `json:"runId" yaml:"run_id"`
Report Report `json:"report" yaml:"report"`
Briefing BriefingStanzas `json:"briefing" yaml:"briefing"`
SourceWarnings []SourceWarningSummary `json:"sourceWarnings,omitempty" yaml:"source_warnings,omitempty"`
}
// SourceWarningSummary is the reviewed warning projection supplied to Promptkit.
// Transport and provenance details intentionally remain outside the prompt package.
type SourceWarningSummary struct {
Source string `json:"source" yaml:"source"`
Code string `json:"code" yaml:"code"`
Severity string `json:"severity" yaml:"severity"`
Message string `json:"message" yaml:"message"`
CompletenessImpact string `json:"completenessImpact,omitempty" yaml:"completeness_impact,omitempty"`
}
type Report struct {
@@ -107,7 +117,7 @@ func Build(req BuildRequest) (Package, error) {
ValidPeriod: req.Metadata.ValidPeriod,
},
Briefing: stanzasFromSnapshot(req.Modules),
SourceWarnings: append([]weatherdata.SourceWarning(nil), req.Metadata.SourceWarnings...),
SourceWarnings: sourceWarningSummaries(req.Metadata.SourceWarnings),
}
if err := Validate(pkg); err != nil {
return Package{}, err
@@ -115,6 +125,20 @@ func Build(req BuildRequest) (Package, error) {
return pkg, nil
}
func sourceWarningSummaries(warnings []weatherdata.SourceWarning) []SourceWarningSummary {
out := make([]SourceWarningSummary, 0, len(warnings))
for _, warning := range warnings {
out = append(out, SourceWarningSummary{
Source: warning.Source,
Code: warning.Code,
Severity: warning.Severity,
Message: warning.Message,
CompletenessImpact: warning.CompletenessImpact,
})
}
return out
}
func stanzasFromSnapshot(snapshot module.Snapshot) BriefingStanzas {
values := map[string]any{}
order := make([]string, 0, len(snapshot.Outputs))