All contracts

Workspace operations / Capability contract

Workspace Repair Capabilities V1

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

Schema version
workspai.workspace-repair-capabilities.v1
Contract path
contracts/workspace-repair-capabilities.v1.json
Publication
capability-contract
Defined fields
100
Artifact bindings
0

Why this contract exists

Architecture role

Defines a versioned interoperability boundary used by Workspai and contract-aware consumers.

Consumption boundary

  • Workspai CLI
  • Workspace Intelligence consumers
  • IDEs and agents

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.

This is a supporting, capability, cache, compatibility, or consumer contract. It has no single direct producer command in the canonical Workspace Intelligence execution registry.

Produced artifacts

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

No canonical file artifact is registered for this contract. It may describe capabilities, embedded data, runtime exchange, or supporting state instead of a standalone report.

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
adaptersarrayYesPublished adapters capability data.
adapters[]objectYesPublished adapters[] capability data.
adapters[].ecosystemstringYesPublished ecosystem capability data.
adapters[].idstringYesPublished id capability data.
adapters[].limitationstringYesPublished limitation capability data.
adapters[].lockfilesarrayYesPublished lockfiles capability data.
adapters[].lockfiles[]stringYesPublished lockfiles[] capability data.
adapters[].manifestsarrayYesPublished manifests capability data.
adapters[].manifests[]stringYesPublished manifests[] capability data.
adapters[].packageManagersarrayYesPublished packagemanagers capability data.
adapters[].packageManagers[]stringYesPublished packagemanagers[] capability data.
adapters[].requiredToolFamiliesarrayYesPublished requiredtoolfamilies capability data.
adapters[].requiredToolFamilies[]stringYesPublished requiredtoolfamilies[] capability data.
adapters[].stagesobjectYesPublished stages capability data.
adapters[].stages.auditstringYesPublished audit capability data.
adapters[].stages.buildstringYesPublished build capability data.
adapters[].stages.reconcilestringYesPublished reconcile capability data.
adapters[].stages.teststringYesPublished test capability data.
adapters[].supportstringYesPublished support capability data.
consumerProtocolobjectYesPublished consumerprotocol capability data.
consumerProtocol.capabilityProbeobjectYesPublished capabilityprobe capability data.
consumerProtocol.capabilityProbe.argsarrayYesPublished args capability data.
consumerProtocol.capabilityProbe.args[]stringYesPublished args[] capability data.
consumerProtocol.capabilityProbe.schemaVersionstringYesPublished schemaversion capability data.
consumerProtocol.contractsobjectYesPublished contracts capability data.
consumerProtocol.contracts.operationResultstringYesPublished operationresult capability data.
consumerProtocol.contracts.proposalstringYesPublished proposal capability data.
consumerProtocol.contracts.transactionstringYesPublished transaction capability data.
consumerProtocol.invocationobjectYesPublished invocation capability data.
consumerProtocol.invocation.actionsarrayYesPublished actions capability data.
consumerProtocol.invocation.actions[]stringYesPublished actions[] capability data.
consumerProtocol.invocation.commandstringYesPublished command capability data.
consumerProtocol.invocation.workspaceResolutionarrayYesPublished workspaceresolution capability data.
consumerProtocol.invocation.workspaceResolution[]stringYesPublished workspaceresolution[] capability data.
consumerProtocol.protocolVersionstringYesPublished protocolversion capability data.
consumerProtocol.transientPathsarrayYesPublished transientpaths capability data.
consumerProtocol.transientPaths[]stringYesPublished transientpaths[] capability data.
consumerProtocol.versionProbeobjectYesPublished versionprobe capability data.
consumerProtocol.versionProbe.argsarrayYesPublished args capability data.
consumerProtocol.versionProbe.args[]stringYesPublished args[] capability data.
consumerProtocol.versionProbe.schemaVersionstringYesPublished schemaversion capability data.
invariantsobjectYesPublished invariants capability data.
invariants.approvalBoundToPlanHashbooleanYesPublished approvalboundtoplanhash capability data.
invariants.canonicalVerificationRequiredbooleanYesPublished canonicalverificationrequired capability data.
invariants.changeReceiptstringYesPublished changereceipt capability data.
invariants.completionAuthoritystringYesPublished completionauthority capability data.
invariants.consumerHandshakeRequiredbooleanYesPublished consumerhandshakerequired capability data.
invariants.consumerTimelinestringYesPublished consumertimeline capability data.
invariants.ephemeralProposalsAreEvidencebooleanYesPublished ephemeralproposalsareevidence capability data.
invariants.goalAttemptBudgetstringYesPublished goalattemptbudget capability data.
invariants.goalSourceTransitionstringYesPublished goalsourcetransition capability data.
invariants.missingToolResumeBoundarystringYesPublished missingtoolresumeboundary capability data.
invariants.missingToolsstringYesPublished missingtools capability data.
invariants.missingToolSameGenerationRetrybooleanYesPublished missingtoolsamegenerationretry capability data.
invariants.multiAdapterProjectsbooleanYesPublished multiadapterprojects capability data.
invariants.mutationAuthoritystringYesPublished mutationauthority capability data.
invariants.plannerExecutorAvailabilityProbestringYesPublished plannerexecutoravailabilityprobe capability data.
invariants.registeredLinkedProjectMutationBoundarybooleanYesPublished registeredlinkedprojectmutationboundary capability data.
invariants.rollbackConflictDetectionbooleanYesPublished rollbackconflictdetection capability data.
invariants.setupInstallsHostRuntimesbooleanYesPublished setupinstallshostruntimes capability data.
invariants.silentFallbackToModelExecutionbooleanYesPublished silentfallbacktomodelexecution capability data.
invariants.sourceProposalIntegritystringYesPublished sourceproposalintegrity capability data.
invariants.targetClosurestringYesPublished targetclosure capability data.
invariants.typedDecisionCausesbooleanYesPublished typeddecisioncauses capability data.
invariants.unsupportedEcosystemsstringYesPublished unsupportedecosystems capability data.
ownerstringYesPublished owner capability data.
qualificationMatrixobjectYesPublished qualificationmatrix capability data.
qualificationMatrix.dimensionsobjectYesPublished dimensions capability data.
qualificationMatrix.dimensions.adaptersarrayYesPublished adapters capability data.
qualificationMatrix.dimensions.adapters[]stringYesPublished adapters[] capability data.
qualificationMatrix.dimensions.failureFamiliesarrayYesPublished failurefamilies capability data.
qualificationMatrix.dimensions.failureFamilies[]stringYesPublished failurefamilies[] capability data.
qualificationMatrix.dimensions.failureRecoveryPolicyobjectYesPublished failurerecoverypolicy capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.interrupted-rollbackstringYesPublished interrupted rollback capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.missing-artifactstringYesPublished missing artifact capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.missing-toolstringYesPublished missing tool capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.no-op-proposalstringYesPublished no op proposal capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.producer-failurestringYesPublished producer failure capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.provider-outagestringYesPublished provider outage capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.source-driftstringYesPublished source drift capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.stale-evidencestringYesPublished stale evidence capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.unsupported-runtimestringYesPublished unsupported runtime capability data.
qualificationMatrix.dimensions.failureRecoveryPolicy.validation-failurestringYesPublished validation failure capability data.
qualificationMatrix.dimensions.recoveryPathsarrayYesPublished recoverypaths capability data.
qualificationMatrix.dimensions.recoveryPaths[]stringYesPublished recoverypaths[] capability data.
qualificationMatrix.dimensions.scopesarrayYesPublished scopes capability data.
qualificationMatrix.dimensions.scopes[]stringYesPublished scopes[] capability data.
qualificationMatrix.invariantsobjectYesPublished invariants capability data.
qualificationMatrix.invariants.everyAdapterDeclaresClosureStagesbooleanYesPublished everyadapterdeclaresclosurestages capability data.
qualificationMatrix.invariants.everyFailureTerminatesbooleanYesPublished everyfailureterminates capability data.
qualificationMatrix.invariants.everyMutationIsCheckpointedbooleanYesPublished everymutationischeckpointed capability data.
qualificationMatrix.invariants.linkedProjectsRemainBoundaryCheckedbooleanYesPublished linkedprojectsremainboundarychecked capability data.
qualificationMatrix.invariants.missingToolsBlockExecutionBeforeApprovalbooleanYesPublished missingtoolsblockexecutionbeforeapproval capability data.
qualificationMatrix.invariants.polyglotActionsDeclareIndependentExecutablePrerequisitesbooleanYesPublished polyglotactionsdeclareindependentexecutableprerequisites capability data.
qualificationMatrix.invariants.workspaceAndProjectScopesUseTheSameEnginebooleanYesPublished workspaceandprojectscopesusethesameengine capability data.
qualificationMatrix.schemaVersionstringYesPublished schemaversion capability data.
qualificationMatrix.statusstringYesPublished status capability data.
schemaVersionstringYesPublished schemaversion capability data.
workflowarrayYesPublished workflow capability data.
workflow[]stringYesPublished workflow[] capability data.

