Makoto
Menu
Assurance model

Two tracks for how evidence was made. Five properties for what a receiver verified.

Like SLSA, Makoto separates producer controls from receiver results. The Origin and Transform tracks each have three cumulative levels that a producer adopts one step at a time. A receiver's results are separate verified properties, carried in a standard SLSA Verification Summary Attestation. None of them is a correctness score.

The code this page is about. Repeated from Summarize a verification below.
makoto vsa summarize \
  --report report.json \
  --attestations bundle/attestations \
  --policy receiver/policy.json \
  --verifier-id https://verifier.example/makoto \
  --key keys/verifier.private.pem \
  --evaluation-out summary-evaluation.json \
  --out summary.vsa.dsse.json

Key principle. A track level says how origin or transformation evidence was produced. A verified property says what a verifier established for one handoff. A diagnostic says exactly why an attempted verification failed. Keep all three apart, and never read any of them as a claim that the data is correct.

The model at a glance

Producer trackL1L2L3
OriginTraceable capture: the first observed bytes have origin evidence.Platform-authenticated capture: a hosted capture platform generates and signs that evidence.Policy-controlled capture: the platform continuously enforces declared capture controls.
TransformTraceable execution: every step binds exact inputs, predecessors, operation identity, and outputs.Platform-authenticated execution: a hosted pipeline generates and signs the evidence.Hardened execution: isolated, ephemeral runs protect both execution and signing from user-controlled steps.

Origin answers whether the data was captured under a known process. Transform answers whether its processing history was produced under a known execution process. Receiver results answer different questions: whether this handoff is authorized, graph-complete, schema-conformant, fresh, or reproduced.

No third track is needed. Transport integrity, authorization, completeness, freshness, schema conformance, privacy rules, and reproducibility are properties of a particular verification or policy, not independently adoptable producer processes.

How levels are counted

  • Cumulative within a track. Each level includes everything below it.
  • The weakest step sets the level. The level for a final artifact is the minimum qualified level among all reachable statements in that track.
  • Absence is not promoted. A graph with no transformation has no Transform level; it is reported as UNEVALUATED, never silently as L1.
  • A level names its authority. Receivers may accept or reject the authority that issued a level, but accepting a different trust root never recalculates the producer's level from unrelated bundle checks. The accepted level always names its assessment policy and issuer.
  • Not an allow/deny score. A track level is never derived by grouping arbitrary receiver checks.

The stable identifiers are MAKOTO_ORIGIN_LEVEL_1, MAKOTO_ORIGIN_LEVEL_2, MAKOTO_ORIGIN_LEVEL_3, MAKOTO_TRANSFORM_LEVEL_1, MAKOTO_TRANSFORM_LEVEL_2, and MAKOTO_TRANSFORM_LEVEL_3, plus MAKOTO_ORIGIN_LEVEL_UNEVALUATED and MAKOTO_TRANSFORM_LEVEL_UNEVALUATED when no claim is made. They deliberately do not begin with SLSA_, which SLSA reserves for its own results.

Origin track

The Origin track grades the process that first captures data into a Makoto graph. It does not ask Salesforce, a partner API, or a sensor to adopt Makoto. The adopting producer is the collector or capture platform that observes that external source.

Origin L1 · Traceable capture

User benefitA consumer can trace the artifact to one claimed source observation instead of starting with an unexplained file.
Producer evidenceA core-valid Makoto origin statement names the source kind, unique event ID, claimed event time, and exact subject digests, and is carried in a valid DSSE envelope.
Receiver verificationVerify the envelope and payload through parse-strictly, core-schemas, index-payloads, and signatures; verify that each reachable root is an origin and that its subject digest is the predecessor digest used downstream. Artifact bytes, when supplied, must match.
Summary diagnosticE_ORIGIN_LEVEL_1

Origin L2 · Platform-authenticated capture

