<?xml version="1.0" encoding="UTF-8"?>
<rfc version="3"
     category="info"
     docName="draft-okutomi-agent-human-interaction-00"
     ipr="trust200902"
     consensus="false"
     submissionType="IETF">
  <front>
    <title abbrev="Agent-Human Interaction">An Agent-Human Interaction Overlay for Task Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-okutomi-agent-human-interaction-00"/>
    <seriesInfo name="Intended RFC status" value="Informational"/>
    <author initials="A." surname="Okutomi" fullname="Akira Okutomi">
      <organization>Individual</organization>
      <address>
        <email>okutomi+ietf@pm.me</email>
      </address>
    </author>
    <date year="2026" month="August" day="18"/>
    <area>Applications and Real-Time</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>agent-human interaction</keyword>
    <keyword>task responsibility</keyword>
    <keyword>human reachability</keyword>
    <abstract>
      <t>This intentionally incomplete design note defines an overlay for Human and Agent participation in existing Task and Action protocols.  It separates the responsible Participant from the authenticated Actor, records Human interactions, excludes Humans from Agent discovery, and binds each change to its authorized request.  It defines neither a wire protocol nor Humans as Agents.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="problem">
      <name>Problem</name>
      <t>Existing specifications cover Agent Tasks, Tool calls, Human Tasks, Actions, and history, but not how they fit together when software acts for a responsible Human.</t>
      <t>Humans may reply later or more than once, correct a response, delegate work, or become unreachable.  Treating this as one Agent call or Task state obscures responsibility, response history, and privacy boundaries.</t>
    </section>

    <section anchor="status-and-scope">
      <name>Scope and Reused Specifications</name>
      <t>This -00 is a discussion document, not an application protocol.  An implementation selects an existing Task protocol and, when needed, an Action protocol.  The table lists concepts this overlay can reuse without adopting their wire formats.</t>
      <table>
        <name>Reused specifications</name>
        <thead>
          <tr><th>Specification</th><th>Reused concepts</th></tr>
        </thead>
        <tbody>
          <tr><td>A2A 1.0 <xref target="A2A"/></td><td>Task, Message, Task state, and Agent Card</td></tr>
          <tr><td>MCP 2026-07-28 <xref target="MCP-TOOLS"/></td><td>Tool discovery, Tool calls, and input-required results</td></tr>
          <tr><td>WS-HumanTask 1.1 <xref target="WS-HUMANTASK"/></td><td>People assignment, ownership, delegation, and Human Task handling</td></tr>
          <tr><td>ROS 2 Actions <xref target="ROS2-ACTIONS"/></td><td>Accepted, executing, canceling, and terminal execution states</td></tr>
          <tr><td>W3C PROV-DM <xref target="PROV-DM"/></td><td>Association, role, delegation, and provenance (history and origin)</td></tr>
        </tbody>
      </table>
      <t>These specifications retain their wire formats and full state machines.  Although PROV-DM uses Agent broadly enough to include a person, this document keeps Human and Agent as separate entity classes.</t>
    </section>

    <section anchor="candidate-model">
      <name>Overlay Model</name>
      <figure>
        <name>Responsibility, communication, and execution</name>
        <artwork><![CDATA[
Human or Agent -- holds ----> Participant role
Assignment ----- links ----> Participant and Task
Interaction Event records -> interaction history
Action ---------- runs -----> under an accepted Assignment

Agent ----------- calls ----> Tool
Actor ----------- sends ----> operation
]]></artwork>
      </figure>
      <dl newline="true">
        <dt>Human</dt>
        <dd><t>A natural person who can accept responsibility.</t></dd>
        <dt>Agent</dt>
        <dd><t>An automated entity that can accept responsibility, run an Action, or act for a Human when its authority has been verified.</t></dd>
        <dt>Tool</dt>
        <dd><t>A callable function or resource.  A Tool cannot accept an Assignment; a service with continuing responsibility is an Agent.</t></dd>
        <dt>Participant</dt>
        <dd><t>A responsibility role held by a Human or Agent, not a fourth entity class.</t></dd>
        <dt>Actor</dt>
        <dd><t>The authenticated sender of an operation, which may differ from the Participant.</t></dd>
        <dt>Assignment</dt>
        <dd><t>The continuing responsibility link between a Participant and a Task.</t></dd>
        <dt>Interaction Event</dt>
        <dd><t>A recorded question, response, correction, or withdrawal.</t></dd>
        <dt>Action</dt>
        <dd><t>An execution governed by the selected protocol and linked to an accepted Assignment.</t></dd>
      </dl>
      <t>An LLM may be a Tool or part of an Agent, but is not a responsibility class.</t>
    </section>

    <section anchor="coordination-delta">
      <name>Additional Coordination Rules</name>

      <section anchor="responsibility-not-execution">
        <name>Responsibility Is Not Execution</name>
        <t>Execution state belongs to the selected Task or Action protocol, not the Assignment.  A slow Human response alone is not an Assignment or Action failure.  Action success does not automatically fulfill an Assignment, and release or revocation does not automatically cancel an Action.</t>
        <t>For uncertain execution, WAITING means the resume condition is known, INDETERMINATE that an external effect is unknown, and ORPHANED that the executor is lost.  A timeout alone is not failure, and lease expiry is not cancellation.  If a timeout may hide an external effect, retry waits for reconciliation to establish the outcome or rule out a duplicate effect.  The selected protocol defines the concrete states and events.</t>
        <t>A WAITING Action retains its resume condition across restarts.  A timer or probe permits another check; it does not satisfy the condition, nor does moving the Action to PAUSED.  PAUSED requires a confirmed stop, not merely a request or lost response.  RESUME and TAKEOVER require fresh authorization and a new lease generation; the system applying the effect rejects older generations.  Uncertain execution remains INDETERMINATE pending reconciliation.  If the executor is lost during cancellation, recovery continues cancellation or reconciliation.</t>
        <t><strong>Physical Effects (Non-Normative).</strong>  In physical processes such as semiconductor fabrication or robotic automation, Action completion alone proves neither the physical effect nor product quality.  A correction to a running operation is separately bound and cannot rewrite an earlier request or effect.  Domain records may support reconciliation.  The SEMI references <xref target="SEMI-E40"/>, <xref target="SEMI-E90"/>, <xref target="SEMI-E94"/>, <xref target="SEMI-E157"/>, <xref target="SEMI-E170"/>, and <xref target="SEMI-E174"/> provide background; this document does not claim conformance.</t>
      </section>

      <section anchor="delegation-retains-responsibility">
        <name>Delegation Retains Parent Responsibility</name>
        <t>Delegating an accepted Assignment creates an OFFERED child while the parent remains ACCEPTED.  The parent event, child offer, and immutable delegation record are stored together; if any fails, none is stored.  An external authorization service verifies that the child's authority is within the parent's, and the system checks that decision against both authority digests.  Delegation is not a Task dependency.</t>
      </section>

      <section anchor="append-only-interaction">
        <name>Interaction History Is Append-Only</name>
        <t>Interaction Events are immutable.  Multiple RESPONSE events may point to one QUESTION through in_reply_to.  CORRECTION and WITHDRAWAL point through supersedes to the author's earlier RESPONSE or CORRECTION, which remains stored.</t>
        <t>A RESPONSE or CORRECTION may be INTERIM or FINAL.  FINAL expresses only the author's intent; it does not close the interaction, fulfill an Assignment, or complete an Action.  content_ref locates the content, content_digest identifies its bytes, and each complete event identifies both Participant and Actor.</t>
      </section>
    </section>

    <section anchor="human-reachability">
      <name>Human Discovery and Reachability</name>
      <t>Humans are excluded from Agent search.  Human discovery uses a separate opt-in process, and peer-supplied data cannot reclassify a Human as an Agent.</t>
      <t>Consent is limited to a Human-requester pair, purpose, capability, channel, and period.  Search returns a pairwise opaque candidate ID, capability and channel metadata, a contact-request reference, and an expiry.  It reveals no Participant ID, consent proof, or direct contact.</t>
      <t>After separate Human approval, a reachability grant supplies a purpose-limited HTTPS relay-session reference, not a direct contact.  Consent and grants are revocable, and current Participant status is checked on use.</t>
    </section>

    <section anchor="exact-operation-binding">
      <name>Exact Operation Binding</name>
      <t>For an accepted Human operation, a trusted registry supplies the responsible ACTIVE HUMAN Participant, while verified ASB grant and proof data supply the Actor.  The receiver binds both identities and all decision-relevant fields to the request digest and current ASB session.</t>
      <t>Trusted Actor identity, Human kind and status, TLS binding, Store state, and replay result come from receiver-side sources, not caller assertions.  Before commit, the receiver checks expiry, revocation, replay, revision, and duplicate event IDs.  Interaction Events remain append-only and do not change Assignments.</t>
      <t>Session expiry blocks new authorization but does not stop an accepted Action or alter an Assignment.  If a transport timeout leaves the result unknown, the caller opens a new authenticated session and checks whether the operation was stored before retrying.  A retry reuses the event ID and request content with fresh proof; the stored event ID and result let the receiver return the earlier result.</t>
      <t>Pause, resume, cancel, takeover, and execution-changing corrections are new operations.  Each uses a new event ID, an exact request digest, and fresh proof.</t>
      <t>This overlay does not redefine ASB, TLS, or database protocols; it defines how their verified results bind to a coordination operation.</t>
    </section>

    <section anchor="dependency-safety">
      <name>Dependency Safety Rule</name>
      <t>A Task dependency means waiting for another Task; delegation is not one.  A binding may reuse ALL, ANY, or QUORUM conditions from an existing workflow model.  To avoid false positives, it reports no deadlock while a target is unknown or external progress, such as a timer, signal, or Human response, remains possible.</t>
    </section>

    <section anchor="implementation-status" removeInRFC="true">
      <name>Implementation Status</name>
      <t>This section follows <xref target="RFC7942"/>.  Information is current as of 18 August 2026.</t>
      <t>At commit 9c5fef9, public main implements Task Participants, Assignments, Interaction Events, dependencies, and conservative deadlock detection.  It also provides Agent-only discovery, Human matching and reachability, exact ASB request binding, direct TLS ingress, JSON Schemas, Store interfaces, in-memory adapters, and tests.</t>
      <t>The Action lifecycle and Task-Action binding exist only in development code.  They are not part of that revision, which still includes AUTOMATED_SERVICE as a Participant kind and has not adopted the proposed Human-Agent-Tool model.</t>
      <t>The ingress cannot yet look up a result after a lost response, and replay use and Store commit do not succeed or fail together.  The development Action code fences Store updates but lacks an external executor or physical-system adapter.</t>
      <t>The repository is available at <eref target="https://github.com/ToppyMicroServices/agents-secure-binding"/>.</t>
      <section anchor="implemented-state-values">
        <name>Implemented State and Status Values</name>
        <table>
          <name>Values present in the ASB repository</name>
          <thead>
            <tr><th>Layer</th><th>Implemented values</th><th>Availability</th></tr>
          </thead>
          <tbody>
            <tr><td>Participant registry status</td><td>ACTIVE, SUSPENDED, REVOKED</td><td>Public main</td></tr>
            <tr><td>Assignment responsibility state</td><td>OFFERED, ACCEPTED, DECLINED, RELEASED, REVOKED, FULFILLED</td><td>Public main</td></tr>
            <tr><td>Action execution state</td><td>ACCEPTED, RUNNING, WAITING, PAUSED, ORPHANED, CANCELING, INDETERMINATE, SUCCEEDED, FAILED, CANCELED</td><td>Development code</td></tr>
            <tr><td>Reconciliation status</td><td>&quot;REQUIRED&quot;, &quot;RUNNING&quot;, &quot;RESOLVED&quot;</td><td>Development code</td></tr>
            <tr><td>Reconciliation result</td><td>NO_EFFECT, SUCCEEDED, FAILED, CANCELED</td><td>Development code</td></tr>
            <tr><td>Outcome status</td><td>SUCCEEDED, FAILED, CANCELED</td><td>Development code</td></tr>
          </tbody>
        </table>
        <t>The repository has no separate Task state machine; the selected Task protocol supplies it.  QUESTION, RESPONSE, CORRECTION, and WITHDRAWAL are event kinds, while INTERIM and FINAL are response assertions.  These are not states.  A Tool receives no Assignment and therefore has no Assignment state.</t>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Network input is not itself a trusted operation.  The receiver derives the Actor from verified ASB data, Participant status from a trusted registry, transport binding from its TLS connection, and revision from the Store.  Before commit, one application service checks request binding, expiry, revocation, replay, and revision; any failure rejects the operation.  Reverse-proxy headers cannot replace trusted TLS termination.</t>
    </section>

    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Participant, interaction, dependency, and contact records can reveal who is involved, availability, communications, and work structure.  Human matching limits disclosure through pairwise candidate IDs and relay references rather than direct contacts.</t>
      <t>The repository's in-memory example is not an encrypted contact store and provides no production relay, abuse prevention, or retention controls.  Deployments keep direct contacts outside the coordination package and normal logs, and enforce consent, revocation, and retention at the relay.</t>
      <t>Public contact data does not grant permission for indexing or automated use.</t>
    </section>

    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942">
        <front>
          <title>Improving Awareness of Running Code: The Implementation Status Section</title>
          <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
          <author fullname="A. Farrel" initials="A." surname="Farrel"/>
          <date month="July" year="2016"/>
        </front>
        <seriesInfo name="BCP" value="205"/>
        <seriesInfo name="RFC" value="7942"/>
        <seriesInfo name="DOI" value="10.17487/RFC7942"/>
      </reference>
      <reference anchor="A2A" target="https://a2a-protocol.org/latest/specification/">
        <front>
          <title>A2A Protocol Specification, Version 1.0</title>
          <author><organization>A2A Project</organization></author>
        </front>
      </reference>
      <reference anchor="MCP-TOOLS" target="https://modelcontextprotocol.io/specification/2026-07-28/server/tools">
        <front>
          <title>Model Context Protocol: Tools</title>
          <author><organization>Model Context Protocol Project</organization></author>
          <date year="2026" month="July" day="28"/>
        </front>
      </reference>
      <reference anchor="WS-HUMANTASK" target="https://docs.oasis-open.org/bpel4people/ws-humantask-1.1-spec-cs-01.html">
        <front>
          <title>Web Services Human Task (WS-HumanTask) Specification Version 1.1</title>
          <author><organization>OASIS</organization></author>
          <date year="2010" month="August" day="17"/>
        </front>
      </reference>
      <reference anchor="ROS2-ACTIONS" target="https://design.ros2.org/articles/actions.html">
        <front>
          <title>Actions</title>
          <author initials="G." surname="Biggs" fullname="Geoffrey Biggs"/>
          <author initials="J." surname="Perron" fullname="Jacob Perron"/>
          <author initials="S." surname="Loretz" fullname="Shane Loretz"/>
          <date year="2020" month="May"/>
        </front>
      </reference>
      <reference anchor="PROV-DM" target="https://www.w3.org/TR/prov-dm/">
        <front>
          <title>PROV-DM: The PROV Data Model</title>
          <author><organization>World Wide Web Consortium</organization></author>
          <date year="2013" month="April" day="30"/>
        </front>
      </reference>
      <reference anchor="SEMI-E40" target="https://store-us.semi.org/products/e04000-semi-e40-specification-for-processing-management">
        <front>
          <title>SEMI E40-0226: Specification for Processing Management</title>
          <author><organization>SEMI</organization></author>
          <date year="2026" month="February"/>
        </front>
      </reference>
      <reference anchor="SEMI-E90" target="https://store-us.semi.org/products/e09000-semi-e90-specification-for-substrate-tracking">
        <front>
          <title>SEMI E90-0726: Specification for Substrate Tracking</title>
          <author><organization>SEMI</organization></author>
          <date year="2026" month="July"/>
        </front>
      </reference>
      <reference anchor="SEMI-E94" target="https://store-us.semi.org/products/e09400-semi-e94-specification-for-control-job-management">
        <front>
          <title>SEMI E94-0226: Specification for Control Job Management</title>
          <author><organization>SEMI</organization></author>
          <date year="2026" month="February"/>
        </front>
      </reference>
      <reference anchor="SEMI-E157" target="https://store-us.semi.org/products/e15700-semi-e157-specification-for-module-process-tracking">
        <front>
          <title>SEMI E157-1125: Specification for Module and Substrate Process Tracking</title>
          <author><organization>SEMI</organization></author>
          <date year="2025" month="November"/>
        </front>
      </reference>
      <reference anchor="SEMI-E170" target="https://store-us.semi.org/products/e17000-semi-e170-specification-for-secured-foundation-of-recipe-management-system-sforms">
        <front>
          <title>SEMI E170-0520: Specification for Secured Foundation of Recipe Management System (SFORMS)</title>
          <author><organization>SEMI</organization></author>
          <date year="2020" month="May"/>
        </front>
      </reference>
      <reference anchor="SEMI-E174" target="https://store-us.semi.org/products/e17400-semi-e174-specification-for-wafer-job-management-wjm">
        <front>
          <title>SEMI E174-0626: Specification for Wafer Job Management (WJM)</title>
          <author><organization>SEMI</organization></author>
          <date year="2026" month="June"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
