Fix PROGRESS.md to show all blockers including cross-repo deps - #11
Merged
Conversation
- Add cross-repo blocker support to generate_progress.py (seller-a3k, seller-dcd, seller-awh blocked buyer beads) - Add buyer-8ih → buyer-hu7 dependency - Sync JSONL with closed Phase 1 beads - Fix dead hook symlinks (ad_ranch → agent_range) bead: buyer-69a Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
aleksUIX
pushed a commit
to aleksUIX/buyer-agent
that referenced
this pull request
Jul 26, 2026
…ave A) Wire negotiation into the buyer's real booking path. When a seller's quote exceeds the buyer's max_cpm ceiling but sits within a configurable negotiation band (default ceiling x 1.25, mirroring the reference SDK's negotiation_band_per_mille=1250), the MultiSellerOrchestrator now attempts a deterministic negotiation via the seller's negotiation surface before discarding the quote -- closing the run IABTechLab#11 gap where a $15 quote against a $12 ceiling (floor $10) was walked away from (AVAILS_GAP_STORY 7.4). Deterministic policy (no LLM in the negotiation decision): - open a proposal-led negotiation at the buyer's target CPM, clamped to never exceed the ceiling (the seller's canonical POST /api/v1/negotiations/messages surface rejects quote-led opens, so the buyer submits POST /proposals first; its counter_terms are round 1), - hold the standing offer while evaluating seller counters, accept the FIRST seller price <= ceiling, walk after negotiation_max_rounds (default 3) seller responses, on a terminal reject, or when the seller's final offer stays above the ceiling, - on agreement at P, re-request a quote with target_cpm=P (the seller's quote engine honors an acceptable target as final_cpm) and book the FRESH quote -- the only contract-clean way to book a negotiated price; the fresh quote is verified <= ceiling before entering the ranked list, and the budget/spend-ceiling gates stay the final arbiter. Money invariants: the buyer never offers, accepts, nor books above max_cpm -- even if the post-negotiation re-quote comes back high. Config-gated via Settings (default ON): NEGOTIATION_ENABLED, NEGOTIATION_BAND, NEGOTIATION_MAX_ROUNDS; NegotiationConfig(band=1.0) or enabled=False restores the strict legacy filter. Negotiation emits NEGOTIATION_STARTED / NEGOTIATION_ROUND / NEGOTIATION_CONCLUDED in the orchestrator's existing event idiom and surfaces per-attempt records on OrchestrationResult.negotiations. Adds NegotiationClient.submit_proposal (buyer adapted to the seller's proposal-led contract). Seller-side contract gaps found (noted, not changed here): quote-led negotiation unsupported (400); proposals are never persisted server-side, so POST /api/v1/negotiations/messages 404s on any fresh negotiation (the buyer walks honestly); book_deal strikes the stored quote price and ignores negotiation state (hence the re-quote-at-agreed-price step). Tests: 16 new in tests/unit/test_orchestrator_negotiation.py (negotiate then book, single-round proposal accept, honest walks, band/config gates, round bound, money invariants, events). Full suite 3319 -> 3335 passed, 0 failed, 78 skipped; ruff clean. bead: ar-cc3n Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuoSai9uDgCEkbqYmxQpQ6
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.
Summary
generate_progress.pyto show cross-repo blockers (seller beads blocking buyer work)Before: 0% progress, no blockers shown, Phase 1 beads not marked complete
After: 26% progress, 9 blocked items visible with specific blocker IDs, Phase 1 checked off
🤖 Generated with Claude Code