{
  "name": "revise_promise_meaning",
  "title": "Agree a revised meaning, on the owner's sign-off",
  "description": "Agree the revision waiting on one promise, because its named owner read the new wording and signed it off. File the revision first with propose_semantic_revision: the sign-off page shows the person the exact wording they are agreeing to, so there has to be one there to read. The meaning currently in force stays authoritative until a verifier qualifies against the new one and protection is activated on it, which is why a deliberate revision can read as a regression in between. Obtain explicit sign-off for THIS act in THIS conversation before calling this. Never call it on your own initiative, and never on a person's general approval of some earlier act. Quote the person's own words in signOff.quotedWords, not your summary of them. When a result includes forThePerson, tell the person what it says in your own words, in about one line.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "signOff": {
        "type": "object",
        "properties": {
          "who": {
            "description": "The person who signed this off: their membership ID from get_promise_setup, or the email address they signed in with. It must be the named owner of the thing being acted on; anybody else is refused.",
            "type": "string",
            "minLength": 1,
            "maxLength": 320
          },
          "quotedWords": {
            "description": "What the person actually said, in their words. Not your paraphrase, not a restatement of the act, and never words you supplied for them to agree to.",
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "at": {
            "description": "When they said it, in this conversation.",
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "who",
          "quotedWords",
          "at"
        ],
        "additionalProperties": false
      },
      "grantCode": {
        "description": "The one-time code the person was shown after they signed off on the sign-off page. Ask them for it; you cannot produce one, and a wrong or missing code is refused with the link to hand them rather than something to retry.",
        "type": "string",
        "minLength": 8,
        "maxLength": 200
      },
      "promiseId": {
        "type": "string",
        "pattern": "^prom_[a-z0-9]{8,64}$"
      }
    },
    "required": [
      "signOff",
      "grantCode",
      "promiseId"
    ],
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": false
  },
  "execution": {
    "taskSupport": "forbidden"
  }
}