{
  "type": "abp/mandate/v1",
  "id": "beta-001/chatgpt-inbox-scout",
  "label": "The inbox scout: the same Gmail grant, running with nobody present",
  "surface": [
    "web"
  ],
  "applies_to": [
    "generic/scheduled-job/service-account"
  ],
  "applies_to_note": "the nearest published shape, so that a provisional delta can be computed; it is not this deployment",
  "status": "elicited",
  "authored": "2026-09-21",
  "authored_by": "riskmandate.ai, in an interview on 21 September 2026, transcribed automatically; the transcript is held by riskmandate.ai and is not published",
  "corrected": null,
  "description": "Elicited from the deployer for The inbox scout: the same Gmail grant, running with nobody present. Every line is marked said, inferred or unstated in `said`; the clauses on the page carry what the grammar has no word for.",
  "want": [
    "read.message.tenant"
  ],
  "do_not_want": [
    "send.message.world",
    "read.credential.host",
    "create.schedule.tenant",
    "execute.process.host",
    "write.file.host",
    "delete.file.host"
  ],
  "unstated": [
    "read.file.project",
    "write.file.project",
    "read.file.host",
    "execute.process.self",
    "send.endpoint.allowed",
    "send.endpoint.world",
    "authenticate-as.credential.tenant",
    "grant.credential.self",
    "write.repository.project",
    "write.repository.tenant",
    "authenticate-as.credential.signing",
    "create.record.world",
    "write.budget.tenant",
    "create.schedule.host",
    "read.record.history",
    "read.record.browsing"
  ],
  "said": {
    "read.message.tenant": {
      "status": "said",
      "from": "\"scouting my inbox for high priority emails\""
    },
    "send.message.world": {
      "status": "inferred",
      "from": "a scout reports; it does not reply"
    },
    "read.credential.host": {
      "status": "inferred",
      "from": "an unattended reader of a mailbox reads every code and reset that arrives"
    },
    "create.schedule.tenant": {
      "status": "inferred",
      "from": "the scout is one; it must not make more"
    },
    "execute.process.host": {
      "status": "inferred",
      "from": "from the nearest shape: a job that runs programs is not this"
    },
    "write.file.host": {
      "status": "inferred",
      "from": "from the nearest shape: a scout that reports writes nothing"
    },
    "delete.file.host": {
      "status": "inferred",
      "from": "from the nearest shape"
    },
    "read.file.project": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "write.file.project": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "read.file.host": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "execute.process.self": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "send.endpoint.allowed": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "send.endpoint.world": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "authenticate-as.credential.tenant": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "grant.credential.self": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "write.repository.project": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "write.repository.tenant": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "authenticate-as.credential.signing": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "create.record.world": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "write.budget.tenant": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "create.schedule.host": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "read.record.history": {
      "status": "unstated",
      "from": "not raised in the interview"
    },
    "read.record.browsing": {
      "status": "unstated",
      "from": "not raised in the interview"
    }
  },
  "notes": {
    "the property": "the same grant as the chat, with nobody in the loop. Every clause that says ask me first is unenforceable here because there is nobody to ask, so the only clauses that can hold are report only ones"
  },
  "not_in_grammar": [
    "mark a message as priority, which may be what this deployment already does",
    "read a message that arrived while nobody was watching, then act on it"
  ],
  "provenance": {
    "source": "an interview",
    "elicited_by": "riskmandate.ai, in an interview on 21 September 2026, transcribed automatically; the transcript is held by riskmandate.ai and is not published",
    "retrieved": "2026-09-21",
    "note": "Elicited, not measured, not surveyed. Written down by abp.sgit.ai from the transcript; not yet corrected by the deployer. The correction is the mandate; this is the draft it will be made from."
  }
}