User benefitA consumer can detect evidence added or changed after capture and can attribute the observation to a hosted capture platform rather than a person's workstation.
Producer evidenceOrigin L1 evidence plus a SLSA VSA issued by the capture platform. Its inputAttestations include the exact origin envelope; its assessment policy requires automatic, contemporaneous provenance generation and a platform signing identity, rather than a user-supplied provenance document.
Receiver verificationVerify the VSA signature with a consumer-configured key; require the configured verifier.id and assessment-policy URI and digest; require verificationResult: PASSED, a subject matching the captured artifact, the exact origin-envelope digest in inputAttestations, and MAKOTO_ORIGIN_LEVEL_2 or higher in verifiedLevels. No fuzzy name or score is accepted.
Summary diagnosticE_ORIGIN_LEVEL_2

Origin L3 · Policy-controlled capture

User benefitA consumer can tell that required source identifiers, capture timing, approvals, and content controls were enforced at acquisition rather than documented later.
Producer evidenceOrigin L2 evidence plus a digest-pinned assessment policy and contemporaneous control evidence showing that the capture platform continuously enforced the organization's declared controls. Use-case fields such as source record or device ID, ingestion timestamp, run ID, approver, and source-specific SLO remain digest-pinned profiles or input attestations rather than universal core fields.
Receiver verificationPerform every Origin L2 check; require MAKOTO_ORIGIN_LEVEL_3; require the VSA policy digest to equal the consumer's expected L3 assessment policy; and require every profile and control-evidence digest named by that policy to be present and passing in the verification inputs. A missing, not_checked, or failed required control denies L3.
Summary diagnosticE_ORIGIN_LEVEL_3

Origin L3 is analogous to SLSA Source L3: it provides evidence that declared organizational controls were enforced. It does not establish that a sensor reading was physically true or that an authorized collector was honest. The reference profile below is one standard control set for it.

Transform track

The Transform track grades the platform controls under which data transformations run and their provenance is produced.

Transform L1 · Traceable execution

User benefitA consumer gets a stack trace for data: the exact predecessor and operation behind every handed-off artifact are named.
Producer evidenceEvery reachable non-origin node is a core-valid Makoto transformation statement binding each input digest to a predecessor statement and subject, naming an operation.type, and binding exact output digests.
Receiver verificationRequire core-schemas, graph, graph-dependency-artifacts, roots-and-heads, and completeness-anchor to pass; recompute statement, predecessor, input, and subject digests. Missing or rewired steps fail deterministically rather than lowering a score.
Summary diagnosticE_TRANSFORM_LEVEL_1

Transform L2 · Platform-authenticated execution

User benefitA consumer can detect tampering after the run and attribute the provenance to a hosted pipeline rather than user-authored metadata.
Producer evidenceTransform L1 evidence plus a platform-issued SLSA VSA. Its assessment policy requires all steps to run on hosted infrastructure and the platform, not user-defined steps, to generate and sign provenance.
Receiver verificationVerify the VSA signature, configured verifier identity, assessment-policy digest, subjects, and every referenced transformation envelope; require verificationResult: PASSED and MAKOTO_TRANSFORM_LEVEL_2 or higher. The receiver's trust input explicitly lists the platform or assessor key allowed to make this claim.
Summary diagnosticE_TRANSFORM_LEVEL_2

Transform L3 · Hardened execution

User benefitA consumer gets strong evidence that another tenant, a prior run, compromised upload credentials, or user-defined pipeline code could not silently rewrite the execution evidence.
Producer evidenceTransform L2 evidence plus a qualification showing ephemeral and isolated execution; no cross-run memory, filesystem, service, or cache influence; no access by user steps to provenance signing material; and capture of every permitted external influence as an input or parameter. The qualification is named by exact policy digest in the VSA.
Receiver verificationPerform every Transform L2 check; require MAKOTO_TRANSFORM_LEVEL_3; pin the L3 assessment policy and verifier key; and verify every qualification evidence digest named by the VSA. A hardware quote may be an input only when the receiver explicitly trusts its quote verifier and policy. Raw quote bytes alone never satisfy L3.
Summary diagnosticE_TRANSFORM_LEVEL_3

