[Vcon] Re: Lawful basis withdrawn mid-session: which boundary does it bind?

Thomas Howe <ghostofbasho@gmail.com> Tue, 11 August 2026 21:25 UTC

Return-Path: <ghostofbasho@gmail.com>
X-Original-To: vcon@mail2.ietf.org
Delivered-To: vcon@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 73C011281AA39 for <vcon@mail2.ietf.org>; Tue, 11 Aug 2026 14:25:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1786483526; bh=xJfH59GdAcnhRzIie1iq8CDNGh52Doxi4R9pBNcPFO4=; h=References:To:In-Reply-To:From:Date:Subject:Cc; b=KTboBUwuD8q36OPokaCi/q/XljGlFLtpPDBDuammed1ouyIWjxkTXdmeIBazdloHk tdQP3/GEhTQD16dI1jkeieuiTlUHZGib7ZMVAzNtghUixMiFN1zURpfjT2kSw6TlMl IrLBnH4OWTCazAh/xAAvw8KjKrh3CUKkv+8TWAcI=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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_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 ok_3vLs86cwU for <vcon@mail2.ietf.org>; Tue, 11 Aug 2026 14:25:25 -0700 (PDT)
Received: from mail-vk1-xa2d.google.com (mail-vk1-xa2d.google.com [IPv6:2607:f8b0:4864:20::a2d]) (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 675001281AA32 for <vcon@ietf.org>; Tue, 11 Aug 2026 14:25:25 -0700 (PDT)
Received: by mail-vk1-xa2d.google.com with SMTP id 71dfb90a1353d-5bfbbe5220dso206892e0c.1 for <vcon@ietf.org>; Tue, 11 Aug 2026 14:25:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786483519; x=1787088319; darn=ietf.org; h=content-type:cc:subject:date:from:in-reply-to:to:message-id :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=k8bP4FOxkvUeXZT/NAvhut72+4f43cOSVuiUe6Hjk78=; b=TJ/VAG1dm682rUFuulXO1WCNcl0wI6f7Q9S7YPD+fUEZoHaxLPX/n9MaeFsfOEQtBA OLQ2WGxiX5mOSlXSABdV1sjWxAPmo0GRdY/+4ihFu8s/sL9nrNfdDIhrqKmQWiMGb7SY Xzrma+Si4jcq6BafMqDWo7IJ8/5+u6riJshUnmVUylM38lvsmsB/O55lPqsTYsaRm3wx FHgQY8MYYeLo1BM4yeMzA2oURCrXiWLoTZbiIuvWYeEUH5GZJbJ3sRuyDorTY0sfADZT aVer+dr5Zt2xZmuwe1DsTTvARuEOMCsvkeRfaJBRc+stVZvpEd3I/VyEMEDIi/kHaSji jwbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786483519; x=1787088319; h=content-type:cc:subject:date:from:in-reply-to:to:message-id :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=k8bP4FOxkvUeXZT/NAvhut72+4f43cOSVuiUe6Hjk78=; b=ia4yOj9J1PdhDmWfVYDTA+bC6abg3aYjgtzlDDPcRED2j1EWTyF7BrvdSdImkDdL1z rqn5kay0iyojiFgb1tk+Ae6d/4D7kHfuuD/LWoEpB7ghosLnxGhvw+dm9x2fvwDgB3jN qr6gfManiT1vPRSzJFLE89S0R1e1PZpuKGdGB2gE8JcCec/K7NPPQ2L4Hrn8bIucHgnV X3sUtjcnXpBvCjJ7Yr/YFJpE+sK909JHy1er4JEBqPWO6oVHLoI7YgFgEtZe2j15xoED p35RAwyr6na0IlYY6+mIh5CvqESXqQgmJrsy8r0P8BS+3IS/oSlEeaerQCvTlbgvDZ0X 4h+A==
X-Gm-Message-State: AOJu0YzaegS8uAEwuWcIt0OVY2+DhApRfqfZJ0t7G1tX5opkSJTQmKPH UkRVt1gyKsoWbNjzpH2cIsDQVa/gqBmyZHtxU1e7rQSw4Z1BnWAAluC5jTzBjWVU
X-Gm-Gg: AR+sD11fvmFfl7StQzPTsFmCqrx10/AByfatZQI/N9674XV6Vh5Zs2bVXOSu7DA6oLm qA3LuiOcLHAr6Yl62S7CFMG6KiCZXud/pkKOdpio8yQ557QIn1bYsO5H4+mRefV5vO7zCUX07Mg TpTSdQE6GWhNV3SCCYvXd6DSZGKK6knRy7RZ4+wEDM7cTCl3YwJL1fyINT4xhRTGc6FsF6TUqVr RdxNNoqIMDCuUW9pw+tX6uKS2DT40B4AzXlXi5G4zHLLh0Xi3h2Z7YymhqYHiXGr18YFppBzRmU +Y/iQp2pOJqTX+VrCBKHBTWtLhUZYrwVnolxmRepHKXIoO5J5KIeXViIZsFoTYsRAn22Dv0lMPe /r6GXPFiZ75Whx0PTRHYuR06FUbKxHH5fpGW7Pyhu/nhZx0g7oiLk5V6XvadYUVDs4+WAVYGN+C 3XuPAui0m0ABwZHETUqg+hRRRprXmAd55OUD193zk8Dv8EDl5DqludCDeIMaRW7N0Nv9Ppwy4CT sFxBjcvFXA5egm459UaQZI=
X-Received: by 2002:a05:6122:21a3:b0:5a1:b296:78fc with SMTP id 71dfb90a1353d-5c45a4d4129mr481459e0c.1.1786483518591; Tue, 11 Aug 2026 14:25:18 -0700 (PDT)
Received: from localhost (0.92.231.35.bc.googleusercontent.com. [35.231.92.0]) by smtp.gmail.com with UTF8SMTPSA id 71dfb90a1353d-5c45b74b9f6sm499175e0c.13.2026.08.11.14.25.17 for <vcon@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Aug 2026 14:25:18 -0700 (PDT)
Mime-Version: 1.0
X-Superhuman-Draft-ID: draft00cc76ad4902b54c
References: <CAD+JoCLEoXumjVbYCbCi9rptiE7Gr9ZGMfhY-sgpvM2nwm3MLQ@mail.gmail.com>
Message-ID: <msp5zwv9.32f13fcc-a52c-460f-a6ee-cd97de69e841@we.are.superhuman.com>
To: Vernon <vernon@sigilcore.com>
In-Reply-To: <CAD+JoCLEoXumjVbYCbCi9rptiE7Gr9ZGMfhY-sgpvM2nwm3MLQ@mail.gmail.com>
From: Thomas Howe <ghostofbasho@gmail.com>
Date: Tue, 11 Aug 2026 21:25:13 +0000
X-Mailer: Superhuman Desktop (2026-08-11T19:06:07Z)
X-Superhuman-ID: msp659lh.55ba5e8e-6d81-45e0-afca-911119a98ba7
Content-Type: multipart/alternative; boundary="6f78fd68b46b9f9b159ef87c36377c733a20362ca65724d07a23da81f391"
Message-ID-Hash: 23H5W7HITOOS3BZL5FFRCV5IBQML2BO4
X-Message-ID-Hash: 23H5W7HITOOS3BZL5FFRCV5IBQML2BO4
X-MailFrom: ghostofbasho@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: vcon@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Vcon] Re: Lawful basis withdrawn mid-session: which boundary does it bind?
List-Id: container for conversation data <vcon.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/vcon/BJmr9MYJ_HgGTCJ4pqsH5wWPqoU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/vcon>
List-Help: <mailto:vcon-request@ietf.org?subject=help>
List-Owner: <mailto:vcon-owner@ietf.org>
List-Post: <mailto:vcon@ietf.org>
List-Subscribe: <mailto:vcon-join@ietf.org>
List-Unsubscribe: <mailto:vcon-leave@ietf.org>