Canonical machine-readable definition

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

Show raw JSON
{
  "schemaVersion": "workspai.workspace-repair-capabilities.v1",
  "owner": "Workspai CLI",
  "workflow": [
    "plan",
    "preconditions",
    "approval",
    "target-precondition",
    "checkpoint",
    "execute",
    "reconcile",
    "audit",
    "test",
    "build",
    "target-producer-verify",
    "canonical-verify",
    "close-or-rollback-or-decision"
  ],
  "invariants": {
    "multiAdapterProjects": true,
    "missingTools": "decision-required",
    "missingToolSameGenerationRetry": false,
    "missingToolResumeBoundary": "environment-change-and-fresh-plan",
    "plannerExecutorAvailabilityProbe": "shared-launchability-check",
    "setupInstallsHostRuntimes": false,
    "unsupportedEcosystems": "decision-required",
    "silentFallbackToModelExecution": false,
    "mutationAuthority": "cli-only",
    "targetClosure": "selected-causal-action-set",
    "changeReceipt": "checkpoint-hash-delta",
    "consumerTimeline": "durable-transaction-events",
    "typedDecisionCauses": true,
    "registeredLinkedProjectMutationBoundary": true,
    "sourceProposalIntegrity": "project-bound-hash-pinned",
    "completionAuthority": "cli-verification-receipt",
    "goalSourceTransition": "closed-integrity-bound-v1",
    "goalAttemptBudget": "durable-serialized-v1",
    "consumerHandshakeRequired": true,
    "ephemeralProposalsAreEvidence": false,
    "approvalBoundToPlanHash": true,
    "canonicalVerificationRequired": true,
    "rollbackConflictDetection": true
  },
  "consumerProtocol": {
    "protocolVersion": "workspai.workspace-repair-consumer-protocol.v1",
    "versionProbe": {
      "args": [
        "--version",
        "--json"
      ],
      "schemaVersion": "rapidkit-version-v1"
    },
    "capabilityProbe": {
      "args": [
        "workspace",
        "repair",
        "capabilities",
        "--json"
      ],
      "schemaVersion": "workspai.workspace-repair-capabilities.v1"
    },
    "invocation": {
      "command": "workspace repair",
      "workspaceResolution": [
        "process-cwd",
        "--workspace"
      ],
      "actions": [
        "capabilities",
        "plan",
        "propose",
        "approve",
        "decide",
        "execute",
        "resume",
        "status",
        "list",
        "rollback",
        "cancel"
      ]
    },
    "contracts": {
      "operationResult": "workspai-cli-operation-result-v1",
      "proposal": "workspai.workspace-repair-proposal.v1",
      "transaction": "workspai.workspace-repair-transaction.v1"
    },
    "transientPaths": [
      ".workspai/repair/inbox/*.json",
      ".workspai/repair/engine.lock"
    ]
  },
  "qualificationMatrix": {
    "schemaVersion": "workspai.workspace-repair-qualification-matrix.v1",
    "status": "contract-enforced",
    "dimensions": {
      "adapters": [
        "node",
        "python",
        "go",
        "rust",
        "php-composer",
        "ruby-bundler",
        "elixir-mix",
        "deno",
        "dotnet",
        "jvm-maven",
        "jvm-gradle",
        "clojure",
        "scala-sbt"
      ],
      "scopes": [
        "project",
        "workspace",
        "linked-project",
        "polyglot-project"
      ],
      "failureFamilies": [
        "missing-tool",
        "stale-evidence",
        "missing-artifact",
        "no-op-proposal",
        "source-drift",
        "validation-failure",
        "producer-failure",
        "provider-outage",
        "interrupted-rollback",
        "unsupported-runtime"
      ],
      "recoveryPaths": [
        "automatic-refresh",
        "bounded-replan",
        "decision-required",
        "checkpoint-rollback",
        "durable-resume",
        "manual-repair"
      ],
      "failureRecoveryPolicy": {
        "missing-tool": "decision-required",
        "stale-evidence": "automatic-refresh",
        "missing-artifact": "automatic-refresh",
        "no-op-proposal": "bounded-replan",
        "source-drift": "bounded-replan",
        "validation-failure": "checkpoint-rollback",
        "producer-failure": "bounded-replan",
        "provider-outage": "durable-resume",
        "interrupted-rollback": "durable-resume",
        "unsupported-runtime": "manual-repair"
      }
    },
    "invariants": {
      "everyAdapterDeclaresClosureStages": true,
      "everyFailureTerminates": true,
      "everyMutationIsCheckpointed": true,
      "workspaceAndProjectScopesUseTheSameEngine": true,
      "linkedProjectsRemainBoundaryChecked": true,
      "missingToolsBlockExecutionBeforeApproval": true,
      "polyglotActionsDeclareIndependentExecutablePrerequisites": true
    }
  },
  "adapters": [
    {
      "id": "node",
      "ecosystem": "JavaScript / TypeScript",
      "manifests": [
        "package.json"
      ],
      "lockfiles": [
        "package-lock.json",
        "npm-shrinkwrap.json",
        "pnpm-lock.yaml",
        "yarn.lock",
        "bun.lock",
        "bun.lockb"
      ],
      "packageManagers": [
        "npm",
        "pnpm",
        "yarn",
        "bun"
      ],
      "support": "full",
      "stages": {
        "reconcile": "native",
        "audit": "native",
        "test": "declared",
        "build": "declared"
      },
      "requiredToolFamilies": [
        "selected package manager"
      ]
    },
    {
      "id": "python",
      "ecosystem": "Python",
      "manifests": [
        "pyproject.toml",
        "requirements.txt"
      ],
      "lockfiles": [
        "uv.lock",
        "poetry.lock",
        "requirements.txt"
      ],
      "packageManagers": [
        "uv",
        "poetry",
        "pip"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "conditional",
        "audit": "conditional",
        "test": "conditional",
        "build": "declared"
      },
      "requiredToolFamilies": [
        "isolated Python",
        "selected environment manager",
        "pip-audit or governed Doctor audit"
      ],
      "limitation": "A bounded isolated environment and an installed audit surface are required."
    },
    {
      "id": "go",
      "ecosystem": "Go",
      "manifests": [
        "go.mod"
      ],
      "lockfiles": [
        "go.sum"
      ],
      "packageManagers": [
        "go modules"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "go",
        "govulncheck"
      ],
      "limitation": "govulncheck must be installed; the engine never fetches an unreviewed tool."
    },
    {
      "id": "rust",
      "ecosystem": "Rust",
      "manifests": [
        "Cargo.toml"
      ],
      "lockfiles": [
        "Cargo.lock"
      ],
      "packageManagers": [
        "cargo"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "cargo",
        "cargo-audit"
      ],
      "limitation": "The cargo-audit subcommand must already be installed."
    },
    {
      "id": "php-composer",
      "ecosystem": "PHP",
      "manifests": [
        "composer.json"
      ],
      "lockfiles": [
        "composer.lock"
      ],
      "packageManagers": [
        "composer"
      ],
      "support": "full",
      "stages": {
        "reconcile": "native",
        "audit": "native",
        "test": "declared",
        "build": "declared"
      },
      "requiredToolFamilies": [
        "composer"
      ]
    },
    {
      "id": "ruby-bundler",
      "ecosystem": "Ruby",
      "manifests": [
        "Gemfile"
      ],
      "lockfiles": [
        "Gemfile.lock"
      ],
      "packageManagers": [
        "bundler"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "declared",
        "build": "declared"
      },
      "requiredToolFamilies": [
        "bundle",
        "bundle-audit"
      ],
      "limitation": "bundle-audit and the declared Rake tasks must already exist."
    },
    {
      "id": "elixir-mix",
      "ecosystem": "Elixir",
      "manifests": [
        "mix.exs"
      ],
      "lockfiles": [
        "mix.lock"
      ],
      "packageManagers": [
        "mix"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "mix",
        "Hex audit task"
      ],
      "limitation": "The project must expose the Hex audit task used by its dependency policy."
    },
    {
      "id": "deno",
      "ecosystem": "Deno",
      "manifests": [
        "deno.json",
        "deno.jsonc"
      ],
      "lockfiles": [
        "deno.lock"
      ],
      "packageManagers": [
        "deno"
      ],
      "support": "full",
      "stages": {
        "reconcile": "native",
        "audit": "native",
        "test": "declared",
        "build": "declared"
      },
      "requiredToolFamilies": [
        "deno"
      ]
    },
    {
      "id": "dotnet",
      "ecosystem": ".NET",
      "manifests": [
        "*.sln",
        "*.csproj",
        "*.fsproj",
        "*.vbproj"
      ],
      "lockfiles": [
        "Directory.Packages.props",
        "packages.lock.json"
      ],
      "packageManagers": [
        "NuGet / dotnet"
      ],
      "support": "full",
      "stages": {
        "reconcile": "native",
        "audit": "native",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "dotnet"
      ]
    },
    {
      "id": "jvm-maven",
      "ecosystem": "JVM / Maven",
      "manifests": [
        "pom.xml"
      ],
      "lockfiles": [],
      "packageManagers": [
        "Maven Wrapper",
        "Maven"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "mvnw or mvn",
        "governed Doctor audit"
      ],
      "limitation": "A project-specific dependency audit command must be declared by Doctor evidence."
    },
    {
      "id": "jvm-gradle",
      "ecosystem": "JVM / Gradle",
      "manifests": [
        "build.gradle.kts",
        "build.gradle"
      ],
      "lockfiles": [
        "gradle.lockfile",
        "gradle/libs.versions.toml"
      ],
      "packageManagers": [
        "Gradle Wrapper",
        "Gradle"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "gradlew or gradle",
        "governed Doctor audit"
      ],
      "limitation": "A project-specific dependency audit command must be declared by Doctor evidence."
    },
    {
      "id": "clojure",
      "ecosystem": "Clojure",
      "manifests": [
        "deps.edn",
        "project.clj"
      ],
      "lockfiles": [],
      "packageManagers": [
        "Clojure CLI",
        "Leiningen"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "conditional",
        "build": "conditional"
      },
      "requiredToolFamilies": [
        "clojure or lein",
        "governed project audit"
      ],
      "limitation": "Tests and builds run only when the selected Clojure project surface declares a deterministic entrypoint."
    },
    {
      "id": "scala-sbt",
      "ecosystem": "Scala / sbt",
      "manifests": [
        "build.sbt"
      ],
      "lockfiles": [],
      "packageManagers": [
        "sbt"
      ],
      "support": "conditional",
      "stages": {
        "reconcile": "native",
        "audit": "conditional",
        "test": "native",
        "build": "native"
      },
      "requiredToolFamilies": [
        "sbt",
        "governed project audit"
      ],
      "limitation": "A project-specific dependency audit command must be declared by Doctor evidence."
    }
  ]
}