|
6 | 6 | {"id":"buyer-4bg","title":"3A: FreeWheel Buyer Cloud Integration","description":"Integrate with FreeWheel Buyer Cloud MCP (bcmcp.freewheel.com) for campaign execution, creative management, and reporting. This is the buyer-side counterpart to seller's FreeWheel dual-MCP architecture (seller-dcd chain). Phase 1: campaign binding to deals from Streaming Hub. Phase 2: creative upload and activation. Phase 3: reporting and pacing. Cross-repo dependency: seller-dcd (open, P1 — FreeWheel Ad Server Integration).","notes":"BLOCKED BY: seller-dcd (Brian). FreeWheel integration requires seller-side FreeWheel support.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-04T14:22:19.373267-05:00","created_by":"Brian Tomasette","updated_at":"2026-03-09T16:21:08.340815-04:00"} |
7 | 7 | {"id":"buyer-4mt","title":"5G: Instantiate Deal From Template Tool","description":"Create InstantiateDealFromTemplateTool in tools/deal_jockey/. Takes template_id + seller_url, resolves template from DealStore, calls seller's POST /api/v1/deals/from-template with structured params. Persists resulting deal to DealStore with template linkage.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:19:59.48181-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:19:59.48181-04:00","dependencies":[{"issue_id":"buyer-4mt","depends_on_id":"buyer-aw4","type":"blocks","created_at":"2026-03-11T18:23:58.77837-04:00","created_by":"Brian Tomasette"}]} |
8 | 8 | {"id":"buyer-5b7","title":"5J: Wire Deal Jockey Tools into Agent","description":"Wire all new Deal Jockey tools into deal_jockey_agent.py. Add ManageDealTemplateTool, ManageSupplyPathTemplateTool, AnalyzeSupplyPathTool, InstantiateDealFromTemplateTool, BulkDealOperationTool, GetDealPerformanceTool to the agent's tool list. Update backstory to include SPO and template expertise.","status":"open","priority":2,"issue_type":"task","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:20:04.412189-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:20:04.412189-04:00","dependencies":[{"issue_id":"buyer-5b7","depends_on_id":"buyer-e6a","type":"blocks","created_at":"2026-03-11T18:23:59.028701-04:00","created_by":"Brian Tomasette"},{"issue_id":"buyer-5b7","depends_on_id":"buyer-hik","type":"blocks","created_at":"2026-03-11T18:23:59.112175-04:00","created_by":"Brian Tomasette"},{"issue_id":"buyer-5b7","depends_on_id":"buyer-4mt","type":"blocks","created_at":"2026-03-11T18:23:59.195586-04:00","created_by":"Brian Tomasette"},{"issue_id":"buyer-5b7","depends_on_id":"buyer-h3r","type":"blocks","created_at":"2026-03-11T18:23:59.276825-04:00","created_by":"Brian Tomasette"},{"issue_id":"buyer-5b7","depends_on_id":"buyer-shp","type":"blocks","created_at":"2026-03-11T18:23:59.358783-04:00","created_by":"Brian Tomasette"}]} |
9 | | -{"id":"buyer-5er","title":"1I: Order State Machine Implementation","description":"Copy the seller's OrderStateMachine framework into the buyer repo and customize for buyer-specific deal and campaign lifecycles.\n\n## What to Do\n1. Copy state machine framework classes from seller (OrderStateMachine, TransitionRule, GuardFn, StateTransition, OrderAuditLog) into buyer src/ad_buyer/models/state_machine.py\n2. Define buyer deal lifecycle states: quoted → negotiating → accepted → booking → booked → delivering → completed (plus failed, cancelled, expired)\n3. Define buyer campaign/booking lifecycle states mapping to existing ExecutionStatus enum\n4. Add linear TV lifecycle states: makegood_pending, partially_canceled\n5. Wire into DealStore.update_deal_status() to enforce valid transitions\n6. Wire into DealBookingFlow and DSPDealFlow (replace direct enum assignments with machine.transition())\n7. Tests: transition enforcement, guard conditions, audit trail, invalid transition rejection\n\n## Source Reference\n- Seller implementation: ad_seller_system/src/ad_seller/models/order_state_machine.py (on fix-seller-import-crash branch)\n- Pure Pydantic + stdlib, no external deps","notes":"Quinn verification: VERIFIED. See docs/reports/QUINN_VERIFICATION_buyer-5er_2026-03-11.md","status":"closed","priority":1,"issue_type":"task","owner":"82515918+atc964@users.noreply.github.com","created_at":"2026-03-11T14:00:14.20895-04:00","created_by":"ATC964","updated_at":"2026-03-11T18:39:18.813758-04:00","closed_at":"2026-03-11T16:30:37.944468-04:00","close_reason":"Quinn VERIFIED. 47/47 tests, PR #50","dependencies":[{"issue_id":"buyer-5er","depends_on_id":"buyer-gf2","type":"blocks","created_at":"2026-03-11T14:00:19.547568-04:00","created_by":"ATC964"}]} |
| 9 | +{"id":"buyer-5er","title":"1I: Order State Machine Implementation","description":"Copy the seller's OrderStateMachine framework into the buyer repo and customize for buyer-specific deal and campaign lifecycles.\n\n## What to Do\n1. Copy state machine framework classes from seller (OrderStateMachine, TransitionRule, GuardFn, StateTransition, OrderAuditLog) into buyer src/ad_buyer/models/state_machine.py\n2. Define buyer deal lifecycle states: quoted \u2192 negotiating \u2192 accepted \u2192 booking \u2192 booked \u2192 delivering \u2192 completed (plus failed, cancelled, expired)\n3. Define buyer campaign/booking lifecycle states mapping to existing ExecutionStatus enum\n4. Add linear TV lifecycle states: makegood_pending, partially_canceled\n5. Wire into DealStore.update_deal_status() to enforce valid transitions\n6. Wire into DealBookingFlow and DSPDealFlow (replace direct enum assignments with machine.transition())\n7. Tests: transition enforcement, guard conditions, audit trail, invalid transition rejection\n\n## Source Reference\n- Seller implementation: ad_seller_system/src/ad_seller/models/order_state_machine.py (on fix-seller-import-crash branch)\n- Pure Pydantic + stdlib, no external deps","notes":"Quinn verification: VERIFIED. See docs/reports/QUINN_VERIFICATION_buyer-5er_2026-03-11.md","status":"closed","priority":1,"issue_type":"task","owner":"82515918+atc964@users.noreply.github.com","created_at":"2026-03-11T14:00:14.20895-04:00","created_by":"ATC964","updated_at":"2026-03-11T18:39:18.813758-04:00","closed_at":"2026-03-11T16:30:37.944468-04:00","close_reason":"Quinn VERIFIED. 47/47 tests, PR #50","dependencies":[]} |
10 | 10 | {"id":"buyer-5gp","title":"5R: Deal Jockey Example and Documentation","description":"Create examples/deal_jockey.py demonstrating: deal template creation, supply path template with custom weights, SPO analysis across multiple sellers, template-based deal instantiation, cross-platform deal tracking, deal migration. Update README and docs with Deal Jockey architecture, plugin interface, and new API endpoints.","status":"open","priority":3,"issue_type":"task","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:20:31.229808-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:20:31.229808-04:00","dependencies":[{"issue_id":"buyer-5gp","depends_on_id":"buyer-omm","type":"blocks","created_at":"2026-03-11T18:23:59.996144-04:00","created_by":"Brian Tomasette"}]} |
11 | 11 | {"id":"buyer-681","title":"5Q: Curator Awareness in SPO","description":"Add curator awareness to AnalyzeSupplyPathTool and SupplyPathScorer. Support preferred_curators list in supply_path_templates. Score curator-packaged deals based on curator identity and curation fee. Per OpenDirect 3.0 curator role spec.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:20:29.080828-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:20:29.080828-04:00","dependencies":[{"issue_id":"buyer-681","depends_on_id":"buyer-hik","type":"blocks","created_at":"2026-03-11T18:23:59.918207-04:00","created_by":"Brian Tomasette"}]} |
12 | 12 | {"id":"buyer-6io","title":"1G: Linear TV Buying Support","description":"Add a buyer-side Linear TV specialist sub-agent (Level 2) for traditional linear television buying. This is distinct from the existing CTV Agent — linear TV has fundamentally different buying mechanics: daypart-based pricing (CPP and CPM), DMA/local market targeting, scatter vs upfront deal structures, GRP-based audience guarantees, makegood terms, and commercial pod positioning. The Linear TV Agent handles negotiations with linear sellers, understands rate-of-change calculations, and works with Mediaocean Lumina (3D-Phase2) for order management. Maps to seller's 1E (Linear TV Specialist Agent). Cross-repo dependency: seller-yu6 (completed).","notes":"Quinn verification: VERIFIED. See docs/reports/QUINN_VERIFICATION_buyer-6io_2026-03-11.md. 1016/1022 tests passed (6 pre-existing failures). 51 new linear TV tests all pass. Backward compatibility confirmed. Live smoke test N/A (seller endpoints not yet available).","status":"closed","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-04T14:21:56.533332-05:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T13:53:14.111345-04:00","closed_at":"2026-03-11T13:53:14.111345-04:00","close_reason":"Quinn VERIFIED. PR #35 merged. 51 new tests, 0 regressions. Scatter-only v1, Option C hybrid, DMA-level."} |
|
19 | 19 | {"id":"buyer-aw4","title":"5E: Deal Template and Supply Path Template Tools","description":"Create tools/deal_jockey/ directory with ManageDealTemplateTool (CRUD deal templates) and ManageSupplyPathTemplateTool (CRUD supply path templates with scoring weights: transparency, fee, trust, performance). These are internal tools that operate on the buyer's DealStore.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:19:52.03036-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:19:52.03036-04:00","dependencies":[{"issue_id":"buyer-aw4","depends_on_id":"buyer-1kn","type":"blocks","created_at":"2026-03-11T18:23:58.610954-04:00","created_by":"Brian Tomasette"}]} |
20 | 20 | {"id":"buyer-brn","title":"Epic: Buyer reporting agent","description":"Build a reporting agent for the buyer system. Needs refinement — scope, metrics, output formats, integration points all TBD. Created as placeholder to track the intent.","status":"open","priority":3,"issue_type":"epic","owner":"82515918+atc964@users.noreply.github.com","created_at":"2026-03-11T16:50:39.975621-04:00","created_by":"ATC964","updated_at":"2026-03-11T16:50:39.975621-04:00"} |
21 | 21 | {"id":"buyer-c68","title":"5L: Migrate Deals Tool","description":"Create MigrateDealsTool in tools/deal_jockey/. Exports deal configs from deal_templates or active deals. Re-instantiates through new supply paths via seller's /deals/from-template endpoint. Maintains deal history linkage via parent_deal_id. Supports agency DSP/SSP migration scenarios.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:20:12.225466-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:20:12.225466-04:00","dependencies":[{"issue_id":"buyer-c68","depends_on_id":"buyer-4mt","type":"blocks","created_at":"2026-03-11T18:23:59.520131-04:00","created_by":"Brian Tomasette"}]} |
22 | | -{"id":"buyer-cjx","title":"1J: Event Bus Implementation","description":"Copy the seller's event bus into the buyer repo and customize for buyer-specific event types.\n\n## What to Do\n1. Copy InMemoryEventBus and event models from seller (EventBus ABC, InMemoryEventBus, Event model, EventType enum) into buyer src/ad_buyer/events/\n2. Define buyer event types: quote.requested, quote.received, deal.booked, deal.cancelled, campaign.created, budget.allocated, booking.submitted, inventory.discovered, negotiation.started/round/concluded, session.created/closed\n3. Add emit_event() helper for fail-open event emission\n4. Add emit calls to DealBookingFlow and DSPDealFlow at each state transition\n5. Add GET /events and GET /events/{event_id} endpoints to buyer API\n6. Optional: Add SQLite-backed event persistence via DealStore (new events table)\n7. Tests: event emission, subscription, filtering, query endpoints\n\n## Source Reference\n- Seller implementation: ad_seller_system/src/ad_seller/events/\n- InMemoryEventBus is fully portable (Pydantic + stdlib only)","notes":"Quinn verification: VERIFIED. See docs/reports/QUINN_VERIFICATION_buyer-cjx_2026-03-11.md. All 27 event bus tests pass, full suite 1043/1043 (6 pre-existing known failures). All 7 acceptance criteria met. 3 non-blocking observations noted in report.","status":"closed","priority":1,"issue_type":"task","owner":"82515918+atc964@users.noreply.github.com","created_at":"2026-03-11T14:00:14.305623-04:00","created_by":"ATC964","updated_at":"2026-03-11T18:39:18.892648-04:00","closed_at":"2026-03-11T16:30:38.010614-04:00","close_reason":"Quinn VERIFIED. 27/27 tests, PR #51","dependencies":[{"issue_id":"buyer-cjx","depends_on_id":"buyer-gf2","type":"blocks","created_at":"2026-03-11T14:00:19.613375-04:00","created_by":"ATC964"}]} |
| 22 | +{"id":"buyer-cjx","title":"1J: Event Bus Implementation","description":"Copy the seller's event bus into the buyer repo and customize for buyer-specific event types.\n\n## What to Do\n1. Copy InMemoryEventBus and event models from seller (EventBus ABC, InMemoryEventBus, Event model, EventType enum) into buyer src/ad_buyer/events/\n2. Define buyer event types: quote.requested, quote.received, deal.booked, deal.cancelled, campaign.created, budget.allocated, booking.submitted, inventory.discovered, negotiation.started/round/concluded, session.created/closed\n3. Add emit_event() helper for fail-open event emission\n4. Add emit calls to DealBookingFlow and DSPDealFlow at each state transition\n5. Add GET /events and GET /events/{event_id} endpoints to buyer API\n6. Optional: Add SQLite-backed event persistence via DealStore (new events table)\n7. Tests: event emission, subscription, filtering, query endpoints\n\n## Source Reference\n- Seller implementation: ad_seller_system/src/ad_seller/events/\n- InMemoryEventBus is fully portable (Pydantic + stdlib only)","notes":"Quinn verification: VERIFIED. See docs/reports/QUINN_VERIFICATION_buyer-cjx_2026-03-11.md. All 27 event bus tests pass, full suite 1043/1043 (6 pre-existing known failures). All 7 acceptance criteria met. 3 non-blocking observations noted in report.","status":"closed","priority":1,"issue_type":"task","owner":"82515918+atc964@users.noreply.github.com","created_at":"2026-03-11T14:00:14.305623-04:00","created_by":"ATC964","updated_at":"2026-03-11T18:39:18.892648-04:00","closed_at":"2026-03-11T16:30:38.010614-04:00","close_reason":"Quinn VERIFIED. 27/27 tests, PR #51","dependencies":[]} |
23 | 23 | {"id":"buyer-e6a","title":"5A: Rename DSP Specialist to Deal Jockey Agent","description":"Rename agents/level2/dsp_agent.py to deal_jockey_agent.py. Update agent role, goal, and backstory for Deal Jockey identity — manages deal ID portfolios across publisher/SSP/DSP ecosystem. Update imports in level2/__init__.py and any crew references. Add backward-compat alias.","status":"open","priority":2,"issue_type":"task","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:19:42.177892-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:19:42.177892-04:00"} |
24 | 24 | {"id":"buyer-ep2","title":"1C: Tiered Identity Presentation Strategy","description":"Implement progressive identity reveal strategy for the buyer agent. The DSP agent should strategically choose what identity to present (seat-only, agency, or full advertiser) based on the deal context and pricing tier benefits. BuyerIdentity already has the fields — this adds the strategy logic and HTTP header serialization. Seller's tiered pricing: PUBLIC (0%), SEAT (5%), AGENCY (10%), ADVERTISER (15% + volume). Cross-repo dependency: seller-aeb (completed).","status":"closed","priority":1,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-04T14:21:32.623206-05:00","created_by":"Brian Tomasette","updated_at":"2026-03-08T20:52:24.392546-04:00","closed_at":"2026-03-08T20:52:24.392546-04:00","close_reason":"Quinn VERIFIED 128/128 tests. Tier 2 auto-close. Branch: feature/identity-strategy"} |
25 | 25 | {"id":"buyer-ez3","title":"5P: IAB Deals API v1.0 Push Receiver","description":"Receive IAB Deals API v1.0 push updates from sellers. Update local deal state in DealStore when seller pushes deal term changes, status updates, or cancellations. Extends the existing DealsClient.","status":"open","priority":2,"issue_type":"feature","owner":"btomasette@gmail.com","created_at":"2026-03-11T18:20:26.400149-04:00","created_by":"Brian Tomasette","updated_at":"2026-03-11T18:20:26.400149-04:00","dependencies":[{"issue_id":"buyer-ez3","depends_on_id":"buyer-hu7","type":"blocks","created_at":"2026-03-11T18:23:59.840107-04:00","created_by":"Brian Tomasette"}]} |
|
0 commit comments