settle_feedback

Generated automatically from the published contract sources.

Build metadata: Registered in this build. Registration describes the default dispatcher in this build. It does not guarantee that a caller has the required credential or grant, that a tool is listed for that connection, or that the required service is configured.

A script calls this action over HTTPS at POST https://turnzero.ai/api/v1/actions/settle_feedback, with a bearer credential and the action's payload as the JSON body.

Contract description

Settle an issue, or change its standing. It can `settle` it with an `outcome` and a `resolution` naming the proof or the ruling, `merge` it into `target`, `wait` it with a `resolution` naming what would reopen it, `reopen` it, or `unmerge` a duplicate. On the platform's own space: platform operator, or a token holding the `feedback_queue` grant. With `space`, the identifier of an issue space your account holds, the act settles an issue of that space, your own. Nothing is deleted; every act is appended to the issue's history.

Access and action metadata

{
  "name": "settle_feedback",
  "resource": "account",
  "tier": "reversible",
  "admits": [
    "feedback_queue"
  ],
  "summary": "Settle an issue: `act` is `settle` with an `outcome`, one of the record's eight, and a `resolution` naming the proof or the ruling, required for every outcome but `noted` and `duplicate`; `merge` the issue into `target`, its master; `wait` with a `resolution` naming what would reopen it; `reopen` a fixed, closed, or waiting issue; or `unmerge` a duplicate. The 0.2.0 `disposition` is read as its outcome. No act approves or declines a duplicate: the issue service's passes merge where they agree on stamped or confirmed evidence. An optional `key` is the act's idempotency key. An act the issue's state excludes is refused `invalid_request` naming the service's refusal; nothing is deleted. The answer carries the issue as it now stands. On the platform's own space the act is admitted to `feedback_queue` or `super_admin` and refused every other credential `grant_required` naming `feedback_queue`; the row's `admits` mark names that grant. With `space`, naming an issue space the acting account holds, the act settles an issue of that space under its own token, its owner's act, no grant read. A token bounded to an application is refused `token_scope_refused`. Registered while the issue service's origin is configured.",
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": true,
    "openWorldHint": false
  }
}

MCP catalog entry

{
  "name": "settle_feedback",
  "tier": "reversible",
  "scenario": "CHI-L0-14",
  "summary": "Settle an issue, or change its standing. It can `settle` it with an `outcome` and a `resolution` naming the proof or the ruling, `merge` it into `target`, `wait` it with a `resolution` naming what would reopen it, `reopen` it, or `unmerge` a duplicate. On the platform's own space: platform operator, or a token holding the `feedback_queue` grant. With `space`, the identifier of an issue space your account holds, the act settles an issue of that space, your own. Nothing is deleted; every act is appended to the issue's history.",
  "owners": [
    "PLD-L0-40"
  ]
}

request

JSON pointer Description and constraints
"" (root) Type: object
Required fields: ["issue","act"]
Replaced members: application and environment were replaced by space
/properties/issue The issue the act settles, by its short identifier.

Type: string
Pattern: ^#[1-9][0-9]*$
/properties/act The settling act.

Type: string
Allowed values: ["settle","merge","reopen","wait","unmerge"]
/properties/outcome The outcome a settle sets.

Type: string
Allowed values: ["verified","done","as_designed","declined","duplicate","superseded","noted","unexplained"]
/properties/disposition The 0.2.0 word read as an outcome; never beside `outcome`.

Type: string
Allowed values: ["fixed","not_an_issue","cannot_reproduce","declined"]
/properties/target The master of a merge, or of a settle with the outcome `duplicate`.

Type: string
Pattern: ^#[1-9][0-9]*$
/properties/resolution What fixed it, the ruling, or why nothing changes, 1 to 4,000 characters; required for a settle but `noted` and `duplicate`, and for a wait, naming what would reopen it.

Type: string
Maximum length: 4000
/properties/key Optional: the act's idempotency key.

Type: string
Maximum length: 200
/properties/space Optional. The identifier of an issue space the acting account holds, a lower-case UUID: a space of the account's own, an application's own space as `submit_manifest`'s receipt names it, or one space of an application's per-environment pair. The act settles an issue of that space under its own token, its owner's act, no grant read. Absent, the call addresses the platform's own space. A request naming `application` or `environment` is refused `invalid_request` naming `space`.