Makoto does not define a hardware-attestation wire format. Transform L3 defines the control outcome and uses the same delegation model as a SLSA VSA: a receiver trusts a named verifier under an exact assessment policy. A trusted Transform L3 assessment carries at least one raw hardware-evidence descriptor, only the evidence URI and SHA-256 digest, in its standard inputAttestations. Which TPM, TEE, confidential-computing, or cloud-attestation evidence to accept is an open question, and implementations must not advertise raw hardware verification they do not perform.

Verified properties

Track levels deliberately do not absorb receiver outcomes. Each property below is issued only when its exact rule passes against a schema-valid Makoto verification report and the exact consumer policy it names.

MAKOTO_AUTHORIZED

User benefitThe receiver knows that the keys were allowed to make these source, operation, profile, and handoff claims.
Evidence suppliedThe schema-valid verification report and the exact consumer policy identified by policyDigest.
Issued only whensignatures, authorization-thresholds, and authorization are pass, and handoff authorization is pass.

MAKOTO_GRAPH_COMPLETE

User benefitThe receiver can traverse from every handed-off artifact to all producer-declared origins and detect removed or rewired steps.
Evidence suppliedThe signed handoff, all graph statements, supplied dependency artifacts, and the report.
Issued only whenindex-payloads, graph-dependency-artifacts, graph, roots-and-heads, and completeness-anchor are pass.

This is the one property beyond the four motivating examples. Lineage falsification and branch omission are receiver-established results, but neither is an Origin or Transform platform level, and none of the other properties says the presented graph is complete.

MAKOTO_FRESHNESS_ANCHORED

User benefitThe receiver can reject a stale or replayed handoff relative to one explicit independent expectation or time policy.
Evidence suppliedThe report plus the independently supplied expected manifest, head set, artifact set, nonce, or age policy used by verification.
Issued only whenfreshness-anchors is pass and the report records at least one corresponding freshness method as pass. allowReplayableHandoff and not_checked never qualify.

MAKOTO_SCHEMA_CONFORMANT

User benefitThe receiver can detect declared schema drift, missing required metadata, privacy regressions, and content-policy violations in supported formats.
Evidence suppliedDigest-pinned required profiles, authenticated local catalog bytes, applicable artifact bytes, and the report.
Issued only whencore-schemas, metadata-profiles, and artifact-profiles are pass, the consumer policy required at least one profile, and every required profile record resolved and validated with pass.

MAKOTO_REPRODUCED

User benefitA researcher or model builder can see that independent executions of the declared method produced the same exact result.
Evidence suppliedAt least two allow reports and their referenced statements from independently operated Transform L2-or-higher platforms, using the same root artifact digests and producing the same transformation-node tuples and final subjects. Each node tuple is sorted input artifact digests, operation.type, tool.digest, parametersDigest, and sorted output subject names and digests.
Issued only whenBoth graphs and reports verify, the platforms sit in distinct independence groups configured by the consumer, and the complete sorted node-tuple multisets and final subjects are exactly equal. Missing tool or parameter digests, reused independence groups, or any differing tuple fails. Repetition is not correctness.

The verification summary

Makoto reuses the SLSA v1 Verification Summary Attestation instead of inventing a second summary envelope. It is an in-toto Statement v1 in DSSE whose predicateType is exactly https://slsa.dev/verification_summary/v1:

  • subject holds the final artifact names and digests summarized.
  • verifier, timeVerified, resourceUri, policy, inputAttestations, verificationResult, verifiedLevels, dependencyLevels, and slsaVersion keep their SLSA meanings; slsaVersion is 1.2.
  • verifiedLevels contains at most one highest value for each Makoto track plus every verified property whose exact rule passed.
  • verificationResult is PASSED only when the report decision is allow and every level or property the summary policy requires was established. Otherwise it is FAILED and verifiedLevels holds only FAILED; the optional evaluation sidecar keeps any individually established levels, properties, and diagnostics.

A receiver accepts a VSA only after validating the DSSE signature, exact subjects, expected resourceUri, configured verifier ID and key, exact policy URI and digest, verificationResult: PASSED, required level and property identifiers, and every locally required input-attestation digest. This is a closed boolean procedure, not an opaque score. A consumer that needs the detailed reasoning keeps or recomputes the underlying report.

The statement, handoff, bundle, and verification-report wire formats do not change. The receiver supplies its VSA trust inputs in the existing trust policy's optional verificationSummary member: the resource URI, the exact summary-policy descriptor, the required levels and properties, and each trusted verifier's key IDs, verifier ID, accepted assessment policy, allowed level claims, required evidence, and independence group. There is no second policy file.

Summarize a verification

These are the reference CLI's flags at the pinned core commit. makoto vsa assess is what a capture platform or pipeline runs to issue an L2 or L3 assessment; makoto vsa summarize is what a receiver or delegated verifier runs over a completed report. summarize exits 1 when the summary does not pass.

# A platform assesses its own run at Transform L2.
makoto vsa assess \
  --track transform \
  --level 2 \
  --input-attestation bundle/attestations/<statement>.dsse.json \
  --verifier-id https://pipeline.example/makoto-assessor \
  --resource-uri https://pipeline.example/runs/1234 \
  --policy-uri https://pipeline.example/policies/transform-l2 \
  --policy-digest sha256:<assessment policy digest> \
  --key keys/assessor.private.pem \
  --out transform-l2.vsa.dsse.json

# The receiver summarizes one verified handoff.
makoto vsa summarize \
  --report report.json \
  --attestations bundle/attestations \
  --policy receiver/policy.json \
  --assessment transform-l2.vsa.dsse.json \
  --verifier-id https://verifier.example/makoto \
  --key keys/verifier.private.pem \
  --evaluation-out summary-evaluation.json \
  --out summary.vsa.dsse.json

The report's policyDigest must equal the digest of the policy passed to summarize, and that policy must carry a verificationSummary member. The summary evaluator has its own closed diagnostic vocabulary, reported in the evaluation sidecar and never replacing the more specific bundle diagnostics: E_ORIGIN_LEVEL_1 through E_ORIGIN_LEVEL_3, E_TRANSFORM_LEVEL_1 through E_TRANSFORM_LEVEL_3, E_ASSESSMENT_TRUST, E_ASSESSMENT_SIGNATURE, E_ORIGIN_ASSESSMENT_SUBJECTS, E_ORIGIN_ASSESSMENT_INPUTS, E_TRANSFORM_ASSESSMENT_SUBJECTS, E_TRANSFORM_ASSESSMENT_INPUTS, E_PROPERTY_AUTHORIZED, E_PROPERTY_GRAPH_COMPLETE, E_PROPERTY_FRESHNESS_ANCHORED, E_PROPERTY_SCHEMA_CONFORMANT, E_PROPERTY_REPRODUCED, E_REQUIRED_VERIFICATION_RESULT, and E_REPORT_DENIED.

The Origin L3 reference profile

Core ships one standard reference profile for policy-controlled capture, origin-l3-reference-v1. Applied to an origin predicate, it requires a source record or device identifier, an ingestion timestamp, a run identifier, a non-null approver, and a freshness SLO. It is an example control set, not a universal core schema: producers pin its exact root and closure digests in an ordinary profile reference, receivers list that reference in the trusted Origin L3 assessor rule, and an organization may use a stricter private profile instead.

{
  "$schema": "https://usemakoto.dev/schema/v0.2/profile-dialect.schema.json",
  "$id": "https://usemakoto.dev/profiles/v0.2/origin-l3-reference-v1.schema.json",
  "title": "Makoto Origin L3 reference capture controls",
  "type": "object",
  "required": ["event", "source", "extensions"],
  "properties": {
    "event": {
      "type": "object",
      "required": ["occurredAt"]
    },
    "source": {
      "type": "object",
      "required": ["uri"]
    },
    "extensions": {
      "type": "object",
      "required": ["https://usemakoto.dev/profile/origin-l3/v1"],
      "properties": {
        "https://usemakoto.dev/profile/origin-l3/v1": {
          "type": "object",
          "required": [
            "sourceRecordOrDeviceId",
            "ingestedAt",
            "runId",
            "approver",
            "freshnessSloSeconds"
          ],
          "properties": {
            "sourceRecordOrDeviceId": { "type": "string", "minLength": 1 },
            "ingestedAt": { "type": "string", "minLength": 20, "maxLength": 30 },
            "runId": { "type": "string", "minLength": 1 },
            "approver": { "type": "string", "minLength": 1 },
            "freshnessSloSeconds": { "type": "integer", "minimum": 0 }
          },
          "additionalProperties": false
        }
      }
    }
  }
}

Its exact profile reference, which a producer pins and a receiver trusts:

{"closureDigest":{"sha256":"c02fed306cd6300d537c2664ad88b877dc5605b49b7d9dd0d03bf6c6332b6687"},"critical":true,"digest":{"sha256":"a6196356b740d8f7c72bce9093956c1e9457a8479a7b13269d00f9ff51af2f86"},"id":"https://usemakoto.dev/profiles/v0.2/origin-l3-reference-v1.schema.json","resources":[],"target":"predicate"}

Both are byte-for-byte the files in core docs/profiles/ at the pinned commit. The profile's $id is not served from this site yet: the hosted-schema release tooling mirrors only the core schema set, so resolve the profile from your local catalog by its digest, as every profile is resolved.

Seven checks behind every result

Levels and properties are built from seven separate answers a verifier gives. A report keeps all seven, so a receiver can always read past a summary to the evidence.

DimensionEvidence requiredFeedsWhat it does not establish
StructureCore schemas and any required organizational profiles pass.Origin and Transform L1; MAKOTO_SCHEMA_CONFORMANTWho signed the claim or whether it is complete.
AuthenticityDSSE signatures authenticate the exact payload bytes.Origin L1; MAKOTO_AUTHORIZEDWhether that key was permitted to make the claim.
AuthorizationReceiver policy authorizes each key for its source, operation, profile, or handoff role.MAKOTO_AUTHORIZEDWhether the claimed event really happened.
ContinuityEvery transformation binds exact predecessor statements and input artifact digests.Transform L1; MAKOTO_GRAPH_COMPLETEWhether an entire branch was withheld.
CompletenessA signed handoff commits to exact roots, heads, statements, profiles, and final artifacts.Transform L1; MAKOTO_GRAPH_COMPLETEWhether an older complete handoff was replayed.
Artifact integrityThe receiver hashes the bytes it actually received and matches the signed subject.Base verification (artifact-bytes)Whether those unchanged bytes are safe or useful.
FreshnessAn independent expected head, manifest, nonce, artifact, or age bound matches.MAKOTO_FRESHNESS_ANCHOREDData quality or source truthfulness.

Adopting it step by step

  1. Start at one source (Origin L1)Choose a real collection boundary and bind a signed origin claim to exact source bytes.
  2. Append one transform (Transform L1)Make the next producer name its exact predecessor statement and input artifact instead of rewriting a shared history.
  3. Separate the receiverMove trust policy, authorization rules, and schema catalogs outside the producer's bundle.
  4. Sign the handoffCommit to the exact graph and artifacts intentionally transferred across the organizational boundary, and add private profiles for the rules that matter.
  5. Anchor itPin the expected manifest, head, or artifact through an independent channel, or require a nonce or maximum age.
  6. Move generation onto a platform (L2, then L3)Let a hosted capture platform or pipeline generate, sign, and assess the same evidence, then harden and isolate it.

Configuring the receiver

If you needWhat to configureProperty it supports
Signed evidence you can checkSigned origin and transform statements; configured public keys.MAKOTO_AUTHORIZED
A partner or regulated handoffPer-role authorizedKeyIds, a handoff key, and requiredProfiles for content rules.MAKOTO_AUTHORIZED, MAKOTO_SCHEMA_CONFORMANT
A gate in front of load, mirror, or trainingrequireExpectedManifest, requireExpectedHead, requireExpectedArtifacts, or requireNonce with a consumer nonce.MAKOTO_FRESHNESS_ANCHORED
Protection against one stolen keyminimumSignatures greater than one on the rules where a single key is not enough.MAKOTO_AUTHORIZED

One stolen authorized key can sign accepted statements, and even an internally consistent graph. Defeating it also needs the receiver's expected values, or a threshold above one. Hardware-backed keys, transparency logs, access controls, and governance systems may strengthen a deployment; none is implied by a passing report.

What the evidence looks like

A signed origin statement from the reference handoff, decoded. It is Origin L1 evidence: it binds the exact source bytes by digest and names the source kind and URI that receiver rules match against.

{
  "_type": "https://in-toto.io/Statement/v1",
  "predicate": {
    "event": {
      "id": "urn:uuid:11111111-1111-4111-8111-111111111111",
      "occurredAt": "2026-09-16T16:00:00Z"
    },
    "profiles": [],
    "schemaVersion": "0.2",
    "source": {
      "kind": "urn:makoto:demo:source:synthetic-file",
      "uri": "urn:makoto:demo:v0.2:source:customers-raw"
    }
  },
  "predicateType": "https://usemakoto.dev/predicate/v0.2/origin",
  "subject": [
    {
      "digest": {
        "sha256": "4e90181e7f75ccdf0e4d81c83d281f53806bed241787cdc751e22b2d4cd19919"
      },
      "name": "customers.raw.json"
    }
  ]
}

Output of jq -r .payload attestations/56b7be43….dsse.json | base64 -d | jq . on the published envelope.

The receiver side of the same boundary: the rule that authorizes that origin claim, which MAKOTO_AUTHORIZED reads, and the handoff expectations that make MAKOTO_FRESHNESS_ANCHORED possible.

{
  "rules": [
    {
      "authorizedKeyIds": [
        "sha256:fd110d301d2f077de1414b8f99f441b1403fab207b2052fbd2c065e4ee8e7dc2"
      ],
      "id": "urn:makoto:demo:rule:origin",
      "minimumSignatures": 1,
      "predicateTypes": [
        "https://usemakoto.dev/predicate/v0.2/origin"
      ],
      "sourceKinds": [
        "urn:makoto:demo:source:synthetic-file"
      ],
      "sourceUris": [
        "urn:makoto:demo:v0.2:source:customers-raw"
      ]
    }
  ],
  "handoff": {
    "allowReplayableHandoff": false,
    "authorizedKeyIds": [
      "sha256:d016df3d83373617c06b5e1d6359caa06eeba8b3af2c7077234f109f2194516c"
    ],
    "minimumSignatures": 1,
    "requireExpectedArtifacts": true,
    "requireExpectedHead": true,
    "requireExpectedManifest": true,
    "requireNonce": false,
    "requireRecipient": false
  }
}

Output of jq '{rules: [.rules[] | select(.id == "urn:makoto:demo:rule:origin")], handoff}' policy.json on the published receiver policy.

From L1 evidence to a verified handoff

These are the command shapes the reference end-to-end proof runs, with its paths shortened. Steps 1 and 2 produce Origin L1 and Transform L1 evidence from a developer machine; L2 and L3 need a hosted platform to generate, sign, and assess that same evidence, as above.

# 1. Origin L1: sign an origin claim over exact bytes.
makoto key generate --private-out keys/origin.private.pem --public-out keys/origin.public.pem
makoto attest origin \
  --subject customers.raw.json=data/customers.raw.json \
  --source-kind urn:makoto:demo:source:synthetic-file \
  --source-uri urn:makoto:demo:v0.2:source:customers-raw \
  --event-id urn:uuid:11111111-1111-4111-8111-111111111111 \
  --occurred-at 2026-09-16T16:00:00Z \
  --key keys/origin.private.pem \
  --out attestations/01-origin.dsse.json

