← Files LegalQuants LitigationARCHIVED FILE
skills/pressuretest/schemas/deliverable.schema.json
12.4 KB · Oct 5, 2026 · 18:33 UTC
{
"$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