Publish evidence context in JSON output bundles

This commit is contained in:
2026-07-27 18:23:48 +00:00
parent e61e522662
commit 256cc98ddb
6 changed files with 276 additions and 31 deletions

View File

@@ -13,12 +13,16 @@ import (
// identifiers and aggregate counts. The evidence document itself can include
// source text and must never be written to this debug envelope.
type debugEvidenceContextSummary struct {
SourceID string `json:"source_id"`
SelectedLanes []string `json:"selected_lanes"`
WindowUnits int `json:"window_units"`
ContextCount int `json:"context_count"`
UnitCount int `json:"unit_count"`
SourceDigest string `json:"source_digest"`
ArtifactKind contracts.ArtifactKind `json:"artifact_kind"`
MediaType string `json:"media_type"`
SchemaID string `json:"schema_id"`
SchemaName string `json:"schema_name"`
SchemaVersion string `json:"schema_version"`
SelectedLanes []string `json:"selected_lanes"`
WindowUnits int `json:"window_units"`
ContextCount int `json:"context_count"`
UnitCount int `json:"unit_count"`
SourceDigest string `json:"source_digest"`
}
// buildOutputEvidenceContext projects the prepared output policy from accepted
@@ -90,7 +94,11 @@ func buildOutputEvidenceContext(prepared *PreparedPipeline, doc *source.SourceDo
Content: content,
}
summary := debugEvidenceContextSummary{
SourceID: document.SourceID,
ArtifactKind: artifact.Kind,
MediaType: artifact.MediaType,
SchemaID: artifact.Schema.ID,
SchemaName: artifact.Schema.Name,
SchemaVersion: artifact.Schema.Version,
SelectedLanes: append([]string(nil), document.SelectedLanes...),
WindowUnits: document.WindowUnits,
ContextCount: len(document.Contexts),

View File

@@ -104,7 +104,7 @@ func TestRunnerBuildsEvidenceContextFromSelectedNormalizedOutputs(t *testing.T)
t.Fatalf("evidence refs = %#v, want both selected lanes", got)
}
debugJSON := string(debug.json["output/evidence-context.json"])
if strings.Contains(debugJSON, "text-1") || strings.Contains(debugJSON, "metadata") || !strings.Contains(debugJSON, `"context_count":1`) || !strings.Contains(debugJSON, `"unit_count":3`) {
if strings.Contains(debugJSON, "text-1") || strings.Contains(debugJSON, "metadata") || !strings.Contains(debugJSON, `"artifact_kind":"source/evidence-context"`) || !strings.Contains(debugJSON, `"schema_id":"notarius.source.evidence_context"`) || !strings.Contains(debugJSON, `"context_count":1`) || !strings.Contains(debugJSON, `"unit_count":3`) {
t.Fatalf("evidence debug envelope = %s, want only allowlisted summary", debugJSON)
}
}