From 7874a5cdfdbb4efb81687ec1267a4b26ceded3e5 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:17:14 -0400 Subject: [PATCH 01/11] schemas: add AnnotationExport --- schemas/AnnotationExport.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 schemas/AnnotationExport.json diff --git a/schemas/AnnotationExport.json b/schemas/AnnotationExport.json new file mode 100644 index 0000000..f7ce779 --- /dev/null +++ b/schemas/AnnotationExport.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:srcos:schema:AnnotationExport", + "title": "AnnotationExport", + "type": "object", + "required": ["exportId", "target", "format", "annotations"], + "properties": { + "exportId": {"type": "string"}, + "target": {"type": "string"}, + "format": {"type": "string", "enum": ["w3c-web-annotation", "rdf-jsonld"]}, + "annotations": {"type": "array", "items": {"type": "object"}}, + "exportedAt": {"type": ["string", "null"], "format": "date-time"} + }, + "additionalProperties": false +} From 2fc51d46e6005ebdec6ba1de8634db2e25f7547b Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:22:25 -0400 Subject: [PATCH 02/11] schemas: add RunReport --- schemas/RunReport.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 schemas/RunReport.json diff --git a/schemas/RunReport.json b/schemas/RunReport.json new file mode 100644 index 0000000..9f67635 --- /dev/null +++ b/schemas/RunReport.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:srcos:schema:RunReport", + "title": "RunReport", + "type": "object", + "required": ["runId", "workflowId", "artifacts", "generatedAt"], + "properties": { + "runId": {"type": "string"}, + "workflowId": {"type": "string"}, + "artifacts": {"type": "array", "items": {"type": "string"}}, + "generatedAt": {"type": "string", "format": "date-time"}, + "summary": {"type": ["string", "null"]} + }, + "additionalProperties": false +} From 8958c5b7181da17d27727464808a927c2203f679 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Sat, 18 Apr 2026 12:26:24 -0400 Subject: [PATCH 03/11] schemas: add NoetherDiagnostic --- schemas/NoetherDiagnostic.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 schemas/NoetherDiagnostic.json diff --git a/schemas/NoetherDiagnostic.json b/schemas/NoetherDiagnostic.json new file mode 100644 index 0000000..b31732a --- /dev/null +++ b/schemas/NoetherDiagnostic.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:srcos:schema:NoetherDiagnostic", + "title": "NoetherDiagnostic", + "type": "object", + "required": ["diagnosticId", "layer", "charge", "value", "measuredAt"], + "properties": { + "diagnosticId": {"type": "string"}, + "layer": {"type": "string"}, + "charge": {"type": "string"}, + "value": {"type": "number"}, + "measuredAt": {"type": "string", "format": "date-time"}, + "tolerance": {"type": ["number", "null"]}, + "pass": {"type": ["boolean", "null"]} + }, + "additionalProperties": false +} From 17b35ef3bb6c309e567ab96cdede38f5bbaad9a2 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Sat, 18 Apr 2026 19:51:45 -0400 Subject: [PATCH 04/11] schemas: add PublishDecision --- schemas/PublishDecision.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 schemas/PublishDecision.json diff --git a/schemas/PublishDecision.json b/schemas/PublishDecision.json new file mode 100644 index 0000000..d2fe1d5 --- /dev/null +++ b/schemas/PublishDecision.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:srcos:schema:PublishDecision", + "title": "PublishDecision", + "type": "object", + "required": ["decisionId", "artifactId", "knowledge", "value", "ecosystem"], + "properties": { + "decisionId": {"type": "string"}, + "artifactId": {"type": "string"}, + "knowledge": {"type": "string", "enum": ["open", "restricted", "sealed"]}, + "value": {"type": "string", "enum": ["open", "restricted", "sealed"]}, + "ecosystem": {"type": "string", "enum": ["open", "restricted", "sealed"]}, + "decidedAt": {"type": ["string", "null"], "format": "date-time"} + }, + "additionalProperties": false +} From d2898b2e28861cdfafaaf6c1e95056c989207ebd Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Sat, 18 Apr 2026 22:15:16 -0400 Subject: [PATCH 05/11] schemas: add MirrorReceipt --- schemas/MirrorReceipt.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 schemas/MirrorReceipt.json diff --git a/schemas/MirrorReceipt.json b/schemas/MirrorReceipt.json new file mode 100644 index 0000000..305a844 --- /dev/null +++ b/schemas/MirrorReceipt.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:srcos:schema:MirrorReceipt", + "title": "MirrorReceipt", + "type": "object", + "required": ["receiptId", "artifactId", "channel", "status"], + "properties": { + "receiptId": {"type": "string"}, + "artifactId": {"type": "string"}, + "channel": {"type": "string"}, + "status": {"type": "string"}, + "mirroredAt": {"type": ["string", "null"], "format": "date-time"}, + "detail": {"type": ["string", "null"]} + }, + "additionalProperties": false +} From c33b3e15643ba985ea8532c4caa1af73871f6800 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Sat, 18 Apr 2026 22:20:05 -0400 Subject: [PATCH 06/11] examples: add AnnotationExport example --- examples/annotation-export.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 examples/annotation-export.json diff --git a/examples/annotation-export.json b/examples/annotation-export.json new file mode 100644 index 0000000..9f622a7 --- /dev/null +++ b/examples/annotation-export.json @@ -0,0 +1,9 @@ +{ + "exportId": "ann-export-001", + "target": "demo-report", + "format": "w3c-web-annotation", + "annotations": [ + {"id": "ann-1", "type": "Annotation", "body": {"type": "TextualBody", "value": "needs evidence"}} + ], + "exportedAt": "2026-04-18T01:30:00Z" +} From 3650d301631db7bcd90516e7dac9adee1a480fc0 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Sat, 18 Apr 2026 22:45:33 -0400 Subject: [PATCH 07/11] examples: add RunReport example --- examples/run-report.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 examples/run-report.json diff --git a/examples/run-report.json b/examples/run-report.json new file mode 100644 index 0000000..6b37fd2 --- /dev/null +++ b/examples/run-report.json @@ -0,0 +1,7 @@ +{ + "runId": "run-001", + "workflowId": "wf-search-summarize", + "artifacts": ["demo-report", "demo-report.signed.pdf"], + "generatedAt": "2026-04-18T01:31:00Z", + "summary": "Search and summarize run completed successfully." +} From 83314c455cdd17c32901f8a3b2b49ca963afacd3 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Wed, 22 Apr 2026 00:04:27 -0400 Subject: [PATCH 08/11] examples: add NoetherDiagnostic example --- examples/noether-diagnostic.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 examples/noether-diagnostic.json diff --git a/examples/noether-diagnostic.json b/examples/noether-diagnostic.json new file mode 100644 index 0000000..ced4945 --- /dev/null +++ b/examples/noether-diagnostic.json @@ -0,0 +1,9 @@ +{ + "diagnosticId": "diag-001", + "layer": "h_block_1", + "charge": "angular_momentum", + "value": 0.998, + "measuredAt": "2026-04-18T01:32:00Z", + "tolerance": 0.01, + "pass": true +} From fb0c879ce0d0f318fef04754b70499273f432251 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Wed, 22 Apr 2026 00:05:26 -0400 Subject: [PATCH 09/11] examples: add PublishDecision example --- examples/publish-decision.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 examples/publish-decision.json diff --git a/examples/publish-decision.json b/examples/publish-decision.json new file mode 100644 index 0000000..9ac815a --- /dev/null +++ b/examples/publish-decision.json @@ -0,0 +1,8 @@ +{ + "decisionId": "pub-001", + "artifactId": "demo-report", + "knowledge": "open", + "value": "restricted", + "ecosystem": "open", + "decidedAt": "2026-04-18T01:33:00Z" +} From edf481a7e6b599b45f8f52372140272421665dff Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Wed, 22 Apr 2026 00:06:49 -0400 Subject: [PATCH 10/11] examples: add MirrorReceipt example --- examples/mirror-receipt.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 examples/mirror-receipt.json diff --git a/examples/mirror-receipt.json b/examples/mirror-receipt.json new file mode 100644 index 0000000..c5150f3 --- /dev/null +++ b/examples/mirror-receipt.json @@ -0,0 +1,8 @@ +{ + "receiptId": "mirror-001", + "artifactId": "demo-report", + "channel": "urbit", + "status": "mirrored", + "mirroredAt": "2026-04-18T01:34:00Z", + "detail": "Mirrored to ship-local Clay cache." +} From 1313db1f58b2a4b9352f143c44c412a4ac1aaf48 Mon Sep 17 00:00:00 2001 From: mdheller <21163552+mdheller@users.noreply.github.com> Date: Wed, 22 Apr 2026 00:08:48 -0400 Subject: [PATCH 11/11] docs(adr): add sourceos-shell API/event backlog note --- .../0002-sourceos-shell-api-event-backlog.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs/adr/0002-sourceos-shell-api-event-backlog.md diff --git a/docs/adr/0002-sourceos-shell-api-event-backlog.md b/docs/adr/0002-sourceos-shell-api-event-backlog.md new file mode 100644 index 0000000..d4be3e9 --- /dev/null +++ b/docs/adr/0002-sourceos-shell-api-event-backlog.md @@ -0,0 +1,24 @@ +# ADR 0002 — sourceos-shell API and event backlog + +## Status +Accepted + +## Context + +The shell/document/provenance workflow now has an initial schema cut, but downstream implementations also need a clear backlog for the API and event surfaces that should be added to OpenAPI and AsyncAPI. + +## Decision + +Queue the following surfaces for future OpenAPI/AsyncAPI additions: + +- artifact sign/validate status +- annotation export +- run-report publication +- publish decisions +- mirror receipts +- Noether diagnostic publication +- search route decisions + +## Consequences + +The schema layer can land incrementally while API/event surfaces are added in follow-on patches without re-defining the objects elsewhere.