Vernon,

You're correct—I reviewed all the references, and they check out. The draft enforces withdrawal in 11.3 but doesn't let a processor observe it. Everything a processor consults in sections 5 and 6—covering expiration, purpose_grants.granted, and content_hash—becomes immutable after signing. Withdrawal remains an obligation, audit example, and SCITT event, which lifecycle-01 states isn't in the container. A conforming implementation could honor withdrawal—or not—and still meet Section 6's MUST requirements.

Your point about immutability is also correct. I can't toggle granted to false because 10.3 mandates signing, and 6.1 rejects hash mismatches. A superseding attachment under 6.4 works for updated containers but not for holders of the original.

You almost caught another issue. In 7.2, item 5, implementations must cache lawful basis states in intervals. As written, caching is mandatory. What I meant was a staleness ceiling. Changing it to "MUST NOT rely on cached state older than status_interval" fixes it and gives status_interval meaningful semantics.

The draft must define what a revocation query to a SCITT service returns. SCRAPI specifies statement registration and receipt retrieval but lacks an is-this-revoked query. The draft should add: retrieve statements about a given vCon subject and treat a registered vcon_consent_revoked as authoritative from its timestamp onward.

To your three questions:

* The evaluation boundary is undecided. I think it should apply per processing operation, not per session. Lifecycle-01 includes storage and disclosure, making a session-based boundary impractical for long sessions.

