{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://skill-map.ai/spec/v1/bump-report.schema.json",
  "title": "BumpReport",
  "description": "Report shape produced by the built-in deterministic `node-bump` Action (Step 9.6.3, Decision #125). Extends `report-base-deterministic.schema.json` (the deterministic counterpart to `report-base.schema.json`, which carries the LLM-only `confidence` + `safety` fields). The `node-bump` Action returns one of three concrete shapes, distinguished by `ok` / `noop` / `reason`: success-with-write (`{ ok: true, version }`), silent-no-op under `force` (`{ ok: true, noop: true }`), or refusal (`{ ok: false, reason: 'fresh' }`).",
  "allOf": [{ "$ref": "report-base-deterministic.schema.json" }],
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "noop": {
      "type": "boolean",
      "description": "True when the Action accepted the request but did not produce a write (the node was already fresh and `force: true` opted into the silent no-op path). Mutually exclusive with `version`."
    },
    "reason": {
      "type": "string",
      "enum": ["fresh"],
      "description": "Refusal reason, present only when `ok: false`. `fresh` = the node has no drift versus its sidecar and the caller did not pass `force: true`."
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "description": "The new `annotations.version` value the Action wrote. Present only when `ok: true` and `noop` is absent."
    },
    "createdSidecar": {
      "type": "boolean",
      "description": "True when this bump created the `.sm` file (no sidecar existed on disk before). Triggers the `audit.createdAt` / `audit.createdBy` fill-in."
    }
  }
}
