Require explicit manifest schemas
This commit is contained in:
@@ -178,10 +178,11 @@ func TestValidateAnalyzeArtifactCollectionRejectsMalformedState(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalyzeStateOwnershipAndLegacyCompatibility(t *testing.T) {
|
||||
func TestAnalyzeStageRequiresCurrentPerArtifactAuthority(t *testing.T) {
|
||||
now := time.Date(2026, 5, 3, 10, 0, 0, 0, time.UTC)
|
||||
store := &LocalStore{}
|
||||
legacy := `{
|
||||
aggregateOnly := `{
|
||||
"schema_version": "narratio.session-manifest.v1",
|
||||
"session_id": "session",
|
||||
"created_at": "2026-05-03T10:00:00Z",
|
||||
"updated_at": "2026-05-03T10:01:00Z",
|
||||
@@ -195,23 +196,8 @@ func TestAnalyzeStateOwnershipAndLegacyCompatibility(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}`
|
||||
loaded, err := store.LoadReader(context.Background(), strings.NewReader(legacy))
|
||||
if err != nil {
|
||||
t.Fatalf("LoadReader(legacy) error = %v", err)
|
||||
}
|
||||
if loaded.Stages["analyze"].HasVersionedAnalyzeState() {
|
||||
t.Fatal("legacy aggregate outputs became current per-artifact evidence")
|
||||
}
|
||||
path := filepath.Join(t.TempDir(), "legacy.json")
|
||||
if err := store.Save(context.Background(), path, loaded); err != nil {
|
||||
t.Fatalf("Save(legacy) error = %v", err)
|
||||
}
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatalf("ReadFile(legacy) error = %v", err)
|
||||
}
|
||||
if bytes.Contains(data, []byte("analyze_state_version")) || bytes.Contains(data, []byte("analyze_artifacts")) || bytes.Contains(data, []byte("fingerprint")) {
|
||||
t.Fatalf("legacy state gained fabricated evidence:\n%s", data)
|
||||
if _, err := store.LoadReader(context.Background(), strings.NewReader(aggregateOnly)); err == nil || !strings.Contains(err.Error(), "unsupported analyze state version 0") {
|
||||
t.Fatalf("LoadReader(aggregate-only) error = %v", err)
|
||||
}
|
||||
|
||||
empty := New("session", now)
|
||||
@@ -244,7 +230,7 @@ func TestAnalyzeStateOwnershipAndLegacyCompatibility(t *testing.T) {
|
||||
Name: "analyze", Status: StatusSucceeded, CreatedAt: now, UpdatedAt: now,
|
||||
AnalyzeArtifacts: map[string]AnalyzeArtifactRecord{},
|
||||
}}
|
||||
if err := store.Save(context.Background(), filepath.Join(t.TempDir(), "missing-version.json"), m); err == nil || !strings.Contains(err.Error(), "without a state version") {
|
||||
if err := store.Save(context.Background(), filepath.Join(t.TempDir(), "missing-version.json"), m); err == nil || !strings.Contains(err.Error(), "unsupported analyze state version 0") {
|
||||
t.Fatalf("missing version error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user