← Files LegalQuants LitigationARCHIVED FILE

skills/pressuretest/schemas/deliverable.schema.json

12.4 KB · Oct 5, 2026 · 18:33 UTC

↓ Download file

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "lq.pressuretest.deliverable.v2.9",
  "title": "Pressure test compact record (method v2.9)",
  "type": "object",
  "required": [
    "method_version",
    "verdict",
    "positions",
    "mode",
    "brief",
    "checkpoint",
    "strongest_route",
    "coverage",
    "routes",
    "tests",
    "findings",
    "sources"
  ],
  "properties": {
    "method_version": {
      "const": "lq.pressuretest.method.v2.9"
    },
    "verdict": {
      "enum": [
        "pressure_points",
        "position_holds",
        "incomplete"
      ]
    },
    "positions": {
      "type": "array",
      "minItems": 1,
      "description": "Every position under test; a two-position task (e.g. their case against our Reply) has two entries.",
      "items": {
        "type": "object",
        "required": [
          "owner",
          "conclusion",
          "basis",
          "depends_on_other_party_breach"
        ],
        "properties": {
          "owner": {
            "type": "string",
            "minLength": 1
          },
          "conclusion": {
            "type": "string",
            "minLength": 1
          },
          "limbs": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "The position's distinct operative limbs: liability/entitlement and each pleaded head of relief or recovery. breaks_position fires when any limb falls."
          },
          "basis": {
            "enum": [
              "instructed",
              "inferred"
            ]
          },
          "depends_on_other_party_breach": {
            "type": "boolean",
            "description": "True when the position rests on the other party's breach, delay or non-performance. Each flagged position requires a causation-family finding whose position_owner equals this owner; any against_position must equal that same owner. Another owner's finding does not satisfy this requirement."
          }
        }
      }
    },
    "mode": {
      "enum": [
        "fast",
        "deep"
      ]
    },
    "brief": {
      "type": "object",
      "description": "Compact reading-view prose shared by chat and optional export. Findings carry the analysis once.",
      "required": [
        "position_name",
        "run_date",
        "summary"
      ],
      "properties": {
        "position_name": {
          "type": "string",
          "minLength": 1,
          "description": "Short name for the title line."
        },
        "run_date": {
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "type": "string",
          "minLength": 1,
          "description": "At most five sentences: position, what was done, what was found, the single most useful next step."
        },
        "established": {
          "type": "string",
          "minLength": 1
        },
        "follows": {
          "type": "string",
          "minLength": 1
        },
        "context_items": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "checkpoint": {
      "type": "object",
      "description": "What the lawyer was shown at Transmission 1 and what it rested on. The map may be posted before the whole bundle is read; this block makes that honest.",
      "required": [
        "map_read",
        "map_changed_after_full_read",
        "status"
      ],
      "properties": {
        "map_read": {
          "$ref": "#/definitions/filelist",
          "description": "Selected documents that had been read when the map was posted; at least one."
        },
        "map_changed_after_full_read": {
          "type": "boolean",
          "description": "True if reading the rest of the bundle changed a position, limb or the strongest route after the lawyer confirmed the map."
        },
        "change_note": {
          "type": "string",
          "description": "Required when map_changed_after_full_read is true: one sentence on what changed; the same sentence opens Transmission 2."
        },
        "status": {
          "enum": [
            "confirmed",
            "amended",
            "non_interactive",
            "unanswered"
          ],
          "description": "Actual confirmation status; silence in an interactive run is unanswered and never authorises adjudication."
        }
      }
    },
    "incomplete_reason": {
      "type": "string",
      "description": "Required when verdict is incomplete: exactly what is missing or unusable."
    },
    "strongest_route": {
      "type": "object",
      "required": [
        "summary",
        "anchors"
      ],
      "properties": {
        "summary": {
          "type": "string",
          "minLength": 1
        },
        "anchors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/anchor"
          },
          "minItems": 1
        }
      }
    },
    "coverage": {
      "type": "object",
      "required": [
        "selected",
        "reviewed",
        "parked",
        "excluded",
        "unreadable"
      ],
      "description": "selected must equal the disjoint union of the other four.",
      "properties": {
        "selected": {
          "$ref": "#/definitions/filelist"
        },
        "reviewed": {
          "$ref": "#/definitions/filelist"
        },
        "parked": {
          "$ref": "#/definitions/filelist"
        },
        "excluded": {
          "$ref": "#/definitions/filelist"
        },
        "unreadable": {
          "$ref": "#/definitions/filelist"
        }
      }
    },
    "routes": {
      "type": "object",
      "required": [
        "tested",
        "parked",
        "indeterminate"
      ],
      "description": "Route IDs; the three lists must be disjoint.",
      "properties": {
        "tested": {
          "$ref": "#/definitions/idlist"
        },
        "parked": {
          "$ref": "#/definitions/idlist"
        },
        "indeterminate": {
          "$ref": "#/definitions/idlist"
        }
      }
    },
    "tests": {
      "type": "object",
      "required": [
        "applied",
        "parked"
      ],
      "properties": {
        "applied": {
          "$ref": "#/definitions/idlist"
        },
        "parked": {
          "$ref": "#/definitions/idlist"
        }
      }
    },
    "findings": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/finding"
      }
    },
    "validation_state": {
      "enum": [
        "not_run",
        "passed",
        "contract_fault",
        "operational_fault"
      ],
      "description": "Set by the author before running the validator (not_run); the validator's exit code is authoritative."
    },
    "sources": {
      "type": "object",
      "description": "Selected source filename to readable name and source date; absent dates are null. Links are derived from existing files, never model-authored URLs.",
      "additionalProperties": {
        "type": "object",
        "required": [
          "name",
          "date"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "date": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  },
  "definitions": {
    "filelist": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "idlist": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "anchor": {
      "type": "object",
      "required": [
        "source",
        "quote",
        "locator"
      ],
      "properties": {
        "source": {
          "type": "string",
          "description": "Filename within the source root; must be in coverage.selected."
        },
        "quote": {
          "type": "string",
          "minLength": 6,
          "description": "Verbatim passage; validator matches it whitespace-normalised against the source file."
        },
        "locator": {
          "type": "string",
          "description": "Visible page, paragraph, clause or other source locator. Accuracy is not machine-verified; source name comes from sources.",
          "minLength": 1
        }
      }
    },
    "finding": {
      "type": "object",
      "required": [
        "id",
        "title",
        "classification",
        "position_owner",
        "statement",
        "anchors"
      ],
      "properties": {
        "calculation_receipts": {
          "type": "array",
          "description": "Complete packaged-calculator JSON results supporting this finding. Preserve all outputs; the reading view states resulting dates, intervals, comparisons, assumptions and limits in plain language.",
          "items": { "type": "object" }
        },
        "id": {
          "type": "string",
          "minLength": 1
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Short plain heading for the finding, used in the table and the detail."
        },
        "hits": {
          "type": "string",
          "description": "Required for Pressure Points: the party and limb the point hits."
        },
        "test_applied": {
          "type": "string",
          "description": "Required for Pressure Points."
        },
        "next_step": {
          "type": "string",
          "description": "Required for Pressure Points: the next lawful lawyer action."
        },
        "smallest_change": {
          "type": "string",
          "description": "Optional: the smallest change of fact that would change the result."
        },
        "what_would_close": {
          "type": "string",
          "description": "Optional on proof_gap: the evidence that would close the watch item."
        },
        "classification": {
          "enum": [
            "breaks_position",
            "internal_defect",
            "defeated",
            "weakens_route",
            "proof_gap",
            "context"
          ]
        },
        "test_family": {
          "enum": [
            "logic",
            "arithmetic-and-dates",
            "definitions-and-precedence",
            "mechanics",
            "consistency",
            "causation",
            "counterfactual",
            "other"
          ],
          "description": "The Step 4 family the attack belongs to. Optional, except that each position flagged depends_on_other_party_breach requires a causation-family finding linked by position_owner to that same owner."
        },
        "position_owner": {
          "type": "string",
          "minLength": 1,
          "description": "Owner of the position under attack, not the quote author; must match a positions[].owner and any against_position."
        },
        "statement": {
          "type": "string",
          "minLength": 1
        },
        "anchors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/anchor"
          },
          "minItems": 1
        },
        "against_position": {
          "type": "string",
          "description": "Required for breaks_position and internal_defect: the tested position owner; must equal position_owner whenever present, on any classification."
        },
        "flip_statement": {
          "type": "string",
          "description": "Required iff classification is breaks_position: 'if accepted, [focal conclusion] fails because ...'. Two breaks_position findings with the same flip statement are one Pressure Point; the validator faults the duplicate."
        },
        "defect_statement": {
          "type": "string",
          "description": "Required iff classification is internal_defect: 'as drafted, [A] and [B] cannot both be accurate because ...'. internal_defect also requires both conflicting anchors (minItems 2 in practice) and survives."
        },
        "survives": {
          "type": "string",
          "description": "Required iff classification is breaks_position: what remains sound after the criticism."
        },
        "dispositive_anchor_note": {
          "type": "string",
          "description": "For defeated/weakens_route: which source answers the attack or which route survives."
        },
        "review_state": {
          "enum": [
            "machine_proposed",
            "lawyer_reviewed"
          ],
          "default": "machine_proposed"
        }
      }
    }
  }
}

SHA-256: 343285417a4eefc6d65d9c1f35e7c0257524e1759f79e5f4ab17b9b6942223f5