← Files NightshiftARCHIVED FILE

skills/nightshift/references/schemas/v1/plan-discovery.json

4.54 KB · Oct 5, 2026 · 18:31 UTC

↓ Download file

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/orwa-mahmoud/nightshift/main/plugins/nightshift/skills/nightshift/references/schemas/v1/plan-discovery.json",
  "title": "Nightshift plan discovery input",
  "description": "Read-only inputs for shift-planner: applicable catalog contracts, evidence, overlaps, dependencies, and optional learning adjustments. Written by composition helpers or frozen fixtures; never mutated by the planner.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "workMode", "workTarget", "candidates"],
  "properties": {
    "schemaVersion": {
      "type": "integer",
      "enum": [1]
    },
    "workMode": {
      "type": "string",
      "enum": ["repository", "artifact"]
    },
    "workTarget": {
      "type": "string",
      "minLength": 1
    },
    "branch": {
      "type": ["string", "null"]
    },
    "workspace": {
      "type": ["string", "null"]
    },
    "authority": {
      "type": ["string", "null"]
    },
    "toolingPolicy": {
      "type": "string",
      "enum": ["existing-tools", "review-missing", "auto-add"]
    },
    "shiftPolicy": {
      "type": "object"
    },
    "resourceBudgets": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "rejectedFindings": {
      "type": "array",
      "items": { "type": "string", "minLength": 1 }
    },
    "candidates": {
      "type": "array",
      "items": { "$ref": "#/definitions/candidate" }
    },
    "overlaps": {
      "type": "array",
      "items": { "$ref": "#/definitions/overlap" }
    }
  },
  "definitions": {
    "candidate": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "contractId",
        "title",
        "ending",
        "applicable",
        "impact",
        "evidenceStrength",
        "confidence",
        "effortMinutes",
        "reversibility"
      ],
      "properties": {
        "contractId": { "type": "string", "minLength": 1 },
        "title": { "type": "string", "minLength": 1 },
        "ending": { "type": "string", "enum": ["finite", "open-ended"] },
        "applicable": { "type": "boolean" },
        "evidence": {
          "type": "array",
          "items": { "type": "string" }
        },
        "impact": { "type": "integer", "minimum": 0, "maximum": 5 },
        "evidenceStrength": { "type": "integer", "minimum": 0, "maximum": 5 },
        "confidence": { "type": "integer", "minimum": 0, "maximum": 5 },
        "effortMinutes": { "type": "integer", "minimum": 0 },
        "reversibility": { "type": "integer", "minimum": 0, "maximum": 5 },
        "dependencyValue": { "type": "integer", "minimum": 0, "maximum": 5 },
        "recurrence": { "type": "integer", "minimum": 0, "maximum": 5 },
        "priorResult": {
          "type": ["string", "null"],
          "enum": ["success", "partial", "failed", null]
        },
        "overlapGroup": { "type": ["string", "null"] },
        "prerequisites": {
          "type": "array",
          "items": { "type": "string" }
        },
        "sharedRoots": {
          "type": "array",
          "items": { "type": "string" }
        },
        "blockers": {
          "type": "array",
          "items": { "type": "string" }
        },
        "clusterId": { "type": ["string", "null"] },
        "capabilityStatus": {
          "type": "string",
          "enum": [
            "available-and-verified",
            "available-but-failing",
            "provisionable",
            "fallback-only",
            "unavailable"
          ]
        },
        "fallback": { "type": ["string", "null"] },
        "artifactOnly": { "type": "boolean" },
        "repositoryOnly": { "type": "boolean" },
        "resourceNeeds": {
          "type": "object",
          "additionalProperties": { "type": "integer", "minimum": 0 }
        },
        "typicalHoursMin": { "type": ["number", "null"] },
        "typicalHoursMax": { "type": ["number", "null"] },
        "risks": {
          "type": "array",
          "items": { "type": "string" }
        },
        "unsupportedSurfaces": {
          "type": "array",
          "items": { "type": "string" }
        }
      }
    },
    "overlap": {
      "type": "object",
      "additionalProperties": false,
      "required": ["group", "finding", "candidates"],
      "properties": {
        "group": { "type": "string" },
        "finding": { "type": "string" },
        "candidates": {
          "type": "array",
          "items": { "type": "string" }
        }
      }
    }
  }
}

SHA-256: 200c539e4a643a193a958934d2a4108f0784b95854c7616bebb188452bcd0b4e