Summary
Storyboard signal_marketplace/governance_denied shows 1P / 4S on /signals — only the discovery phase passes; the four real coverage phases skip because /signals doesn't currently implement governance integration.
The spec-correct flow:
- Buyer calls
sync_plans on a governance agent (e.g. /governance) to register a strict $100 plan
- Buyer calls
sync_governance on /signals to register that governance agent as the authority for the buyer's account
- Buyer calls
get_signals on /signals to find a signal
- Buyer calls
activate_signal on /signals
- /signals must consult the registered governance agent (HTTP
check_governance call) and emit GOVERNANCE_DENIED when the plan denies
Scope
- Implement
sync_governance tool on /signals (currently not registered)
- Wire
activate_signal to look up the registered governance agent for the caller's account and call check_governance over HTTP
- Surface
GOVERNANCE_DENIED with findings propagated from the governance agent's response
- Storyboard fixture: governance plan named
comply-signal-gov-denied with $100 budget — anything above ~$0.01/segment denies
Out of scope
- Cross-agent test-controller orchestration (governance plan must be seeded on /governance separately; the storyboard runner does this)
- New governance specialism on /signals (we just need governance-aware-seller behavior — calling out to an external governance, not hosting plans locally)
References
- Storyboard:
static/compliance/source/specialisms/signal-marketplace/scenarios/governance_denied.yaml
- Required tools per spec:
sync_governance, get_signals, activate_signal
- Default governance_agent_url in storyboard context:
https://test-agent.adcontextprotocol.org (same training agent, /governance tenant)
- Similar governance integration already exists on /sales (search
governanceContext in task-handlers.ts:handleCreateMediaBuy)
Coverage lift
| Tenant |
Today |
After fix |
Δ |
| /signals |
67 / 58 |
67 / 62 |
+0 / +4 |
Summary
Storyboard
signal_marketplace/governance_deniedshows1P / 4Son /signals — only the discovery phase passes; the four real coverage phases skip because /signals doesn't currently implement governance integration.The spec-correct flow:
sync_planson a governance agent (e.g. /governance) to register a strict $100 plansync_governanceon /signals to register that governance agent as the authority for the buyer's accountget_signalson /signals to find a signalactivate_signalon /signalscheck_governancecall) and emitGOVERNANCE_DENIEDwhen the plan deniesScope
sync_governancetool on /signals (currently not registered)activate_signalto look up the registered governance agent for the caller's account and callcheck_governanceover HTTPGOVERNANCE_DENIEDwith findings propagated from the governance agent's responsecomply-signal-gov-deniedwith $100 budget — anything above ~$0.01/segment deniesOut of scope
References
static/compliance/source/specialisms/signal-marketplace/scenarios/governance_denied.yamlsync_governance,get_signals,activate_signalhttps://test-agent.adcontextprotocol.org(same training agent, /governance tenant)governanceContextintask-handlers.ts:handleCreateMediaBuy)Coverage lift