Repository navigation
fix(compliance): stop failing sellers on seeded-only collection and reporting features (3.2.x backport) - #8826
Merged
Merged
Conversation
Publishing the 3.1.32 SDK bundle advanced the adcp-3.1 npm tag, so the 3.2.x publication-manifest check has failed Build Check since a4af1a1, including the v3.2.9 merge ee0ca50. Integrate only the published 3.1.32 records, following the 3.1.30 integration: the immutable compliance bundle, schemas and signed protocol tarball, taken unchanged from v3.1.32 (tree hashes match main), the manifest registration, regenerated root schema discovery, and the release notes. The 3.1 hosted alias floor advances to 3.1.32, 3.1.30 stays pinned as an explicit target, and the current-bundle tests follow main's alias-relative form because 3.1.32 adds three storyboards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eporting features (3.2.x backport) Backports the applicability part of #8336 and a narrowed #8428 to 3.2.x for 3.2.10 (#8744). 3.2.x runs @adcp/sdk 14.0.0-rc.53, whose closed fixture DSL cannot load #8376's collection operator or fixture context_outputs, so neither PR cherry-picks cleanly. advanced_delivery_reporting takes #8336's storyboard: it discovers a native wholesale product advertising format breakdown with a fixed-price CPM option instead of seeding a video product, and reports fixture_unsatisfied when none qualifies. The price snapshot capture and the 3.3 time_based_delivery_reporting storyboard are left out, so 3.2 no longer grades time_based_views against an invented threshold. collection_selection and owner_sold_channel_carriage keep their 3.2 checks behind a discover-only gate: a native product that allows collection targeting and declares a domain-qualified collection. No match is fixture_unsatisfied; malformed discovery still fails. All three storyboards now require the wholesale buying mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — clean 3.2.x backport (3.2.10) with no blocking or medium findings.
What I checked:
- Artifact immutability: The ~1.05M
dist/**additions are all append-only 3.1.32 release records (change-kind(added)) carried in from stacked #8825. The only modified dist file is the mutabledist/schemas/index.json; no existing semver artifact was touched — immutability intact (nocritical). - High-risk flag:
high_risk: truefires solely ondist/**glob matches, but every reason is(added)— new release scaffolding, which is normal and not escalation-worthy per the change-kind rule. No(deleted)or(modified)sensitive file with a medium finding. - Real change (9 non-dist files):
advanced_delivery_reporting.yamldiscover-based applicability gate is internally consistent (context keyssandbox_brand/catalog_reporting_budgetdefined and referenced, anchors resolve, narrowed checks coherent). Storyboards gate correctly on wholesale buying mode and emitfixture_unsatisfiedon no-match. SDK 14 fixture DSL respected. - Changeset: Patch changeset present and correct — no wire/schema change, not breaking-class, so no breaking-change human-ratification gate applies.
- Gates:
gated_paths: false; no no-auto-approve team match; no prior decision.
Reviewer surfaced zero Critical/High/Medium findings. Rows 1–8 do not fire → row 9 approve.
This was referenced Nov 9, 2026
Merged
aymeric45
pushed a commit
to aymeric45/adcp
that referenced
this pull request
Nov 11, 2026
Forward-merges the published 3.2.10 release (v3.2.10 = a6163fb, the 3.2.x head) and the three 3.2.x maintenance commits since v3.2.9: adcontextprotocol#8826, adcontextprotocol#8839 and adcontextprotocol#8847, released by the adcontextprotocol#8886 Version Packages merge. Release records: - dist/compliance/3.2.10, dist/schemas/3.2.10 and the signed dist/protocol/3.2.10.tgz tuple are taken from v3.2.10 unchanged. - dist/schemas/index.json and latest.json are regenerated (forward-merge-release-records.cjs schema-discovery). - CHANGELOG.md is main's file plus the 3.2.10 block (forward-merge-release-records.cjs changelog). - package.json, package-lock.json, static/schemas/source/index.json: main's. - static/compliance/published-versions.json: main's. 3.2.x's only extra entry is 3.2.10, which is registered in a separate commit after qualification. adcontextprotocol#8839 and adcontextprotocol#8847 are cherry-picks of main's adcontextprotocol#8838 and adcontextprotocol#8841. Their storyboards and tests auto-merged to main's bytes; nothing changes. Content conflicts, all from adcontextprotocol#8826 and all resolved to main's file. adcontextprotocol#8826 is an SDK 14 narrowing of adcontextprotocol#8336 and adcontextprotocol#8428 for the 3.2 runner; main carries both in full on SDK 17: - advanced_delivery_reporting.yaml: main's adcontextprotocol#8336 storyboard, with the adcontextprotocol#8376 price snapshot and the separate time_based_delivery_reporting scope. - collection_selection.yaml, owner_sold_channel_carriage.yaml: main's adcontextprotocol#8428 independently qualified catalog scopes. The 3.2.x side's native_collection_product discovery gate is dropped. - docs/reference/known-limitations.mdx: main's catalog reporting and collection bullets already state the scope and fixture_unsatisfied semantics the 3.2.x paragraph describes. - tests/sdk-runner-capability-gates.test.cjs: main's reporting gate test (both reporting storyboards). The 3.2.x single-storyboard variant is dropped. Auto-merge reverted: the non-conflicting adcontextprotocol#8826 collection gate test ("<name> grades only sellers whose catalog offers selectable collections") asserts the 3.2-only native_collection_product handle, which main's storyboards do not declare. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
3.2.8 and 3.2.9 fail sellers on collection and reporting features the fixture only seeded (#8744). This patch stops those false failures on 3.2.x and ships as 3.2.10. It backports #8336's reporting applicability, adapted to the 3.2 runner, and a narrowed form of #8428 for collections.
Closes #8744.
Stacked on #8825, which integrates the 3.1.32 release records. Build Check is red on
3.2.xwithout it. Merge #8825 first; this branch's first commit is that PR's commit.Why not a straight cherry-pick
3.2.x pins
@adcp/sdk14.0.0-rc.53. #8428's collection storyboards depend on #8376's fixture contract: thecollection_selection_satisfiesoperator, andcontext_outputswithwitness/snapshotinsidefixture_resolution. That contract shipped only on main with SDK 16.3. SDK 14's fixture DSL is closed: unknown operators and keys throw at load. A straight cherry-pick would break every 3.2.x storyboard run. Moving the maintenance line to a new SDK major is out of scope for a patch.Reporting:
advanced_delivery_reporting(from #8336)by_formatarray, truncation disclosure and the applied-sort echo on that product. A valid no-match isfixture_unsatisfied, a coverage gap rather than a pass. Malformed discovery still fails.context_outputsprice snapshot (feat(compliance): collection fixture preparation and output contract #8376 contract). The buy uses the 1000 baseline budget. Main's hosted runner already treats a reporting storyboard without the capture as ordinary.time_based_delivery_reporting, which is 3.3 (introduced_in: "3.3").time_based_views. The old checks expected an invented 2-secondplay_timethreshold, and the controller cannot inject view observations.Collections:
collection_selection,owner_sold_channel_carriage(narrowed #8428)#8428's positive grading isn't reproduced. Each storyboard gets a discovery gate:
fixture_resolutionhandle withstrategies: [discover], matching a native product withcollection_targeting_allowed: trueand at least one collection carryingpublisher_domainandcollection_ids. No step references the handle;requires_capability: media_buy.buying_modes contains wholesale, because discovery is a wholesale read.The effect:
fixture_unsatisfied, not graded.#8428's "≥2 distinct pairs" and "fixed may omit the flag" rules aren't approximated. Neither assertion exists on 3.2.x. Full independent collection grading ships in 3.3.
Tests and docs
tests/sdk-runner-capability-gates.test.cjs, on SDK 14.0.0-rc.53time_based_delivery_reporting. Wholesale no-match givesfixture_unsatisfiedwith no pass; non-wholesale givescapability_unsupportedwith no read sent.docs/reference/known-limitations.mdx: the reporting line now states the narrower scope and whatfixture_unsatisfiedmeans.Verification
tests/sdk-runner-capability-gates.test.cjs: 48/48 on SDK 14.0.0-rc.53, including the three new and ported gate tests.All 3.2.x storyboard lint and compliance suites pass, plus
build:compliance --check, the changeset scope check and changeset status (patch).The three changed storyboards were run directly against the 3.2.x training agent's sales tenant (
run-storyboards.ts --filter), and all are clean:advanced_delivery_reporting: 7 passed, 0 failed, 0 skippedcollection_selection: 12 passedowner_sold_channel_carriage: 8 passedThe reference seller's native catalog satisfies each gate, so the positive paths still execute in the matrix. None of these storyboards is on the required-clean list.
On the base commit, the CI sales floor sits at 155 clean against 133 and 1054 passing steps against 632.
The full local matrix was skipped at push (
ADCP_SKIP_STORYBOARD_MATRIX=1) on an overloaded VM. CI's matrix is authoritative.Committed with
HUSKY=0.evaluator-build-probe-authority.test.cjs, an untouched file in the same npm script, hit 60–90s per-test timeouts under the same load.🤖 Generated with Claude Code