# Semblance Likeness License — Specification v0.1.2

**Schema file:** `likeness-license.schema.json` (JSON Schema draft 2020-12)
**`$id`:** `https://semblance.studio/schemas/likeness-license/v0.1.2.json`
**`schema_version`:** `0.1.2` — the 0.1.1 revision closed the gaps found by pressure-testing
v0.1.0 against three real deal shapes (AI ad, game NPC voice, VTuber sponsorship); the 0.1.2
revision applies every finding of two adversarial reviews (legal completeness and
implementability). Summaries are in **"What 0.1.2 changed"** and **"What 0.1.1 changed"**
below; deliberately deferred items are in **"Known limitations / v0.2 candidates."**

> **Production domain.** `semblance.studio` is the registry's production domain; the `$id` above is canonical as of 2026-07-06.
> secured, the `$id` (and the `verify_endpoint` conventions) change to the real domain and this
> spec is updated. Instances written against the placeholder `$id` remain structurally valid;
> only the identifier URI changes.

This document is the human-readable, field-by-field specification of the canonical Likeness
License schema — the merge of three independent drafts (legal-completeness, machine-executability,
and deal-realism lenses). Resolution rules applied throughout: **legal** wins on
consent/revocation/union/compliance structures; **agent** wins on types, enums, identifiers, and
machine-evaluability; **commercial** wins on pricing and deal structures.

Design principles the merge preserves:

1. **Illegal or talent-hostile terms are inexpressible, not discouraged.** Minors, irrevocable
   consent, waived AI disclosure, sublicensing, auto-renewal for humans, wildcard model IDs,
   below-scale union deals, machine-granted exclusivity, and edits to the prohibited-use baseline
   all fail schema validation outright.
2. **Fail-closed machine evaluation.** Anything not machine-decidable (free text, union coverage,
   exclusivity, personas, persistent uses, revenue share) routes to manual approval. Free text
   exists for humans and courts; it is never a matching input.
3. **No floats, no FX, no fuzzy matching.** Money is integer minor units + ISO 4217; percentages
   are integer basis points; territories are ISO 3166-1 sets; platforms/models are registry IDs;
   competitor blocks are NAICS prefixes.
4. **The consent record is bound to the exact terms** via SHA-256 over the JCS-canonicalized
   `/grant` object.
5. **What JSON Schema cannot express is still normative**: `x-state-machine` (lifecycle),
   `x-invariants` (numbered cross-field rules INV-001…INV-036 the platform validator MUST
   enforce), and `x-auto-approval-algorithm` (the ordered, deny-fast, 16-step evaluation).

Validation status (0.1.2): compiles clean under ajv (draft 2020-12, formats enabled); the four
example instances in `examples/` (auto-approved AI ad, manual game NPC voice, MCP-executed
VTuber standing offer, manual estate archival documentary) validate with real RFC 8785 (JCS)
SHA-256 `grant_hash` and `approval_hash` values; 30 negative/positive mutations of the 0.1.2
conditionals verified to behave as designed.

---

## Required at execution time vs. draftable

A license record exists from first configuration (`draft`) through terminal states. Not
everything can exist on day one:

| Stage | Blocks required |
|---|---|
| Always (all statuses, incl. `draft`) | `schema_version`, `license_id`, `license_version`, `status`, `lifecycle`, `audit`, `parties`, `grant`, `approval`, `pricing`, `usage_reporting`, `union_rider`, `asset_handling`, `revocation`, `provenance`, `warranties` |
| From `quoted` onward | `integration` (with `quote_id`) — every priced license traces to its immutable quote |
| From `executed` onward (**execution-time blocks**) | `consent` (the signed consent instrument + grant hash), `execution` (signatures, certificate, payment, contract ref), and `integration.execution_idempotency_key` (INV-010) |
| From `executed` onward, when `approval.mode` ≠ `manual` | `content_declaration` (the licensee's request-time content codes, INV-026), `consent.advance_authorization` (the pre-signed envelope binding + `licensor_terms_ref`, INV-023/INV-029), and **`campaign` with `product_or_service`** (0.1.2 — the record of what the likeness actually promoted, disclosed at execution) |
| Optional at any stage | `amends_license_id`, `deliverables`, `governing_law`, `campaign` (for manual mode; top-level — outside the hashed grant), `grant.credit`, `x_notes` (annotations) |

Rationale: a draft or quote describes *proposed* terms; consent is captured against the final
grant at approval, and the grant hash (INV-007) is verified at the `executed` transition. The
`declined` and `cancelled` terminal states never require consent/execution — they exist so
`quoted` and `pending_approval` have machine-unambiguous exits.

---

## Top-level fields

### `schema_version` *(const `"0.1.2"`)*
Which rule set applied at execution. Evaluators MUST refuse versions they do not implement
(fail closed).

### `license_id`, `license_version`, `amends_license_id`
`lic_` + Crockford-base32 ULID; immutable. `license_version` increments on any amendment to
`/grant`, `/pricing`, or `/revocation` — and every increment requires a **fresh consent record**
(INV-007) — with one express exemption (0.1.2): **`pricing.escrow.state`** is operational,
platform-managed payment state, not a negotiated term; escrow transitions never bump
`license_version` and never require re-consent. Renewals are **new documents** pointing back
via `amends_license_id` (INV-021): this is how the schema makes the **NO FAKES Act draft
10-year cap** re-check itself per renewal — chained renewals can never quietly become
perpetual paper.

### `status`, `lifecycle.status_history`
Ten states (`draft`, `quoted`, `pending_approval`, `executed`, `active`, `expired`, `revoked`,
`terminated`, `declined`, `cancelled`); the only legal transitions are in `x-state-machine`.
0.1.2 completes the machine: **`executed → expired`** (clock event — a license whose `end_date`
passes before activation can no longer sit in `executed` forever with funds captured),
**`pending_approval → declined` on `sla_timeout_declined`** (the system transition matching
`booking_approval_sla.on_timeout: "auto_decline"`; actor `system` — silence still never
*approves*), and **`expired → terminated`** (`post_term_breach_terminated` — the for-cause
lever against abuse of a runoff window or an embedded-products survival election, so `expired`
is now quasi-terminal with exactly one exit). Activation is defined for service deliverables
too: `persona_endpoint_access` / `live_stream_session` licenses activate on the platform's
endpoint-provisioning event, not on a watermarked file delivery that may never exist.
`status_history` is the append-only audit trail (actor-typed, webhook-event-keyed) that must
replay to `status` (INV-011). Why it exists: auditable authorization histories are precisely the
evidence a NO FAKES-style notice-and-takedown regime and courts reward, and
`actor.type` distinguishes human approval from `system`/`licensee_agent` action — critical in a
later dispute about whether a human ever approved.

### `integration`
**Two idempotency keys** (0.1.2): `booking_idempotency_key` for `create_booking` and
`execution_idempotency_key` for `execute_license` — a retried execution can never be confused
with the booking that preceded it. INV-010 scopes both to *(licensee_id, operation)* — a key
collision across tenants can never return another account's record — with a normative ≥ 24-month
retention window. Plus quote/booking lineage with **`quote_expires_at`** (the quote TTL made
machine-decidable in-document until the v0.2 quote schema lands),
**`reference_registry_snapshot`** (0.1.2, INV-036: the date-versioned snapshot of the ISO 3166-1
country set, EU/EEA membership, ISO 4217 exponents, and NAICS tables the document is evaluated
against — two conformant implementations compute identical territory expansions and money math),
and webhook subscriptions against a closed event-name set.

### `audit`
Document-level created/updated timestamps and creating actor. Grant/pricing/revocation are
immutable per version; only platform-managed fields mutate.

---

## `parties`

Semblance is the verifying registry, broker of record, and escrow agent — **not** a party to
the grant.

### `parties.licensor`
- **`identity_type`** (`human` | `estate` | `character`) drives everything: verification block,
  term rules, and union posture.
- **`adult_verified`** *(const `true`)* + **structured age attestation (0.1.2, INV-012)** — the
  minors exclusion is structural *and evidenced*: the constant is backed by a
  **`$defs.age_attestation`** (`date_of_birth_verified` const + hash-fixed
  `age_verification_ref` naming the KYC artifact that verified DOB ≥ 18 + `verified_at`) for
  **every verified natural person the document touches**: the human licensor
  (`licensor.age_attestation`, required iff `human`), the estate representative
  (`estate_authority.representative`), the character-owner signatory
  (`character_provenance.owner_signatory`), and any embodied performer
  (`character_provenance.embodied_performer`). A court reading the document traces 18+ to
  evidence, not to a schema-required word.
- **`human_verification`** (required iff `human`): approved KYC vendor + reference + biometric
  liveness timestamp. References only — no biometric data ever lives in a license document
  (BIPA/GDPR hygiene). Nobody can list a face that isn't theirs.
- **`estate_authority`** (required iff `estate`): decedent name, date of death, governing
  jurisdiction (post-mortem regimes differ: CA Civ. Code §3344.1 ≈ 70 years, NY CRL §50-f ≈ 40,
  TN potentially perpetual), authority type (executor / heir / foundation / licensed
  representative), hash-fixed authority documents, **`post_mortem_rights_expire_at`** — the
  recorded bound the term may never exceed (INV-002), **re-verified at every execution and
  renewal** (0.1.2 — renewal-contingent regimes like the NO FAKES draft's 10 + 5 can move it) —
  and the required **`representative`** (0.1.2): the named, age-attested natural person who
  signs for the estate.
- **`character_provenance`** (required iff `character`): chain-of-title evidence (commission /
  work-for-hire / assignment / VTuber model-ownership proof), optional copyright & trademark
  registrations, **`no_third_party_elements_warranty`** *(const `true`)*, the required
  **`owner_signatory`** (0.1.2: named, age-attested signer for the owning entity), and the trap
  most drafts miss — **`embodied_human_performer`**. **0.1.2 promotes the embodied performer to
  a first-class sub-party**: when `true`, the **`embodied_performer`** block is required, with
  the performer's own `performer_id` (`per_` ULID), legal name (confidential — public anonymity
  stays governed by `credit.performer_anonymity_required`), `adult_verified` + age attestation,
  full KYC/liveness `verification`, own intended-use **`consent_ref`**, and own data-subject
  **`bipa_written_release_ref`** (§15(b) release executed by the performer, never by the owning
  entity). The performer's union coverage flows into `union_rider`, `payout_split` **must**
  carry an `embodied_performer` entry (INV-013), and the **INV-001 10-year cap applies to the
  whole grant** — a character wrapper can no longer launder a living performer's voice past any
  human-protective rule.
- **`representation`** / **`payout_split`**: talent agents stay in the loop (approvals route to
  the agent of record) and licensor-side splits (agent commission, estate beneficiaries, union
  trust, **embodied performers** — 0.1.2) are first-class, in basis points summing to 10000
  (INV-013, remainders per INV-032) — never off-platform side deals.

### `parties.licensee`
- **`verification_tier`** (`tier_0_unverified` … `tier_4_enterprise_contracted`): named so
  **lexicographic order equals trust order** — min-tier checks are plain string comparisons.
  Higher-risk categories gate to tier 3+ (INV-006).
- **`booked_via`** (`web` | `api` | `mcp_agent`): `mcp_agent` **requires** `agent_delegation` —
  the agent's identity, the **named principal who is legally bound** (an agent cannot be the
  counterparty), the delegation protocol (OAuth2 / ACP / UCP / AP2 / Visa TAP / Mastercard
  Agent Pay / x402), the mandate reference, and an optional licensee-side
  `human_confirmation_required_above` threshold (the agentic-payments human-in-the-loop pattern,
  from the buyer's side). **0.1.2 (INV-034): `booked_via` is platform-derived, never
  caller-asserted** — a credential registered as an autonomous agent is forced to `mcp_agent`
  with full delegation; presenting as `api` to skip HITL thresholds is rejected platform-side.
- **`brand` / `is_agency_of_record` / `end_client_legal_name`**: agencies book, brands conflict.
  Exclusivity and competitor blocks are evaluated against the **end brand**
  (`brand.industry_naics`, NAICS 2022, prefix-matchable) — never against the media agency
  (INV-016). Agency flow is deliberately *not* sublicensing.

---

## `consent` — the AB 2602 engine *(execution-time block)*

The consent instrument is structured so that the **"reasonably specific description of intended
uses" required by Cal. Lab. Code §927 (AB 2602)** and its Illinois/New York digital-replica
analogues is **forced by the schema**, never left to optional prose:

- **`intended_use.project_or_campaign_name`** — a named project. Generic grants can't validate.
- **`intended_use.narrative_description`** — **minimum 200 characters** of plain language: what
  the outputs depict, in what context, for what audience, what the licensor is shown saying or
  doing. Boilerplate ("any and all uses, in perpetuity, in all media") is unrepresentable.
- **`intended_use.deliverables[]`** — at least one enumerated deliverable, each tying a concrete
  description (≥ 20 chars) to a `media_type` (which must be within `grant.media_types`, INV-019)
  and a quantity estimate.
- **`intended_use.licensee_identity_disclosure`** *(0.1.1, replaces the const-true boolean)* —
  `disclosed_prior_to_consent` (forced for manual approvals by root conditional) or
  `disclosed_at_execution_per_advance_authorization` (advance modes: the licensor pre-consented
  to a *class of verified licensees* bounded by the envelope's tier floor and allow/blocklists,
  and is shown each executing licensee's verified identity at execution). Anonymous buyers
  cannot obtain a license under either value.
- **`advance_authorization`** *(0.1.1 — the auto-approval consent story, defined; 0.1.2 —
  hardened)* — required from `executed` onward whenever `approval.mode` ≠ `manual` (and
  *forbidden* under `manual`): for machine execution, **the instrument executed is the
  licensor's pre-signed advance instrument** (`instrument_ref`), which reproduces the
  intended-use narrative **and the full `auto_approval_parameters` / `standing_offer`
  verbatim**; `approval_hash` (SHA-256 over the JCS-canonicalized `/approval` object) pins the
  instrument to the exact envelope; `captured_at` = `envelope_signed_at` = when the human
  signed — never stamped at machine execution (INV-023). **0.1.2 adds the required
  `licensor_terms_ref`** (hash-fixed reference to the licensor's published standing-terms
  document) **plus INV-029**: at every machine execution the platform verifies **byte-equality
  (after JCS) of every talent-fixed block** — `/grant/content_exclusions`,
  `/grant/platform_allowlist`, `/grant/ai_disclosure`, `/revocation`, `/asset_handling`,
  `/usage_reporting`, `payout_split` — against that document. `approval_hash` pins the
  envelope; `licensor_terms_ref` pins everything else the licensor fixed, so a buggy or
  compromised booking assembler cannot drop an excluded code, flip `at_will_permitted`, or
  release reference material the licensor never authorized. `execution.licensor_signature_ref`
  resolves to the advance instrument, so *who executed what, when* has one answer.
  Per-execution specifics (licensee identity, `/campaign` — **required with
  `product_or_service` for every non-manual executed license, 0.1.2** — and
  `/content_declaration`) are disclosed at execution via dashboard/webhook. For advance modes
  the consent narrative describes the authorized **class** with its hard bounds; the named
  "project" is the envelope/offer itself.
- **`representation`** — records which §927 enforceability safe harbor applies
  (`legal_counsel` | `union_cba_coverage` | `unrepresented_specificity_relied_upon` | **0.1.1:**
  `entity_licensor_not_applicable` for character/estate entities licensing owned IP, where the
  human-performer safe-harbor analysis does not apply). Under §927 a non-specific provision is
  unenforceable *unless* the performer was represented; recording both prongs proves
  enforceability either way. **0.1.2 representation gate (schema conditional):** a `human`
  licensor under `auto_approve_within_parameters` / `standing_offer` **must** hold
  `legal_counsel` or `union_cba_coverage` — class-level advance consent by an *unrepresented*
  human is exactly the statutorily untested configuration (Known limitation #2), so until the
  fifty-state matrix lands it is unrepresentable rather than merely risky. Character licensors
  sign as `character_owner` (the authority doc may reference the onboarded chain-of-title
  summary — it binds the signatory to the verified entity, not a redundancy).
- **`statutory_bases[]`** — closed list of the regimes the instrument was drafted to satisfy
  (CA §927/§3344/§3344.1, IL digital-replica & **BIPA**, NY CRL §50-f/§52-c, TN ELVIS Act,
  NO FAKES draft, GDPR Art. 9, EU AI Act Art. 50; **0.1.1 adds** Canadian regimes —
  `canada_quebec_civil_code_privacy`, `canada_provincial_privacy_acts`,
  `canada_common_law_personality` — `japan_publicity_right_caselaw`, and
  `contract_and_ip_only_no_publicity_right`, the honest basis for pure character/IP deals
  resting on copyright/trademark/contract) — what enforcement systems and takedown notices will
  cite. Cover the licensed *territory's* principal regimes, not only the forum's — **now
  validator-linted (0.1.2, INV-031)**: US-inclusive territory ⇒ at least one US basis
  (`tn_elvis_act` whenever a living person's voice is synthesized for US distribution;
  `il_bipa_740_ilcs_14` whenever biometric data is present); EU-inclusive ⇒ an EU basis;
  `worldwide` ⇒ both minimum sets. A floor, not conflict-of-laws analysis.
- **`revocable`** *(const `true`)* — irrevocable consent cannot be expressed.
- **`signatory`** — non-self signatories (estate rep, character owner, authorized agent) must
  attach hash-fixed authority documents.
- **`language`** — BCP 47 tag of the instrument as executed (informed consent must be readable).
- **`grant_hash`** — SHA-256 over the RFC 8785 (JCS) canonicalization of `/grant`, verified at
  the `executed` transition (INV-007). "The licensor consented to *these specific terms*"
  becomes machine-verifiable, and post-consent tampering is detectable. Fixed algorithm and
  canonicalization so independent implementations compute identical hashes.
- **`instrument_ref`** — evidence-grade reference (id + SHA-256) to the signed writing a court
  reads; it must contain the intended-use narrative verbatim (INV-019).

Consent is per-license and per-version. Renewals require a fresh record (INV-021).

---

## `grant` — the machine-matched core

The exact object hashed into `consent.grant_hash`; immutable once executed. Everything not
expressly granted is reserved to the licensor. Every dimension has a 1:1 mirror in
`auto_approval_parameters`, so machine evaluation is dimension-wise subset/threshold checks.

- **`use_categories`** — closed 7-value taxonomy (`advertising`, `film_tv`, `games`,
  `social_ugc`, `corporate_training`, `interactive_persona`, `music_audio`).
- **`media_types`** — closed modality list; voice and visual likeness are separately enumerable
  because statutes (and NO FAKES) treat them as distinct rights; `music` (singing) is distinct
  from `audio_voice` (speech) — different union and moral-rights posture. **Normative pairing
  rule (0.1.1):** any output in which the likeness *speaks* with a synthesized voice requires
  `audio_voice` alongside the visual modality — a talking spokesperson video is
  `["video","audio_voice"]`; `video` alone grants silent/third-party-voiced visuals only.
- **`channels`** — closed list with **no "all channels" value**: every channel is an affirmative
  enumerated grant (AB 2602 specificity by construction). Paid vs organic social are distinct
  (ad-platform provenance policies and union rates differ). **Normative boundary definitions
  (0.1.1, in `$defs.channel`)**: `social_paid` = paid placements bought through a social/video
  platform's *own* ad system, expressly including **YouTube pre-roll**; `digital_display_ads` =
  programmatic/display bought outside those systems; `streaming_ott` = content distribution on
  OTT services, never ad insertion; `in_game` = the playable product incl. patches/DLC — store
  pages, trailers (even in-engine captures), and marketing surfaces are *not* `in_game`, and
  end users' own gameplay streams are out of scope. An ad buy fits exactly one channel.
- **`languages`** *(0.1.1, required)* — BCP 47 tags as a **grant dimension**: a third-language
  clip is now a machine-detectable breach, not a spec quibble. **Matching is RFC 4647 basic
  filtering at subtag boundaries (0.1.2)** — `en` covers `en-US`, but `es` never covers `est`
  and `zh` never covers `zho` (naive string-prefix matching is non-conformant); primary subtags
  are schema-required lowercase so case-sensitivity can never defeat matching. Mirrored by
  `allowed_languages`; deliverable-spec languages must be within it (INV-019).
- **`distribution_platforms`** *(0.1.1, optional)* — hard allowlist of **distribution**
  platforms (`meta.instagram`, `google.youtube`, …), distinct from the *generation*
  `platform_allowlist`. "Meta, TikTok, YouTube only" is a machine term now; mirrored by
  `allowed_distribution_platform_ids`.
- **`territory`** — `worldwide` | `include` | `exclude` + ISO 3166-1 alpha-2 sets. Evaluation is
  set expansion + subset check (INV-009). No "EMEA". Plus deal-realism flags:
  `geo_targeting_required` and `organic_spillover_permitted` (internet distribution is enforced
  through paid-media geo-targeting; organic spillover is addressed explicitly, not pretended
  away).
- **`term`** — explicit `start_date`/`end_date` only; **`auto_renew` is const `false`**; no
  perpetual terms are representable in v0.1. **Living persons: ≤ 10 years (INV-001, NO FAKES
  draft cap)** — applying to human licensors **and to any grant with a living embodied
  performer** (0.1.2) — renewal only via a new document with fresh consent. **Cap measurement
  (0.1.2, normative and date-inclusive):** the encumbrance **anchor** is the *earliest* of
  `consent.captured_at`, `execution.executed_at`, and `start_date` (a person is encumbered from
  signing, so a postdated flight start can't stretch a 10-year cap into 15 years from
  signature), `end_date` is **inclusive** (exercisable through 23:59:59Z), and the check is
  `((end_date + 1 day) − anchor) ≤ P10Y` — a start 2026-07-01 grant must end by 2036-06-30;
  2036-07-01 is 10 years + 1 day and fails. **Estates: term ≤ `post_mortem_rights_expire_at`
  (INV-002), re-verified at each execution/renewal.** Characters without an embodied performer:
  uncapped but still date-bounded (renewal is one API call; perpetual paper is a v0.2 question).
  `post_term_runoff_days` (sell-off for published outputs) and
  `persistent_service_wind_down_days` (active decommissioning of persona services) are standard
  deal mechanics, bounded.
  *JSON Schema cannot do date arithmetic — the caps are INV-001/002, mandatory validator rules.*
  Two 0.1.1 elections make term semantics explicit:
  - **`generation_may_precede_start`** — `start_date` bounds *distribution*; whether generation
    (and pre-flight delivery for review) may begin at execution is this explicit flag (the
    standard ad-deal shape), never an inference.
  - **`delivered_outputs_survival`** — the delivered-vs-new-generation split **at expiry**,
    mirroring `/revocation`'s split at revocation: `expires_with_term` (default) or
    `embedded_products_survive` — outputs embedded in products distributed during the term
    (shipped game builds) stay licensed for continued distribution after `end_date`; only *new*
    generation stops. `verify_license` reports surviving content as `licensed_post_term_survival`
    (INV-024), never as infringing. Survival is a major grant: always manual (INV-004(f)), and
    it never extends the INV-001/002 *generation* caps (it is continued distribution of lawfully
    made copies).
- **`use_persistence`** — the single most consequential structural split:
  `one_time_outputs` (bounded deliverables) vs `persistent_synthetic_performance` (the likeness
  runs as a service). Drives economics (rev-share/periodic), wind-down obligations, session
  disclosure, and auto-approval gating (persistent always routes to manual, INV-004).
  `interactive_persona` forces persistent via conditional.
- **`exclusivity`** — two instruments with distinct machine semantics (0.1.1, INV-016):
  1. **Exclusivity modes** `none` | `category_exclusive` | `full_exclusive` (category exclusivity
     must enumerate categories) — a machine **can never grant an exclusivity mode**; any
     non-`none` mode routes to manual (INV-004(c)).
  2. **NAICS-coded `competitor_blocks`** — expressly valid **alongside `mode: "none"`**
     ("non-exclusive with a competitor-category block", the standard ad-deal shape) and
     **machine-grantable** when the licensor opts in via
     `auto_approval_parameters.naics_competitor_blocks_permitted`, because the conflict check is
     deterministic: prefix match against the registry **block ledger** and the end-brand NAICS
     codes of the licensor's other active licenses; any indeterminacy routes to manual.
  Free-text `named_competitor_blocks` always route to manual; `scope` (exclusivity may be
  narrower than the grant); compensated `holdback_days_post_term`; `carve_outs` for pre-existing
  commitments. Both instruments are priced — pair with an `exclusivity_premium` component (which
  0.1.1 makes auto-approvable *only* as consideration for auto-granted NAICS blocks) or state
  inclusion in a flat fee's `covers`.
- **`output_caps`** — explicit `capped`/`uncapped` election (silence is impossible); output /
  impression / interactive-session ceilings; total-term or per-period scope; required
  `measurement_source` (whose numbers govern is the fight); and a required **`overage` policy**
  (`hard_block` | `bill_overage` | `requires_new_approval`) with pre-agreed overage rates — so
  success has a price instead of a breach claim.
- **`platform_allowlist`** — how licenses stay **portable but controlled** (INV-008): reverse-DNS
  platform IDs from the published Semblance Platform Registry; per-platform `model_scope`
  (`all_models` — an explicit, disclosed election, never a wildcard default — or
  `listed_models` with exact IDs; `*` is unrepresentable); `model_version_policy` for point
  successors; `api_enforced` marks platforms that check certificates before generating
  (revocation technically enforced, not merely contractual);
  `unlisted_platforms_prohibited` *(const `true`)*; **`self_hosted_generation_permitted`**
  *(0.1.1: boolean, default `false`)* — a licensee-operated pipeline (e.g. a studio's internal
  voice pipeline fine-tuned on released reference audio) is now expressible: the pipeline must
  itself be **registered in the Platform Registry and enumerated in `platforms[]`** so
  allowlist/revocation/destruction semantics attach; usage reporting with `output_hashes`
  becomes mandatory and the license can never auto-approve (INV-025, INV-004(g)). This resolves
  the prior internal contradiction with `asset_handling` supporting voice-sample release and
  fine-tuning.
- **`ai_disclosure`** — **`required` const `true`** (never waivable): closed method list
  (C2PA manifest + human-perceptible methods), optional exact `label_text` and placement rules,
  `eu_ai_act_art50_labeling` (forced `true` for worldwide grants by schema conditional; forced
  for any EU-member territory by INV-018), and persona session-start disclosure.
- **`content_exclusions`** — two layers:
  1. **`baseline_prohibited_uses`** *(const array, 13 entries)* — the platform-wide floor
     (NCII, minor sexualization, political deception, news simulation, medical/financial
     impersonation, fraud, hate/defamation, biometric spoofing, undisclosed synthetic media,
     training general-purpose models on reference data…), aligned with the TAKE IT DOWN Act,
     NO FAKES exclusions, and platform norms. Because it is a `const` array, **removing or
     altering any entry invalidates the instance** — the baseline cannot be negotiated away, and
     every executed license carries verbatim the full text it agreed to. (This resolves the
     agent draft's ToS-only approach in favor of the legal draft's evidence posture; evaluators
     still never branch on it — a const is free.)
  2. **`excluded_codes`** — talent red lines from a closed **26-code** taxonomy
     (`energy_drinks_high_caffeine` graduated from custom usage in 0.1.1), machine-matched
     against the licensee's **`/content_declaration`** (0.1.1: the request-time declaration is
     now a first-class block — codes, timestamp, declarant; required for every auto/standing
     execution, INV-026; a false declaration is a for-cause breach). Deny rule:
     `declared ∩ (excluded − affirmative_permissions) ≠ ∅` (INV-017). Empty arrays are explicit
     elections — silence is impossible.
     **`affirmative_permissions`** (0.1.1) — codes the licensor *expressly permits*: a declared
     code listed here never denies, so "energy drinks explicitly welcome" is a recorded term
     resolving category-mapping ambiguity, not mere absence-of-exclusion. Disjoint from
     `excluded_codes`; can never whitelist the baseline.
     **`custom_exclusions`** (x-prefixed code + ≥10-char description) now carry a required
     **`enforcement`** election (0.1.1): `booking_match` customs constrain *which deals* may be
     booked and fail-close auto-approval (INV-004(a)); `deliverable_review` customs constrain
     *what the pixels contain* and are enforced at mandatory human output review — they coexist
     with auto-approved bookings (a "no before/after imagery" red line no longer bricks a
     talent's auto-approval profile). **0.1.2: the review surface must exist under any mode** —
     a schema conditional forces `deliverable_approval.required: true` with `generated_outputs`
     in scope whenever any `deliverable_review` custom (or any `prohibited_phrasings` entry)
     exists, so an exclusion's sole enforcement surface can never silently be absent. Recurring
     customs graduate into the taxonomy in later versions — the standards-body function of
     publishing the schema. The 26-code taxonomy itself is hoisted into **`$defs.content_code`**
     (0.1.2) — one source of truth for exclusions, permissions, and declarations. **Derived-code
     rule (0.1.2, INV-017):** first-person endorsement/testimonial framing **must** declare
     `first_person_endorsement_phrasing`; evaluators auto-derive it from spokesperson posture,
     and its omission is an incomplete declaration (a for-cause ground).
  Plus `endorsement_restrictions` ("appears in the ad" vs "personally recommends the product"
  is a real price/consent/FTC line — `prohibited_phrasings` are deliverable-review-enforced,
  consistent with `deliverable_review` customs) and `script_approval_required`.
- **`style_guide_refs`** *(0.1.1, optional)* — hash-fixed references to character bibles /
  style guides the outputs must adhere to, bound into `grant_hash`: "consistent with Character
  Bible v3.2" becomes a hash-pinned machine term, enforced at deliverable review, and therefore
  compatible with agent-executed standing offers.
- **`interactive_persona_terms`** (required when `interactive_persona` granted) — session
  disclosure *(const `true`)*, max concurrent deployments, transcript retention regime,
  runtime content-filter requirement.
- **`credit`** — `credit_required` | `credit_optional` | **`anonymity_required`** (VTuber
  operators and body doubles need the *opposite* of attribution), plus orthogonal
  **`performer_anonymity_required`** (0.1.1): credit the character **and** never identify the
  embodied human performer — the standard VTuber shape, previously inexpressible.
- **`sublicensing_allowed`** *(const `false` in v0.1)* — rights are personal to the verified
  licensee; the consent chain stays one hop long and NO FAKES-defensible. Agency flow is
  `is_agency_of_record`, not sublicensing. Structured programs (fan content, creator
  whitelisting, localization) are the first v0.2 candidate.

---

## `approval` — two surfaces, machine envelope, HITL

**Booking approval (the deal)** vs **deliverable approval (the pixels)** are separate surfaces
because agents and producers fight about both.

- **`mode`**: `manual` | `auto_approve_within_parameters` | `standing_offer`. Approval latency
  kills conversion — hence SLAs as deal terms.
- **`booking_approval_sla`**: response hours + `on_timeout` ∈ {`auto_decline`, `quote_expires`,
  `escalate_to_agent_of_record`}. There is **deliberately no auto-approve-on-silence** — consent
  must be affirmative.
- **`auto_approval_parameters`** (required for non-manual modes) mirrors the grant 1:1:
  category/media/channel subsets, **language envelope (`allowed_languages`, prefix-matched) and
  distribution-platform envelope (`allowed_distribution_platform_ids`) — both 0.1.1**, territory
  envelope, ISO-duration term ceiling, **fee floor (`min_total_fee`, blocks underpriced agentic
  spam) and ceiling (`max_total_fee`, big deals deserve human eyes)**, output/impression
  ceilings, platform allowlist, `allowed_fee_structures` (revenue share is *not in the enum* —
  rev-share auto-approval is inexpressible; 0.1.1 adds `exclusivity_premium`, lawful only as the
  price of auto-granted NAICS blocks), **`exclusivity_permitted` const `false`** (a machine can
  never grant an exclusivity *mode*) with the separate 0.1.1 opt-in
  **`naics_competitor_blocks_permitted`** (deterministic block-ledger check, INV-016(2)),
  minimum verification tier, licensee allowlist/**blocklist (blocklist hits are rejected with
  no human retry channel; an allowlist *miss* routes to manual — the buyer simply isn't
  pre-authorized, 0.1.2)**, a **`rate_limit` circuit breaker** against runaway agents,
  `require_escrow`, **`reference_release_permitted` + `reference_release_allowed_asset_classes`
  (0.1.2, INV-004(m))** — releasing raw reference material or authorizing fine-tuning is never
  an implicit side effect of machine execution; without this per-asset-class opt-in, any such
  request routes to manual — **`max_interactive_sessions`** (the step-11 envelope mirror; note
  personas themselves never auto-approve), and **`deliverable_review_retained`** (auto-approve
  the deal while keeping human review of the content — recommended default, and the mechanism
  that lets deliverable-review-enforced red lines coexist with auto-approval).
  `interactive_persona` is absent from the allowed-category enum entirely.
- **`human_confirmation_threshold`**: above it, even in-envelope requests need a licensee-side
  natural person to confirm before capture (ACP/AP2/Visa-TAP HITL pattern); the licensor side
  stays auto.
- **`standing_offer`**: published, pre-consented offer with `valid_until` and
  `max_total_executions` (an execution budget checked atomically) — the narrowest, most
  commoditized shape.
- **`deliverable_approval`**: scope (scripts/prompts/outputs/final cut), included rounds,
  per-round SLA, **`deemed_approved_on_timeout` default `false`** (talent-protective; brands may
  negotiate `true`, and the trade is visible in the paper), and `post_approval_edit_rules`
  (cutdowns of an approved master OK; new creative not). This is where SAG-style creative
  approval lives.

The full evaluation order is normative in `x-auto-approval-algorithm` (**16 deny-fast steps**,
0.1.2). Outcome semantics are explicit: `route_manual` preserves the human retry channel;
`reject` is terminal and reserved for blocklist hits (step 4), content-exclusion denials
(step 7 — the licensor excluded it; there is nothing for a human to reconsider), and
execution-integrity failures (step 16). Step 11 defines absent-ceiling semantics (a `capped`
request omitting a ceiling the envelope bounds routes to manual — never a vacuous pass);
step 16 executes atomically and **serialized per licensor**, committing the INV-016 block
ledger (which spans `executed`+`active` licenses plus live holdback windows) in the same
transaction as escrow capture, grant-hash (INV-007) and standing-terms (INV-029) verification,
under the execution idempotency key.

---

## `pricing` — composable, integer, choreographed

- **`currency`**: one ISO 4217 code per license (INV-003). No FX inside evaluation; mismatch ⇒
  manual. FX risk sits with the payer.
- **`fee_components[]`** — a **discriminated array (on `model`), not a single price-model enum**,
  because real deals are hybrids (flat setup + rev-share + minimum guarantee is one license):
  - `flat_fee` — fixed amount + plain-language `covers` (prevents scope disputes).
  - `per_output` — integer rate per typed unit (video, image, audio minute, voice line, render,
    stream hour, interactive session), committed prepaid units, billing mode. **0.1.1 semantics
    (INV-027):** `committed_units` ≤ `output_caps.max_outputs`; units beyond the commitment but
    within the cap bill at the component rate per `billing`; units beyond the cap are governed
    exclusively by `output_caps.overage` — prepayment and ceiling are distinct numbers.
  - `per_impression` — rate **per 1,000 impressions** in minor units (no fractional cents) +
    **required `measurement_source`** (whose numbers govern is the fight, not the CPM;
    `licensee_attested` requires audit rights, INV-020) + committed impressions (multiples of
    1,000).
  - `revenue_share` — **integer basis points**, basis class, and an always-required
    **`basis_definition` (≥ 20 chars)** — "net" without a cost definition is how talent gets
    zero; the undefined-royalty-base dispute is precluded at the schema layer. Optional
    minimum guarantee (recoupable or stacking — no agent accepts naked rev-share) and payout
    cadence. Required for interactive personas (INV-006); never auto-approvable.
  - `exclusivity_premium` — **separately stated** (fixed fee and/or bps uplift) so renewals can
    reprice exclusivity without reopening the deal; 0.1.1 extends it to price NAICS competitor
    blocks under `mode: "none"`, so a category block's consideration is never implicit.
  - **`election`** *(0.1.1, any component)* — marks a component that entered the deal **by
    election at execution** (`licensee_elected` / `licensor_elected` / `mutual_election` +
    timestamp) rather than as a mandatory term: the schema-native encoding of elective pricing
    tiers (e.g. an optional rev-share tier taken at signing). The executed document records the
    elected outcome; the untaken alternative lives in the immutable quote. Full elective menus
    are a v0.2 candidate.
- **`payment_schedule`** — milestone ladder over fixed fees (bps summing to 10000, INV-014;
  the classic 50/50 is `5000/5000`), triggers from execution through net-days, late-payment
  interest in bps.
- **`escrow`** — the money choreography that lets strangers transact: `provider`
  (Stripe Connect in v0.1; agentic rails land as new enum values), `capture_at` const
  `execution` (atomic with the transition), and the **state machine
  `unfunded → funded → partially_released → (released | refunded | disputed)`**. A license
  cannot go `executed → active` until funded (INV-015); `disputed` freezes releases.
  **`escrow.state` is expressly exempt from the amendment rule (0.1.2)**: it is operational
  payment state living inside `/pricing` for single-source-of-truth reasons; its transitions
  never increment `license_version` or trigger re-consent.
- **`kill_fee`** — staged ladder by deal stage (typical 25/50/100/100 ⇒ 2500/5000/10000 bps):
  talent's calendar and exclusivity were committed even if no pixel shipped. Plus
  `exclusivity_kill_addon` for blocked-category opportunity cost. Waived on licensor at-will
  revocation.
- **`options[]`** — pre-negotiated renewals/expansions with exercise windows keyed to expiry,
  pricing methods (fixed / bps uplift / rate card / match-offer), an `option_fee` paid now, and
  the crucial **`licensor_can_decline`** flag (true option vs negotiation right). Options are
  how 12-month deals become 5-year relationships **without violating the 10-year human cap** —
  each exercise papers a new document with fresh consent (INV-021).
- `total_guaranteed_fee`, `platform_fee_bps` — transparency and threshold bases.
  **0.1.2 money-math rules:** `total_guaranteed_fee` is no longer free-standing — it MUST equal
  the machine-computed guaranteed sum over the components (INV-033); and every basis-point
  computation in the document (splits, milestones, platform fee, rev-share settlement, kill
  fees, uplifts, interest) follows one normative rounding rule (INV-032): **integer floor per
  line, residual remainder to the last entry of the ordered list** (or retained by the payer
  for single-payee computations) — the odd cent of a 50/50 split on $0.01 has one answer. The
  `exclusivity_premium.uplift_bps` base is defined as the guaranteed total of the *other*
  components, excluding the premium itself and uncommitted metered/share upside.
  `payment_schedule` milestones with trigger `net_days_after_invoice` must state `net_days`
  (schema conditional, 0.1.2); billable overage policies must state the rate matching each set
  cap (`overage_rate_per_output` when `max_outputs` is capped, per-1000 rate when
  `max_impressions` is — schema conditionals, 0.1.2).

---

## `deliverables` — the statement of work *(optional block)*

Typed line items (`video_asset` … `persona_endpoint_access`, `live_stream_session` — service
enablements, not files), quantities, technical spec (durations, resolutions, aspect ratios,
**languages as BCP 47 — localized voice in a new language is a grant question, not a
technicality**, formats), due dates, and an acceptance window (spec failures only; silence past
the window is acceptance). Mirrors, in production detail, the consent record's enumerated
deliverables (INV-019).

---

## `usage_reporting`

Anything metered, capped, shared, or exclusive needs numbers flowing back. `required` is forced
`true` for per-impression/rev-share economics (INV-005); interval + grace window as ISO
durations; closed metric list (including `output_hashes`, which feed the enforcement index);
`delivery_method` const `report_usage_api` (machine-ingestible, not spreadsheets);
machine-enforceable `late_report_policy` (suspension is an access control, not a status
transition); audit rights with a cost-shift threshold (mandatory when measurement is
licensee-attested); and a records-retention period that **does not extend biometric retention**
(that is exclusively `asset_handling`'s job).

---

## `union_rider` — SAG-AFTRA Digital Replica interface

`covered` is **always required** — `false` is an explicit onboarding assertion, never a default,
so evaluators never guess. When `true` (which disables auto-approval, INV-004):

- **`agreement`** — the governing CBA: 2023 TV/Theatrical, **2025 Commercials Digital Replica
  Rider**, or the **2025 Interactive Media Agreement**, whose third-party-authorized-platform
  carve-out for independently created replicas is the provision under which Semblance-brokered
  union interactive work proceeds. ACTRA/Equity UK enumerated for non-US talent.
- **`replica_classification`** — `employment_based_digital_replica` vs
  `independently_created_digital_replica`: the 2025 IMA distinction that selects which CBA
  consent and compensation rules apply. Required, because mis-classification is the compliance
  failure mode.
- **`rider_ref`** — hash-fixed reference to the generated, executed digital-replica rider that
  travels with the contract (producers can hire union talent through the platform without
  breaching their CBAs — compliance-as-a-product).
- **`union_notice_given`**, **`scale_minimums_compliance`** *(const `true` — a below-scale union
  license is schema-invalid)* with 0.1.1's **`scale_rate_evidence_ref`** (hash-fixed rate
  worksheet turning the bare assertion into an auditable record),
  **`contributions_handled_by`** (0.1.1 clarifies: producer-paid P&H is paid **on top of**
  `/pricing` fees directly to the plans and must *not* be encoded as a `payout_split`
  carve-out; the `union_trust` split role is only for platform-remitted,
  gross-compensation-computed contributions), plus 0.1.1's **`ph_contribution_rate_bps`** and
  optional **`ph_contribution_amount`** making the P&H economics machine-readable,
  `producer_signatory_id`.

Semblance never induces breach of a CBA — by construction.

---

## `asset_handling` — BIPA-grade biometric & derived-model regime

Two distinct instruments by design: **`written_release_ref`** is the **BIPA §15(b) written
release covering the *data*** (collection, storage, this specific disclosure), separate from the
consent record covering the *use*. Conflating them is the classic BIPA pleading error, and BIPA's
private right of action is existential-risk-grade.

- **`biometric_data_present`** *(0.1.1, required)* — whether the reference materials include
  biometric identifiers of a living human (an embodied performer's voice/performance data
  counts; a pure Live2D character model does not). The §15(b) `written_release_ref` is required
  **iff** this is true — the block is no longer BIPA-framed for pure character-IP releases,
  while the destruction regime applies to any released reference material regardless.
- **Release-before-collection, structurally (0.1.2, INV-030):** when biometric data is present,
  the document also requires **`reference_materials_collected_at`** (first collection timestamp
  for the data subject) and **`written_release_signatory`** (the natural person who signed, in
  capacity `licensor_self` or `embodied_performer` + `performer_id` — a §15(b) release is
  personal to the data subject; owner/representative capacities are deliberately
  unrepresentable). INV-030 orders them: `written_release_ref.captured_at` ≤ every recorded
  collection timestamp, including liveness checks. A document recording
  collect-first-paper-later — the textbook per-violation BIPA pleading pattern — is
  non-conformant.
- **`raw_biometric_reference_released`** — default posture `false`: raw reference material (face
  captures, voice samples, motion data, trained models, LoRAs, model files) never leaves the
  Rights Vault; licensees receive outputs and usage rights. If `true`, the schema **requires**
  `released_asset_classes` and the full **`destruction_obligations`** regime:
  - `destroy_on` *(const)*: earliest of purpose-satisfied / expiry / revocation / termination —
    §15(a) retention logic made bilateral; 0.1.1 adds **`purpose_satisfied_definition`** (who
    declares the purpose satisfied, and when — content-complete vs full patch/DLC term is now a
    written term; absent = no later than final delivery acceptance or term end);
  - **`max_retention_days` ≤ 30** for operational systems (longer is inexpressible);
    **`cold_backup_purge_days` ≤ 90** (0.1.2, down from 365 — BIPA §15(a) recognizes no backup
    exception, so the window is exposure, not entitlement) for immutable cold backups / VCS
    history where in-place deletion is infeasible — access-restricted in the interim,
    restoration prohibited; **any value over 30 requires `backup_purge_infeasibility_ref`**
    (documented technical infeasibility + counsel sign-off, schema conditional);
  - NIST-grade `destruction_method`;
  - **`destruction_certificate_required` const `true`** (signed certificate identifying every
    purged system) with 0.1.1's **`applies_to_recipients`** *(const
    `licensee_and_each_receiving_platform`)*: certificates are owed severally by the licensee
    **and every platform/pipeline that received the material** (INV-028) — no more ambiguity
    about who signs when reference data went to HeyGen or a studio pipeline;
  - `audit_right`.
- **`no_sale_of_biometric_data`** *(const `true`)* — §15(c): licensing outputs is not selling
  biometric data, and actual sale is unrepresentable.
- **`derived_models`** — closes the fine-tune loophole: any LoRA/voice clone/checkpoint created
  to fulfill this license is scoped **const `this_license_only`** (never other clients, never
  general model improvement — the baseline separately bans training general-purpose models on
  reference data), with required post-term disposition (**certified destruction or return to
  the Rights Vault**). **0.1.1 classification rule:** a *derived model* is an asset capable of
  generating **new** likeness content; rendered/compiled assets embedded in delivered outputs
  (a game's baked face rig, dialogue portraits, final media) are **delivered outputs** governed
  by delivered-outputs treatments and any survival election — never by this destruction regime.
  A *surviving* licensed derived model — a vastly bigger grant — is deliberately not expressible
  in v0.1.

---

## `revocation` — the crisp two-effect split

Drafted for judicial application *and* machine execution (PLAN §3.5's distinction, made
structural):

1. **`new_generations`** *(const `"cease_immediately_all_platforms"`)* — at the effective time,
   all new generation, re-rendering, and derivative production stops on every allowlisted
   platform, propagated by `license_id` via certificate checks and vault key revocation.
   A hard-coded platform guarantee, not a term.
2. **`delivered_outputs_treatment`** — a mandatory three-way **election at execution**:
   `licensee_retains_through_term` (brand-safe default; campaigns in flight are safe) |
   `wind_down_then_cease` (+ required `wind_down_days`, 1–180) | `immediate_cessation`
   (premium-priced). A court applies the election — no "reasonableness" litigation.

Priced honestly (commercial lens): **`at_will_permitted`** is an explicit boolean — an
at-will-revocable license is worth less, and buyers pay for certainty; both shapes are
expressible. `notice_days` (≤ 90) and **`refund_treatment`**
(`pro_rata_refund_of_unearned_fees` | `no_refund` | `per_component_schedule`) are (0.1.1)
**required only when `at_will_permitted` is true**; when false they are optional and, if
present, govern statutorily mandated consent-withdrawal only — no more undefined semantics on
for-cause-only deals. `licensee_kill_fee_waived_on_at_will` (it should be) and an optional
`revocation_fee` keep revocation *real* while its cost is a number, not a lawsuit.

Guardrails (legal lens, all consts): `for_cause_overrides_to_immediate` (INV-022 — for-cause
always permits immediate takedown, no refund), `biometric_destruction_on_revocation` (revocation
always triggers the destruction regime), `statutory_rights_non_waivable` (state digital-replica
law, BIPA, GDPR, or an enacted NO FAKES Act control if broader), and required enumerated
`surviving_obligations`. **`for_cause_grounds` is required with a non-negotiable minimum set
(0.1.2)** — `content_exclusion_breach`, `use_outside_granted_scope`,
`unapproved_platform_or_model` must always be enumerated, so INV-022's immediate-takedown
override always has defined contractual triggers. `persistent_service_wind_down_days` is capped
at 30 — for personas, the ongoing use *is* the harm surface.

**verify_license outcome vocabulary (0.1.2, INV-008)** — closed and normative, computed from
*(status × delivered-outputs treatment × window)*: `licensed_active`,
`licensed_pre_activation` (delivered under `generation_may_precede_start` while `executed`),
`licensed_runoff`, `licensed_post_term_survival`, `licensed_revoked_retention` (not-for-cause
revocation with `licensee_retains_through_term`, inside the original term),
`licensed_wind_down_until` (with the deadline), `licensed_terminated_retention` (licensee
cancellation with kill fee paid), and `unlicensed` (everything else — expressly including all
delivered content of a *for-cause* revocation). Reporting lawfully retained
post-revocation/post-termination content as `unlicensed` is itself a conformance failure:
wrongful-takedown protection is part of the spec.

---

## `provenance`, `warranties`, `governing_law`

**`provenance`** — platform floors, all const where it matters: every delivered asset carries
**C2PA Content Credentials** and an invisible **watermark keyed to `license_id`** (wild-asset
attribution is a single lookup — or the asset exposes itself as unlicensed);
**`verify_endpoint`** is public, free, and unauthenticated by design (platform adoption of this
check is the long-term moat); optional registration of final published-version hashes;
delivery only via signed URLs or platform-direct-with-certificate-check (off-platform delivery
breaks provenance and is not offered). The schema is public — competitors adopting it inherit
the ethics floor. **0.1.1, product-embedded pipelines:** where outputs compile into formats
that cannot carry credentials (engine assets, runtime-rendered media), the C2PA obligation
attaches to the delivered asset *package* and the licensee files an **`embedded_use_manifest`**
per product release (build/patch/DLC), keyed to `license_id` — how embedded/runtime uses stay
traceable and how `verify_license` resolves shipped-game content (INV-024). Deeper build-level
provenance is a v0.2 candidate.

**`warranties`** — the indemnification triangle as three consts: licensor warrants rights
ownership (characters: complete chain of title, no unlicensed third-party elements); the
platform warrants the chain of consent; the licensee warrants use compliance. Optional E&O
reference.

**`governing_law`** — jurisdiction/venue/dispute path (platform human-review process first by
default). Non-waivable statutory rights apply regardless of this election.

---

## `execution` *(execution-time block)*

Created at the `executed` transition: `executed_at`, the **`certificate_id`** (the signed,
publicly verifiable certificate embedded in C2PA manifests and resolvable at the verify
endpoint), both **signature refs** (for agentic execution, the mandate-backed acceptance
record), the hash-fixed **`contract_document_ref`** (the generated human-readable contract with
consent instrument and any union rider — *the machine document governs evaluation; on conflict,
the signed instrument controls in court, and says so*), the payment reference,
**`human_confirmation`** (0.1.2, INV-035: `confirmed_by` / `confirmed_at` / `method_ref` —
required whenever the fee crossed `human_confirmation_threshold` or the principal's
`human_confirmation_required_above`; the dispute-grade artifact of the agentic HITL step), and
the **delivery `asset_manifest`** (per-asset SHA-256 + watermark id — what `verify_license`
matches wild content hashes against, INV-008). Escrow disposition lives solely in
`pricing.escrow.state` (single source of truth; the agent draft's duplicate escrow field was
removed in the merge).

---

## Shared definitions (`$defs`)

| Def | Type discipline |
|---|---|
| `money` | integer `amount_minor` + ISO 4217 `currency`; no floats anywhere |
| `basis_points` | integer 0–10000 for every percentage (splits, shares, uplifts, interest); rounding per INV-032 |
| `territory` | `worldwide`/`include`/`exclude` + ISO 3166-1 alpha-2 sets (pinned to the registry snapshot, INV-036), plus geo-targeting flags |
| `iso_duration` | ISO 8601 durations; week designators are exclusive (`P2W` valid, `P1W2D` rejected — 0.1.2) |
| `utc_datetime` | (0.1.2) every timestamp: RFC 3339 date-time with **required trailing `Z`** — non-UTC offsets are unrepresentable |
| `evidence_ref` | ref id + **required SHA-256** + URI: every compliance instrument is hash-fixed for authentication in a dispute |
| `age_attestation` | (0.1.2) `date_of_birth_verified` const + hash-fixed `age_verification_ref` + `verified_at` — per natural person (INV-012) |
| `content_code` | (0.1.2) the 26-code content taxonomy, hoisted to a single source of truth for exclusions/permissions/declarations |
| `verification_tier` | 5 tiers, lexicographic order == trust order; single-digit namespace — expansion past `tier_9` requires zero-padded renaming in a breaking version |
| `use_category`, `media_type`, `channel`, `status` | closed taxonomies; no wildcard values |
| `licensor`, `licensee`, `consent` | party and consent structures described above |

Identifier scheme: `lic_`/`tal_`/`lce_`/`cst_`/`cert_`/`quo_`/`bkg_`/`ast_`/`off_`/`evt_`/`per_` +
26-char Crockford-base32 ULID.

---

## Key merge resolutions (and why)

| Conflict | Resolution |
|---|---|
| Prohibited-use baseline: per-license const array (legal) vs ToS-only (agent) | **Const array kept** — every executed license carries the text it agreed to (evidence posture); consts cost evaluators nothing |
| Term: `duration_months` + renewal enum (legal/commercial) vs dates-only + `auto_renew:false` (agent) | **Dates-only** — redundant duration invites inconsistency; the 10-yr cap is INV-001 (all three drafts conceded date math is validator-level); auto-renewal for anyone is out in v0.1, characters renew via one-call new documents |
| Perpetual character terms (commercial) | **Not representable in v0.1**; open question below |
| Model allowlist: every model enumerated, no `*` (legal) vs explicit `all_models\|listed_models` (agent) | **Agent's enum** — `all_models` is an explicit, disclosed consent election, not a wildcard ambiguity; `*` remains unrepresentable |
| Sublicensing: prohibited const (legal, agent) vs structured programs (commercial) | **Const `false`**; fan-content/whitelisting programs are the flagged v0.2 candidate; agency flow via `is_agency_of_record` |
| Exclusivity in auto-approval: `max_exclusivity_level` (commercial) vs const false (legal) | **Const `false`** — machines never grant exclusivity *modes*; 0.1.1 carves out deterministic NAICS competitor blocks under the separate `naics_competitor_blocks_permitted` opt-in (INV-016(2)) |
| Money/percentages: major-unit floats (legal/commercial) vs integer minor units/bps (agent) | **Integer everywhere** |
| Escrow state: agent's `execution.payment.escrow_state` vs commercial's richer machine | **Commercial's 6-state machine**, single-sourced under `pricing.escrow` |
| Derived models: `persistent_licensed` fine-tuning (commercial) vs `this_license_only` const (legal) | **Legal wins** — surviving LoRAs are a bigger grant than v0.1 prices; open question |
| Verification tiers: 3 naming schemes | **Agent's lexicographic `tier_N_*`** scheme |
| Revocation naming/elections | **Legal's three-way delivered-outputs election + const cease-immediately**, plus commercial's at-will pricing flags and agent's optional `revocation_fee` |

## Known limits (application-level, normative via x-invariants)

Date arithmetic (INV-001/002, anchored, date-inclusive), payout/milestone sums (INV-013/014,
rounding per INV-032), escrow gating (INV-015), cross-license exclusivity/block-ledger conflicts
(INV-016, executed+active+holdback ledger with serialized commit), EU-member detection for
country lists (INV-018), consent-instrument verbatim match (INV-019, RFC 4647 language
matching), grant-hash verification (INV-007), territory set expansion (INV-009), approval-hash
verification and advance-instrument timing (INV-023), standing-terms byte-equality (INV-029),
release-before-collection ordering (INV-030), statutory-bases territory lint (INV-031), the
`total_guaranteed_fee` equality (INV-033), platform-side agent-channel enforcement (INV-034),
HITL confirmation artifacts (INV-035), reference-registry snapshot pinning (INV-036), the
verify_license outcome table (INV-008), post-term survival reporting (INV-024), self-hosted
pipeline registration and reporting (INV-025), content-declaration matching, derived
endorsement codes, and affirmative-permission disjointness (INV-017/026), committed-units-vs-cap
ordering (INV-027), and per-recipient destruction certificates (INV-028) cannot be expressed in
JSON Schema and MUST be enforced by the platform validator and its conformance suite.

## What 0.1.2 changed (adversarial-review revision)

Applies every finding of the two adversarial reviews (legal completeness; implementability
vs. the auto-approval evaluator):

1. **Embodied performers are first-class sub-parties** (`character_provenance.
   embodied_performer`): own `per_` id, age attestation, KYC/liveness, intended-use consent,
   data-subject BIPA release, mandatory `payout_split` role — and **INV-001's 10-year cap now
   covers any grant with a living embodied performer**, closing the character-wrapper evasion.
2. **Structured age attestation** (`$defs.age_attestation`) for every verified natural person:
   human licensors, estate representatives (new required `estate_authority.representative`),
   character-owner signatories (new required `owner_signatory`), embodied performers (INV-012).
3. **Term-cap math defined normatively**: anchor = earliest of consent capture / execution /
   start_date; end_date inclusive; check `((end_date + 1 day) − anchor) ≤ cap` (INV-001, step
   10) — kills both the postdated-start extension and the off-by-one-day pass.
4. **Advance-mode representation gate**: unrepresented human licensors cannot publish
   auto/standing envelopes (root conditional; §927 safe-harbor posture).
5. **BIPA ordering made structural** (INV-030): `reference_materials_collected_at` +
   `written_release_signatory` (data-subject-only capacities), release-before-collection
   invariant; `cold_backup_purge_days` ceiling cut to 90 with counsel-signed infeasibility
   documentation required over 30.
6. **`campaign` (with `product_or_service`) required for every non-manual executed license**;
   both auto examples now declare `first_person_endorsement_phrasing`; INV-017 gains the
   derived-endorsement-code rule.
7. **Standing-terms hash binding** (`advance_authorization.licensor_terms_ref` + INV-029
   byte-equality over all talent-fixed blocks) — the booking assembler is no longer trusted.
8. **Closed verify_license outcome vocabulary** (INV-008): eight statuses over
   (status × treatment × window), including revoked-retention, wind-down, pre-activation, and
   terminated-retention — lawfully retained outputs can never report as unlicensed.
9. **State machine completed**: `executed → expired` clock transition, `pending_approval →
   declined` on `sla_timeout_declined` (actor `system`), `expired → terminated` for
   runoff/survival abuse (INV-024 survival revocation); activation defined for
   service-enablement deliverables.
10. **INV-004(m) + envelope opt-in** (`reference_release_permitted` /
    `reference_release_allowed_asset_classes`): raw-reference release and fine-tuning route to
    manual unless the licensor pre-authorized the exact asset classes.
11. **Money math pinned**: INV-032 rounding/remainder rule (floor per line, remainder to the
    last entry; uplift base defined), INV-033 `total_guaranteed_fee` equality, overage-rate and
    `net_days` conditionals.
12. **Algorithm split and renumbered (16 steps)**: blocklist reject (4) vs allowlist-miss
    route-manual (5); category-subset manual route (6) vs exclusion-intersection deny (7);
    absent-ceiling semantics + `max_interactive_sessions` mirror (11); serialized ledger commit
    (16). INV-016 ledger scope: executed+active plus live holdbacks.
13. **Integration hardening**: separate `booking_idempotency_key` / `execution_idempotency_key`
    scoped per (licensee, operation) with a retention window (INV-010); `quote_expires_at`;
    `reference_registry_snapshot` + INV-036 table pinning.
14. **Type discipline**: `$defs.utc_datetime` (required trailing Z) for every timestamp;
    ISO-duration week-mixing rejected; RFC 4647 basic filtering + lowercase primary subtags for
    all language tags; `$defs.content_code` hoisted; zero-padded tier naming rule documented.
15. **Revocation floor**: `for_cause_grounds` required with a mandatory minimum trio;
    deliverable-review customs and `prohibited_phrasings` force the review surface to exist
    under any mode.
16. **`pricing.escrow.state` expressly exempted** from the license_version amendment rule
    (documented, not moved — single source of truth preserved).
17. **Agent-channel integrity** (INV-034) and the **HITL confirmation artifact**
    (`execution.human_confirmation`, INV-035).
18. **INV-031 statutory-bases territory lint**; all four examples cite territory-complete bases.
19. **Examples**: new `estate-archival.json` (CA post-mortem estate, manual, INV-002 exercised);
    AI ad re-cut counsel-represented with corrected BIPA timeline and complete declarations;
    game NPC re-priced well above scale with union-counsel note, term corrected for inclusive
    cap math, backups shortened; VTuber carries the full performer sub-party and performer
    payout split. All hashes are real JCS SHA-256 values; everything validates under ajv.

## What 0.1.1 changed (pressure-test revision)

Closed from the three gap reports (AI ad / game NPC voice / VTuber standing offer):

1. **Non-exclusive + NAICS competitor block** is now a coherent, auto-approvable encoding
   (`mode:"none"` + `competitor_blocks` + `naics_competitor_blocks_permitted`; INV-004(e),
   INV-016(2)); the block is priced via `exclusivity_premium`.
2. **Custom exclusions elect an enforcement surface** (`booking_match` vs `deliverable_review`);
   only booking-match customs fail-close auto-approval.
3. **`grant.distribution_platforms`** — distribution allowlist as a machine term, mirrored in
   the auto-approval envelope.
4. **Advance authorization** (`consent.advance_authorization`, INV-023) defines the consent
   story for machine execution: pre-signed instrument, `approval_hash` over JCS(/approval),
   `captured_at` = signing time, `licensor_signature_ref` → the advance instrument;
   `licensee_identity_disclosure` replaces the const-true boolean; `/campaign` moved out of the
   hashed grant so per-execution metadata never breaks INV-007.
5. **Channel boundary definitions** (YouTube pre-roll = `social_paid`; `in_game` excludes store
   pages/trailers) and the **video+voice pairing rule** for talking outputs.
6. **`grant.languages`** as a required grant dimension (prefix-matched, enveloped, INV-019).
7. **Post-term survival of embedded outputs** (`delivered_outputs_survival`, INV-024) — shipped
   game builds stop reading as infringing on day one of year eleven.
8. **Self-hosted generation** expressible as a registered-pipeline election (INV-025).
9. **Elective fee components** via `election` markers; committed-units vs caps disambiguated
   (INV-027).
10. **Derived-model vs delivered-output classification rule**; backup/VCS purge window
    (`cold_backup_purge_days`); `purpose_satisfied_definition`; per-recipient destruction
    certificates (INV-028).
11. **Union economics**: `ph_contribution_rate_bps` / `ph_contribution_amount`,
    `scale_rate_evidence_ref`, producer-paid-P&H encoding rule.
12. **`content_declaration`** block + **`affirmative_permissions`** (+ taxonomy code
    `energy_drinks_high_caffeine`), INV-017/026.
13. **Entity licensors**: `entity_licensor_not_applicable` representation, Canadian/Japanese/
    contract-only `statutory_bases`, character-owner signatory guidance.
14. **`credit.performer_anonymity_required`**; **`embedded_use_manifest`**;
    `biometric_data_present` gating the BIPA release; at-will-conditional
    `notice_days`/`refund_treatment`; `generation_may_precede_start`; `x_notes` annotations;
    auto-execution actor rule (initiating `licensee`/`licensee_agent`, never `system`).

## Known limitations / v0.2 candidates

Gaps surfaced by the pressure tests that are **deliberately deferred**, with the 0.1.1 stopgap
noted:

1. **Elective/menu pricing at quote time.** 0.1.1 records only the *elected outcome*
   (`fee_components[].election`); a first-class offer menu (alternative component sets, tier
   elections, contingent fees) belongs in the quote/booking schema split (item 7 below).
   0.1.2's `integration.quote_expires_at` is the minimal in-document TTL until that lands.
2. **Statutory adequacy of class-level advance consent.** INV-023 defines the *mechanics*
   (pre-signed instrument, envelope hash, standing-terms binding, execution-time disclosure);
   whether class-level description satisfies each jurisdiction's "reasonably specific
   description" standard for every deal shape needs the fifty-state matrix and counsel review.
   **0.1.2 stopgap:** human licensors cannot publish auto/standing envelopes without
   `legal_counsel` or `union_cba_coverage` representation (schema conditional), so the
   unrepresented-human + class-consent configuration — the one with no §927 fallback — is
   unrepresentable until the matrix resolves it. Conservative jurisdictions may still require
   manual mode even with counsel.
3. **Deep game-pipeline provenance.** `embedded_use_manifest` bridges builds/patches; per-asset
   watermark survival through engine compilation, wild in-game audio matching, and
   runtime-rendered C2PA remain open engineering/spec work.
4. **Full union P&H remittance modeling** (contribution ledgers, plan remittance evidence,
   per-session-vs-buyout bases). 0.1.1 records rate/amount/payer only.
5. **Distribution-platform registry.** `distribution_platforms` ids assume a published
   Semblance Distribution Registry (like the Platform Registry); publish both with the schema.
6. **`in_game` sub-surfaces** (store pages, in-engine promotional capture, UGC/streamer
   programs) as closed channel or exclusion codes — currently handled by the normative channel
   definition plus custom exclusions.
7. **Marketing/promotional-use taxonomy.** "No marketing use" is structurally out-of-scope when
   `advertising` isn't granted, but a closed promotional-use code set would remove the remaining
   custom-exclusion reliance.
8. **Language dialect/locale matrices** (prefix matching is deliberate; per-locale union rates
   and moral-rights nuances may need structure).
9. **Post-term survival for non-embedded persistent artifacts** (e.g. printed matter, OOH
   archives) — 0.1.1 scopes survival strictly to product-embedded copies.
10. **Reference Registry snapshots as published artifacts.** 0.1.2 pins evaluation to
    `integration.reference_registry_snapshot` (INV-036), but the snapshot files themselves
    (ISO 3166-1 set, EU/EEA membership, ISO 4217 exponents, NAICS 2022 tables) must be
    published and versioned alongside the Platform Registry — publication is platform work,
    not schema work.
11. **Union-counsel review of live union deals.** The game-NPC example is re-priced well above
    the computed scale floor with a documented classification memo (its `x_notes`), but real
    union bookings still need per-deal union-counsel review of the worksheet math and
    replica-classification reading; `scale_minimums_compliance` remains an assertion whose
    evidence lives in `scale_rate_evidence_ref`, not a computation the schema can check.
12. **Estate-regime renewal mechanics.** INV-002 now requires re-verification of
    `post_mortem_rights_expire_at` at each execution/renewal, but renewal-contingent regimes
    (NO FAKES 10 + 5) may eventually deserve first-class renewal-state fields rather than a
    re-verified date.

## Open questions for v0.2

1. Structured sublicense programs (fan content, creator whitelisting, localization,
   platform-catalog integration) with sublicense registration into the enforcement index.
2. Perpetual or auto-renewing terms for `character` licensors (pure IP licensing) without
   weakening the human/estate posture.
3. Persistent licensed derived models (`persistent_licensed` fine-tuning) as a priced,
   vetted grant.
4. Exclusivity ledger: registry-level cross-license state so category exclusivity can be
   machine-checked (until then, exclusivity ⇒ manual).
5. Multi-currency talent pricing (per-currency parameter sets vs platform FX at quote time).
6. ISO 3166-2 subdivision territories (US states matter for right-of-publicity nuance).
7. Splitting profile-terms / booking-request / executed-license into three schemas sharing
   `$defs` (this document doubles as terms-and-license in v0.1).
8. Jurisdiction-specific consent formality variants from the fifty-state matrix; moral-rights
   handling for non-US territories; multi-licensor ensemble grants.
9. Self-hosted generation pricing/audit depth (0.1.1 made it *expressible* as a registered
   pipeline with mandatory reporting, INV-025; premium pricing norms and audit tooling remain).
10. Additional escrow/payment rails (ACP, UCP, AP2, x402) as `escrow.provider` values.
