Workspace Intelligence / JSON Schema
Workspai Doctor Receipt
Defines the versioned doctor receipt v1 boundary used by Workspai and its consumers.
- Schema version
workspai.doctor-receipt.v1- Contract path
contracts/workspace-intelligence/doctor-receipt.v1.json- Publication
- json-schema
- Defined fields
- 57
- 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 path | Schema | Producer |
|---|---|---|
| .workspai/reports/doctor-receipt-last-run.json | workspai.doctor-receipt.v1 | workspai doctor workspace workspai doctor project |
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 path | Type | Required | Meaning | Constraints |
|---|---|---|---|---|
| $defs.counts.advisoryFindings | integer | Yes | Defines the advisoryfindings value at this contract boundary. | minimum: 0 |
| $defs.counts.affectedProjects | integer | Yes | Defines the affectedprojects value at this contract boundary. | minimum: 0 |
| $defs.counts.blockingCauses | integer | Yes | Defines the blockingcauses value at this contract boundary. | minimum: 0 |
| $defs.counts.contradictionFindings | integer | Yes | Defines the contradictionfindings value at this contract boundary. | minimum: 0 |
| $defs.counts.dependencyAdvisorySubjects | integer | Yes | Defines the dependencyadvisorysubjects value at this contract boundary. | minimum: 0 |
| $defs.counts.dependencyVulnerabilityFindings | integer | Yes | Defines the dependencyvulnerabilityfindings value at this contract boundary. | minimum: 0 |
| $defs.counts.manualFindings | integer | Yes | Defines the manualfindings value at this contract boundary. | minimum: 0 |
| $defs.counts.notApplicableChecks | integer | Yes | Defines the notapplicablechecks value at this contract boundary. | minimum: 0 |
| $defs.counts.projectsBlocked | integer | Yes | Defines the projectsblocked value at this contract boundary. | minimum: 0 |
| $defs.counts.projectsNeedingAttention | integer | Yes | Defines the projectsneedingattention value at this contract boundary. | minimum: 0 |
| $defs.counts.projectsScanned | integer | Yes | Defines the projectsscanned value at this contract boundary. | minimum: 0 |
| $defs.counts.repairableFindings | integer | Yes | Defines the repairablefindings value at this contract boundary. | minimum: 0 |
| $defs.counts.systemErrors | integer | Yes | Defines the systemerrors value at this contract boundary. | minimum: 0 |
| $defs.counts.unknownFindings | integer | Yes | Defines the unknownfindings value at this contract boundary. | minimum: 0 |
| $defs.counts.unsupportedFindings | integer | Yes | Defines the unsupportedfindings value at this contract boundary. | minimum: 0 |
| $defs.freshness.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.freshness.liveStateProbeCount | integer | Yes | Defines the livestateprobecount value at this contract boundary. | minimum: 0 |
| $defs.freshness.oldestProbeGeneratedAt | string | No | Defines the oldestprobegeneratedat value at this contract boundary. | format: date-time |
| $defs.freshness.staleProbeCount | integer | Yes | Defines the staleprobecount value at this contract boundary. | minimum: 0 |
| $defs.freshness.status | enum | Yes | Defines the status value at this contract boundary. | enum: fresh, stale, unknown |
| $defs.freshness.unknownProbeCount | integer | Yes | Defines the unknownprobecount value at this contract boundary. | minimum: 0 |
| $defs.freshness.verifyBeforeUseProbeCount | integer | Yes | Defines the verifybeforeuseprobecount value at this contract boundary. | minimum: 0 |
| affectedProjects | array | Yes | Defines the affectedprojects value at this contract boundary. | — |
| affectedProjects[].advisoryFindings | integer | Yes | Defines the advisoryfindings value at this contract boundary. | minimum: 0 |
| affectedProjects[].blockingCauses | integer | Yes | Defines the blockingcauses value at this contract boundary. | minimum: 0 |
| affectedProjects[].framework | string | No | Defines the framework value at this contract boundary. | — |
| affectedProjects[].name | string | Yes | Defines the name value at this contract boundary. | — |
| affectedProjects[].path | string | Yes | Defines the path value at this contract boundary. | — |
| affectedProjects[].runtimeFamily | string | Yes | Defines the runtimefamily value at this contract boundary. | — |
| affectedProjects[].unknownFindings | integer | Yes | Defines the unknownfindings value at this contract boundary. | minimum: 0 |
| affectedProjects[].verdict | enum | Yes | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
| artifacts | object | Yes | Defines the artifacts value at this contract boundary. | additionalProperties: false |
| artifacts.evidence | string | null | Yes | Defines the evidence value at this contract boundary. | — |
| artifacts.receipt | string | Yes | Defines the receipt value at this contract boundary. | — |
| blockers | array | Yes | Defines the blockers value at this contract boundary. | — |
| blockers[].capabilityId | string | No | Defines the capabilityid value at this contract boundary. | — |
| blockers[].id | string | Yes | Defines the id value at this contract boundary. | — |
| blockers[].issueClass | string | Yes | Defines the issueclass value at this contract boundary. | — |
| blockers[].projectName | string | Yes | Defines the projectname value at this contract boundary. | — |
| blockers[].projectPath | string | Yes | Defines the projectpath value at this contract boundary. | — |
| blockers[].repairDisposition | enum | Yes | Defines the repairdisposition value at this contract boundary. | enum: automatic, approval-required, manual, unavailable, not-needed |
| blockers[].symptom | string | Yes | Defines the symptom value at this contract boundary. | — |
| counts | reference | Yes | Defines the counts value at this contract boundary. | ref: #/$defs/counts |
| freshness | reference | Yes | Defines the freshness value at this contract boundary. | ref: #/$defs/freshness |
| generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| next | object | Yes | Defines the next value at this contract boundary. | additionalProperties: false |
| next.action | enum | Yes | Defines the action value at this contract boundary. | enum: repair, review, refresh, verify, none |
| next.commands | array | Yes | Defines the commands value at this contract boundary. | — |
| next.reason | string | Yes | Defines the reason value at this contract boundary. | — |
| schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "workspai.doctor-receipt.v1" |
| scope | object | Yes | Defines the scope value at this contract boundary. | additionalProperties: false |
| scope.kind | enum | Yes | Defines the kind value at this contract boundary. | enum: workspace, project |
| scope.name | string | Yes | Defines the name value at this contract boundary. | minLength: 1 |
| scope.projectPath | string | null | No | Defines the projectpath value at this contract boundary. | — |
| scope.root | string | Yes | Defines the root value at this contract boundary. | minLength: 1 |
| scope.workspacePath | string | null | No | Defines the workspacepath value at this contract boundary. | — |
| verdict | enum | Yes | Defines the verdict value at this contract boundary. | enum: passed, attention, blocked |
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://workspai.dev/schemas/workspace-intelligence/doctor-receipt.v1.json",
"title": "Workspai Doctor Receipt",
"type": "object",
"required": [
"schemaVersion",
"generatedAt",
"scope",
"verdict",
"counts",
"freshness",
"affectedProjects",
"blockers",
"next",
"artifacts"
],
"properties": {
"schemaVersion": {
"const": "workspai.doctor-receipt.v1"
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"scope": {
"type": "object",
"required": [
"kind",
"root",
"name"
],
"properties": {
"kind": {
"enum": [
"workspace",
"project"
]
},
"root": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"workspacePath": {
"type": [
"string",
"null"
]
},
"projectPath": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
},
"counts": {
"$ref": "#/$defs/counts"
},
"freshness": {
"$ref": "#/$defs/freshness"
},
"affectedProjects": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"path",
"runtimeFamily",
"verdict",
"blockingCauses",
"advisoryFindings",
"unknownFindings"
],
"properties": {
"name": {
"type": "string"
},
"path": {
"type": "string"
},
"runtimeFamily": {
"type": "string"
},
"framework": {
"type": "string"
},
"verdict": {
"enum": [
"passed",
"attention",
"blocked"
]
},
"blockingCauses": {
"type": "integer",
"minimum": 0
},
"advisoryFindings": {
"type": "integer",
"minimum": 0
},
"unknownFindings": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}
},
"blockers": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"projectName",
"projectPath",
"issueClass",
"symptom",
"repairDisposition"
],
"properties": {
"id": {
"type": "string"
},
"projectName": {
"type": "string"
},
"projectPath": {
"type": "string"
},
"issueClass": {
"type": "string"
},
"symptom": {
"type": "string"
},
"repairDisposition": {
"enum": [
"automatic",
"approval-required",
"manual",
"unavailable",
"not-needed"
]
},
"capabilityId": {
"type": "string"
}
},
"additionalProperties": false
}
},
"next": {
"type": "object",
"required": [
"action",
"reason",
"commands"
],
"properties": {
"action": {
"enum": [
"repair",
"review",
"refresh",
"verify",
"none"
]
},
"reason": {
"type": "string"
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"artifacts": {
"type": "object",
"required": [
"evidence",
"receipt"
],
"properties": {
"evidence": {
"type": [
"string",
"null"
]
},
"receipt": {
"type": "string"
}
},
"additionalProperties": false
}
},
"$defs": {
"counts": {
"type": "object",
"required": [
"projectsScanned",
"affectedProjects",
"projectsBlocked",
"projectsNeedingAttention",
"blockingCauses",
"advisoryFindings",
"unknownFindings",
"contradictionFindings",
"repairableFindings",
"manualFindings",
"unsupportedFindings",
"dependencyAdvisorySubjects",
"dependencyVulnerabilityFindings",
"notApplicableChecks",
"systemErrors"
],
"properties": {
"projectsScanned": {
"type": "integer",
"minimum": 0
},
"affectedProjects": {
"type": "integer",
"minimum": 0
},
"projectsBlocked": {
"type": "integer",
"minimum": 0
},
"projectsNeedingAttention": {
"type": "integer",
"minimum": 0
},
"blockingCauses": {
"type": "integer",
"minimum": 0
},
"advisoryFindings": {
"type": "integer",
"minimum": 0
},
"unknownFindings": {
"type": "integer",
"minimum": 0
},
"contradictionFindings": {
"type": "integer",
"minimum": 0
},
"repairableFindings": {
"type": "integer",
"minimum": 0
},
"manualFindings": {
"type": "integer",
"minimum": 0
},
"unsupportedFindings": {
"type": "integer",
"minimum": 0
},
"dependencyAdvisorySubjects": {
"type": "integer",
"minimum": 0
},
"dependencyVulnerabilityFindings": {
"type": "integer",
"minimum": 0
},
"notApplicableChecks": {
"type": "integer",
"minimum": 0
},
"systemErrors": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"freshness": {
"type": "object",
"required": [
"generatedAt",
"status",
"staleProbeCount",
"unknownProbeCount",
"liveStateProbeCount",
"verifyBeforeUseProbeCount"
],
"properties": {
"generatedAt": {
"type": "string",
"format": "date-time"
},
"status": {
"enum": [
"fresh",
"stale",
"unknown"
]
},
"staleProbeCount": {
"type": "integer",
"minimum": 0
},
"unknownProbeCount": {
"type": "integer",
"minimum": 0
},
"liveStateProbeCount": {
"type": "integer",
"minimum": 0
},
"verifyBeforeUseProbeCount": {
"type": "integer",
"minimum": 0
},
"oldestProbeGeneratedAt": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}