دو محیط، یک لایه گمشده
والمارت کاتالوگ خود را تحت قواعد سختگیرانه تعامل، به روی خرید عاملی باز کرده است. آمازون محیط خود را بسته نگه داشته و ترافیکی را که به عنوان عامل مجاز شناسایی نمیکند مسدود میکند. اگر این را به عنوان یک داستان سیاستی بخوانید، به نظر میرسد یک خردهفروش اتوماسیون را میپذیرد و دیگری در برابر آن مقاومت میکند. اگر به عنوان یک داستان مهندسی بخوانید، چیزی باریکتر و جالبتر است: دو پاسخ متفاوت به سؤالی که هیچکدام طرف کاملاً مشخص نکرده است.
آن سؤال این نیست که «آیا یک عامل میتواند خرید کند؟» بلکه این است که «به نمایندگی از چه کسی، در چه محدودهای، و فروشنده چگونه میفهمد؟» مجموعه قواعد والمارت تلاشی برای تعریف شرایطی است که تحت آن یک عامل میتواند عمل کند. محیط آمازون تلاشی برای رد عمل تا زمانی است که آن شرایط قابل احراز باشند. هر دو موضعهای مجوزدهی هستند. هیچکدام موضع ویترین فروشگاه نیست.
همین شکاف در کارهای زیرساختی هم دیده میشود: Cloudflare و Commerce.com که آمادگی ویترین فروشگاه برای ترافیک عاملی را میسازند مفید است، اما آمادگی با تفویض یکی نیست. پایان دادن به درخواست یک عامل، محدود کردن نرخ آن، امضای آن، یا ارائه یک فید محصول قابل خواندن توسط ماشین، همه توصیف میکنند که یک درخواست چگونه میرسد. هیچکدام توصیف نمیکنند که عامل مجاز است به نمایندگی از خریدار چه چیزی را متعهد شود. لایه گمشده بین هویت و پرداخت قرار دارد.
یک اختیارنامه واقعاً چه چیزی باید حمل کند
اختیارنامه (mandate) مصنوعی است که در لحظه تعهد، جانشین خریدار میشود. نه کوکی نشست است و نه کلید API. برای قابل استفاده بودن در پرداخت، باید حداقل موارد زیر را حمل کند:
- اصل (Principal). عاملی که عامل به نمایندگی از او عمل میکند، به شکلی که فروشنده بتواند مستقل از خود عامل آن را تأیید کند.
- دامنه فروشنده. فروشندگانی که اختیارنامه در آنها معتبر است. اختیارنامهای که برای یک خردهفروش صادر شده باید در دیگری بیارزش باشد، و فروشنده باید بتواند ببیند که چنین است.
- سقف هزینه. حداکثر تعهد، به شکلی بیان شود که در برابر تغییرات ارز و مالیات دوام بیاورد، نه یک عدد واحد کپیشده از سبد خرید.
- محدودیتهای اقلام. دستهها، مقادیر و استثناهایی که هدف خرید را رمزگذاری میکنند، نه فقط هزینه آن را.
- انقضا. پنجره اعتبار به اندازه کافی کوتاه که یک اختیارنامه کهنه نتواند بعداً بازپخش شود.
- کانال لغو. مسیری که اصل بتواند از طریق آن اختیار را پس بگیرد، و تعهد سمت فروشنده به مراجعه به آن.
الزام سخت، قابلیت تأیید بدون یک راز مشترک به ازای هر خریدار است. اگر هر فروشنده به یک اعتبارنامه دوجانبه با هر خریدار نیاز داشته باشد، سیستم از چند یکپارچهسازی فراتر نمیرود. اختیارنامه باید یک ادعای امضاشده و دامنهدار باشد که فروشنده بتواند آن را در برابر اختیار منتشرشده اصل بررسی کند، نه رمزی که خریدار به هر ویترین فروشگاه میدهد.

