Skip to content

fix(aip18): buyer-aware actp diff/pull — honest local-sovereign messaging (#4)#24

Merged
DamirAGI merged 1 commit into
mainfrom
feat/buyer-db-sync
Jun 8, 2026
Merged

fix(aip18): buyer-aware actp diff/pull — honest local-sovereign messaging (#4)#24
DamirAGI merged 1 commit into
mainfrom
feat/buyer-db-sync

Conversation

@DamirAGI

@DamirAGI DamirAGI commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

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 its budget is private (never synced, DEC-2). But actp diff/actp pull are 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: 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. Mirrors the runtime checkConfigDrift buyer 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 /pull endpoint) when real demand appears — it would still never carry budget.

Verified live

Against a linked buyer (beyer-again): diffstatus: buyer-local/inSync: true; pullwritten: false with clear messaging. Full SDK suite green (2320).

Builds on #23. Completes the buyer onboarding UX (5/5 e2e findings resolved).

🤖 Generated with Claude Code

…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 DamirAGI requested a review from roosch269 as a code owner June 8, 2026 21:12
@DamirAGI DamirAGI merged commit 899f628 into main Jun 8, 2026
7 of 9 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant