fix: tolerate runtime schema drift

This commit is contained in:
Yoilun
2026-05-25 18:43:46 +08:00
parent bb8b8fe732
commit 69e1af7a17
8 changed files with 313 additions and 25 deletions

View File

@@ -16,6 +16,14 @@ type Store struct {
}
func (s Store) View() (View, error) {
if s.Runtime == nil {
return View{
Events: []Event{},
HandoffEdges: []HandoffEdge{},
Phases: []Phase{},
Source: SourceEvidence{Kind: "runtime_missing", Confidence: "low", Message: "Runtime reader is not configured; returning an empty workflow view."},
}, nil
}
snapshot, err := s.Runtime.Snapshot()
if err != nil {
return View{}, err

View File

@@ -46,6 +46,19 @@ func TestStoreBuildsDynamicEventsWithoutFixedRoles(t *testing.T) {
}
}
func TestStoreNilRuntimeReturnsEmptyLowConfidenceView(t *testing.T) {
view, err := Store{WorkspaceRoot: t.TempDir()}.View()
if err != nil {
t.Fatalf("View returned error: %v", err)
}
if len(view.Events) != 0 || len(view.HandoffEdges) != 0 || len(view.Phases) != 0 {
t.Fatalf("expected empty view, got %#v", view)
}
if view.Source.Kind != "runtime_missing" || view.Source.Confidence != "low" {
t.Fatalf("unexpected source: %#v", view.Source)
}
}
type StaticRuntime struct {
SnapshotValue runtime.Snapshot
}