الزام سخت دوم مقاومت در برابر بازپخش است. عاملی که پس از یک وقفه زمانی پرداخت را دوباره امتحان میکند، از دید فروشنده با خریداری که سفارش تکراری داده قابل تشخیص نیست. بنابراین اختیارنامه به یک ویژگی یکتایی متصل به تراکنش نیاز دارد، تا ارسال دوم همان قصد رد شود یا حذف تکراری شود، نه اینکه هزینهاش دریافت شود. بدون آن، هر سیاست تلاش مجددی که یک عامل عرضه میکند به یک باگ صورتحساب دوباره تبدیل میشود.
چرا سقف هزینه یک اختیارنامه نیست
یک سقف عددی کمیت را محدود میکند. قصد را محدود نمیکند، و قصد همان چیزی است که خریدار واقعاً تفویض کرده است.
اختیارنامهای با سقف چند صد واحد ارز و بدون محدودیت دسته را در نظر بگیرید. ده سفارش کوچک، که هر کدام به راحتی درون سقف قرار میگیرند، میتوانند آسیب بیشتری از یک سفارش بزرگ که سقف آن را مسدود میکرد وارد کنند: حساب خریدار در یک سری تراکنشهای بهظاهر موجه خالی میشود، و هیچکدام از آنها به محدودیت برخورد نمیکند. سقف در تمام مدت رعایت شده است. اختیارنامه از سفارش دوم به بعد نقض شده است.
محدودیتهای دسته و فروشنده همان چیزی هستند که قصد را رمزگذاری میکنند. «تعویض کتری خراب، از این خردهفروش، این هفته» تفویضی است که خریدار میتواند درباره آن استدلال کند و فروشنده میتواند بررسی کند. «تا سقف X خرج کن» چنین نیست، زیرا قضاوت درباره اینکه چه چیزی بخر را همراه با اختیار خرید تفویض میکند. همین تمایز دلیل اصلی این است که اختیارنامه شیئی غنیتر از یک محدودیت است.
لغو هم همین شکل را دارد. لغوی که فقط در شروع یک نشست اعمال میشود کانال لغو نیست؛ یک اطلاعرسانی است. اگر اصل در میانه نشست اختیار را پس بگیرد، فروشنده باید آن را در زمان تعهد ببیند، یعنی اختیارنامه در نقطه تعهد بررسی میشود نه در نقطه اتصال. این همان محدودیت طراحی است که بیشتر کارهای آمادگی ویترین فروشگاه از آن صرفنظر میکنند، زیرا تنها موردی است که نیاز دارد فروشنده در مسیر پرداخت به مرجعی که کنترلش نمیکند مراجعه کند.
معامله صادقانه: بررسی اختیارنامه در زمان تعهد یک وابستگی به حساسترین بخش قیف از نظر تأخیر اضافه میکند و در صورت خطا بسته میشود. فروشندهای که نمیتواند به نقطه پایانی لغو یا تأیید دسترسی پیدا کند باید بین مسدود کردن یک خرید مشروع و پذیرش خریدی که نمیتواند اعتبارسنجی کند یکی را انتخاب کند. کش کردن اعتبار اختیارنامه برای نشست وابستگی را کاهش میدهد اما دقیقاً همان پنجرهای را بازمیگرداند که لغو در میانه نشست قرار بود ببندد. هیچ پیکربندیای این تنش را برنمیدارد؛ فقط انتخابی درباره طول پنجره و اینکه هزینه بسته شدن آن بر دوش چه کسی است وجود دارد.

سؤال ارزیابی که هیچکس امتیاز نمیدهد
بیشتر محکهای عامل خرید، تکمیل وظیفه را امتیاز میدهند. آیا عامل کالا را پیدا کرد؟ آیا پرداخت را انجام داد؟ آیا سفارش انجام شد؟ با این معیار، خریدی که خارج از اختیارنامه انجام شده موفقیت است، زیرا خرید انجام شده. این تابع امتیازدهی اشتباهی برای سیستمی است که قرار است تحت اختیار تفویضشده عمل کند.
یک هارنس برای عاملهای خرید باید اول انطباق با اختیارنامه را امتیاز دهد و دوم تکمیل را. به طور مشخص، باید بتواند برای هر اپیزود پاسخ دهد:
- آیا هر تراکنش متعهدشده درون دامنه فروشنده، سقف هزینه و محدودیتهای اقلام بود؟
- آیا عامل پس از انقضا یا پس از لغو تلاش به تعهد کرد، و آیا تلاش رد شد؟
- آیا یک تلاش مجدد تعهد تکراری تولید کرد، یا در برابر قصد اصلی حذف تکراری شد؟
- وقتی اختیارنامه و وظیفه با هم تعارض داشتند، عامل از کدام پیروی کرد؟
یک خرید صحیح خارج از اختیارنامه شکست است. یک خرید ردشده درون اختیارنامه، که ناشی از خطای خود عامل است، هم شکست است، اما شکستی متفاوت. ادغام هر دو در «وظیفه تکمیل نشد» تنها سیگنالی را پنهان میکند که برای فروشندهای که تصمیم میگیرد آیا ترافیک عاملی را بپذیرد اصلاً مهم است.
به همین دلیل یک نشان اعتماد کافی نیست. یک نشان ادعا میکند که یک عامل در نقطهای از زمان ارزیابی کسی را گذرانده است. یک گزارش انطباق به فروشنده اجازه میدهد آنچه عامل در برابر اختیارنامهای که ارائه کرده انجام داده را روی تراکنشهایی که واقعاً تلاش کرده حسابرسی کند. اولی یک ادعاست؛ دومی شواهد است. فروشندگانی که نقاط پایانی عاملی را یکپارچه میکنند به دومی نیاز دارند، زیرا اولی را نمیتوان بعد از واقعه بررسی کرد.
این شکاف واقعاً درباره چیست
قواعد والمارت و محیط آمازون هر دو موقتی هستند. یکی میگوید: عمل کن، اما فقط در چارچوب شرایطی که ما تعریف میکنیم. دیگری میگوید: تا زمانی که اختیار قابل احراز نباشد عمل نکن. هر دو منتظر همان دستور گمشده هستند — راهی برای بیان اختیار خریدار که دامنهدار، محدود، قابل لغو، مقاوم در برابر بازپخش و قابل تأیید توسط فروشنده بدون یک راز به ازای هر خریدار باشد.
آن دستور یک ویژگی ویترین فروشگاه نیست. با افشای یک کاتالوگ یا امضای سرصفحههای درخواست عرضه نمیشود، و با اینکه کدام خردهفروش اول حرکت کند حل نمیشود. این یک مسئله مشخصات درباره تفویض است، و استودیوها و نهادهای استانداردی که با آن به عنوان چنین مسئلهای برخورد کنند چیزی تولید خواهند کرد که فروشندگان واقعاً بتوانند حسابرسی کنند. بقیه به ساختن محیط حول سؤالی ادامه خواهند داد که هنوز آن را ننوشتهاند.
