{
  "tool_id": "art-589-redline-round-classifier",
  "tool_version": "1.0.0",
  "display_name": "Redline Round Classifier",
  "mcp_name": "classify_redline_round_changes",
  "mandate_type": "compliance_control",
  "wave": 94,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-589-redline-round-classifier.html",
  "description": "Classifies per-segment changes between two negotiation rounds of the same document (paragraph or clause-segmented structured text, pasted or pre-extracted; never parses DOCX or any other binary format). Each declared segment carries a baseline text (the clause as it stood in round 1), a prior text (as it stood in the immediately preceding round), and a current text, and is classified ACCEPTED when current equals prior, REVERTED when current equals baseline after having diverged from it, MODIFIED when current differs from both, NEW when no prior text was declared, or DELETED when no current text was declared. Produces a word-level diff transcript for every changed segment. Round-over-round history is a hash chain: each round after the first declares the execution_hash the node produced for the immediately preceding round's own artifact as prior_round_digest, and a separate chain-verification pass recomputes each prior round's hash from its own content and confirms the next round committed to exactly that value, so a tampered middle round fails the chain check even though its own classification output still looks well-formed. Classifies the type of change only; never scores or evaluates which side a change favors, and is not legal advice. Five-state enum (adds DELETED) is a design borrow from eigenlegal/counsel-os diff_rounds.py (MIT), not a code port; that file has not been read by this node's author. Clause: illustrative only, no jurisdiction's redlining or e-discovery rules are encoded here.",
  "input_schema_ref": "chaingraph/art-589-redline-round-classifier.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:5af85fdf37a3ae3ab73a616adad96621f2fc811520c30cafb6404da7d71393c6",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-08-08"
    }
  ],
  "compute_proof_ready": "ready",
  "deferred_reason": "New shard; awaiting the async GPU proving queue (S18 steady-state).",
  "export_capability": [
    "json"
  ],
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "LDYbw1ePG6SBTs59rJDWPBZYagPHA8JBtUdO10mwtyEvAeJolmSs5UY596Ct9OECO7bffZySfpbVV2Osng3Wwgz2Fg5xIQVyXkMqqFPCcFKA6nHOkKnICBHyHJrQLTbFHZwcNGzHPi5ZWpn2DjPjSebhIIBYEfxCwDRBUqGDJAgOStBlZQLOu6Iy0XeYBnjTPQyi7rkhxWRKxCQLHbrEOiDQ+HaW+i7TTd0ONoD0cTrTr+dfkJ0Ri4ke6JlqSNyAJltabLfHDtc50evawTWY1c5w4zsQOK2lGgdGw8FMwBwqiRhC2f9aT1JYcUk7sWZOQUn81pctoCOfB3ZIunPJrA==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:5af85fdf37a3ae3ab73a616adad96621f2fc811520c30cafb6404da7d71393c6",
      "output": {
        "attribution_note": "Five-state enum (ACCEPTED/REVERTED/MODIFIED/NEW/DELETED) extends the four-state classification used by eigenlegal/counsel-os diff_rounds.py (MIT license), design-borrow only. That file was not read; no code was ported from it.",
        "classifications": [
          {
            "baseline_text": "Payment is due within 30 days of invoice.",
            "changed": false,
            "classification": "ACCEPTED",
            "current_text": "Payment is due within 45 days of invoice.",
            "prior_text": "Payment is due within 45 days of invoice.",
            "segment_id": "S1-payment-terms"
          },
          {
            "baseline_text": "Liability is capped at fees paid in the prior 12 months.",
            "changed": true,
            "classification": "REVERTED",
            "current_text": "Liability is capped at fees paid in the prior 12 months.",
            "diff": [
              {
                "op": "equal",
                "text": "Liability is capped at "
              },
              {
                "op": "delete",
                "text": "2x "
              },
              {
                "op": "equal",
                "text": "fees paid in the prior 12 months."
              }
            ],
            "prior_text": "Liability is capped at 2x fees paid in the prior 12 months.",
            "segment_id": "S2-liability-cap"
          },
          {
            "baseline_text": "Either party may terminate for convenience on 30 days notice.",
            "changed": true,
            "classification": "MODIFIED",
            "current_text": "Either party may terminate for convenience on 90 days notice with written approval.",
            "diff": [
              {
                "op": "equal",
                "text": "Either party may terminate for convenience on "
              },
              {
                "op": "delete",
                "text": "60"
              },
              {
                "op": "insert",
                "text": "90"
              },
              {
                "op": "equal",
                "text": " days "
              },
              {
                "op": "delete",
                "text": "notice."
              },
              {
                "op": "insert",
                "text": "notice with written approval."
              }
            ],
            "prior_text": "Either party may terminate for convenience on 60 days notice.",
            "segment_id": "S3-termination"
          },
          {
            "baseline_text": null,
            "changed": true,
            "classification": "NEW",
            "current_text": "Vendor will process personal data only as instructed by Customer.",
            "diff": [
              {
                "op": "insert",
                "text": "Vendor will process personal data only as instructed by Customer."
              }
            ],
            "prior_text": null,
            "segment_id": "S4-data-processing"
          },
          {
            "baseline_text": "Disputes are resolved by binding arbitration in Delaware.",
            "changed": true,
            "classification": "DELETED",
            "current_text": null,
            "diff": [
              {
                "op": "delete",
                "text": "Disputes are resolved by binding arbitration in Delaware."
              }
            ],
            "prior_text": "Disputes are resolved by binding arbitration in Delaware.",
            "segment_id": "S5-arbitration"
          }
        ],
        "diff_transcript": [
          {
            "classification": "REVERTED",
            "diff": [
              {
                "op": "equal",
                "text": "Liability is capped at "
              },
              {
                "op": "delete",
                "text": "2x "
              },
              {
                "op": "equal",
                "text": "fees paid in the prior 12 months."
              }
            ],
            "segment_id": "S2-liability-cap"
          },
          {
            "classification": "MODIFIED",
            "diff": [
              {
                "op": "equal",
                "text": "Either party may terminate for convenience on "
              },
              {
                "op": "delete",
                "text": "60"
              },
              {
                "op": "insert",
                "text": "90"
              },
              {
                "op": "equal",
                "text": " days "
              },
              {
                "op": "delete",
                "text": "notice."
              },
              {
                "op": "insert",
                "text": "notice with written approval."
              }
            ],
            "segment_id": "S3-termination"
          },
          {
            "classification": "NEW",
            "diff": [
              {
                "op": "insert",
                "text": "Vendor will process personal data only as instructed by Customer."
              }
            ],
            "segment_id": "S4-data-processing"
          },
          {
            "classification": "DELETED",
            "diff": [
              {
                "op": "delete",
                "text": "Disputes are resolved by binding arbitration in Delaware."
              }
            ],
            "segment_id": "S5-arbitration"
          }
        ],
        "reason": null,
        "rejected_inputs": [],
        "round_chain": {
          "prior_round_digest": "1111111111111111111111111111111111111111111111111111111111111111",
          "round_number": 2,
          "status": "LINKED"
        },
        "round_summary": {
          "accepted_count": 1,
          "changed_count": 4,
          "deleted_count": 1,
          "document_id": "msa-2026-acme",
          "modified_count": 1,
          "new_count": 1,
          "reverted_count": 1,
          "round_label": "Round 2",
          "round_number": 2,
          "total_segments": 5
        },
        "scope_note": "Classifies the TYPE of change per declared segment only (ACCEPTED, REVERTED, MODIFIED, NEW, DELETED). Never scores or evaluates the negotiating position of either side; not legal advice.",
        "verdict": "CLASSIFIED"
      }
    }
  }
}
