#12: All 5 untranslated SpeckDL patterns now emit valid JS: - notIn → !.has(), old() → drop, union → Set spread, set diff → filter, append() → [...X, Y], length() → .length - ==/!= operator replacement fixed (word-boundary regression) - Postcondition object comparisons get @ts-expect-error TS2839 #11: Generator auto-detects opaque identifier types used in state variables and action params, emits 'type X = any' before class. - State properties use ! (non-null assertion) for strict mode TigerBeetleLedger → tsc --noEmit = 0 errors. 37/37 tests pass.
113 lines
No EOL
2.5 KiB
JSON
113 lines
No EOL
2.5 KiB
JSON
{
|
|
"@context": [
|
|
"https://spdx.github.io/spdx-v3/spdx-context.jsonld",
|
|
{
|
|
"speckl": "https://speckl.scoble.me/ns/v0.2#"
|
|
}
|
|
],
|
|
"@type": "spdx:Document",
|
|
"spdx": {
|
|
"@id": "spdx:RetryHandler",
|
|
"@type": "spdx:Snippet",
|
|
"name": "RetryHandler",
|
|
"spdxVersion": "3.0.1",
|
|
"dataLicense": "CC0-1.0",
|
|
"creationInfo": {
|
|
"created": "2026-05-11T17:13:39.551Z",
|
|
"createdBy": [
|
|
"Organization: Speckl",
|
|
"tool: speckl-compile-0.2.0"
|
|
]
|
|
},
|
|
"annotations": [
|
|
{
|
|
"@type": "spdx:Annotation",
|
|
"annotationType": "spdx:REVIEW",
|
|
"annotator": {
|
|
"@type": "spdx:Tool",
|
|
"name": "speckl-compile"
|
|
},
|
|
"timestamp": "2026-05-11T17:13:39.551Z",
|
|
"comment": "Review type: manual"
|
|
}
|
|
]
|
|
},
|
|
"builtBy": [],
|
|
"relationships": [
|
|
{
|
|
"from": {
|
|
"@id": "spdx:RetryHandler"
|
|
},
|
|
"to": {
|
|
"@id": "spdx:speck:FaultHandler"
|
|
},
|
|
"relationshipType": "spdx:derivesFrom"
|
|
},
|
|
{
|
|
"from": {
|
|
"@id": "spdx:RetryHandler"
|
|
},
|
|
"to": {
|
|
"@id": "spdx:requirement:RESILIENCE-REQ-01"
|
|
},
|
|
"relationshipType": "speckl:satisfies",
|
|
"additionalProperties": [
|
|
{
|
|
"name": "speckl:clause",
|
|
"value": "3.1.2"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"from": {
|
|
"@id": "spdx:RetryHandler"
|
|
},
|
|
"to": {
|
|
"@id": "spdx:requirement:RESILIENCE-REQ-02"
|
|
},
|
|
"relationshipType": "speckl:satisfies"
|
|
},
|
|
{
|
|
"from": {
|
|
"@id": "spdx:RetryHandler"
|
|
},
|
|
"to": {
|
|
"@id": "spdx:agent:Scott Scoble"
|
|
},
|
|
"relationshipType": "spdx:wasAttributedTo"
|
|
},
|
|
{
|
|
"from": {
|
|
"@id": "spdx:RetryHandler"
|
|
},
|
|
"to": {
|
|
"@id": "spdx:source:architecture_review:AR-2024-0215"
|
|
},
|
|
"relationshipType": "spdx:wasInformedBy"
|
|
}
|
|
],
|
|
"elements": [
|
|
{
|
|
"@type": "spdx:Requirement",
|
|
"@id": "spdx:requirement:RESILIENCE-REQ-01",
|
|
"name": "RESILIENCE-REQ-01"
|
|
},
|
|
{
|
|
"@type": "spdx:Requirement",
|
|
"@id": "spdx:requirement:RESILIENCE-REQ-02",
|
|
"name": "RESILIENCE-REQ-02"
|
|
},
|
|
{
|
|
"@type": "spdx:Person",
|
|
"@id": "spdx:agent:Scott Scoble",
|
|
"name": "Scott Scoble",
|
|
"email": "scott@scoble.me"
|
|
},
|
|
{
|
|
"@type": "spdx:Activity",
|
|
"@id": "spdx:source:architecture_review:AR-2024-0215",
|
|
"name": "architecture_review - AR-2024-0215",
|
|
"type": "architecture_review"
|
|
}
|
|
]
|
|
} |