All contracts

Workspace Intelligence / JSON Schema

Workspai Workspace Verify Last Run

Defines the versioned workspace verify v1 boundary used by Workspai and its consumers.

Schema version
workspace-verify.v1
Contract path
contracts/workspace-intelligence/workspace-verify.v1.json
Publication
embedded-type, json-schema
Defined fields
68
Artifact bindings
1

Why this contract exists

Architecture role

Carries structured evidence, findings, and verdicts across governance boundaries.

Consumption boundary

  • Workspai CLI
  • CI and release automation
  • Developers

Related commands

Commands are linked only when the runtime contract identifies a direct production relationship. Supporting contracts may be consumed without having a single producer command.

Produced artifacts

These durable files are emitted by registered commands and validated against this contract.

Artifact pathSchemaProducer
.workspai/reports/workspace-verify-last-run.jsonworkspace-verify.v1
workspai workspace verify --from-impact .workspai/reports/workspace-impact-last-run.json --json

Field reference

Every declared schema property or published capability path is listed here. Required means the contract declares or publishes that field at the shown boundary.

Field pathTypeRequiredMeaningConstraints
affectedSubgraphobjectYesDefines the affectedsubgraph value at this contract boundary.additionalProperties: false
affectedSubgraph.coveredarrayYesDefines the covered value at this contract boundary.
affectedSubgraph.directlyChangedarrayYesDefines the directlychanged value at this contract boundary.
affectedSubgraph.totalProjectsintegerYesDefines the totalprojects value at this contract boundary.minimum: 0
affectedSubgraph.transitiveDependentsarrayYesDefines the transitivedependents value at this contract boundary.
affectedSubgraph.uncoveredarrayYesDefines the uncovered value at this contract boundary.
affectedSubgraph.unverifiablearrayYesDefines the unverifiable value at this contract boundary.
blockingReasonsarrayYesDefines the blockingreasons value at this contract boundary.
freshnessobjectYesDefines the freshness value at this contract boundary.additionalProperties: false
freshness.addedarrayYesDefines the added value at this contract boundary.
freshness.baselineenumYesDefines the baseline value at this contract boundary.enum: none, recorded
freshness.changedarrayYesDefines the changed value at this contract boundary.
freshness.projectHashesobjectYesDefines the projecthashes value at this contract boundary.
freshness.removedarrayYesDefines the removed value at this contract boundary.
freshness.verdictenumYesDefines the verdict value at this contract boundary.enum: fresh, stale, unknown
fromImpactRefstringNoDefines the fromimpactref value at this contract boundary.
generatedAtstringYesDefines the generatedat value at this contract boundary.format: date-time
graphIntegrityobjectYesDefines the graphintegrity value at this contract boundary.additionalProperties: false
graphIntegrity.cyclesarrayYesDefines the cycles value at this contract boundary.
graphIntegrity.danglingEdgesarrayYesDefines the danglingedges value at this contract boundary.
graphIntegrity.danglingEdges[].fromstringYesDefines the from value at this contract boundary.
graphIntegrity.danglingEdges[].kindstringYesDefines the kind value at this contract boundary.
graphIntegrity.danglingEdges[].missingenumYesDefines the missing value at this contract boundary.enum: from, to, both
graphIntegrity.danglingEdges[].tostringYesDefines the to value at this contract boundary.
graphIntegrity.okbooleanYesDefines the ok value at this contract boundary.
graphIntegrity.orphansarrayYesDefines the orphans value at this contract boundary.
graphIntegrity.statsobjectYesDefines the stats value at this contract boundary.additionalProperties: false
graphIntegrity.stats.cycleCountintegerYesDefines the cyclecount value at this contract boundary.minimum: 0
graphIntegrity.stats.danglingCountintegerYesDefines the danglingcount value at this contract boundary.minimum: 0
graphIntegrity.stats.edgeCountintegerYesDefines the edgecount value at this contract boundary.minimum: 0
graphIntegrity.stats.nodeCountintegerYesDefines the nodecount value at this contract boundary.minimum: 0
graphIntegrity.stats.orphanCountintegerYesDefines the orphancount value at this contract boundary.minimum: 0
impactobjectYesDefines the impact value at this contract boundary.additionalProperties: false
impact.affectedProjectsintegerYesDefines the affectedprojects value at this contract boundary.minimum: 0
impact.changedbooleanYesDefines the changed value at this contract boundary.
impact.recommendedCommandsintegerYesDefines the recommendedcommands value at this contract boundary.minimum: 0
impact.riskenumYesDefines the risk value at this contract boundary.enum: none, low, medium, high, critical
missingEvidencearrayYesDefines the missingevidence value at this contract boundary.
modestringYesDefines the mode value at this contract boundary.const: "evidence"
policyModestringYesDefines the policymode value at this contract boundary.
policyViolationsarrayYesDefines the policyviolations value at this contract boundary.
policyViolations[].codestringYesDefines the code value at this contract boundary.
policyViolations[].messagestringYesDefines the message value at this contract boundary.
policyViolations[].severityenumYesDefines the severity value at this contract boundary.enum: error, warning
policyViolations[].sourceenumYesDefines the source value at this contract boundary.enum: model, contract
policyViolations[].targetstringNoDefines the target value at this contract boundary.
schemaVersionstringYesDefines the schemaversion value at this contract boundary.const: "workspace-verify.v1"
scopestringNoDefines the scope value at this contract boundary.
stepsarrayYesDefines the steps value at this contract boundary.
steps[].commandobjectYesDefines the command value at this contract boundary.additionalProperties: true
steps[].evidencePathstringNoDefines the evidencepath value at this contract boundary.
steps[].idstringYesDefines the id value at this contract boundary.
steps[].labelstringYesDefines the label value at this contract boundary.
steps[].messagestringYesDefines the message value at this contract boundary.
steps[].projectstringNoDefines the project value at this contract boundary.
steps[].requiredbooleanYesDefines the required value at this contract boundary.
steps[].scopeenumYesDefines the scope value at this contract boundary.enum: workspace, project
steps[].statusenumYesDefines the status value at this contract boundary.enum: pass, warn, fail, missing, skipped
summaryobjectYesDefines the summary value at this contract boundary.additionalProperties: false
summary.exitCodeenumYesDefines the exitcode value at this contract boundary.enum: 0, 1, 2
summary.stepsFailedintegerYesDefines the stepsfailed value at this contract boundary.minimum: 0
summary.stepsMissingintegerYesDefines the stepsmissing value at this contract boundary.minimum: 0
summary.stepsPassedintegerYesDefines the stepspassed value at this contract boundary.minimum: 0
summary.stepsSkippedintegerYesDefines the stepsskipped value at this contract boundary.minimum: 0
summary.stepsWarnintegerYesDefines the stepswarn value at this contract boundary.minimum: 0
summary.verdictenumYesDefines the verdict value at this contract boundary.enum: ready, needs-attention, blocked
verificationPlanarrayYesDefines the verificationplan value at this contract boundary.
workspacePathstringYesDefines the workspacepath value at this contract boundary.minLength: 1

