- New generator: compiler/src/generators/z3.ts (1,034 lines) - Translates SpeckDL state → Z3 sort declarations - Translates invariants → Z3 define-fun returning Bool - Translates actions → Z3 transition predicates (enabled + step) - BMC unrolling with --verify-depth=N (default: 10) - CLI: --target=z3 or --target=all - ToggleSwitch and TigerBeetleLedger generate valid SMT-LIB2 - KafkaKRaft spec generates valid SMT-LIB2 structure - Complex forall/set expressions emit 'true' as placeholders (to be improved) - All 41 existing tests still pass This unblocks M1.2 (KRaft verification), M3.2 (Show HN), and M4.3 (OAuth verification).
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-10T05:28:00.668Z",
|
|
"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-10T05:28:00.669Z",
|
|
"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"
|
|
}
|
|
]
|
|
} |