com.publicdomainrelay.temp.tangled.spindle.trigger

johnandersen777.bsky.social

Schema Diff

+24 -17

From

CID
bafyreifwztarqgx...
Indexed At
2026-06-08 04:09 UTC
View this version

To

CID
bafyreiauklk3e6i...
Indexed At
2026-06-11 14:13 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

7 breaking changes, 7 non-breaking changes.

Breaking Changes (7)
  • RemovedVertex RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.logsUrl" }
  • RemovedVertex RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.statusUrl" }
  • RemovedVertex RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.workflow" }
  • RemovedEdge RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.logsUrl", kind: "prop", name: Some("logsUrl") }
  • RemovedEdge RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.statusUrl", kind: "prop", name: Some("statusUrl") }
  • RemovedEdge RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.workflow", kind: "prop", name: Some("workflow") }
  • KindChanged KindChanged { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", old_kind: "object", new_kind: "ref" }
Non-Breaking Changes (7)
  • AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult" }
  • AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.logsUrl" }
  • AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.statusUrl" }
  • AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.workflow" }
  • AddedEdge AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.logsUrl", kind: "prop", name: Some("logsUrl") }
  • AddedEdge AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.statusUrl", kind: "prop", name: Some("statusUrl") }
  • AddedEdge AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.workflow", kind: "prop", name: Some("workflow") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.logsUrl" }
  • RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.statusUrl" }
  • RemovedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.workflow" }

Added Elements

  • AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult" }
  • AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.logsUrl" }
  • AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.statusUrl" }
  • AddedVertex { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.workflow" }

Additional Notes

  • Breaking: RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.logsUrl", kind: "prop", name: Some("logsUrl") }
  • Breaking: RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.statusUrl", kind: "prop", name: Some("statusUrl") }
  • Breaking: RemovedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items.workflow", kind: "prop", name: Some("workflow") }
  • Breaking: KindChanged { vertex_id: "com.publicdomainrelay.temp.tangled.spindle.trigger:output.workflows:items", old_kind: "object", new_kind: "ref" }
  • Non-breaking: AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.logsUrl", kind: "prop", name: Some("logsUrl") }
  • Non-breaking: AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.statusUrl", kind: "prop", name: Some("statusUrl") }
  • Non-breaking: AddedEdge { src: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult", tgt: "com.publicdomainrelay.temp.tangled.spindle.trigger#workflowResult.workflow", kind: "prop", name: Some("workflow") }
1 1
{
2 2
  "id": "com.publicdomainrelay.temp.tangled.spindle.trigger",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 6
      "input": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "required": [
10 10
            "knot",
11 11
            "pipelineRkey",
12 12
            "actor",
13 13
            "repoDid",
14 14
            "repoName",
15 15
            "ref"
16 16
          ],
17 17
          "properties": {
18 18
            "ref": {
19 19
              "type": "string",
20 20
              "description": "Commit SHA to run at. The spindle fetches .github/workflows/*.yml at this exact commit, so it must be a real commit, not a branch name."
21 21
            },
22 22
            "knot": {
23 23
              "type": "string",
24 24
              "description": "Knot hostname that hosts the repo, e.g. knot1.tangled.sh."
25 25
            },
26 26
            "actor": {
27 27
              "type": "string",
28 28
              "format": "did",
29 29
              "description": "DID of the actor the run is attributed to. Must equal the issuer of the service-auth token."
30 30
            },
31 31
            "inputs": {
32 32
              "type": "unknown",
33 33
              "description": "Optional workflow_dispatch-style inputs, as a map of string keys to string values."
34 34
            },
35 35
            "repoDid": {
36 36
              "type": "string",
37 37
              "format": "did",
38 38
              "description": "DID of the repo (the owner DID used for sh.tangled.repo.blob lookups)."
39 39
            },
40 40
            "repoName": {
41 41
              "type": "string",
42 42
              "description": "Human-readable repo name, e.g. myrepo."
43 43
            },
44 44
            "pipelineRkey": {
45 45
              "type": "string",
46 46
              "description": "Record key identifying this pipeline run; only needs to be unique per run."
47 47
            }
48 48
          }
49 49
        },
50 50
        "encoding": "application/json"
51 51
      },
52 52
      "errors": [
53 53
        {
54 54
          "name": "InvalidRequest",
55 55
          "description": "Malformed body or missing required fields."
56 56
        },
57 57
        {
58 58
          "name": "Unauthorized",
59 59
          "description": "Missing or invalid inter-service auth token."
60 60
        },
61 61
        {
62 62
          "name": "Forbidden",
63 63
          "description": "Token issuer does not match actor, or repo is not authorized for this spindle."
64 64
        }
65 65
      ],
66 66
      "output": {
67 67
        "schema": {
68 68
          "type": "object",
69 69
          "required": [
70 70
            "submitted",
71 71
            "knot",
72 72
            "pipelineRkey",
73 73
            "ref",
74 74
            "workflows"
75 75
          ],
76 76
          "properties": {
77 77
            "ref": {
78 78
              "type": "string"
79 79
            },
80 80
            "knot": {
81 81
              "type": "string"
82 82
            },
83 83
            "submitted": {
84 84
              "type": "boolean",
85 85
              "description": "True once the trigger was accepted and workflow submission started."
86 86
            },
87 87
            "workflows": {
88 88
              "type": "array",
89 89
              "items": {
90 -
                "type": "object",
91 -
                "required": [
92 -
                  "workflow"
93 -
                ],
94 -
                "properties": {
95 -
                  "logsUrl": {
96 -
                    "type": "string",
97 -
                    "format": "uri"
98 -
                  },
99 -
                  "workflow": {
100 -
                    "type": "string"
101 -
                  },
102 -
                  "statusUrl": {
103 -
                    "type": "string",
104 -
                    "format": "uri"
105 -
                  }
106 -
                }
90 +
                "ref": "#workflowResult",
91 +
                "type": "ref"
107 92
              },
108 93
              "description": "The workflow stems that were submitted, with their log/status stream URLs."
109 94
            },
110 95
            "pipelineRkey": {
111 96
              "type": "string"
112 97
            }
113 98
          }
114 99
        },
115 100
        "encoding": "application/json"
116 101
      },
117 102
      "description": "Manually trigger a pipeline run on a Tangled spindle. Intended to be called via PDS service proxying (the 'atproto-proxy' header, pointed at the spindle's did:web service entry), so the user's PDS mints and signs the inter-service auth token; the spindle verifies the token's issuer against their DID document and requires it to match the trigger's 'actor'. Mirrors the sh.tangled.pipeline fields a knot dispatches on a push/PR event."
103 +
    },
104 +
    "workflowResult": {
105 +
      "type": "object",
106 +
      "required": [
107 +
        "workflow"
108 +
      ],
109 +
      "properties": {
110 +
        "logsUrl": {
111 +
          "type": "string",
112 +
          "format": "uri",
113 +
          "description": "URL to the log stream for this workflow run."
114 +
        },
115 +
        "workflow": {
116 +
          "type": "string",
117 +
          "description": "Workflow stem that was submitted."
118 +
        },
119 +
        "statusUrl": {
120 +
          "type": "string",
121 +
          "format": "uri",
122 +
          "description": "URL to the status stream for this workflow run."
123 +
        }
124 +
      }
118 125
    }
119 126
  },
120 127
  "$type": "com.atproto.lexicon.schema",
121 128
  "lexicon": 1
122 129
}

Compare Other Versions

Lexicon Garden

@