[Pre-ERC Discussion] Agent Service Order Amendments

I would like feedback on a narrow interoperability problem: after a buyer and an agent service provider have agreed to an order, how can they consent to changing its scope, price, deadline, or acceptance criteria without losing the previous agreement or accidentally authorizing additional spending?

This is an exploratory discussion, not an assigned ERC. Existing work or a suitable extension point may already cover it; pointers to concrete interfaces would be especially useful.

A concrete example

A buyer orders a report on three projects for 100 units, due tomorrow. During execution, the buyer requests ten projects and a spreadsheet. The provider proposes an additional 80 units and a longer deadline. Both parties need an unambiguous answer to:

  • Which exact change did each party authorize?
  • When does the change become effective?
  • What happens if the additional funds are unavailable?
  • Which criteria apply to work already submitted?
  • Can a delayed signature or a competing change replace the current agreement?

An ordinary follow-up message should not by itself authorize an additional payment. Publishing a new catalogue offer also does not establish consent to changing an existing order.

Proposed boundary

The candidate standard would describe a signed amendment to an existing service order and the conditions for applying it. It would leave discovery, negotiation strategy, model execution, quality evaluation, disputes, and general escrow design to other components.

The initial experimental profile is deliberately small:

  • One buyer, one provider, one payment asset, one settlement domain.
  • An already-authorized order with an immutable identity and a revision history.
  • Price increases or unchanged prices, and deadline extensions or unchanged deadlines.
  • Changes only while the order is active and before a deliverable is submitted.
  • Both parties approve the exact change. Neither silence nor a chat message constitutes approval.

Partial completion, refunds, changing providers, and changing payment assets would require separate profiles or replacement orders. The initial profile does not silently rewrite accrued rights.

Candidate message and application rules

An amendment identifies:

Amendment {
  orderId: bytes32
  baseRevision: uint64
  baseTermsHash: bytes32
  newTermsHash: bytes32
  nonce: uint256
  validUntil: uint64
}

For the local experiment, the committed terms are:

Terms {
  scopeHash: bytes32
  acceptanceHash: bytes32
  totalPrice: uint256
  deadline: uint64
}

newTermsHash commits to the complete new terms, rather than an ambiguous natural-language delta. Scope and acceptance documents are hashed from their exact bytes; their commitments do not establish the quality or availability of their contents. Signers need access to those documents and a readable before/after comparison.

The experiment uses EIP-712 with chainId and verifyingContract domain separation. The order identity resolves to the authorized buyer, provider, asset, and settlement context. Those bindings cannot be changed by an amendment in this profile.

Applying an amendment would require:

  1. The order is still active and now < currentTerms.deadline, using the current authoritative revision immediately before applying the amendment. A previously agreed extension replaces the deadline used for this check; this profile has no separate immutable amendment cutoff.
  2. The current revision, terms hash, and nonce match the signed base state.
  3. Both signatures are valid for the authorized parties and the amendment has not expired.
  4. The supplied new terms match the signed commitment and the selected profile’s restrictions.
  5. The supplemental funding, newTerms.totalPrice - currentTerms.totalPrice, is secured and the new revision becomes active as one authoritative state transition. The funding delta, deadline check, revision, terms hash, and nonce all use the same current base state. For 100 -> 180 -> 220, the supplements are 80 and then 40.

If any check fails, the current terms and balances remain unchanged. A successful transition advances the revision and nonce, making competing amendments from the old revision unusable. Either party can explicitly invalidate outstanding amendment signatures through a separate nonce advance; this does not cancel the underlying work.

Submitted work freezes amendment eligibility in this initial profile. Submission and acceptance records bind the exact order revision, terms hash, and result hash. More flexible milestone changes need an explicit rule for protecting existing submissions and earned amounts.

An adapter acknowledgement is not automatically proof of funding. A same-chain implementation can make funding and activation one EVM transaction. An off-chain marketplace would need a durable reservation and recovery design, with its trust boundary stated explicitly. Cross-chain atomicity is outside this proposal.

Relation to existing work

  • ERC-8414 provides versioned task tenders and tender economics. This proposal asks about counterparties consenting to amendments of an existing service engagement. It would not mutate a tender’s fixed reward; a compatible integration may require a linked supplemental or replacement instrument.
  • ERC-8001 provides generic agent coordination and consent. A central question is whether order amendment semantics should be a profile over that framework rather than a separate ERC.
  • ERC-8412 addresses preregistered acceptance criteria. An amendment can reference a new criteria commitment for eligible future work, while preserving the criteria attached to protected submissions.