Type: string
Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$

response

JSON pointer Description and constraints
"" (root) Type: object
Required fields: ["contract_version","issue"]
/properties/contract_version Required value: 1
/properties/reference The short reference the platform recorded this call under, ten lowercase hexadecimal characters, the value the call's record row carries; quote it when reporting the call.

Type: string
Pattern: ^[0-9a-f]{10}$
/properties/issue An issue of the Issue Tracking record, whole as the queue's reader and a space's owner read it: its short identifier, kind, title, summary, workaround, component, requirements, labels, priority, level, judgment, plan, holder, state and outcome, the counts the service keeps, and its instants. Through the projection, a reporter reads its own issues in the projected shape instead.

Type: object
/properties/issue/properties/id Type: string
Pattern: ^#[1-9][0-9]*$
/properties/issue/properties/kind Type: string
Allowed values: ["bug","gap","docs","friction","question","task","praise"]
/properties/issue/properties/title Type: string
/properties/issue/properties/state Type: string
Allowed values: ["new","open","waiting","fixed","closed"]
/properties/issue/properties/outcome Type: ["string","null"]

Complete payload contract

{
  "request": {
    "type": "object",
    "required": [
      "issue",
      "act"
    ],
    "properties": {
      "issue": {
        "type": "string",
        "pattern": "^#[1-9][0-9]*$",
        "description": "The issue the act settles, by its short identifier."
      },
      "act": {
        "type": "string",
        "enum": [
          "settle",
          "merge",
          "reopen",
          "wait",
          "unmerge"
        ],
        "description": "The settling act."
      },
      "outcome": {
        "type": "string",
        "enum": [
          "verified",
          "done",
          "as_designed",
          "declined",
          "duplicate",
          "superseded",
          "noted",
          "unexplained"
        ],
        "description": "The outcome a settle sets."
      },
      "disposition": {
        "type": "string",
        "enum": [
          "fixed",
          "not_an_issue",
          "cannot_reproduce",
          "declined"
        ],
        "description": "The 0.2.0 word read as an outcome; never beside `outcome`."
      },
      "target": {
        "type": "string",
        "pattern": "^#[1-9][0-9]*$",
        "description": "The master of a merge, or of a settle with the outcome `duplicate`."
      },
      "resolution": {
        "type": "string",
        "maxLength": 4000,
        "description": "What fixed it, the ruling, or why nothing changes, 1 to 4,000 characters; required for a settle but `noted` and `duplicate`, and for a wait, naming what would reopen it."
      },
      "key": {
        "type": "string",
        "maxLength": 200,
        "description": "Optional: the act's idempotency key."
      },
      "space": {
        "type": "string",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
        "description": "Optional. The identifier of an issue space the acting account holds, a lower-case UUID: a space of the account's own, an application's own space as `submit_manifest`'s receipt names it, or one space of an application's per-environment pair. The act settles an issue of that space under its own token, its owner's act, no grant read. Absent, the call addresses the platform's own space. A request naming `application` or `environment` is refused `invalid_request` naming `space`."
      }
    },
    "x-renamed": {
      "application": "space",
      "environment": "space"
    }
  },
  "response": {
    "type": "object",
    "required": [
      "contract_version",
      "issue"
    ],
    "properties": {
      "contract_version": {
        "const": 1
      },
      "reference": {
        "type": "string",
        "pattern": "^[0-9a-f]{10}$",
        "description": "The short reference the platform recorded this call under, ten lowercase hexadecimal characters, the value the call's record row carries; quote it when reporting the call."
      },
      "issue": {
        "type": "object",
        "description": "An issue of the Issue Tracking record, whole as the queue's reader and a space's owner read it: its short identifier, kind, title, summary, workaround, component, requirements, labels, priority, level, judgment, plan, holder, state and outcome, the counts the service keeps, and its instants. Through the projection, a reporter reads its own issues in the projected shape instead.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^#[1-9][0-9]*$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "bug",
              "gap",
              "docs",
              "friction",
              "question",
              "task",
              "praise"
            ]
          },
          "title": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "waiting",
              "fixed",
              "closed"
            ]
          },
          "outcome": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  }
}

Shared contracts