Check a review sidecar still binds to its source document.
Use describe("common.validate.review-sidecar") when your code needs the complete live JSON Schemas.
At a glance
| Property | Value |
|---|---|
| Package | @runstamp/review-operations |
| Domain / verb | common / validate |
| Customer jobs | validate |
| Deterministic | Yes |
| Side effects | none |
Availability
| Local | SDK | CLI | MCP | Managed API |
|---|---|---|---|---|
| public ga | public ga | public ga | public ga | public ga |
Managed API route: POST /api/v2/operations/common/validate/review-sidecar. Managed execution requires a free-trial workspace or an active Platform or Enterprise workspace, and an environment-bound API key.
Input and result
| Schema | Required fields | Optional fields |
|---|---|---|
| Input | source, export | none |
| Options | none | operation, deterministic, deterministicSeed, timeoutMs, limits, locale, lossPolicy |
| Result value | output, artifacts | none |
Every success also carries losses, diagnostics, and a hash-bound receipt.
Defaults, limits, and format constraints
Defaults
| Path | Default |
|---|---|
$.deterministic | default=true |
$.lossPolicy | default="collect" |
Formats and profiles
| Path | Constraint |
|---|---|
$.source.schemaVersion | const=1 |
$.source.version | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.export.mediaType | const="application/vnd.runstamp.review+json" |
$.export.receipt.version | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
Other limits
| Path | Constraint |
|---|---|
$.source.artifactId | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.sourceSha256 | pattern="^[a-f0-9]{64}$" |
$.source.tenantId | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.byteLength | minimum=0maximum=16000000 |
$.source.importedItems | maxItems=10000 |
$.source.importedItems[].id | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.importedItems[].body | minLength=1maxLength=64000 |
$.source.importedItems[].author.id | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.importedItems[].author.displayName | minLength=1maxLength=256 |
$.source.importedItems[].parentId | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.importedItems[].anchor.locator.artifactId | pattern="^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$" |
$.source.importedItems[].anchor.locator.value | minItems=1maxItems=16 |
$.source.importedItems[].anchor.locator.value[].anyOf[0] | maxLength=512 |
$.source.importedItems[].anchor.locator.value[].anyOf[1] | minimum=0 |
$.source.importedItems[].anchor.targetText | maxLength=4096 |
$.source.importedItems[].anchor.targetSha256 | pattern="^[a-f0-9]{64}$" |
$.source.importedItems[].anchor.contextBefore | maxLength=1024 |
$.source.importedItems[].anchor.contextAfter | maxLength=1024 |
$.source.importedItems[].anchor.contextSha256 | pattern="^[a-f0-9]{64}$" |
$.source.importedItems[].geometry.width | minimum=0 |
$.source.importedItems[].geometry.height | minimum=0 |
$.source.importedItems[].geometry.page | minimum=0 |
$.source.importedItems[].nativeType | minLength=1maxLength=256 |
$.source.losses | maxItems=10000 |
$.source.losses[].code | pattern="^[A-Z][A-Z0-9_]{2,127}$" |
$.source.losses[].message | minLength=1maxLength=2000 |
Showing 32 of 66 constraints. Use describe() or the machine-readable reference for the complete schema.
Invoke
const input = await fetch("https://runstamp.com/demo-evidence/operation-evidence/review-operations/common.validate.review-sidecar/input.json").then((response) => response.json());
const result = await runstamp.run("common.validate.review-sidecar", input);
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.remediation}`);
console.log(result.value, result.losses, result.diagnostics, result.receipt);curl -fsS https://runstamp.com/demo-evidence/operation-evidence/review-operations/common.validate.review-sidecar/input.json -o input.json
npx -p @runstamp/sdk runstamp ops invoke common.validate.review-sidecar --input input.json{
"tool": "runstamp_invoke_operation",
"arguments": {
"operation": "common.validate.review-sidecar",
"input": "<JSON from https://runstamp.com/demo-evidence/operation-evidence/review-operations/common.validate.review-sidecar/input.json>",
"execution_mode": "local"
}
}Errors and losses
Declared errors (12)
common/INVALID_INPUTcommon/PERMISSION_DENIEDcommon/BINDING_MISMATCHcommon/SHIFTED_ANCHORcommon/RESOURCE_LIMITcommon/ABORTEDcommon/VERIFICATION_FAILEDcommon/SCHEMA_REJECTEDcommon/OPERATION_CANCELLEDcommon/OPERATION_TIMEOUTcommon/CONTRACT_VIOLATIONcommon/LOSS_POLICY_VIOLATED
Declared losses (5)
common/NATIVE_ANNOTATION_OPAQUEcommon/NATIVE_ANNOTATION_UNSUPPORTEDcommon/REVIEW_TARGET_DELETEDcommon/REVIEW_SIDECAR_ONLYcommon/WORKSPACE_ADAPTER_UNAVAILABLE
SDK AbortSignal, CLI exit 130, and MCP cancellation return the typed common/OPERATION_CANCELLED failure envelope.
Verified example and exact contract
- Fixture:
icp-workflow(Review sidecar bound to the Q2 business review). - Example input — SHA-256
c807ac72789c151de669c7d4e0aaeba19f072aedf8fdb11e9d057d5b34938a61. - Example result — SHA-256
1ffc167869121bc44b1f4519e5db6654ddbd01429a9f2f10074f05ba6eb978d2. - Verified result SHA-256:
e8f1f2523444d31301f5d4e2f111ac658c71c293794e0c4fea720b08626b5905. - Qualification lane:
12-approval-forms-review.
Contract fingerprints
- Descriptor:
afa9702f44903412ca583420bed2bc4dee94e6c0b67ec4f75fa2ea421f0d5c3d. - Input schema:
d989e04fb67f9b6c0ae2957f6715b85f95dffeb9599ff805959ebf7303f02071. - Options schema:
45e6e5d582aa6e638be38d706dfade250f1a06ecb4ef01ee2585731664ee0924. - Result value schema:
5492954aa224af6b081d9941daeb2aff0a0f914233234020c3acc108e8696c2b.
The machine-readable operation reference publishes the complete schemas, qualification results, and evidence bindings for every operation.