---
title: "What stands behind this memory, and what leans on it"
method: GET
path: "/v2/workspaces/{id}/memories/{memoryId}/warrant"
tags: ["Warrants"]
---

# What stands behind this memory, and what leans on it

`GET /v2/workspaces/{id}/memories/{memoryId}/warrant`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/workspaces/{id}/memories/{memoryId}/warrant`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

The traceability question in one call: what supports or defeats this memory (`acceptance`), and which claims would change if this premise were discounted (`premise_for`).

Two upstream folds, because neither read answers alone — status sees only edges whose `to` is this memory, impact only those whose `from` is. A memory used purely as a premise has an EMPTY acceptance and a full `premise_for`, and a route that shipped only the first would report the most important case as `nothing bears on this`.

`premise_for` is ONE HOP. ONE HOP, bounded by D6: these are the refs whose acceptance changes when every edge FROM this premise is discounted. It is NOT the transitive closure — a claim that then loses its own support is not listed here, and computing that chain is consumer policy the kernel deliberately does not make.

An edge is a REASON, with an exact id. Two edges whose prose resembles are two edges and no fold merges them; the fold never reads `reason` at all, which is why it is required — it is written for the human reading the audit, and nothing else will ever supply it.

There is NO delete. Withdrawing a reason is `bottom`, an APPEND that leaves the edge, its defeat, and the history of both in the log forever.

An acceptance status is a joint function of TWO logs — the warrant log and the assertion log the verdict oracle reads — so every read carries both cursors. Two answers are comparable only at equal pairs.

`contested` is in the status vocabulary and CANNOT OCCUR in the current topology: an edge attacks exactly one target, so undercut cycles are closed under their own targets and a support/rebut edge can never be undecided. Do not build a UI state for it.

Requires the `coord:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `coord:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which does NOT include `coord:read` — mint a key with it explicitly (`POST /v2/workspaces/{id}/keys`).

## Path parameters

- `id` string, required
- `memoryId` string, required

## Response `200`

Acceptance, one-hop impact, and what each of them could not see

- object
  - `memory_id` string, required
  - `acceptance` object, nullable, required
    - `examined` boolean, required
    - `status` 'warranted' | 'defeated' | 'contested' | 'unsupported', nullable, required
    - `fold_status` 'warranted' | 'defeated' | 'contested' | 'unsupported', required
    - `support` object[], required
      - `edge` string, required
      - `from` object, required
        - `space` 'assertion' | 'memory' | 'source' | 'inquiry' | 'warrant', required
        - `id` string, required
      - `to` object, required
        - `space` 'assertion' | 'memory' | 'source' | 'inquiry' | 'warrant', required
        - `id` string, required
      - `polarity` 'support' | 'rebut' | 'undercut' | 'undermine', required
      - `reason` string, required
      - `authority` string, required
      - `tx_time` string, required
    - `defeat` object[], required
      - `edge` string, required
      - `from` object, required
        - `space` 'assertion' | 'memory' | 'source' | 'inquiry' | 'warrant', required
        - `id` string, required
      - `to` object, required
        - `space` 'assertion' | 'memory' | 'source' | 'inquiry' | 'warrant', required
        - `id` string, required
      - `polarity` 'support' | 'rebut' | 'undercut' | 'undermine', required
      - `reason` string, required
      - `authority` string, required
      - `tx_time` string, required
    - `cursors` object, required
      - `warrant` string, required
      - `coord` string, required
  - `premise_for` object[], required
    - `space` 'assertion' | 'memory' | 'source' | 'inquiry' | 'warrant', required
    - `id` string, required
  - `impact` object, required
    - `hops` 1, required
    - `transitive` false, required
    - `note` string, required
  - `folds` number, required
  - `edges_note` string, required
  - `oracle` object, required
    - `scan_limit` number, required
    - `truncation_detectable` false, required
    - `note` string, required
  - `degraded` boolean
  - `degraded_reason` string

## Other responses

- `401`: Missing/invalid credential, or `credential_expired` — the credential is outside its `[not_before, expires_at)` window and must be replaced
- `403`: `insufficient_scope` — the credential's own scope set, or the caller's role on this workspace, does not cover the scope this route requires (the missing scope is named in the message). Or `forbidden` — the credential is not scoped to this workspace, or holds no grant on it

---

[API](https://skmtc.dev/infolang/apis/infolang-api.md) · [All operations](https://skmtc.dev/infolang/apis/infolang-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infolang/apis/infolang-api/revisions/d04bf6de72c8?raw)