Canonical machine-readable definition

The raw synchronized contract remains authoritative. The educational sections above are projections of this definition.

Show raw JSON
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getrapidkit.com/schemas/workspace-verify.v1.json",
  "title": "Workspai Workspace Verify Last Run",
  "type": "object",
  "required": [
    "schemaVersion",
    "generatedAt",
    "workspacePath",
    "mode",
    "impact",
    "summary",
    "steps",
    "missingEvidence",
    "blockingReasons",
    "verificationPlan",
    "affectedSubgraph",
    "graphIntegrity",
    "freshness",
    "policyMode",
    "policyViolations"
  ],
  "properties": {
    "schemaVersion": {
      "const": "workspace-verify.v1"
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "workspacePath": {
      "type": "string",
      "minLength": 1
    },
    "mode": {
      "const": "evidence"
    },
    "fromImpactRef": {
      "type": "string"
    },
    "scope": {
      "type": "string"
    },
    "impact": {
      "type": "object",
      "required": [
        "changed",
        "risk",
        "affectedProjects",
        "recommendedCommands"
      ],
      "properties": {
        "changed": {
          "type": "boolean"
        },
        "risk": {
          "enum": [
            "none",
            "low",
            "medium",
            "high",
            "critical"
          ]
        },
        "affectedProjects": {
          "type": "integer",
          "minimum": 0
        },
        "recommendedCommands": {
          "type": "integer",
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    "summary": {
      "type": "object",
      "required": [
        "verdict",
        "exitCode",
        "stepsPassed",
        "stepsWarn",
        "stepsFailed",
        "stepsMissing",
        "stepsSkipped"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "ready",
            "needs-attention",
            "blocked"
          ]
        },
        "exitCode": {
          "enum": [
            0,
            1,
            2
          ]
        },
        "stepsPassed": {
          "type": "integer",
          "minimum": 0
        },
        "stepsWarn": {
          "type": "integer",
          "minimum": 0
        },
        "stepsFailed": {
          "type": "integer",
          "minimum": 0
        },
        "stepsMissing": {
          "type": "integer",
          "minimum": 0
        },
        "stepsSkipped": {
          "type": "integer",
          "minimum": 0
        }
      },
      "additionalProperties": false
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "scope",
          "command",
          "status",
          "required",
          "message"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "scope": {
            "enum": [
              "workspace",
              "project"
            ]
          },
          "project": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "warn",
              "fail",
              "missing",
              "skipped"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "evidencePath": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "command": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      }
    },
    "missingEvidence": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "blockingReasons": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "verificationPlan": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "affectedSubgraph": {
      "type": "object",
      "required": [
        "totalProjects",
        "directlyChanged",
        "transitiveDependents",
        "covered",
        "uncovered",
        "unverifiable"
      ],
      "properties": {
        "totalProjects": {
          "type": "integer",
          "minimum": 0
        },
        "directlyChanged": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "transitiveDependents": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "covered": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "uncovered": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "unverifiable": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "graphIntegrity": {
      "type": "object",
      "required": [
        "ok",
        "cycles",
        "danglingEdges",
        "orphans",
        "stats"
      ],
      "properties": {
        "ok": {
          "type": "boolean"
        },
        "cycles": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "danglingEdges": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "from",
              "to",
              "kind",
              "missing"
            ],
            "properties": {
              "from": {
                "type": "string"
              },
              "to": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              },
              "missing": {
                "enum": [
                  "from",
                  "to",
                  "both"
                ]
              }
            },
            "additionalProperties": true
          }
        },
        "orphans": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "stats": {
          "type": "object",
          "required": [
            "nodeCount",
            "edgeCount",
            "cycleCount",
            "danglingCount",
            "orphanCount"
          ],
          "properties": {
            "nodeCount": {
              "type": "integer",
              "minimum": 0
            },
            "edgeCount": {
              "type": "integer",
              "minimum": 0
            },
            "cycleCount": {
              "type": "integer",
              "minimum": 0
            },
            "danglingCount": {
              "type": "integer",
              "minimum": 0
            },
            "orphanCount": {
              "type": "integer",
              "minimum": 0
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "freshness": {
      "type": "object",
      "required": [
        "verdict",
        "baseline",
        "changed",
        "added",
        "removed",
        "projectHashes"
      ],
      "properties": {
        "verdict": {
          "enum": [
            "fresh",
            "stale",
            "unknown"
          ]
        },
        "baseline": {
          "enum": [
            "none",
            "recorded"
          ]
        },
        "changed": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "added": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "removed": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "projectHashes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "policyMode": {
      "type": "string"
    },
    "policyViolations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "source",
          "severity",
          "code",
          "message"
        ],
        "properties": {
          "source": {
            "enum": [
              "model",
              "contract"
            ]
          },
          "severity": {
            "enum": [
              "error",
              "warning"
            ]
          },
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "target": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": true
}