* Status_interval needs processing semantics. Burying it as a convention in conditions is insufficient. Tying it to the registry with a fail-closed rule addresses the null expiration gap and freshness concerns.

* Withdrawal should function as a state processors consult, not just an obligation. It can't reside in the signed attachment but should live in the registry, with the container pointing to it.

I'll also fix the dependency graph. Lifecycle isn't referenced in lawful-basis-02, breaking the graph where semantics are missing.

On your editorial feedback: 10.3's strongest integrity MUST will move to a more prominent spot. Regarding SCRAPI, the reference title should be "SCITT Reference APIs," not "SCITT Reference REST API." I'll confirm the latest version numbers on datatracker.

If you draft the revocation resolution rule and status_interval semantics, I'll integrate them into sections 6 and 7. I'd suggest leaving ISO 42001 and NIST AI RMF mappings as supplementary material—they age faster than the standard.

Thank you for your thoughtful message. Flagging your own overstatements helped me take action faster.

Thomas

=====================
Thomas Howe ( http://www.lightandelectric.com )
+1 (508) 364-9972

Sent via Superhuman ( https://superhuman.com/refer/r14chm1w?utm_medium=signature&utm_source=product )

On Mon, Aug 10, 2026 at 1:23 PM, Vernon < vernon@sigilcore.com > wrote:

> 
> 
> 
> Hello,
> 
> 
> 
> 
> Vernon Wharff. I build pre-execution authorization controls for AI agents,
> aimed at firms that have to evidence a control to an auditor rather than
> describe it. Over the weekend, I read
> draft-howe-vcon-lawful-basis-02 against
> draft-howe-vcon-agent-session-00. One question arose from it that I cannot
> answer from the text.
> 
> 
> 
> Section 6 defines five processing requirements. Only Section 6.2 tests
> temporal validity, and implementations MUST perform that check "before
> processing". Section 6.5 reaches a status check in its third item,
> "Check external system lawful basis status via API calls", at SHOULD level
> with no stated trigger. The subsection opens "Implementations SHOULD
> verify proof mechanisms when present", and proof_mechanisms is optional
> under Section 5.2.2, so an attachment that omits it never reaches that
> check at all. Section 5.2.4 defines the external_system proof type as
> "Lawful basis recorded in external system with API verification" and
> proof_data as "Object containing proof-type-specific data". No endpoint,
> schema, or response semantics follow. I read the registry object at 5.2.2
> as a separate thing, since it describes a transparency ledger rather than
> a consent-status query.
> 
> 
> 
> Section 5.2.2 also defines status_interval as a duration for revalidation
> intervals. Two places rely on it. Item 4 of the Section
> 6.2 MUST list requires implementations to "Support null expiration for
> indefinite validity subject to revalidation intervals". Section 13 credits
> expiration controls and revalidation intervals with ensuring
> "a lawful basis cannot be misused beyond its intended temporal scope".
> Nothing states what a processor does when an interval elapses, so an
> indefinite basis rests on a mechanism with no processing semantics.
> 
> 
> 
> Withdrawal is mandatory and undefined. Section 11.3 puts it under
> "Implementations MUST support data subject rights including", as
> "Withdrawal: Provide mechanisms for revocation of a lawful basis". Section
> 11.2 claims alignment with "GDPR Article 7: Conditions for lawful basis
> including withdrawal mechanisms", in a document that defines no withdrawal
> mechanism. Section 10.4 recommends an audit record listing "revoked" among
> its examples. Sections 5 and 6 then carry no withdrawn state, no
> processing rule that consults one, and no error for one. Section 8 defines
> LawfulBasisExpiredError and no equivalent.
> 
> 
> 
> I looked for a place to put such a state and could not find one that
> works.
> 
> 
> 
> 
> Setting granted to false in an existing attachment is not available.
> Section 10.3 requires that "All lawful basis attachments MUST be integrity
> protected using vCon signing mechanisms". A mutation breaks that
> signature, and where content_hash is present it also fails Section 6.1,
> which requires implementations to "Reject processing if hashes do not
> match".
> 
> 
> 
> 
> A second attachment does work, and I want to state that rather than
> overclaim. Section 6.4 tells a processor to "Apply most restrictive
> permission when multiple grants apply". A later granted: false therefore
> wins for any holder who receives the new container. It cannot reach copies
> already distributed. Every holder of the earlier signed vCon still
> validates a clean grant, and nothing tells that holder a superseding
> attachment exists.
> 
> 
> 
> 
> The one concrete withdrawal state in this document set sits outside the
> container. draft-howe-vcon-lifecycle-01 Section 5 defines
> vcon_consent_revoked and says those events are "not intended to be stored
> within the vCon itself". lawful-basis-02 does not reference that document
> in either reference list.
> 
> 
> 
> 
> Retention does not narrow the question. Section 2 of lifecycle-01 defines
> processing to include "collection, storage, use, disclosure, and
> deletion". A retained recording is therefore under continuous processing,
> so the boundary matters for a plain recording as much as for an agent
> session.
> 
> 
> 
> 
> Agent sessions make it sharpest. Section 2.1 of agent-session-00 defines
> an Agent Session as a single bounded run with a defined start and end,
> identified by a session identifier. Section 9 requires that
> "An agent session that processes personal data MUST be governed by a
> documented lawful basis". The attachment that would carry it is only
> recommended: "Implementations SHOULD include a lawful_basis attachment",
> and the three purpose names sit under that SHOULD. So a conformant agent
> session can hold a documented lawful basis that exists on paper and
> nowhere in the container.
> 
> 
> 
> Where the attachment is present, one grant covers a run that may make many
> tool calls. "Before processing" then has two readings that give opposite
> answers. Read it as the run boundary, and a subject who withdraws at
> minute two of a forty-minute run gets nothing until the run ends.
> 
> 
> 
> 
> Read it as the tool-call boundary, and Section 7.2 pulls the other way.
> Implementations that support registries MUST "Cache lawful basis state
> within configured intervals". A cached grant can report valid after a
> withdrawal the processor has already received. That holds whether the
> interval bounds a staleness window or creates one.
> 
> 
> 
> 
> Section 9 also closes with a live prohibition. Where a session was
> authorized only under a basis that prohibits redistribution, the vCon
> "MUST NOT be transmitted to parties outside the scope of that grant". A
> withdrawal changes what triggers that MUST NOT, and nothing states the
> moment it starts binding.
> 
> 
> 
> This is a governance question rather than a cryptographic one, and I am
> not proposing a mechanism. Two conforming implementations can honor a
> withdrawal at different moments today , and both can point at Section
> 6.2.
> 
> 
> 
> Three questions.
> 
> 
> 
> 
> Is the evaluation boundary deliberately left to implementations, or is it
> an open item?
> Should status_interval carry processing semantics? A purpose with
> real-time withdrawal obligations could then require uncached state, while
> a recording purpose does not. conditions in Section 5.2.3 could carry this
> by convention, and a convention seems weak for something that decides
> whether a withdrawal binds.
> Does the group want withdrawal expressed as a state a processor consults
> before processing? Today it is an obligation in Section 11, an audit record
> in Section 10.4, and an event outside the container.
> 
> 
> 
> Two editorial notes, both in Section 14.1. lawful-basis-02 normatively
> references draft-ietf-vcon-vcon-core-02 from January 2026, and core is now
> at -03. It also normatively references draft-ietf-scitt-scrapi-07 from
> November 2025, under that draft's former title. SCRAPI is now at
> -11 and sits in the RFC Editor queue, so what breaks on publication day is
> the citation's correctness rather than its resolution.
> 
> 
> 
> One structural note. The MUST at 10.3 is the strongest integrity
> requirement in the document. It sits under a heading about secure
> communication channels, whose background paragraph covers interception in
> transit. The requirement is broader than its heading suggests.
> 
> 
> 
> 
> I am happy to write text for any of this. Separately, I maintain a control
> map against ISO/IEC 42001 Annex A and the NIST AI RMF functions. If it is
> useful to the group, I will map the purpose-grant model onto that control
> map and contribute the result. The mapping does not exist yet, so treat it
> as an offer of work rather than of a document.
> 
> 
> 
> 
> Vernon Wharff
> Sigil Open Framework
> 
> 
> 
> --
> Vcon mailing list -- vcon@ ietf. org ( vcon@ietf.org )
> To unsubscribe send an email to vcon-leave@ ietf. org ( vcon-leave@ietf.org
> )
> 
> 
>