Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .changeset/drain-final-storyboard-drift.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
---

Drain the final 7 storyboard sample_request drift entries (adcp#2763). Allowlist goes to **zero** — ratchet is now fully strict.

Closes out the cluster arc kicked off by #2768 (lint) and worked through #2781 (auth), #2788 (format_id/signal_ids), #2798 (bundled drift), #2795 (asset_type discriminator + governance docs), #2799 (refine[] naming), #2801 (url-asset uri-template). After this merges, any new sample_request drift fails CI immediately.

Specific fixes:

- **3× `check_governance` fixtures dropped `account` additionalProperty.** `governance-delivery-monitor#initial_approval/check_governance_approved`, `#drift_recheck/check_governance_drift`, `governance-spend-authority#governance_check_conditions/check_governance_conditions`. The #2776 docs landed earlier made account rejection explicit; fixtures now match. `drift_recheck` also dropped stray `media_buy_id` at root (not a top-level property of `check-governance-request`).
- **`report_plan_outcome` fixture** restructured `outcome: {type: "media_buy_created", media_buy_id, total_budget, packages}` (object) to the canonical `outcome: "completed"` (enum string) + `seller_response: {seller_reference, committed_budget, packages}`.
- **`si_get_offering`** added the required `offering_id`.
- **`si_initiate_session`** added the required `identity` block with `consent_granted: true` + `anonymous_session_id`.
- **`deterministic-testing#deterministic_session/initiate_session`** added `consent_granted: true` to identity.

All 7 allowlist entries removed deterministically via shrink-only regeneration.
16 changes: 8 additions & 8 deletions static/compliance/source/protocols/governance/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -604,15 +604,15 @@ phases:
sample_request:
plan_id: "$context.plan_id"
governance_context: "gov_ctx_acme_q2_approved"
outcome:
type: "media_buy_created"
media_buy_id: "$context.media_buy_id"
total_budget: 50000
outcome: "completed"
seller_response:
seller_reference: "$context.media_buy_id"
committed_budget: 50000
packages:
- product_id: "sports_ctv_q2"
budget: 30000
- product_id: "outdoor_video_q2"
budget: 20000
- package_id: "pkg_sports_ctv_q2"
committed_budget: 30000
- package_id: "pkg_outdoor_video_q2"
committed_budget: 20000

idempotency_key: "$generate:uuid_v4#media_buy_governance_escalation_report_outcome_report_plan_outcome"
context:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ phases:
- Format specifications for sponsored content

sample_request:
offering_id: "novamotors_conversational_v1"
context:
correlation_id: "si_session--si_get_offering"

Expand Down Expand Up @@ -155,6 +156,11 @@ phases:

sample_request:
intent: "User is researching electric vehicles for long road trips and wants to talk to Nova Motors"
identity:
consent_granted: true
consent_timestamp: "2026-04-22T14:00:00Z"
user:
locale: "en-US"

idempotency_key: "$generate:uuid_v4#si_baseline_session_lifecycle_si_initiate_session"
context:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,10 +201,6 @@ phases:
- monitoring: delivery phase governance is active

sample_request:
account:
brand:
domain: "acmeoutdoor.example"
operator: "pinnacle-agency.example"
plan_id: "$context.plan_id"
caller: "https://pinnacle-agency.example"
tool: "create_media_buy"
Expand Down Expand Up @@ -318,15 +314,10 @@ phases:
- conditions: if approved, conditions for rebalancing (e.g., "Reallocate $5K from CTV to video")

sample_request:
account:
brand:
domain: "acmeoutdoor.example"
operator: "pinnacle-agency.example"
plan_id: "$context.plan_id"
caller: "https://pinnacle-agency.example"
phase: "delivery"
governance_context: "gov_ctx_acme_delivery_approved"
media_buy_id: "mb_acme_q2_2026"
delivery_metrics:
reporting_period:
start: "2026-05-01T00:00:00Z"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,6 @@ phases:
- findings: may include warning-severity findings noting the conditions

sample_request:
account:
brand:
domain: "acmeoutdoor.example"
operator: "pinnacle-agency.example"
plan_id: "$context.plan_id"
caller: "https://pinnacle-agency.example"
tool: "create_media_buy"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -923,6 +923,7 @@ phases:
sample_request:
intent: "comply test — initiate deterministic SI session"
identity:
consent_granted: true
user_type: 'consumer'
supported_capabilities:
response_formats:
Expand Down
47 changes: 1 addition & 46 deletions tests/storyboard-sample-request-schema-allowlist.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,4 @@
{
"$comment": "Known storyboard sample_request schema drift, grandfathered before the lint was turned on. Each entry fingerprints the violation; new drift in a listed step fails the lint, and fixed drift that leaves an entry stale also fails (so follow-up PRs must remove entries as they fix fixtures). Regenerate with `node scripts/lint-storyboard-sample-request-schema.cjs --write-allowlist` after a real fix — defaults to shrink-only. Pass `--allow-grow` only when adding a deliberate, newly-identified drift is the explicit intent; never hand-edit to silence a new violation.",
"entries": {
"protocols/governance/index.yaml#report_outcome/report_plan_outcome": {
"schema": "governance/report-plan-outcome-request.json",
"errors": [
"type@/outcome:string",
"enum@/outcome"
]
},
"protocols/sponsored-intelligence/index.yaml#offering_discovery/si_get_offering": {
"schema": "sponsored-intelligence/si-get-offering-request.json",
"errors": [
"required@/:offering_id"
]
},
"protocols/sponsored-intelligence/index.yaml#session_lifecycle/si_initiate_session": {
"schema": "sponsored-intelligence/si-initiate-session-request.json",
"errors": [
"required@/:identity"
]
},
"specialisms/governance-delivery-monitor/index.yaml#drift_recheck/check_governance_drift": {
"schema": "governance/check-governance-request.json",
"errors": [
"additionalProperties@/:account",
"additionalProperties@/:media_buy_id"
]
},
"specialisms/governance-delivery-monitor/index.yaml#initial_approval/check_governance_approved": {
"schema": "governance/check-governance-request.json",
"errors": [
"additionalProperties@/:account"
]
},
"specialisms/governance-spend-authority/index.yaml#governance_check_conditions/check_governance_conditions": {
"schema": "governance/check-governance-request.json",
"errors": [
"additionalProperties@/:account"
]
},
"universal/deterministic-testing.yaml#deterministic_session/initiate_session": {
"schema": "sponsored-intelligence/si-initiate-session-request.json",
"errors": [
"required@/identity:consent_granted"
]
}
}
"entries": {}
}
Loading