From f0464e9e2016687c479ffd55bf4b508b17036707 Mon Sep 17 00:00:00 2001 From: Vijay Sarvepalli Date: Wed, 9 Sep 2026 10:57:57 -0400 Subject: [PATCH 1/5] Added generatedAt field to SsvcObjectRegistry --- src/ssvc/registry/base.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ssvc/registry/base.py b/src/ssvc/registry/base.py index 1300a4e5..5e8e1e30 100644 --- a/src/ssvc/registry/base.py +++ b/src/ssvc/registry/base.py @@ -22,6 +22,7 @@ # DM24-0278 import logging +from datetime import datetime, timezone from typing import Any, ClassVar, Literal, Optional, Union import semver @@ -137,6 +138,10 @@ class _NsType(BaseModel): class SsvcObjectRegistry(_SchemaVersioned, _Base, BaseModel): _schema_version: ClassVar[str] = SCHEMA_VERSION + generatedAt: str = Field( + default_factory=lambda: datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"), + description="RFC 3339 timestamp indicating when the registry was generated.", + ) schemaVersion: Literal[SCHEMA_VERSION] = Field( ..., description="The schema version of this selection list.", From a712c67774013911fec0aeacd6f0908910627cc5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 9 Sep 2026 15:01:00 +0000 Subject: [PATCH 2/5] chore: regenerate data files via doctools --- data/json/ssvc_object_registry.json | 1 + data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/data/json/ssvc_object_registry.json b/data/json/ssvc_object_registry.json index d46fe465..169c51dc 100644 --- a/data/json/ssvc_object_registry.json +++ b/data/json/ssvc_object_registry.json @@ -2,6 +2,7 @@ "name": "SSVC Object Registry", "definition": "A registry for SSVC objects organized by type, namespace, key, and version.", "schemaVersion": "2.0.0", + "generatedAt": "2026-09-09T15:00:54.967443Z", "types": { "DecisionPoint": { "type": "DecisionPoint", diff --git a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json index 947fb94e..82148975 100644 --- a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json +++ b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json @@ -368,6 +368,11 @@ "description": "The schema version of this selection list.", "type": "string" }, + "generatedAt": { + "title": "Generatedat", + "description": "RFC 3339 timestamp indicating when the registry was generated.", + "type": "string" + }, "types": { "title": "Types", "additionalProperties": { From 64645b2d4b9a47be16f9cd6b54d1163fb91e6266 Mon Sep 17 00:00:00 2001 From: Vijay Sarvepalli Date: Wed, 9 Sep 2026 11:09:48 -0400 Subject: [PATCH 3/5] Implement model_dump_json to update generatedAt Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/ssvc/registry/base.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ssvc/registry/base.py b/src/ssvc/registry/base.py index 5e8e1e30..e670a217 100644 --- a/src/ssvc/registry/base.py +++ b/src/ssvc/registry/base.py @@ -141,7 +141,13 @@ class SsvcObjectRegistry(_SchemaVersioned, _Base, BaseModel): generatedAt: str = Field( default_factory=lambda: datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"), description="RFC 3339 timestamp indicating when the registry was generated.", + json_schema_extra={"format": "date-time"}, ) + + def model_dump_json(self, *args, **kwargs) -> str: + # Refresh at serialization time so singleton registries record actual generation time. + self.generatedAt = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z") + return super().model_dump_json(*args, **kwargs) schemaVersion: Literal[SCHEMA_VERSION] = Field( ..., description="The schema version of this selection list.", From 67965c98de70a2855fa48cf320e06897f345a5db Mon Sep 17 00:00:00 2001 From: Vijay Sarvepalli Date: Wed, 9 Sep 2026 11:09:58 -0400 Subject: [PATCH 4/5] Fix schema formatting for generatedAt field Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json index 82148975..09e89370 100644 --- a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json +++ b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json @@ -371,8 +371,9 @@ "generatedAt": { "title": "Generatedat", "description": "RFC 3339 timestamp indicating when the registry was generated.", + "format": "date-time", "type": "string" - }, + } "types": { "title": "Types", "additionalProperties": { From 5978b89e100f6132dd806e17ee99b316271cfffe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 9 Sep 2026 15:10:13 +0000 Subject: [PATCH 5/5] chore: regenerate data files via doctools --- data/json/ssvc_object_registry.json | 2 +- data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/json/ssvc_object_registry.json b/data/json/ssvc_object_registry.json index 169c51dc..9f156e2a 100644 --- a/data/json/ssvc_object_registry.json +++ b/data/json/ssvc_object_registry.json @@ -2,7 +2,7 @@ "name": "SSVC Object Registry", "definition": "A registry for SSVC objects organized by type, namespace, key, and version.", "schemaVersion": "2.0.0", - "generatedAt": "2026-09-09T15:00:54.967443Z", + "generatedAt": "2026-09-09T15:10:13.388981Z", "types": { "DecisionPoint": { "type": "DecisionPoint", diff --git a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json index 09e89370..043af392 100644 --- a/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json +++ b/data/schema/v2/SsvcObjectRegistry_2_0_0.schema.json @@ -373,7 +373,7 @@ "description": "RFC 3339 timestamp indicating when the registry was generated.", "format": "date-time", "type": "string" - } + }, "types": { "title": "Types", "additionalProperties": {