# Microsoft Ads operational evidence supplement

This additive supplement answers four questions about captured Microsoft Ads evidence. Its examples and full expected answers are synthetic and independently specified. Runtime qualification is recorded in actual receipts; this source index makes no passing-test, client-stream, client-engine, publication or website claim. The existing question bank and earlier delivery package remain separate.

| Query | Business question and boundary |
| --- | --- |
| [inspect-inventory-completeness](../../../../mappings/relay-microsoftads-advertising/queries/operational-evidence/inspect-inventory-completeness.rq) | Is the declared Search campaign and ResponsiveSearch ad capture scope complete, incomplete or unknown? Counts retain returned campaigns, groups, ads, keywords and required retrieval branches. Completion requires explicit successful, unfiltered calls and observed returned containers for every required branch. |
| [inspect-inventory-missing-branches](../../../../mappings/relay-microsoftads-advertising/queries/operational-evidence/inspect-inventory-missing-branches.rq) | Which native parent needs a missing, unknown, unsuccessful or filtered retrieval branch? A complete branch produces no detail row. |
| [inspect-bid-inheritance](../../../../mappings/relay-microsoftads-advertising/queries/operational-evidence/inspect-bid-inheritance.rq) | Which captured campaign strategy applies to a keyword, and can its stored base CPC resolve from its captured keyword bid or ad-group default? Enhanced CPC auction adjustments are outside scope. Manual CPC base examples are limited to captures before 2021-01-01 with explicit lower inheritance; that cutoff is an evidence boundary, not a claimed provider retirement date. Automatic, portfolio and insufficient evidence retain explicit unresolved outcomes. |
| [inspect-serving-evidence](../../../../mappings/relay-microsoftads-advertising/queries/operational-evidence/inspect-serving-evidence.rq) | What captured campaign status blockers and supplied impression evidence occur within a declared report-day window and request timezone? Captured status and reported impressions have different time scopes; Active does not establish current serving, and a paused reading can coexist with earlier impressions. |

The definitions and validation are split by packet: [inventory ontology](inventory-ontology.ttl) and [SHACL](inventory-shapes.ttl), [bidding ontology](bidding-ontology.ttl) and [SHACL](bidding-shapes.ttl), and [serving ontology](serving-ontology.ttl) and [SHACL](serving-shapes.ttl). The caller context explicitly links native requests, response members, account ownership and capture instants. Caller transport success, filter scope and observed-container assertions are evidence to verify against the client capture; they are not invented Microsoft API response fields. Native getter requests here have no pagination model.

Inventory completeness means complete **for the declared capture scope**. An omitted CampaignType leaves request scope unknown even where Microsoft's default is Search. An explicitly observed empty result can close a branch when its successful unfiltered request is attested; omission cannot. Invalid ownership, conflicting duplicate branches, native datatype errors and capture mismatches fail source validation. The supplement makes no whole-account, all-campaign-type, current-state, deletion-from-omission, inaccessible-entity or atomic-snapshot inference.

Bidding preserves optional native strategy strings and exact account, parent and capture identity. The native BidStrategyScope values Account and Customer describe portfolio ownership; a positive BidStrategyId supplies a portfolio reference. Missing bid amounts, zero bids, unsupported currency and unknown inheritance remain distinct from a resolved amount. No provider write default, FX conversion, effective auction bid or latest-capture choice is inferred.

Serving evidence retains the explicit request-timezone token without converting the adopted source day. Only supplied complete, unsegmented Daily deliveries with matching account, campaign, day, currency and timezone participate in revision selection. A newer matching revision with missing impressions suppresses an older positive cell. Positive, zero, missing and absent rows remain separate. Equal-instant contradictory native readings produce explicit conflicting status; nine-digit fractions and equivalent timezone offsets matter. Named pause, budget-pause, suspension and explicit archived Deleted rules are limited observations rather than exhaustive eligibility or causal explanations. Ordinary native Get responses exclude deleted campaigns; an omitted campaign never establishes Deleted.

[questions.ttl](questions.ttl) contains the four additive competency questions and immutable answer-contract IRIs `op:contracts/<query-id>/v1`. [implementations.ttl](implementations.ttl) links each question to its provider, exact SELECT and runnable assessment cases. Load both beside the [shared advertising question ontology](../../../advertising-questions/ontology.ttl), [CQ ontology](../../../../modules/competency-question/ontology.ttl) and their shared shapes. This makes the questions discoverable in RDF without changing the existing bank or publishing website cards. Each contract declares the complete ordered head, required bindings and existing IRI, numeric and string binding categories; concrete long, integer, double, date and dateTime types are preserved by the independently prepared full result bags.

Examples and independent expected answers are in [examples/inventory](examples/inventory/), [examples/bidding](examples/bidding/) and [examples/serving](examples/serving/). The repository's packet contracts are [inventory](../../../../../docs/testing/msads-next-delivery/operational-evidence/inventory/contract.json), [bidding](../../../../../docs/testing/msads-next-delivery/operational-evidence/bidding/contract.json) and [serving](../../../../../docs/testing/msads-next-delivery/operational-evidence/serving/contract.json). [catalog.ttl](catalog.ttl) lists the public source artifacts and keeps processor source restricted.

Run qualification from the repository root through the existing GitHub CI execution route, or an explicitly approved local run with the workspace resource safeguards. Use a fresh output directory. These are runnable command examples, not execution receipts:

```sh
PYTHONPATH=. uv run python src/mappings/relay-microsoftads-advertising/qualify_operational_evidence.py \
  --packet inventory \
  --fixture src/profiles/relay-advertising/microsoftads/operational-evidence/examples/inventory/complete-search.jsonld \
  --expected src/profiles/relay-advertising/microsoftads/operational-evidence/examples/inventory/complete-search.expected.json \
  --output-dir artifacts/microsoftads-operational-evidence/inventory-complete-search

scripts/jena arq \
  --data artifacts/microsoftads-operational-evidence/inventory-complete-search/query-input.nt \
  --query src/mappings/relay-microsoftads-advertising/queries/operational-evidence/inspect-inventory-missing-branches.rq \
  --results=JSON
```

For bidding use `--packet bidding` with `examples/bidding/current-enhanced-cpc-keyword-override.jsonld` and its `.expected.json`; for serving use `--packet serving` with `examples/serving/active-positive.jsonld` and its `.expected.json`. The [qualifier](../../../../mappings/relay-microsoftads-advertising/qualify_operational_evidence.py) retains the expanded native source, separate native/context SHACL reports, exact query dataset, both engines' full answer files and source-hash-bound `qualification.json`. The [acceptance suite](../../../../mappings/relay-microsoftads-advertising/tests/operational-evidence/test_operational_evidence.py) runs each frozen case, source-integrity refusals, corrupted-answer controls and shared metadata validation.

Portable synthetic proof, the real client delivery path, and client-engine acceptance remain separate. Normal CI and publication acceptance must come from actual exact-revision evidence. This supplement does not reinterpret the thirteen opaque field interiors or amend the previously assembled main and bidding archives.
