[SCITT] Re: Closing omission from the receiver's vantage — what a record must carry

Pablo Play <playplay2736@gmail.com> Thu, 20 August 2026 09:59 UTC

Return-Path: <playplay2736@gmail.com>
X-Original-To: scitt@mail2.ietf.org
Delivered-To: scitt@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id C894E12CCB5B6 for <scitt@mail2.ietf.org>; Thu, 20 Aug 2026 02:59:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1787219972; bh=S6NDU6ta73lxLfWXZkwQBKTwceIvN0nbBqCzC7sfLDg=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=zMCSOTwyxWn3nzoz/393yQmhACZeAkg/sblycUaj/WM9i3zell5p38Dd9yLh6YZkZ v/dxCnCkky3vN+bUOZSBD28DphkhO3dA5Mp80TwoPwE3Jv4neXm8bQ/qgz1a61eE7Y zbbRO8gzrCtERYPoNPTWx5dslCr1hEyy40sfwchw=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level:
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mUibOyQ7SfSp for <scitt@mail2.ietf.org>; Thu, 20 Aug 2026 02:59:31 -0700 (PDT)
Received: from mail-qv1-xf29.google.com (mail-qv1-xf29.google.com [IPv6:2607:f8b0:4864:20::f29]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id A591212CCB5AB for <scitt@ietf.org>; Thu, 20 Aug 2026 02:59:31 -0700 (PDT)
Received: by mail-qv1-xf29.google.com with SMTP id 6a1803df08f44-8fcc43c48f7so22896036d6.2 for <scitt@ietf.org>; Thu, 20 Aug 2026 02:59:31 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1787219965; cv=none; d=google.com; s=arc-20260327; b=J5TlOIujxwV8CNdcxf97/As+z/rjDwi7/j/2T3Yt/J+aPbUQHAH+0i2yT/BEJNrbEe Jy9vGMdzP9VAZ3Cmp2yfijcdqMg1gcotmxxaWP0TDJF78/R5p23aBli043hi5AdrYl4i 1CgPsGTp1pPg3FLijqgoavMiKA4BK8y3xN7CuaS7eT45BPCAZ5ZNnF+xwMIjQGCMjPVs f94AsbGnSAWsGrcx95SKJ2eT7nh+TKHkQct0STO7B+xIEDWA6snOEFR2Np7LvQfP1gXf hDZFx1m1m37SjepZefEdJHccady8VnqO50Yq7JC/GXqshncfFQMfrUnYfYSM3AcomDsS qXoA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=0Y9jS5BPlq7Tf08IAsHpEuiPWoNCIohpyRqjHaNQXsk=; fh=qNnBNR4EkCx8drJmglNLyff8nEbydt6UfrT3BbakAnw=; b=ptTVn5dxYIRAmIcVNn4oaMhVbK6NgmnwzOrSj1viG0ftoDAg3IZjb0odEw06AOMCUb rKHgvWL+ACX9aaUuzpGm+zgyiSih6a5T1HI/uaCMFjNczV7eTPaHbHF8zeatWcOCd/Zv Ajjfby4YMQHpKa7eJ74fsN0/1hcqZyI7eAFXfhx2xeuXWLOZ2ewWpKfTBZUmJqMVFddv mSoDODFbXsj7fg1JI7mQcKjn6+WuBWR6/YPPkAVDS5J+bPYkVtHI9GMuGig/4lasVlBS qTLcVm7XOFnnBYGPm/eowQZxI5me1KNHLFXuvsca16FbooCblrudUDfJfBKjjScf9YIT yeLQ==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787219965; x=1787824765; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0Y9jS5BPlq7Tf08IAsHpEuiPWoNCIohpyRqjHaNQXsk=; b=S1yBFSPnY7xiUneoQsCBJDLaSnyeQHiU/GWCoX7Hzt2w9mndIsjSIrQ6KWYnw83p+o PQsg/KR5ZNfLQjg1WVMnlqHLB73ocHLlCdIupI+tHUoOj3WxSuu1QQ5RiJcpkJa7IyaB KTnpxcpLPOePQA88PJSbUuKi3R7ylqBZvBgrVpiGejJTvD3RBXXn2tPD0R2rNYcxoIvg RCFCxA4Ga4MoJh0UizQHcQZ+hhoyyf1yYoZxf7TeSCQWyEAVuKWfACuk0LGxs+U38Xzg uqQxvk3WivbqLXeUz3X1gmK3y1oJsbTkXEM7Zq8XSPBD0B6BrJIqfrtppheYCQUUWFB5 CsIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787219965; x=1787824765; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=0Y9jS5BPlq7Tf08IAsHpEuiPWoNCIohpyRqjHaNQXsk=; b=YE9487RzTvTTt4G6c/wRI3bU9w0+q6B4D/l5I28t46HCoqUt/m7Wxwik3RNIXdlQBZ 3y75KI+9E/vZabnrJt2gsLjzwSApA6MHqw6KMRTFqaGvmz2ZGp8+MnvpN9AAEbi9CR3x NyvVPS4O+baWZZPrIyb9KuyyGm38R6a0cgjNF6nrIA1IA4YJ3RrAAtZ4u6oCHaPwPjk5 XP3OY47LRgJfiUumvyDhJwgq1x/GRXYxMyHtRFAjKY7qEB3yVDm6EZteSAqgBaW0sJuC 3R8/MuzxnMka5Eyg9t2z1em8TMrrqf3FxdX9aBcOOSvLM4lIStm3GL/srf5U0538R+OQ +epQ==
X-Forwarded-Encrypted: i=1; AHgh+RrWVNIFlckKcYIQ4qwipk2eMh7DB9mEIWYAcunwgERS4dGsR2u7HNQ8lFkrrCNZhy4utHNS+Q==@ietf.org
X-Gm-Message-State: AFuF++lakfW8BnRdBXKfcHc/lpa/xfOadU0CCFqA+HyB9kg3mNnxwbCn ydM03IZCOZqBAgm94P6eHXJLb8prgi5SECJdgZjyqq+tEvF+77hfjJgCVhnrfej67aMW0oVUyn2 U8/1lX9z2R0Jt54qQiqTnC01Sj77lGFg=
X-Gm-Gg: AR+sD118p+Rs0j7AP2ETgKpB3saYSokw9W4hJVEe+N0C2sJmA29NzXSiAmV2a48QApi tgkkncar+iaJoSj4qncBZotgd1L4nTA9RqAgqg7kBPZY/lGJA8Ts/AXaekVT0v2GX5fwNGng36m xupoZeA/wqGrz0hvXgSGAv8nXNbgnGSYF3yxmRAHk8n5d8dBvSsut8qotCE7G2q6TTmbJiXQaTW Qx2aFBthId7ezvTkJ95qFZD7u1y9u9HEtCWhtftSUe01AP4d1A1b8utR+V9UE6aJkfOxhJrPJZo kwYGBhBSCIdFEoLFaQLNZrySSKrJCEWwndKWmCOUJbCFHkKr8THHD1hjzbXTuFAv9s6mEfMjs+V YhHvcCUbQbiMaOHebB2t64rAOjFj8o10QwMIxVTZMvsIFz3bj9YleraVesam2J8yJx8uB1YdX9j fwbF8yYJB7omj9Yf87S6RkWOhOyb4ZABOPQH4HG7LWM6SsbrHnZLJtbjaPwIVVavHDWfvLcEncv xA=
X-Received: by 2002:a05:6214:1316:b0:8f3:b2a3:269b with SMTP id 6a1803df08f44-90c5eab82dfmr98500576d6.5.1787219965028; Thu, 20 Aug 2026 02:59:25 -0700 (PDT)
MIME-Version: 1.0
References: <CALc05oEEg_BVvy6UCDBBgyrV8ASvLuJYWxNoES3k9jgE22mccA@mail.gmail.com> <G291Rgu5pZ2v3GWOaxuoG0PVYvTTzkjdx8Yg6w_RncBbuBGYX1PvhYtIHg-IuMS9yf1uUKC7mf8KlXd-fE1f0yJkCUZo1jzx4vNYode61o8=@vaara.io>
In-Reply-To: <G291Rgu5pZ2v3GWOaxuoG0PVYvTTzkjdx8Yg6w_RncBbuBGYX1PvhYtIHg-IuMS9yf1uUKC7mf8KlXd-fE1f0yJkCUZo1jzx4vNYode61o8=@vaara.io>
From: Pablo Play <playplay2736@gmail.com>
Date: Thu, 20 Aug 2026 06:59:12 -0300
X-Gm-Features: AcwNN1WrXo7RECkAiSTDxpHPs6HkfoGPEBRP7OE15tVDqjrqU4mYHmmUiDa8Jhk
Message-ID: <CANWAHpo0YsdaFc+Z5HAWZ5wF0T3H20bMzzCodyP6nxraGDmHuQ@mail.gmail.com>
To: Henri Sirkkavaara <hello@vaara.io>
Content-Type: multipart/alternative; boundary="00000000000026adf00659779321"
Message-ID-Hash: GQVZX35QAVUCX26N2GEF5DNEZXY5ARFG
X-Message-ID-Hash: GQVZX35QAVUCX26N2GEF5DNEZXY5ARFG
X-MailFrom: playplay2736@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Walter Hawkins <wdhawkins46@gmail.com>, Todd.Gibson@t-mobile.com, scitt@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [SCITT] Re: Closing omission from the receiver's vantage — what a record must carry
List-Id: "Supply Chain Integrity, Transparency, and Trust" <scitt.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/scitt/eFSuW8eRu33LLR5GWAYh3oG9LME>
List-Archive: <https://mailarchive.ietf.org/arch/browse/scitt>
List-Help: <mailto:scitt-request@ietf.org?subject=help>
List-Owner: <mailto:scitt-owner@ietf.org>
List-Post: <mailto:scitt@ietf.org>
List-Subscribe: <mailto:scitt-join@ietf.org>
List-Unsubscribe: <mailto:scitt-leave@ietf.org>

Henri, Walter, Joel, Todd,

  The three-rung split is the right shape, and rung 3 is where I can add a
data point.

  We carry the same asymmetry Walter named — the party who can suppress a
record is the
  party who assigns the sequence — and close it with an external,
issuer-independent
  commitment rather than a pinned terminal seal from the same set. Two
checks we run, both
  against the byte-level chain state, not a declaration:

  anchoring_existence: the record must carry a non-null external anchor (an
on-chain block
  time in our case). No anchor, no rung-3 claim.

  anchoring_precedence: the anchor must be strictly earlier than the
outcome timestamp it's
  supposed to cover. Existence alone is a weaker property than precedence —
an anchor that
  arrives after the fact proves nothing about what was true when the
outcome was recorded.
  We had to separate these because a "compat with SEP-3004" exercise
surfaced that
  SEP-3004 explicitly defers external anchoring as orthogonal, and
  existence-without-precedence is exactly the gap a suppressing issuer
would want to hide
  in.

  Neither check trusts the issuer's own seal. The anchor is recomputed and
its ordering
  checked independently, same principle as your seq/runningCount recompute.

  On Joel's fourth item — we don't have it either, same as you. We carry a
policy_version
  field (which governing policy was in force when an action was admitted),
but nothing that
  pins the version of an external corpus a verdict was computed against.
Your example is
  the clean failure case: a verdict that moves because a sanctions list
updated looks
  identical in our records to one that moved because policy changed. I'd
rather say that
  plainly than imply we cover it.

  Code for the two rung-3 checks:
examples/conformance/anchoring-precedence-ref/verify.py
  and the SEP-3004 compat notes in
  examples/conformance/audit-record-contract-compat/verify.py, in
  github.com/giskard09/argentum-core.

  Pablo Etcheverry


El jue, 20 ago 2026 a la(s) 2:33 a.m., Henri Sirkkavaara (hello@vaara.io)
escribió:

> Walter, Joel, Todd, Pablo,
>
> Yes, willing.
>
> One correction to the opener before it hardens, and it is my own sentence.
> "An issuer-assigned, gap-free sequence with a running count makes a short
> set provably short from the bytes alone" holds for a set with a hole in it
> and fails for a set cut at the end. Emek cloned the tree at befdced and ran
> the three cases. He is correct.
>
> The property splits into rungs, and each licenses a different claim:
>
> 1. A signed seq catches a missing sequence number inside the held range,
> with no second party. 2. A pinned terminal seal catches a dropped tail from
> the held set alone. In our implementation that is a block of the form
> {"sealed": true, "total": N}, and verify_contiguity computes expected as
> max(max_seq + 1, max_running, sealed_total). On a five-record run with the
> last two dropped it reports missing 3 and 4. Without the seal it reports
> ok. 3. A suffix that suppresses the seal as well sits outside
> held-set-alone detection and needs an external anchor over the run.
>
> Rung 2 is already in the code and I stated the property one rung short of
> what it does. Emek's reading of runningCount belongs in any shared text
> too: verify_contiguity requires runningCount == seq + 1 for every held
> record, so it is a per-record consistency invariant that catches an edited
> count. It never speaks about records outside the held set, because it is
> pinned to the seq of the record it rides on. Expected is decided by the
> sequence alone.
>
> That sharpens the composition you are drawing. The receiver's vantage
> stops being optional at rung 3, because the party who can suppress the seal
> is the party assigning the sequence.
>
> Joel, your fourth item is one we do not have. Our coverage component names
> the observation boundary a decision was made under and travels inside the
> signed payload, but it carries no publisher-assigned version of the corpus
> the answer was computed against. When a sanctions list issues a delta, a
> verdict that moves for that reason looks identical in our records to a
> verdict that moved because policy changed. I would put it in the statement
> as a fourth thing a record must let a receiver resolve, and I would have to
> add the field before I could point at one.
>
> Code for rungs 1 and 2 is src/vaara/credential/_contiguity.py and
> src/vaara/credential/_authorization_receipt.py in github.com/vaaraio/vaara,
> and the vectors are under tests/vectors with checkers that import none of
> our code.
>
> *Henri Sirkkavaara*
> *Vaara *- Runtime execution layer for AI agents
> *Built to see over the noise.*
> vaara.io
> Helsinki, Finland
>
> On Wednesday, August 19th, 2026 at 23:53, Walter Hawkins <
> wdhawkins46@gmail.com> wrote:
>
> Henri, Todd,
>
> Opening this as its own thread, off all three of our drafts, because the
> piece it's about belongs to none of them and touches all of them.
>
> The gap is the one Henri named and Todd occupies from the other side:
> closing omission needs a party who knows an answer was owed. A hash-chained
> receipt makes deletion and reordering detectable and leaves omission open —
> a payment that never entered the chain leaves no gap to find. A sender-side
> attestation can't help either, because the party that can suppress the
> record is the same party producing the attestation. The only actor in the
> loop who knows a payment was owed, and cannot be made to un-know it, is the
> one receiving the money. Todd's PRVO-2 is that actor, and the 21.20%
> fictitious-settlement figure is what makes the vantage concrete rather than
> theoretical.
>
> So the question worth answering here, and I think it's a small one: what
> does a record have to carry for a party in the receiving position to use
> it, resolving all of it without ever contacting the executor? Henri put the
> shape better than I would have — three things:
>
> 1. which authorization governed this payment,
> 2. what bound was in force when it settled, and
> 3. whether the set of records claiming to cover this payment is complete.
>
> The third is where the two failure modes separate cleanly, and why this
> composes instead of competing. An issuer-assigned, gap-free sequence with a
> running count — Henri's completeness component — makes a short set provably
> short from the bytes alone, no second party required. It catches a record
> removed from a set. It says nothing about a record never created, because
> that is issuer-assigned, and the issuer sits on the side that benefits from
> the omission. The receiver catches exactly that: the executor can suppress
> a record; it cannot suppress the arrival of money. Two failure modes, two
> parties, and neither party covers both — which is the whole argument for
> treating the receiver as a distinct evidence vantage rather than folding it
> into any one draft.
>
> The natural enumerator on the receiver's side is the settlement rail:
> records bound to the settled transaction's own digest, one per payee leg,
> so an absent party enumerates from the rail instead of from a list the
> executor hands them, and a missing leg is visible to whoever holds it. That
> is the part I would rather pull out of my x402 profile and specify here,
> where it is not subordinate to one payment-authorization draft.
>
> What I would propose we produce, if you are both willing: a short
> statement of the receiver as an evidence vantage — the three things a
> record must let it resolve, the completeness component and its stated
> limit, and what a rail profile has to say for the rail's own records to
> serve the enumeration. Not a fourth draft competing with the three we have;
> the shared substrate the other three can each reference.
>
> Henri, the completeness component and its limit are yours to state. Todd,
> the fraud side — why the receiver's knowledge is the input the sending side
> cannot manufacture — is what keeps this grounded in a real failure rather
> than a neat construction. I will bring the rail-enumeration binding and a
> testnet EVM rail to exercise it against real settled transactions.
>
> Walter
>
>
> --
> SCITT mailing list -- scitt@ietf.org
> To unsubscribe send an email to scitt-leave@ietf.org
>