---
id: FAS-PFM-LLM-02
title: AI Catalog and Pricing acceptance
feature: FEAT-PFM-LLM-02
product_area: platform
module: llm
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: 9b95399181c8ec6670ce3d12d700e59643668692
capabilities:
  - CAP-PFM-LLM-005
  - CAP-PFM-LLM-006
scenarios:
  - id: FAS-PFM-LLM-02-01
    title: Publication makes declared work callable
    kind: behaviour
    exercises:
      - CAP-PFM-LLM-005
      - CAP-PFM-LLM-006
    relies_on:
      - ATS-PFM-LLM-005-02
      - ATS-PFM-LLM-006-01
    preconditions: Operation and price declarations are valid and test tiers use stub mode.
    steps: 'Publish the catalog, resolve an operation and run its prepared script.'
    expected: 'The operation resolves to a published price, scripted usage is metered and no live model call occurs.'
    negative: false
    data_needs: >-
      An isolated workspace with stated usage, callers, clock instants and a separate workspace for scope
      checks.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
  - id: FAS-PFM-LLM-02-02
    title: Changing prices changes scripted costs prospectively
    kind: interaction
    exercises:
      - CAP-PFM-LLM-005
      - CAP-PFM-LLM-006
    relies_on:
      - ATS-PFM-LLM-005-05
      - ATS-PFM-LLM-006-02
    preconditions: A scripted request has settled at the old price.
    steps: Publish a changed price and execute the same usage after fresh resolution.
    expected: >-
      The new charge changes while earlier version history remains intact; the test cannot construct the live
      adapter.
    negative: false
    data_needs: >-
      An isolated workspace with stated usage, callers, clock instants and a separate workspace for scope
      checks.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
  - id: FAS-PFM-LLM-02-03
    title: Reversion appends rather than rewrites
    kind: lifecycle
    exercises:
      - CAP-PFM-LLM-005
      - CAP-PFM-LLM-006
    relies_on:
      - ATS-PFM-LLM-005-03
      - ATS-PFM-LLM-005-04
    preconditions: 'A routing declaration is published, changed and then reverted.'
    steps: Publish each declaration and inspect its historical versions under scripted verification.
    expected: Reversion creates a later historical version with the earlier digest; previous versions resist mutation.
    negative: false
    data_needs: >-
      An isolated workspace with stated usage, callers, clock instants and a separate workspace for scope
      checks.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
  - id: FAS-PFM-LLM-02-04
    title: Catalog inspection remains staff-only
    kind: permission
    exercises:
      - CAP-PFM-LLM-005
      - CAP-PFM-LLM-006
    relies_on:
      - ATS-PFM-LLM-005-08
      - ATS-PFM-LLM-006-01
    preconditions: 'A support reader, customer administrator and unkeyed staff caller request catalog history.'
    steps: Read the HQ catalog as each caller while test mode remains scripted.
    expected: Only the keyed staff reader receives the catalog and rates; denied reads never initiate model work.
    negative: true
    data_needs: >-
      An isolated workspace with stated usage, callers, clock instants and a separate workspace for scope
      checks.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
  - id: FAS-PFM-LLM-02-05
    title: Invalid publication preserves the working catalog
    kind: regression
    exercises:
      - CAP-PFM-LLM-005
      - CAP-PFM-LLM-006
    relies_on:
      - ATS-PFM-LLM-005-02
      - ATS-PFM-LLM-006-02
    preconditions: A valid catalog is in force and a proposed publication routes an operation to an unpriced model.
    steps: 'Attempt publication, inspect version counts and run a script against the existing declaration.'
    expected: >-
      Validation appends no versions and the existing published operation remains callable without live
      spending.
    negative: true
    data_needs: >-
      An isolated workspace with stated usage, callers, clock instants and a separate workspace for scope
      checks.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
      - >-
        rhythm-v2-docs:specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
evidence:
  - artifact: CAP-PFM-LLM-005
    provenance: documented
    source: >-
      specs/platform/llm/planning/capabilities/CAP-PFM-LLM-005-declare-and-publish-ai-operations-and-their-prices.md
  - artifact: CAP-PFM-LLM-006
    provenance: documented
    source: specs/platform/llm/planning/capabilities/CAP-PFM-LLM-006-prove-ai-features-without-spending.md
  - provenance: documented
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#5.3 Feature Acceptance Suite'
execution_gap: FND-PFM-LLM-081
---

# AI Catalog and Pricing acceptance

## What the Feature Must Do as a Whole

Operation and price declarations are valid and test tiers use stub mode. Publish the catalog, resolve an operation and run its prepared script. The suite compares the feature outcome with its capability prerequisites and keeps partial proof visible.

## Interactions Between Capabilities

A scripted request has settled at the old price. Publish a changed price and execute the same usage after fresh resolution. The interaction scenario checks what changes across that shared boundary. Lifecycle, permission and regression scenarios preserve the wider feature obligations.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative feature acceptance from the pinned capability and design baseline. |