# 2. Transform L1: append one step that binds its predecessor and input bytes.
makoto attest transform \
  --subject customers.normalized.json=data/customers.normalized.json \
  --input-binding bindings/normalize-input.json \
  --operation-type urn:makoto:demo:operation:normalize \
  --operation-name "Normalize customer records" \
  --event-id urn:uuid:22222222-2222-4222-8222-222222222222 \
  --occurred-at 2026-09-16T16:00:00Z \
  --key keys/normalize.private.pem \
  --out attestations/02-normalize.dsse.json

# 3. Separate the receiver: check its own policy before trusting it.
makoto policy check --policy receiver/policy.json

# 4. Sign the handoff over the exact graph and final artifact.
makoto handoff create \
  --head attestations/03-public-safe.dsse.json \
  --attestations attestations \
  --artifact-binding bindings/final-artifact.json \
  --schema-catalog receiver/catalog.json \
  --key keys/handoff.private.pem \
  --out bundle

# 5. Verify as the receiver, with receiver-held expectations.
makoto verify bundle bundle \
  --policy receiver/policy.json \
  --schema-catalog receiver/catalog.json \
  --expected-manifest sha256:<published manifest digest> \
  --expected-head sha256:<published head digest> \
  --expected-artifact receiver/expected-artifact.json \
  --json > report.json

Run the whole path, including private profiles and seven denial cases, with the end-to-end proof. Put step 5 in CI with any casebook gate workflow, then summarize the report when a downstream party needs a signed result.

What to ask for

If you needAsk the producer forRequire as a receiver
To know where a file came from and every step it went throughOrigin L1 and Transform L1MAKOTO_GRAPH_COMPLETE
Assurance that nobody edited the evidence after capture or after the runOrigin L2 and Transform L2 from a hosted platformMAKOTO_AUTHORIZED
Source IDs, ingestion time, run ID, and approver enforced at captureOrigin L3 under a pinned profile such as the reference profileMAKOTO_SCHEMA_CONFORMANT
Protection from other tenants and user pipeline code rewriting evidenceTransform L3MAKOTO_AUTHORIZED
A gate that will not accept yesterday's valid release as today'sAny track levelMAKOTO_FRESHNESS_ANCHORED
Independent confirmation that a method repeats exactlyTransform L2 or higher from two independent platformsMAKOTO_REPRODUCED

Every row maps to the threat model, which follows the core failure-mode coverage matrix.

What Makoto does not cover

Makoto cannot establish that:

  • a signer told the truth;
  • a described transformation actually executed, unless a separately trusted Transform-track assessment establishes the execution controls, and even then it cannot establish that the transformation was correct;
  • the source itself was correct, complete, licensed, safe, or legally usable;
  • a bundle history is complete without an authorized handoff manifest, or fresh without an independently obtained expected manifest, head, or artifact set, nonce challenge, or consumer age policy; explicit replay acceptance waives rather than establishes freshness;
  • an unavailable historical artifact still matches its recorded digest;
  • a timestamp came from a trusted clock;
  • a URI still serves the original bytes;
  • signing keys were stored securely; or
  • data is confidential merely because provenance exists.

Like SLSA, Makoto does not cover every way a producer can cause harm. It does not establish data-content correctness, code or model quality, freedom from bias or poison, the good intent of an authorized producer, confidentiality, legal compliance, deletion from every downstream copy, or the safety of a consumer that ignores a denial. A hardened platform limits who can tamper with an execution; it does not make the requested execution wise.

Handing off to a correctness process

Makoto will never certify data-content correctness. Its evidence is still what a correctness process needs. A downstream evaluator can consume Makoto's exact origin, operation, signer, graph, profile, and artifact identities; run domain tests, human review, calibration checks, retrieval evaluation, or model evaluation; and bind that result to the same digests in a separate attestation.

Makoto then supplies the stack trace for data needed to locate and replace a bad input or step. The downstream process owns the correctness judgment. That division keeps Makoto simple and transparent while making incorrect outcomes diagnosable and replaceable.

Adopt one level at a time

Start with traceable evidence. Harden where it is made. Verify what you received.

Every casebook gate already produces the report a verification summary reads. Start there, then ask your producers for the track level your decision needs.