---
ai_provenance:
  {
    "spec": "aimeat.provenance/v1",
    "level": "ai-generated",
    "notes": "v1.1.1: epävarmuuden ilmaisu kirjoitetaan lähdetekstin kielellä, kuten väite ja locator jo tekivät.",
    "method": "fully-generated",
    "generator": {
      "model": "anthropic/claude-opus-5",
      "nodeId": "aimeat-finland-001-genesis",
      "pipeline": "app.publish",
      "principal": "claude-desktop-home-mcp-appdev#happydude500001@aimeat-finland-001-genesis"
    },
    "disclosure": {
      "long": {
        "en": "A model was involved in making this. It is labelled here even where the law does not require it.",
        "es": "Un modelo intervino en esto. Aquí se declara incluso donde la ley no lo exige.",
        "fi": "Tämän tekemisessä on ollut mukana tekoälymalli. Se merkitään täällä silloinkin, kun laki ei sitä vaadi."
      },
      "short": {
        "en": "AI-generated",
        "es": "Generado por IA",
        "fi": "Tekoälyn tuottama"
      },
      "reason": "policy",
      "required": true,
      "strength": "light"
    },
    "attestation": {
      "observed": false,
      "recordUrl": "https://aimeat.io/v1/provenance/0874b015-36d0-442c-8906-1dddd5258074",
      "stampedBy": "principal",
      "contentHash": "sha256:63e6c103b80e8625c297b1f9f402ce9d4566e01dc2436cf4fa158497f13187cf"
    },
    "generatedAt": "2026-08-22T15:29:52.543Z",
    "humanInvolvement": "editorial-control"
  }
ai_provenance_url: https://aimeat.io/v1/provenance/0874b015-36d0-442c-8906-1dddd5258074
---

# PERUSTE — claim-to-source bond

## What it does

You give it a text. It separates the claims the text makes, and for each one it records the sources THE TEXT ITSELF names. Where the text names none, the claim is kept and marked unstated rather than dropped. It then reports what share of the claims carry at least one reference.

The point is the gap: a claim with no source must be visible as a claim with no source. Most texts score low, and that is the finding, not a failure of the tool.

## What it does NOT do

It never supplies a source of its own. The model is instructed to take references from the text alone, so an empty reference list is its answer.

It never fetches or checks a reference. Nothing here is verified against the material; the state says so. The machine-checked state exists in the vocabulary and this version never sets it.

A state describes the BOND between a claim and the material. It never says whether the claim is true.

## The five states of a bond

- unstated — no bond has been stated; nobody said what this claim rests on
- asserted — the producer states the bond; nobody has checked it
- machine-checked — an automatic check has run and is named; this app never sets it
- human-verified — a person read the material and confirmed the claim rests on it
- contradicted — the material disagrees with the claim

The vocabulary is closed and is not translated: these five names are the schema, in every language the app renders.

## Grounding ratio

The share of claims carrying at least one resolvable reference, always shown with its bare counts (2 of 17), never as a percentage on its own. A reference is resolvable when it has an identifier and a kind. Resolvable is not the same as checked.

## Export shape

The app exports one JSON object:

- spec: "aimeat.grounding/v1-draft"
- source: where the text came from (pasted, or an AIMEAT document)
- claims[]: id, locator { quote, start, end }, evidence[], status, uncertainty, and verification { by, at } once a person has confirmed a bond
- evidence[]: ref, type, and retrieved_at only when someone actually retrieved it — a reference the text merely names carries no retrieval time
- grounding_ratio: bound, total, ratio, by_status
- ai_provenance: the node record for the model run that separated the claims

This follows the draft schema for TARGET-067. The draft is not final: precision level and how uncertainty is expressed are still open questions, and this app makes its own v1 choice (sentence level, uncertainty in words) rather than settling them.

## Input

Either a pasted text, or an AIMEAT document addressed by organism, workspace and document id. Analyses are saved privately to the signed-in owner under a single memory record, so there is no public state to read here.

## Languages

English and Finnish. The state names stay in English in both, because they are the schema.


> **AI provenance** — AI-generated (anthropic/claude-opus-5), human editorial review, 2026-08-22T15:29:52.543Z · record: https://aimeat.io/v1/provenance/0874b015-36d0-442c-8906-1dddd5258074


## Agent affordances

- Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/peruste.html/webmcp
- Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/peruste.html/skills
- App catalog on this node (this app: happydude500001/peruste.html): https://aimeat.io/app-catalog.html
- Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md
