Workspace Intelligence / JSON Schema
Workspai Goal Pack
Defines the versioned goal pack v1 boundary used by Workspai and its consumers.
- Schema version
workspai.goal-pack.v1- Contract path
contracts/workspace-intelligence/goal-pack.v1.json- Publication
- json-schema
- Defined fields
- 109
- Artifact bindings
- 1
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.
Produced artifacts
These durable files are emitted by registered commands and validated against this contract.
| Artifact path | Schema | Producer |
|---|---|---|
| .workspai/reports/goal-pack-last-run.json | workspai.goal-pack.v1 | workspai goal |
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.graphBinding.artifact | string | Yes | Defines the artifact value at this contract boundary. | const: ".workspai/reports/workspace-knowledge-graph.json" |
| $defs.graphBinding.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.graphBinding.hash | reference | Yes | Defines the hash value at this contract boundary. | ref: #/$defs/hash |
| $defs.graphBinding.hashAlgorithm | string | Yes | Defines the hashalgorithm value at this contract boundary. | const: "sha256" |
| $defs.graphBinding.hashSemantics | string | Yes | Defines the hashsemantics value at this contract boundary. | const: "canonical-json-v1" |
| $defs.graphBinding.inputHash | reference | No | Defines the inputhash value at this contract boundary. | ref: #/$defs/hash |
| $defs.graphBinding.modelHash | reference | Yes | Defines the modelhash value at this contract boundary. | ref: #/$defs/hash |
| $defs.graphBinding.schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "workspace-knowledge-graph.v1" |
| $defs.modelBinding.artifact | string | Yes | Defines the artifact value at this contract boundary. | const: ".workspai/reports/workspace-model.json" |
| $defs.modelBinding.generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| $defs.modelBinding.hash | reference | Yes | Defines the hash value at this contract boundary. | ref: #/$defs/hash |
| $defs.modelBinding.hashAlgorithm | string | Yes | Defines the hashalgorithm value at this contract boundary. | const: "sha256" |
| $defs.modelBinding.hashSemantics | string | Yes | Defines the hashsemantics value at this contract boundary. | const: "workspace-model-structural-v1" |
| $defs.modelBinding.schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "workspace-model.v1" |
| $defs.retrieval.anchors | array | Yes | Defines the anchors value at this contract boundary. | maxItems: 20 |
| $defs.retrieval.anchors[].entityId | string | Yes | Defines the entityid value at this contract boundary. | minLength: 1 |
| $defs.retrieval.anchors[].kind | string | Yes | Defines the kind value at this contract boundary. | minLength: 1 |
| $defs.retrieval.anchors[].label | string | Yes | Defines the label value at this contract boundary. | minLength: 1 |
| $defs.retrieval.anchors[].proofIds | array | Yes | Defines the proofids value at this contract boundary. | — |
| $defs.retrieval.queries | array | Yes | Defines the queries value at this contract boundary. | minItems: 1 · maxItems: 3 |
| $defs.retrieval.status | enum | Yes | Defines the status value at this contract boundary. | enum: grounded, partial, empty |
| $defs.retrieval.strategy | string | Yes | Defines the strategy value at this contract boundary. | const: "deterministic-category-v1" |
| $defs.scope.kind | enum | Yes | Defines the kind value at this contract boundary. | enum: workspace, project, project-set |
| $defs.scope.projects | array | Yes | Defines the projects value at this contract boundary. | minItems: 1 |
| $defs.scope.resolution | enum | No | Defines the resolution value at this contract boundary. | enum: selected, selection-required |
| $defs.scope.selectionSource | enum | Yes | Defines the selectionsource value at this contract boundary. | enum: workspace, single-project-workspace, invocation-project, explicit, interactive |
| artifacts | object | Yes | Defines the artifacts value at this contract boundary. | additionalProperties: false |
| artifacts.agentHandoff | string | Yes | Defines the agenthandoff value at this contract boundary. | pattern: ^\.workspai/goals/[^/]+/agent-handoff\.json$ |
| artifacts.goalPack | string | Yes | Defines the goalpack value at this contract boundary. | pattern: ^\.workspai/goals/[^/]+/goal-pack\.json$ |
| artifacts.latestReport | string | Yes | Defines the latestreport value at this contract boundary. | const: ".workspai/reports/goal-pack-last-run.json" |
| baseline | object | Yes | Defines the baseline value at this contract boundary. | additionalProperties: false |
| baseline.frameworks | array | Yes | Defines the frameworks value at this contract boundary. | — |
| baseline.graph | object | Yes | Defines the graph value at this contract boundary. | additionalProperties: false |
| baseline.graph.entities | integer | Yes | Defines the entities value at this contract boundary. | minimum: 0 |
| baseline.graph.proofCoveragePercent | number | Yes | Defines the proofcoveragepercent value at this contract boundary. | minimum: 0 · maximum: 100 |
| baseline.graph.proofs | integer | Yes | Defines the proofs value at this contract boundary. | minimum: 0 |
| baseline.graph.relationships | integer | Yes | Defines the relationships value at this contract boundary. | minimum: 0 |
| baseline.graph.unresolved | integer | Yes | Defines the unresolved value at this contract boundary. | minimum: 0 |
| baseline.projectCount | integer | Yes | Defines the projectcount value at this contract boundary. | minimum: 0 |
| baseline.runtimes | array | Yes | Defines the runtimes value at this contract boundary. | — |
| commands | object | Yes | Defines the commands value at this contract boundary. | additionalProperties: false |
| commands.inspectGraph | string | Yes | Defines the inspectgraph value at this contract boundary. | pattern: ^workspai workspace graph search |
| commands.planVerifiedGoal | string | No | Defines the planverifiedgoal value at this contract boundary. | pattern: ^workspai workspace goal plan |
| commands.proposeRepair | string | Yes | Defines the proposerepair value at this contract boundary. | const: "workspai workspace repair propose --file <proposal.json> --json" |
| commands.refreshEvidence | string | Yes | Defines the refreshevidence value at this contract boundary. | const: "workspai workspace intelligence run --for-agent generic --strict --json" |
| decision | object | No | Defines the decision value at this contract boundary. | additionalProperties: false |
| decision.question | string | Yes | Defines the question value at this contract boundary. | minLength: 1 |
| decision.reason | string | Yes | Defines the reason value at this contract boundary. | minLength: 1 |
| decision.required | boolean | Yes | Defines the required value at this contract boundary. | const: true |
| fingerprint | reference | Yes | Defines the fingerprint value at this contract boundary. | ref: #/$defs/hash |
| generatedAt | string | Yes | Defines the generatedat value at this contract boundary. | format: date-time |
| id | string | Yes | Defines the id value at this contract boundary. | pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$ |
| intent | object | Yes | Defines the intent value at this contract boundary. | additionalProperties: false |
| intent.ambiguities | array | Yes | Defines the ambiguities value at this contract boundary. | — |
| intent.category | enum | Yes | Defines the category value at this contract boundary. | enum: release-readiness, dependency-security, test-coverage, defect-repair, feature-change, refactor, performance, documentation, system-understanding |
| intent.confidence | enum | Yes | Defines the confidence value at this contract boundary. | enum: high, medium, low |
| intent.normalized | string | Yes | Defines the normalized value at this contract boundary. | minLength: 1 · maxLength: 2000 |
| intent.original | string | Yes | Defines the original value at this contract boundary. | minLength: 1 · maxLength: 2000 |
| intent.requestedTarget | object | No | Defines the requestedtarget value at this contract boundary. | additionalProperties: false |
| intent.requestedTarget.metric | string | Yes | Defines the metric value at this contract boundary. | const: "test-coverage-percent" |
| intent.requestedTarget.operator | string | Yes | Defines the operator value at this contract boundary. | const: "at-least" |
| intent.requestedTarget.runtime | enum | No | Defines the runtime value at this contract boundary. | enum: node, bun, deno, python, go, java, dotnet, rust, php, ruby, elixir, clojure, scala, kotlin, c, cpp |
| intent.requestedTarget.value | number | Yes | Defines the value value at this contract boundary. | minimum: 0 · maximum: 100 |
| intent.statement | string | Yes | Defines the statement value at this contract boundary. | minLength: 1 · maxLength: 2000 |
| orchestration | array | Yes | Defines the orchestration value at this contract boundary. | minItems: 6 · maxItems: 6 |
| orchestration[].id | enum | Yes | Defines the id value at this contract boundary. | enum: understand, impact, propose, approve, execute, verify |
| orchestration[].owner | enum | Yes | Defines the owner value at this contract boundary. | enum: workspai-cli, agent, human |
| orchestration[].status | enum | Yes | Defines the status value at this contract boundary. | enum: complete, pending, blocked |
| orchestration[].summary | string | Yes | Defines the summary value at this contract boundary. | minLength: 1 |
| policy | object | Yes | Defines the policy value at this contract boundary. | additionalProperties: false |
| policy.allowBreakingChanges | boolean | Yes | Defines the allowbreakingchanges value at this contract boundary. | const: false |
| policy.allowForce | boolean | Yes | Defines the allowforce value at this contract boundary. | const: false |
| policy.approval | string | Yes | Defines the approval value at this contract boundary. | const: "required-before-mutation" |
| policy.maxAttempts | integer | Yes | Defines the maxattempts value at this contract boundary. | minimum: 1 · maximum: 25 |
| policy.mutationMode | string | Yes | Defines the mutationmode value at this contract boundary. | const: "proposal-only" |
| policy.networkAccess | string | Yes | Defines the networkaccess value at this contract boundary. | const: "not-granted" |
| policy.rollbackOwner | string | Yes | Defines the rollbackowner value at this contract boundary. | const: "workspai-cli" |
| policy.scopeExpansion | string | Yes | Defines the scopeexpansion value at this contract boundary. | const: "requires-decision" |
| policy.verificationOwner | string | Yes | Defines the verificationowner value at this contract boundary. | const: "workspai-cli" |
| preflight | object | Yes | Defines the preflight value at this contract boundary. | additionalProperties: false |
| preflight.measurement | object | Yes | Defines the measurement value at this contract boundary. | additionalProperties: false |
| preflight.measurement.existingEvidence | array | Yes | Defines the existingevidence value at this contract boundary. | — |
| preflight.measurement.existingEvidence[].path | string | Yes | Defines the path value at this contract boundary. | minLength: 1 |
| preflight.measurement.existingEvidence[].project | string | Yes | Defines the project value at this contract boundary. | minLength: 1 |
| preflight.measurement.existingEvidence[].sha256 | reference | Yes | Defines the sha256 value at this contract boundary. | ref: #/$defs/hash |
| preflight.measurement.prerequisites | array | Yes | Defines the prerequisites value at this contract boundary. | — |
| preflight.measurement.runner | string | null | Yes | Defines the runner value at this contract boundary. | — |
| preflight.measurement.runtime | string | null | Yes | Defines the runtime value at this contract boundary. | — |
| preflight.measurement.runtimeChoices | array | No | Defines the runtimechoices value at this contract boundary. | — |
| preflight.measurement.status | enum | Yes | Defines the status value at this contract boundary. | enum: available, requires-setup, unsupported, not-applicable |
| preflight.retrieval | reference | Yes | Defines the retrieval value at this contract boundary. | ref: #/$defs/retrieval |
| preflight.workspaceIntelligence | object | Yes | Defines the workspaceintelligence value at this contract boundary. | additionalProperties: false |
| preflight.workspaceIntelligence.artifact | string | Yes | Defines the artifact value at this contract boundary. | const: ".workspai/reports/workspace-intelligence-run-last-run.json" |
| preflight.workspaceIntelligence.blockedStages | array | Yes | Defines the blockedstages value at this contract boundary. | — |
| preflight.workspaceIntelligence.status | enum | Yes | Defines the status value at this contract boundary. | enum: passed, blocked, unknown |
| schemaVersion | string | Yes | Defines the schemaversion value at this contract boundary. | const: "workspai.goal-pack.v1" |
| scope | reference | Yes | Defines the scope value at this contract boundary. | ref: #/$defs/scope |
| sourceBinding | object | Yes | Defines the sourcebinding value at this contract boundary. | additionalProperties: false |
| sourceBinding.graph | reference | Yes | Defines the graph value at this contract boundary. | ref: #/$defs/graphBinding |
| sourceBinding.model | reference | Yes | Defines the model value at this contract boundary. | ref: #/$defs/modelBinding |
| state | enum | Yes | Defines the state value at this contract boundary. | enum: ready-to-plan, needs-confirmation, needs-evidence, blocked |
| successCriteria | array | Yes | Defines the successcriteria value at this contract boundary. | minItems: 1 |
| successCriteria[].expected | string | Yes | Defines the expected value at this contract boundary. | minLength: 1 |
| successCriteria[].id | string | Yes | Defines the id value at this contract boundary. | minLength: 1 |
| successCriteria[].kind | enum | Yes | Defines the kind value at this contract boundary. | enum: workspace-verify, release-readiness, dependency-security, test-coverage |
| successCriteria[].machineVerifiable | boolean | Yes | Defines the machineverifiable value at this contract boundary. | — |
| successCriteria[].producerCommand | string | Yes | Defines the producercommand value at this contract boundary. | minLength: 1 |
| workspace | object | Yes | Defines the workspace value at this contract boundary. | additionalProperties: false |
| workspace.name | string | Yes | Defines the name 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://workspai.dev/schemas/workspace-intelligence/goal-pack.v1.json",
"title": "Workspai Goal Pack",
"type": "object",
"required": [
"schemaVersion",
"id",
"fingerprint",
"generatedAt",
"state",
"intent",
"workspace",
"scope",
"sourceBinding",
"baseline",
"preflight",
"successCriteria",
"policy",
"orchestration",
"artifacts",
"commands"
],
"properties": {
"schemaVersion": {
"const": "workspai.goal-pack.v1"
},
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{7,95}$"
},
"fingerprint": {
"$ref": "#/$defs/hash"
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"state": {
"enum": [
"ready-to-plan",
"needs-confirmation",
"needs-evidence",
"blocked"
]
},
"intent": {
"type": "object",
"required": [
"original",
"normalized",
"statement",
"category",
"confidence",
"ambiguities"
],
"properties": {
"original": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"normalized": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"statement": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"category": {
"enum": [
"release-readiness",
"dependency-security",
"test-coverage",
"defect-repair",
"feature-change",
"refactor",
"performance",
"documentation",
"system-understanding"
]
},
"confidence": {
"enum": [
"high",
"medium",
"low"
]
},
"ambiguities": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"requestedTarget": {
"type": "object",
"required": [
"metric",
"operator",
"value"
],
"properties": {
"metric": {
"const": "test-coverage-percent"
},
"operator": {
"const": "at-least"
},
"value": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"runtime": {
"enum": [
"node",
"bun",
"deno",
"python",
"go",
"java",
"dotnet",
"rust",
"php",
"ruby",
"elixir",
"clojure",
"scala",
"kotlin",
"c",
"cpp"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"workspace": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"scope": {
"$ref": "#/$defs/scope"
},
"sourceBinding": {
"type": "object",
"required": [
"model",
"graph"
],
"properties": {
"model": {
"$ref": "#/$defs/modelBinding"
},
"graph": {
"$ref": "#/$defs/graphBinding"
}
},
"additionalProperties": false
},
"baseline": {
"type": "object",
"required": [
"projectCount",
"runtimes",
"frameworks",
"graph"
],
"properties": {
"projectCount": {
"type": "integer",
"minimum": 0
},
"runtimes": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"frameworks": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"graph": {
"type": "object",
"required": [
"entities",
"relationships",
"proofs",
"unresolved",
"proofCoveragePercent"
],
"properties": {
"entities": {
"type": "integer",
"minimum": 0
},
"relationships": {
"type": "integer",
"minimum": 0
},
"proofs": {
"type": "integer",
"minimum": 0
},
"unresolved": {
"type": "integer",
"minimum": 0
},
"proofCoveragePercent": {
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"preflight": {
"type": "object",
"required": [
"workspaceIntelligence",
"measurement",
"retrieval"
],
"properties": {
"workspaceIntelligence": {
"type": "object",
"required": [
"status",
"artifact",
"blockedStages"
],
"properties": {
"status": {
"enum": [
"passed",
"blocked",
"unknown"
]
},
"artifact": {
"const": ".workspai/reports/workspace-intelligence-run-last-run.json"
},
"blockedStages": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
}
},
"additionalProperties": false
},
"measurement": {
"type": "object",
"required": [
"status",
"runtime",
"runner",
"existingEvidence",
"prerequisites"
],
"properties": {
"status": {
"enum": [
"available",
"requires-setup",
"unsupported",
"not-applicable"
]
},
"runtime": {
"type": [
"string",
"null"
]
},
"runtimeChoices": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"runner": {
"type": [
"string",
"null"
]
},
"existingEvidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"project",
"path",
"sha256"
],
"properties": {
"project": {
"type": "string",
"minLength": 1
},
"path": {
"type": "string",
"minLength": 1
},
"sha256": {
"$ref": "#/$defs/hash"
}
},
"additionalProperties": false
}
},
"prerequisites": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
}
},
"additionalProperties": false
},
"retrieval": {
"$ref": "#/$defs/retrieval"
}
},
"additionalProperties": false
},
"successCriteria": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"id",
"kind",
"expected",
"producerCommand",
"machineVerifiable"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"kind": {
"enum": [
"workspace-verify",
"release-readiness",
"dependency-security",
"test-coverage"
]
},
"expected": {
"type": "string",
"minLength": 1
},
"producerCommand": {
"type": "string",
"minLength": 1
},
"machineVerifiable": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"policy": {
"type": "object",
"required": [
"mutationMode",
"approval",
"verificationOwner",
"rollbackOwner",
"maxAttempts",
"allowBreakingChanges",
"allowForce",
"networkAccess",
"scopeExpansion"
],
"properties": {
"mutationMode": {
"const": "proposal-only"
},
"approval": {
"const": "required-before-mutation"
},
"verificationOwner": {
"const": "workspai-cli"
},
"rollbackOwner": {
"const": "workspai-cli"
},
"maxAttempts": {
"type": "integer",
"minimum": 1,
"maximum": 25
},
"allowBreakingChanges": {
"const": false
},
"allowForce": {
"const": false
},
"networkAccess": {
"const": "not-granted"
},
"scopeExpansion": {
"const": "requires-decision"
}
},
"additionalProperties": false
},
"orchestration": {
"type": "array",
"minItems": 6,
"maxItems": 6,
"items": {
"type": "object",
"required": [
"id",
"owner",
"status",
"summary"
],
"properties": {
"id": {
"enum": [
"understand",
"impact",
"propose",
"approve",
"execute",
"verify"
]
},
"owner": {
"enum": [
"workspai-cli",
"agent",
"human"
]
},
"status": {
"enum": [
"complete",
"pending",
"blocked"
]
},
"summary": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
},
"decision": {
"type": "object",
"required": [
"required",
"reason",
"question"
],
"properties": {
"required": {
"const": true
},
"reason": {
"type": "string",
"minLength": 1
},
"question": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"artifacts": {
"type": "object",
"required": [
"goalPack",
"agentHandoff",
"latestReport"
],
"properties": {
"goalPack": {
"type": "string",
"pattern": "^\\.workspai/goals/[^/]+/goal-pack\\.json$"
},
"agentHandoff": {
"type": "string",
"pattern": "^\\.workspai/goals/[^/]+/agent-handoff\\.json$"
},
"latestReport": {
"const": ".workspai/reports/goal-pack-last-run.json"
}
},
"additionalProperties": false
},
"commands": {
"type": "object",
"required": [
"refreshEvidence",
"inspectGraph",
"proposeRepair"
],
"properties": {
"refreshEvidence": {
"const": "workspai workspace intelligence run --for-agent generic --strict --json"
},
"inspectGraph": {
"type": "string",
"pattern": "^workspai workspace graph search "
},
"planVerifiedGoal": {
"type": "string",
"pattern": "^workspai workspace goal plan "
},
"proposeRepair": {
"const": "workspai workspace repair propose --file <proposal.json> --json"
}
},
"additionalProperties": false
}
},
"$defs": {
"hash": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"scope": {
"type": "object",
"required": [
"kind",
"projects",
"selectionSource"
],
"properties": {
"kind": {
"enum": [
"workspace",
"project",
"project-set"
]
},
"projects": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"selectionSource": {
"enum": [
"workspace",
"single-project-workspace",
"invocation-project",
"explicit",
"interactive"
]
},
"resolution": {
"enum": [
"selected",
"selection-required"
]
}
},
"allOf": [
{
"if": {
"properties": {
"kind": {
"const": "project"
}
}
},
"then": {
"properties": {
"projects": {
"type": "array",
"maxItems": 1
}
}
}
},
{
"if": {
"properties": {
"kind": {
"const": "project-set"
}
}
},
"then": {
"properties": {
"projects": {
"type": "array",
"minItems": 2
}
}
}
},
{
"if": {
"properties": {
"resolution": {
"const": "selection-required"
}
},
"required": [
"resolution"
]
},
"then": {
"properties": {
"kind": {
"const": "workspace"
},
"selectionSource": {
"const": "workspace"
}
}
}
}
],
"additionalProperties": false
},
"modelBinding": {
"type": "object",
"required": [
"artifact",
"schemaVersion",
"hashAlgorithm",
"hashSemantics",
"hash",
"generatedAt"
],
"properties": {
"artifact": {
"const": ".workspai/reports/workspace-model.json"
},
"schemaVersion": {
"const": "workspace-model.v1"
},
"hashAlgorithm": {
"const": "sha256"
},
"hashSemantics": {
"const": "workspace-model-structural-v1"
},
"hash": {
"$ref": "#/$defs/hash"
},
"generatedAt": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
},
"graphBinding": {
"type": "object",
"required": [
"artifact",
"schemaVersion",
"hashAlgorithm",
"hashSemantics",
"hash",
"generatedAt",
"modelHash"
],
"properties": {
"artifact": {
"const": ".workspai/reports/workspace-knowledge-graph.json"
},
"schemaVersion": {
"const": "workspace-knowledge-graph.v1"
},
"hashAlgorithm": {
"const": "sha256"
},
"hashSemantics": {
"const": "canonical-json-v1"
},
"hash": {
"$ref": "#/$defs/hash"
},
"generatedAt": {
"type": "string",
"format": "date-time"
},
"modelHash": {
"$ref": "#/$defs/hash"
},
"inputHash": {
"$ref": "#/$defs/hash"
}
},
"additionalProperties": false
},
"retrieval": {
"type": "object",
"required": [
"status",
"strategy",
"queries",
"anchors"
],
"properties": {
"status": {
"enum": [
"grounded",
"partial",
"empty"
]
},
"strategy": {
"const": "deterministic-category-v1"
},
"queries": {
"type": "array",
"minItems": 1,
"maxItems": 3,
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"anchors": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"required": [
"entityId",
"kind",
"label",
"proofIds"
],
"properties": {
"entityId": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"minLength": 1
},
"label": {
"type": "string",
"minLength": 1
},
"proofIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}