These are composition candidates, not claims that the integration is already implemented.

Implementation experiment and Finch use case

Finch’s public Agent integration documentation provides a useful motivating example: versioned offers, persisted Call Rights authority, logical invocations, terms hashes, and asynchronous supplemental input. The proposed integration would add a consented order-terms revision layer while preserving historical service versions and dispatch records. This is a proposed use case, not a claim of a production Finch deployment or endorsement.

A local JavaScript experiment currently exercises EIP-712 EOA signatures, supplemental mock funding, stale-revision rejection, signature invalidation, and revision-bound submission and acceptance. It is an executable state-machine experiment, not an audited escrow contract. Contract-wallet signatures, delegated authority, durable storage, real asset transfers, and the Finch adapter remain implementation work.

The next useful interoperability test would have one client construct an amendment and a separately implemented consumer verify and apply it using published test vectors.

Questions for reviewers

  1. Is this a missing interoperability boundary, or is an existing interface sufficient?
  2. Should this be an independent ERC, an ERC-8001 profile, or a companion to a commerce/tender standard?
  3. Is freezing changes once work is submitted a reasonable first profile?
  4. Which funding/activation guarantees should be common, and which should belong to adapters?
  5. Does another implementation want to compare a concrete workflow and test vectors?

Non-binding scope poll

This poll is advisory feedback on the direction, not an ERC approval vote. Please explain your choice, especially any overlap with existing work. The initial feedback window closes on 13 October 2026 at 09:30 UTC (approximately 3 days after publication); technical objections remain relevant regardless of vote totals.

  • Explore a separate minimal ERC for service order amendments
  • Define this as a profile or extension of an existing ERC
  • Keep this at the application layer; no shared standard is needed yet
  • Need more implementation evidence before choosing
0 voters

References

Reference URL
ERC-8414 discussion ERC-8414: Token-Bound Task Tenders
ERC-8001 specification ERC-8001: Agent Coordination Framework
ERC-8412 discussion ERC-8412: Preregistered Acceptance Criteria
EIP-712 EIP-712: Typed structured data hashing and signing
Finch public integration documentation Finch
1 Like

Application rule 1 may need clarification for chained amendments. It requires:

The order is still active and the original execution deadline has not elapsed.

Consider:

  • Revision 0: deadline = Oct 12.
  • Revision 1, agreed on Oct 11: deadline extended to Oct 20.
  • On Oct 15, both parties want to amend the scope/price again, before any deliverable is submitted.

Revision 1 is still active and within its agreed deadline, but the original deadline has passed. Current rule 1 requirement would block revision 2.

I would expect eligibility to use the current authoritative revision:

now < currentTerms.deadline

Otherwise, the initial deadline remains a permanent amendment cutoff even after both parties replace it with a later execution deadline. If that fixed cutoff is intenitonal, it should probably be a separate immutable amendmentCutoff, since it serves a different purpose.

The funding rule could also be explicit. Since totalPrice is a total rather than a delta, supplemental funding for revision N+1 should be:

newTerms.totalPrice - currentTerms.totalPrice

rather than newTerms.totalPrice - originalTerms.totalPrice. Moving 100 -> 180 -> 220 should reserve another 80, then another 40, rather than 80, then 120.

Each amendment would then be a compare-and-swap against the current authoritative terms with both deadline eligibility and supplemental funding derived from the same base revision.

You’re right: rule 1 should use the current authoritative deadline. There is no separate immutable amendment cutoff in this profile. I’ve corrected rules 1 and 5, and changed “original terms” to “current terms” in the failure case.

The local model already read the current deadline and computed the price difference from that same revision, but the post did not state it accurately. I added regression cases covering:

  • 100 -> 180 -> 220: reserve 80, then 40. The second amendment succeeds after revision 0’s deadline but before revision 1’s deadline; a competing amendment signed against revision 1 then fails without changing state.
  • At revision 1’s deadline, a further extension fails even if its signatures have not expired.
  • If the second supplement cannot be funded, revision 1’s terms, nonce, history, and balances remain unchanged.

All 21 local tests pass, using EIP-712 EOA signatures and mock balances. These are JavaScript state-machine tests; they do not establish EVM or database atomicity. The adapter requirement remains one authoritative transition using the same base revision for eligibility, funding, and activation.

1 Like