fix(aip18): buyer-aware actp diff/pull — honest local-sovereign messaging (#4)#24
Merged
Conversation
…ging (#4) A pure buyer (intent: pay) is never anchored on-chain (DEC-3): its config is local-authored and its budget is private (never synced, DEC-2). The chain-based `actp diff`/`actp pull` therefore reported a misleading "no-remote / not published on-chain / run publish" for a correctly-linked buyer. Both commands now detect intent:pay in the local identity file and short-circuit with an honest status (`buyer-local`, inSync) + guidance: edit the {slug}.md locally, then `actp publish` to push the public fields. budget never round-trips. This is the lean, local-sovereign resolution of finding #4: full authenticated web→local pull for buyers is deferred until there's real dashboard-edit demand (and would still never carry budget). Mirrors the runtime checkConfigDrift buyer short-circuit shipped in 4.4.6. Verified live against a linked buyer: diff → status buyer-local/inSync; pull → written:false with clear messaging. Full SDK suite green (2320). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DamirAGI
added a commit
that referenced
this pull request
Jun 8, 2026
…eign) actp diff/pull now short-circuit for intent:pay with honest "buyer-local" messaging instead of a misleading on-chain "no-remote / run publish". budget stays local-sovereign; full authenticated web->local pull deferred until demand. Source merged in #24. Bump kept separate from in-flight 4.5.0 delivery work. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves finding #4 (buyer bidirectional sync) the lean, local-sovereign way.
Problem
A pure buyer (
intent: pay) is never anchored on-chain (DEC-3): its config is local-authored and itsbudgetis private (never synced, DEC-2). Butactp diff/actp pullare chain-based, so for a correctly-linked buyer they reported a misleading "no-remote / not published on-chain / run publish".Fix
Both commands now detect
intent: payin the local identity file and short-circuit with an honest status (buyer-local,inSync) + guidance: edit the {slug}.md locally, thenactp publishto push the public fields. budget never round-trips. Mirrors the runtimecheckConfigDriftbuyer short-circuit shipped in 4.4.6.Why this (not a full authenticated pull endpoint)
budget — the sensitive, most-edited buyer field — is local-sovereign by design and can never flow web→local. The only web-editable bits are non-secret (services_needed/name/desc). Building an authenticated web→local pull path for that marginal direction fails the "is it worth the complexity" test with zero evidence of dashboard-edit demand yet. Deferred to Option A (authenticated
/pullendpoint) when real demand appears — it would still never carry budget.Verified live
Against a linked buyer (
beyer-again):diff→status: buyer-local/inSync: true;pull→written: falsewith clear messaging. Full SDK suite green (2320).Builds on #23. Completes the buyer onboarding UX (5/5 e2e findings resolved).
🤖 Generated with Claude Code