Skip to content

training-agent: surface human_oversight ↔ disclosure.required inconsistency as audit observation in get_creative_features #4439

@bokelley

Description

@bokelley

Context

Sibling to #4438, which defines the spec-side governance contract for surfacing the human_oversight: edited|directed + disclosure.required: false pattern as an audit observation. This issue tracks the reference training agent implementation.

PR #4437 added the non-normative warning to docs and schema; depends on #4438 landing the audit_observations[] wire shape before implementation can begin.

Scope

Implementation in server/src/training-agent/ against the spec-side contract from #4438.

  1. get_creative_features handler — when called against a creative whose provenance carries human_oversight ∈ {edited, directed} AND disclosure.required == false, emit an audit_observations[] entry with:

  2. No change to sync_creatives enforcement. The PROVENANCE_* structural-rejection family stays untouched. This pattern surfaces, it does not reject.

  3. Storyboard / conformance scenario registered in static/compliance/source/protocols/media-buy/scenarios/ covering:

    • Setup: seller publishes a creative-policy requiring get_creative_features verification.
    • Step 1: buyer submits creative with human_oversight: edited + disclosure.required: false.
    • Step 2: seller calls get_creative_features against the seeded on-list verifier.
    • Step 3: verifier response includes audit_observations[] entry for the oversight/disclosure combination.
    • Step 4: seller accepts the creative (the combination is permitted) but the observation is now recorded on the artifact for downstream audit.
  4. Floor bumps in .github/workflows/training-agent-storyboards.yml:

    • min_clean_storyboards +1
    • min_passing_steps +N for the new scenario

Pre-reqs

Out of scope

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions