---
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
---

# Permanent Identifier Register

This register reserves identifiers before new artifacts or rows are authored. Existing identifiers remain permanent. Platform maintains the actor series for the product area, and this module uses independent numbering from earlier inventories.

## Series

| Series | Allocated | Next free |
|---|---|---|
| `MOD-PFM-LLM` | the module charter | — |
| `ACT-PFM-` | 001 to 006 (product-area wide) | 007 |
| `FEAT-PFM-LLM-` | 01 to 07 | 08 |
| `CON-PFM-LLM-` | 001 to 005 | 006 |
| `CAP-PFM-LLM-` | 001 to 020 | 021 |
| `JNY-PFM-LLM-` | 001 to 005 | 006 |
| `FAS-PFM-LLM-` | 01 to 07 (the feature numbers) | 08 |
| `TST-PFM-LLM-` | 001 to 087 | 088 |
| `ATS-PFM-LLM-` | 001 to 020 (one per capability, same number) | 021 |
| `FND-PFM-LLM-` | 001 to 031 (planning); 032 to 038 (design); 039 to 050 (examination); 051 to 059 (controls); 060 to 081 (testing) | 082 |
| `OQ-PFM-LLM-` | 001 to 003 (planning); 004 to 005 (design) | 006 |
| `DOM-PFM-LLM-` | 001 to 005 (the numbers of their concepts) | — |
| `INV-DOM-PFM-LLM-` | per object: 001 rows 01 to 12, 002 rows 01 to 08, 003 rows 01 to 12, 004 rows 01 to 08, 005 rows 01 to 07 | 13, 09, 13, 09, 08 |
| `STATE-PFM-LLM-` | 001 to 008 | 009 |
| `WF-PFM-LLM-` | 001 to 015 | 016 |
| `SVC-PFM-LLM-` | `llm`, `console-agent` | — |
| `SCR-PFM-LLM-` | 001 to 008 | 009 |
| `ADR-PFM-LLM-` | 001 to 017 | 018 |
| `IOP-PFM-LLM-` | 001 to 002 | 003 |
| `IOS-PFM-LLM-` | 001 rows 01 to 03; 002 rows 01 to 03 | 04, 04 |
| `RESP-PFM` | product-area responsibilities; this module's row | — |

## Rows Inside Artifacts

| Artifact | Title | Rules (`BR-…-NN`) | Scenarios and edge cases (`SC-…-NN`) | Next free BR | Next free SC |
|---|---|---|---|---|---|
| `CAP-PFM-LLM-001` | Run AI requests with consistent attribution and accounting | 01 to 13 | 01 to 03 | 14 | 04 |
| `CAP-PFM-LLM-002` | Bound AI conversations and handle recoverable failures | 01 to 15 | 01 to 02 | 16 | 03 |
| `CAP-PFM-LLM-003` | Keep one account for a multi-request AI task | 01 to 09 | 01 to 02 | 10 | 03 |
| `CAP-PFM-LLM-004` | Retain redacted AI evidence and remove it safely | 01 to 09 | 01 to 02 | 10 | 03 |
| `CAP-PFM-LLM-005` | Publish AI operation definitions and historical prices | 01 to 10 | 01 to 02 | 11 | 03 |
| `CAP-PFM-LLM-006` | Check AI behavior with scripted models and deliberate live runs | 01 to 07 | 01 to 01 | 08 | 02 |
| `CAP-PFM-LLM-007` | Admit AI work against the organization’s monthly allowance | 01 to 11 | 01 to 03 | 12 | 04 |
| `CAP-PFM-LLM-008` | Notify administrators at allowance thresholds | 01 to 12 | 01 to 02 | 13 | 03 |
| `CAP-PFM-LLM-009` | Recover interrupted requests and identify accounting drift | 01 to 07 | 01 to 01 | 08 | 02 |
| `CAP-PFM-LLM-010` | Monitor AI usage across organizations | 01 to 12 | 01 to 02 | 13 | 03 |
| `CAP-PFM-LLM-011` | Inspect an organization’s AI account and request history | 01 to 12 | 01 to 01 | 13 | 02 |
| `CAP-PFM-LLM-012` | Explain an AI refusal or unsuccessful conversation | 01 to 09 | 01 to 02 | 10 | 03 |
| `CAP-PFM-LLM-013` | Set an organization’s AI access and recurring limits | 01 to 11 | 01 to 02 | 12 | 03 |
| `CAP-PFM-LLM-014` | Provide temporary AI capacity and revoke it | 01 to 12 | 01 to 02 | 13 | 03 |
| `CAP-PFM-LLM-015` | Correct an organization’s AI charges | 01 to 10 | 01 to 02 | 11 | 03 |
| `CAP-PFM-LLM-016` | Inspect captured AI content with a live access grant | 01 to 07 | 01 to 01 | 08 | 02 |
| `CAP-PFM-LLM-017` | Show administrators their organization’s AI allowance | 01 to 09 | 01 to 02 | 10 | 03 |
| `CAP-PFM-LLM-018` | Give people understandable AI refusal messages | 01 to 10 | 01 to 01 | 11 | 02 |
| `CAP-PFM-LLM-019` | Use Jazz AI conversations and project folders | 01 to 12 | 01 to 02 | 13 | 03 |
| `CAP-PFM-LLM-020` | Refine queries and directory filters with Jazz AI | 01 to 08 | 01 to 01 | 09 | 02 |

| Journey | Title | Assertions (`AS-…-NN`) | Next free AS |
|---|---|---|---|
| `JNY-PFM-LLM-001` | A staff member reaches the monthly AI allowance | 01 to 03 | 04 |
| `JNY-PFM-LLM-002` | Support investigates an AI refusal | 01 to 03 | 04 |
| `JNY-PFM-LLM-003` | A Rhythm administrator grants and withdraws temporary AI capacity | 01 to 03 | 04 |
| `JNY-PFM-LLM-004` | An administrator investigates an allowance warning | 01 to 02 | 03 |
| `JNY-PFM-LLM-005` | A staff member refines a query and resumes its Jazz AI conversation | 01 to 03 | 04 |

| Capability Test Specification | Scope | Scenarios (`ATS-…-NN`) | Next free |
|---|---|---|---|
| `ATS-PFM-LLM-001` | `CAP-PFM-LLM-001` | 01 to 22 | 23 |
| `ATS-PFM-LLM-002` | `CAP-PFM-LLM-002` | 01 to 14 | 15 |
| `ATS-PFM-LLM-003` | `CAP-PFM-LLM-003` | 01 to 11 | 12 |
| `ATS-PFM-LLM-004` | `CAP-PFM-LLM-004` | 01 to 07 | 08 |
| `ATS-PFM-LLM-005` | `CAP-PFM-LLM-005` | 01 to 17 | 18 |
| `ATS-PFM-LLM-006` | `CAP-PFM-LLM-006` | 01 to 06 | 07 |
| `ATS-PFM-LLM-007` | `CAP-PFM-LLM-007` | 01 to 21 | 22 |
| `ATS-PFM-LLM-008` | `CAP-PFM-LLM-008` | 01 to 14 | 15 |
| `ATS-PFM-LLM-009` | `CAP-PFM-LLM-009` | 01 to 06 | 07 |
| `ATS-PFM-LLM-010` | `CAP-PFM-LLM-010` | 01 to 12 | 13 |
| `ATS-PFM-LLM-011` | `CAP-PFM-LLM-011` | 01 to 18 | 19 |
| `ATS-PFM-LLM-012` | `CAP-PFM-LLM-012` | 01 to 09 | 10 |
| `ATS-PFM-LLM-013` | `CAP-PFM-LLM-013` | 01 to 18 | 19 |
| `ATS-PFM-LLM-014` | `CAP-PFM-LLM-014` | 01 to 15 | 16 |
| `ATS-PFM-LLM-015` | `CAP-PFM-LLM-015` | 01 to 08 | 09 |
| `ATS-PFM-LLM-016` | `CAP-PFM-LLM-016` | 01 to 06 | 07 |
| `ATS-PFM-LLM-017` | `CAP-PFM-LLM-017` | 01 to 13 | 14 |
| `ATS-PFM-LLM-018` | `CAP-PFM-LLM-018` | 01 to 03 | 04 |
| `ATS-PFM-LLM-019` | `CAP-PFM-LLM-019` | 01 to 08 | 09 |
| `ATS-PFM-LLM-020` | `CAP-PFM-LLM-020` | 01 to 06 | 07 |

## Design Allocation

| Id | Title |
|---|---|
| `DOM-PFM-LLM-001` | AI Request |
| `DOM-PFM-LLM-002` | AI Operation |
| `DOM-PFM-LLM-003` | AI Allowance |
| `DOM-PFM-LLM-004` | AI Usage |
| `DOM-PFM-LLM-005` | Jazz AI Conversation |
| `STATE-PFM-LLM-001` | AI request lifecycle |
| `STATE-PFM-LLM-002` | AI task execution lifecycle |
| `STATE-PFM-LLM-003` | Captured content lifecycle |
| `STATE-PFM-LLM-004` | Operation and price version lifecycle |
| `STATE-PFM-LLM-005` | Allowance position |
| `STATE-PFM-LLM-006` | Threshold crossing and its notice |
| `STATE-PFM-LLM-007` | Capacity grant lifecycle |
| `STATE-PFM-LLM-008` | Jazz AI conversation lifecycle |
| `WF-PFM-LLM-001` | Run one metered AI request |
| `WF-PFM-LLM-002` | Account for a multi-request AI task |
| `WF-PFM-LLM-003` | Publish the operation catalog at deploy |
| `WF-PFM-LLM-004` | Recover interrupted requests and tasks hourly |
| `WF-PFM-LLM-005` | Tell administrators an allowance threshold was crossed |
| `WF-PFM-LLM-006` | Rebuild the daily usage rollup |
| `WF-PFM-LLM-007` | Change an organization's AI limits |
| `WF-PFM-LLM-008` | Grant and revoke temporary AI capacity |
| `WF-PFM-LLM-009` | Correct an organization's AI charges |
| `WF-PFM-LLM-010` | Read captured content under an access grant |
| `WF-PFM-LLM-011` | Remove an organization's AI records and content |
| `WF-PFM-LLM-012` | Assemble usage across organizations |
| `WF-PFM-LLM-013` | Answer a general Jazz AI question |
| `WF-PFM-LLM-014` | Refine a query or directory through Jazz AI |
| `WF-PFM-LLM-015` | Explain a refused or failed request |
| `SVC-PFM-LLM-llm` | LLM foundation and AI usage (services-platform `modules/llm`) |
| `SVC-PFM-LLM-console-agent` | Jazz AI conversation routes (react-console `app/api/agent`) |
| `SCR-PFM-LLM-001` | Jazz AI page |
| `SCR-PFM-LLM-002` | Ask Jazz AI panel |
| `SCR-PFM-LLM-003` | Rhythm HQ AI Usage dashboard |
| `SCR-PFM-LLM-004` | Rhythm HQ AI usage requests |
| `SCR-PFM-LLM-005` | Rhythm HQ AI request detail |
| `SCR-PFM-LLM-006` | Rhythm HQ AI task execution detail |
| `SCR-PFM-LLM-007` | Rhythm HQ organization AI Usage card |
| `SCR-PFM-LLM-008` | Organization AI Usage dashboard (planned) |
| `ADR-PFM-LLM-001` | Every model call goes through one Platform path and the consumer owns the question |
| `ADR-PFM-LLM-002` | The request is recorded before credits are held, and admission is one conditional update |
| `ADR-PFM-LLM-003` | Settlement always runs and charges only what was spent or could have been |
| `ADR-PFM-LLM-004` | Interrupted work is recovered by a later sweep, never compensated in the request |
| `ADR-PFM-LLM-005` | Operations and prices are published at deploy as append-only versions |
| `ADR-PFM-LLM-006` | The allowance is a monthly account in the organization's calendar, opened on demand |
| `ADR-PFM-LLM-007` | Capacity grants are windowed facts read at request time, revoked and never edited |
| `ADR-PFM-LLM-008` | Every AI control write commits with its security audit event |
| `ADR-PFM-LLM-009` | A limits change states every editable value at the version read |
| `ADR-PFM-LLM-010` | Grants and corrections are not replay-safe until the shared idempotency ledger exists |
| `ADR-PFM-LLM-011` | Allowance notices go to administrators by e-mail after commit, at least once |
| `ADR-PFM-LLM-012` | Every request's redacted content is kept ninety days behind an audited, grant-gated read |
| `ADR-PFM-LLM-013` | Rhythm HQ reads across organizations from a derived daily rollup in UTC days |
| `ADR-PFM-LLM-014` | Organizations see credits and percentages; Rhythm HQ sees money |
| `ADR-PFM-LLM-015` | No object of this module carries custom fields |
| `ADR-PFM-LLM-016` | No operation of this module is published to Submissions |
| `ADR-PFM-LLM-017` | Jazz AI conversations stay a console prototype until Platform owns them |
| `IOP-PFM-LLM-001` | Jazz AI General Reply |
| `IOP-PFM-LLM-002` | Jazz AI Query Refinement |
| `FND-PFM-LLM-032` | Recovery charges the estimate to requests that never held credits or reached the provider |
| `FND-PFM-LLM-033` | No charge-correction or revocation control exists on the organization card |
| `FND-PFM-LLM-034` | Allowance notices bypass the Platform notification pipeline |
| `FND-PFM-LLM-035` | A threshold crossing is recorded after the settlement commits, in a transaction of its own |
| `FND-PFM-LLM-036` | A scoped Jazz AI change is applied before its exchange is recorded |
| `FND-PFM-LLM-037` | One unreadable organization holds the rollup watermark for every organization |
| `FND-PFM-LLM-038` | The request cleanup block releases a hold its settlement already released, and treats a failed capture write as nothing spent |
| `OQ-PFM-LLM-004` | What should recovery charge for a request whose real cost was never learned? |
| `OQ-PFM-LLM-005` | Should allowance notices move onto the Platform notification pipeline now? |

## Design Examination Allocation

| Id | Concern |
|---|---|
| `FND-PFM-LLM-039` | Catalogue publication and cache limits |
| `FND-PFM-LLM-040` | Tool-loop failure and terminal-status limits |
| `FND-PFM-LLM-041` | Notice lease and delivery limits |
| `FND-PFM-LLM-042` | Inference ownership and missing caller links |
| `FND-PFM-LLM-043` | Reservation policy approval boundary |
| `FND-PFM-LLM-044` | Planning correction-control disagreement |
| `FND-PFM-LLM-045` | Missing brief and unapproved planning baseline |
| `FND-PFM-LLM-046` | Prototype lifecycle completeness |
| `FND-PFM-LLM-047` | Concurrent refund validation |
| `FND-PFM-LLM-048` | Task detail and dashboard display limits |
| `FND-PFM-LLM-049` | General-reply SDK retry and timeout uncertainty |
| `FND-PFM-LLM-050` | Console operation labels are not declared operation identifiers |

## Testing Allocation

| Series | Reserved Rows | Purpose |
|---|---|---|
| `ATS-PFM-LLM-005-08` | permanent | HQ catalog access requires the staff usage key |
| `ATS-PFM-LLM-001-11` | permanent | Bounded answers retain their charge |
| `ATS-PFM-LLM-001-12` | permanent | Task totals agree with request settlement |
| `ATS-PFM-LLM-001-13` | permanent | Capture follows metered execution |
| `ATS-PFM-LLM-001-14` | permanent | Published prices determine the next request |
| `ATS-PFM-LLM-001-15` | permanent | Scripted execution uses production accounting |
| `ATS-PFM-LLM-001-16` | permanent | Refusal creates history without spending |
| `ATS-PFM-LLM-001-17` | permanent | Global disablement stops metered dispatch |
| `ATS-PFM-LLM-001-18` | permanent | Refusal wording follows the metering classification |
| `ATS-PFM-LLM-001-19` | permanent | General chat exposes the unmetered boundary |
| `ATS-PFM-LLM-001-20` | permanent | Live query refusal preserves unsaved work |
| `ATS-PFM-LLM-002-12` | permanent | Historical budgets explain a bounded conversation |
| `ATS-PFM-LLM-002-13` | permanent | Attempt history explains retry outcomes |
| `ATS-PFM-LLM-003-08` | permanent | Recovery closes stale tasks without rewriting totals |
| `ATS-PFM-LLM-003-09` | permanent | Inspection links tasks to their requests |
| `ATS-PFM-LLM-004-06` | permanent | Capture status controls privileged reads |
| `ATS-PFM-LLM-005-09` | permanent | Stub guards protect catalog-priced checks |
| `ATS-PFM-LLM-005-10` | permanent | A changed estimate changes affordability |
| `ATS-PFM-LLM-005-11` | permanent | Reporting retains historical price identity |
| `ATS-PFM-LLM-005-12` | permanent | Limit validation follows declared operation identity |
| `ATS-PFM-LLM-007-11` | permanent | Charged usage drives notices after admission |
| `ATS-PFM-LLM-007-12` | permanent | Recovery releases an eligible recorded hold |
| `ATS-PFM-LLM-007-13` | permanent | Live utilisation counts running commitments |
| `ATS-PFM-LLM-007-14` | permanent | Inspection separates charged and held usage |
| `ATS-PFM-LLM-007-15` | permanent | Explanation never reserves the retried estimate |
| `ATS-PFM-LLM-007-16` | permanent | Lowering limits preserves admitted work |
| `ATS-PFM-LLM-007-17` | permanent | Grant boundaries change the next admission |
| `ATS-PFM-LLM-007-18` | permanent | Correction changes capacity without rewriting requests |
| `ATS-PFM-LLM-007-19` | permanent | Customer position includes running holds |
| `ATS-PFM-LLM-008-10` | permanent | Recovery retries committed owed notices |
| `ATS-PFM-LLM-008-11` | permanent | Inspection shows notice delivery history |
| `ATS-PFM-LLM-008-12` | permanent | Corrections do not create threshold email |
| `ATS-PFM-LLM-008-13` | permanent | Pause notice shares customer guidance |
| `ATS-PFM-LLM-009-06` | permanent | Recovered requests enter reporting once |
| `ATS-PFM-LLM-010-09` | permanent | HQ navigation preserves organization selection |
| `ATS-PFM-LLM-011-09` | permanent | Refusal detail joins history to explanation |
| `ATS-PFM-LLM-011-10` | permanent | A saved limit appears in account inspection |
| `ATS-PFM-LLM-011-11` | permanent | Grant inspection follows revocation |
| `ATS-PFM-LLM-011-12` | permanent | Correction appears in account and audit history |
| `ATS-PFM-LLM-011-13` | permanent | Routine metadata never opens captured content |
| `ATS-PFM-LLM-012-08` | permanent | Later capacity changes only present admission |
| `ATS-PFM-LLM-013-10` | permanent | Exemption cannot bypass global disablement |
| `ATS-PFM-LLM-013-11` | permanent | Customer availability follows recurring switches |
| `ATS-PFM-LLM-017-11` | permanent | Customer summary uses the refusal vocabulary |
| `ATS-PFM-LLM-019-08` | permanent | Scoped history survives navigation and undo |
| `ATS-PFM-LLM-011-14` | permanent | Deployed HQ reads reach request detail |
| `ATS-PFM-LLM-014-11` | permanent | Grant duration accepts its last permitted day |
| `ATS-PFM-LLM-003-10` | permanent | Task replay identity stays workspace-scoped |
| `ATS-PFM-LLM-004-07` | permanent | Captured content requires a retained reference |
| `ATS-PFM-LLM-014-12` | permanent | Grant conversion preserves local month capacity |
| `ATS-PFM-LLM-013-12` | permanent | Persisted limits reject a zero running cap |
| `ATS-PFM-LLM-010-10` | permanent | Daily cells have a unique reporting identity |
| `ATS-PFM-LLM-013-13` | permanent | An exemption restores only operation access |
| `ATS-PFM-LLM-007-20` | permanent | Read-only affordability includes its exact boundary |
| `ATS-PFM-LLM-003-11` | permanent | Failed settlement transaction retains task totals |
| `ATS-PFM-LLM-011-15` | permanent | Task reads do not cross workspace scope |
| `ATS-PFM-LLM-011-16` | permanent | Request windows use half-open bounds |
| `ATS-PFM-LLM-013-14` | permanent | Competing limit replacements choose one writer |
| `ATS-PFM-LLM-013-15` | permanent | Limit inspection retains the next write version |
| `ATS-PFM-LLM-014-13` | permanent | Competing revocations record one ending |
| `ATS-PFM-LLM-014-14` | permanent | Capacity excludes its ending instant |
| `ATS-PFM-LLM-005-13` | permanent | A historical price remains readable unchanged |
| `ATS-PFM-LLM-005-14` | permanent | Concurrent identical publication shares one version |
| `ATS-PFM-LLM-005-15` | permanent | Historical routing remains beside its successor |
| `ATS-PFM-LLM-010-11` | permanent | Reporting progress cannot move backward |
| `ATS-PFM-LLM-010-12` | permanent | Execution leaders disclose unreadable workspaces |
| `ATS-PFM-LLM-011-17` | permanent | Request paging rejects foreign cursor shapes |
| `ATS-PFM-LLM-013-16` | permanent | Limit writes require an inspected version |
| `ATS-PFM-LLM-005-16` | permanent | Routing identity ignores object property order |
| `ATS-PFM-LLM-005-17` | permanent | Usage spelling preserves declared pricing |
| `ATS-PFM-LLM-001-21` | permanent | Terminal request states have no successors |
| `ATS-PFM-LLM-007-21` | permanent | Default allowance uses the declared monthly amount |
| `ATS-PFM-LLM-002-14` | permanent | Retry exhaustion reports every attempt |
| `ATS-PFM-LLM-006-05` | permanent | Script mode refuses production configuration |
| `ATS-PFM-LLM-006-06` | permanent | An exhausted script cannot invent another answer |
| `ATS-PFM-LLM-015-08` | permanent | Correction input rejects fractional credits |
| `ATS-PFM-LLM-014-15` | permanent | Grant kinds have distinct required values |
| `ATS-PFM-LLM-016-06` | permanent | Standing access cannot authorize content |
| `ATS-PFM-LLM-012-09` | permanent | Explanation keeps retry verdicts readable |
| `ATS-PFM-LLM-001-22` | permanent | Allowance and provider faults have separate measures |
| `ATS-PFM-LLM-013-17` | permanent | Limit validation rejects undeclared operations |
| `ATS-PFM-LLM-008-14` | permanent | Notice copy retains the crossing figures |
| `ATS-PFM-LLM-017-12` | permanent | Customer mapping withholds internal commercial fields |
| `ATS-PFM-LLM-017-13` | permanent | Every declared feature has readable descriptions |
| `ATS-PFM-LLM-011-18` | permanent | Console mapping preserves unavailable sections |
| `FAS-PFM-LLM-01` | scenarios 01 to 05; next 06 | Metered AI Requests acceptance |
| `FAS-PFM-LLM-02` | scenarios 01 to 05; next 06 | AI Catalog and Pricing acceptance |
| `FAS-PFM-LLM-03` | scenarios 01 to 05; next 06 | Monthly AI Allowance and Notices acceptance |
| `FAS-PFM-LLM-04` | scenarios 01 to 05; next 06 | Rhythm HQ AI Usage Oversight acceptance |
| `FAS-PFM-LLM-05` | scenarios 01 to 05; next 06 | Rhythm HQ AI Controls acceptance |
| `FAS-PFM-LLM-06` | scenarios 01 to 05; next 06 | Organization AI Usage acceptance |
| `FAS-PFM-LLM-07` | scenarios 01 to 05; next 06 | Jazz AI Conversations acceptance |
| `TST-PFM-LLM-001` | permanent | react-console:e2e/dev/hq-ai-usage.dev.spec.ts |
| `TST-PFM-LLM-002` | permanent | react-console:e2e/mock/hq-ai-usage.mock.spec.ts |
| `TST-PFM-LLM-003` | permanent | react-console:lib/hq/ai-usage-format.test.ts |
| `TST-PFM-LLM-004` | permanent | react-console:lib/hq/ai-usage.test.ts |
| `TST-PFM-LLM-005` | permanent | services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js |
| `TST-PFM-LLM-006` | permanent | services-platform:modules/llm/tests/e2e/llm-adjustments-and-organization.e2e.spec.js |
| `TST-PFM-LLM-007` | permanent | services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js |
| `TST-PFM-LLM-008` | permanent | services-platform:modules/llm/tests/e2e/llm-overrides.e2e.spec.js |
| `TST-PFM-LLM-009` | permanent | services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js |
| `TST-PFM-LLM-010` | permanent | services-platform:modules/llm/tests/integration/db/llm-allowance-overrides.table.integration.spec.js |
| `TST-PFM-LLM-011` | permanent | services-platform:modules/llm/tests/integration/db/llm-catalog-tables.integration.spec.js |
| `TST-PFM-LLM-012` | permanent | services-platform:modules/llm/tests/integration/db/llm-executions.table.integration.spec.js |
| `TST-PFM-LLM-013` | permanent | services-platform:modules/llm/tests/integration/db/llm-invocations-query.view.integration.spec.js |
| `TST-PFM-LLM-014` | permanent | services-platform:modules/llm/tests/integration/db/llm-invocations.table.integration.spec.js |
| `TST-PFM-LLM-015` | permanent | services-platform:modules/llm/tests/integration/db/llm-overrides-migration.integration.spec.js |
| `TST-PFM-LLM-016` | permanent | services-platform:modules/llm/tests/integration/db/llm-tenant-limits.table.integration.spec.js |
| `TST-PFM-LLM-017` | permanent | services-platform:modules/llm/tests/integration/db/llm-usage-daily.table.integration.spec.js |
| `TST-PFM-LLM-018` | permanent | services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js |
| `TST-PFM-LLM-019` | permanent | services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js |
| `TST-PFM-LLM-020` | permanent | services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js |
| `TST-PFM-LLM-021` | permanent | services-platform:modules/llm/tests/integration/lifecycle/tenant-limits.integration.spec.js |
| `TST-PFM-LLM-022` | permanent | services-platform:modules/llm/tests/integration/services/adjustments/adjust-allowance.integration.spec.js |
| `TST-PFM-LLM-023` | permanent | services-platform:modules/llm/tests/integration/services/catalog/materialize-catalog.integration.spec.js |
| `TST-PFM-LLM-024` | permanent | services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js |
| `TST-PFM-LLM-025` | permanent | services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js |
| `TST-PFM-LLM-026` | permanent | services-platform:modules/llm/tests/integration/services/limits/tenant-limits.integration.spec.js |
| `TST-PFM-LLM-027` | permanent | services-platform:modules/llm/tests/integration/services/maintenance/tenant-participant.integration.spec.js |
| `TST-PFM-LLM-028` | permanent | services-platform:modules/llm/tests/integration/services/notices/threshold-notice.integration.spec.js |
| `TST-PFM-LLM-029` | permanent | services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js |
| `TST-PFM-LLM-030` | permanent | services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js |
| `TST-PFM-LLM-031` | permanent | services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.queries.integration.spec.js |
| `TST-PFM-LLM-032` | permanent | services-platform:modules/llm/tests/integration/services/persistence/executions.integration.spec.js |
| `TST-PFM-LLM-033` | permanent | services-platform:modules/llm/tests/integration/services/persistence/executions.queries.integration.spec.js |
| `TST-PFM-LLM-034` | permanent | services-platform:modules/llm/tests/integration/services/persistence/invocations.integration.spec.js |
| `TST-PFM-LLM-035` | permanent | services-platform:modules/llm/tests/integration/services/persistence/invocations.queries.integration.spec.js |
| `TST-PFM-LLM-036` | permanent | services-platform:modules/llm/tests/integration/services/persistence/limits.integration.spec.js |
| `TST-PFM-LLM-037` | permanent | services-platform:modules/llm/tests/integration/services/persistence/limits.queries.integration.spec.js |
| `TST-PFM-LLM-038` | permanent | services-platform:modules/llm/tests/integration/services/persistence/overrides.integration.spec.js |
| `TST-PFM-LLM-039` | permanent | services-platform:modules/llm/tests/integration/services/persistence/overrides.queries.integration.spec.js |
| `TST-PFM-LLM-040` | permanent | services-platform:modules/llm/tests/integration/services/persistence/rate-versions.integration.spec.js |
| `TST-PFM-LLM-041` | permanent | services-platform:modules/llm/tests/integration/services/persistence/rate-versions.queries.integration.spec.js |
| `TST-PFM-LLM-042` | permanent | services-platform:modules/llm/tests/integration/services/persistence/routing-versions.integration.spec.js |
| `TST-PFM-LLM-043` | permanent | services-platform:modules/llm/tests/integration/services/persistence/routing-versions.queries.integration.spec.js |
| `TST-PFM-LLM-044` | permanent | services-platform:modules/llm/tests/integration/services/persistence/usage-rollups.queries.integration.spec.js |
| `TST-PFM-LLM-045` | permanent | services-platform:modules/llm/tests/integration/services/reconciliation/llm-execution-sweep.integration.spec.js |
| `TST-PFM-LLM-046` | permanent | services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js |
| `TST-PFM-LLM-047` | permanent | services-platform:modules/llm/tests/integration/services/reconciliation/rollup-settled-invocations.integration.spec.js |
| `TST-PFM-LLM-048` | permanent | services-platform:modules/llm/tests/integration/services/usage-reports/execution-leaders.integration.spec.js |
| `TST-PFM-LLM-049` | permanent | services-platform:modules/llm/tests/integration/services/usage-reports/platform-usage.integration.spec.js |
| `TST-PFM-LLM-050` | permanent | services-platform:modules/llm/tests/integration/services/usage-reports/tenant-usage.integration.spec.js |
| `TST-PFM-LLM-051` | permanent | services-platform:modules/llm/tests/integration/services/usage/organization-usage.integration.spec.js |
| `TST-PFM-LLM-052` | permanent | services-platform:modules/llm/tests/unit/aws/api/llm-usage-api-mapper.spec.ts |
| `TST-PFM-LLM-053` | permanent | services-platform:modules/llm/tests/unit/aws/api/llm-usage-limits-api.spec.ts |
| `TST-PFM-LLM-054` | permanent | services-platform:modules/llm/tests/unit/aws/api/llm-usage-permissions.spec.ts |
| `TST-PFM-LLM-055` | permanent | services-platform:modules/llm/tests/unit/catalog/classify-usage-dimensions.spec.ts |
| `TST-PFM-LLM-056` | permanent | services-platform:modules/llm/tests/unit/catalog/digest-declarations.spec.ts |
| `TST-PFM-LLM-057` | permanent | services-platform:modules/llm/tests/unit/catalog/llm-executions.spec.ts |
| `TST-PFM-LLM-058` | permanent | services-platform:modules/llm/tests/unit/catalog/pricing.spec.ts |
| `TST-PFM-LLM-059` | permanent | services-platform:modules/llm/tests/unit/catalog/rate-conversions.spec.ts |
| `TST-PFM-LLM-060` | permanent | services-platform:modules/llm/tests/unit/catalog/validate-catalog-declarations.spec.ts |
| `TST-PFM-LLM-061` | permanent | services-platform:modules/llm/tests/unit/db/invocation-transitions.spec.ts |
| `TST-PFM-LLM-062` | permanent | services-platform:modules/llm/tests/unit/llm-settings.spec.ts |
| `TST-PFM-LLM-063` | permanent | services-platform:modules/llm/tests/unit/runtime/anthropic-credentials.spec.ts |
| `TST-PFM-LLM-064` | permanent | services-platform:modules/llm/tests/unit/runtime/anthropic-provider.spec.ts |
| `TST-PFM-LLM-065` | permanent | services-platform:modules/llm/tests/unit/runtime/execute-with-llm-retry.spec.ts |
| `TST-PFM-LLM-066` | permanent | services-platform:modules/llm/tests/unit/runtime/llm-mode.spec.ts |
| `TST-PFM-LLM-067` | permanent | services-platform:modules/llm/tests/unit/runtime/retry-policy.spec.ts |
| `TST-PFM-LLM-068` | permanent | services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts |
| `TST-PFM-LLM-069` | permanent | services-platform:modules/llm/tests/unit/runtime/stub-provider.spec.ts |
| `TST-PFM-LLM-070` | permanent | services-platform:modules/llm/tests/unit/services/adjustments/adjustment-request.spec.ts |
| `TST-PFM-LLM-071` | permanent | services-platform:modules/llm/tests/unit/services/allowance-overrides.spec.ts |
| `TST-PFM-LLM-072` | permanent | services-platform:modules/llm/tests/unit/services/evidence-redaction.spec.ts |
| `TST-PFM-LLM-073` | permanent | services-platform:modules/llm/tests/unit/services/evidence/evidence-access.spec.ts |
| `TST-PFM-LLM-074` | permanent | services-platform:modules/llm/tests/unit/services/explain/explain.spec.ts |
| `TST-PFM-LLM-075` | permanent | services-platform:modules/llm/tests/unit/services/llm-metering-errors.spec.ts |
| `TST-PFM-LLM-076` | permanent | services-platform:modules/llm/tests/unit/services/llm-metrics.spec.ts |
| `TST-PFM-LLM-077` | permanent | services-platform:modules/llm/tests/unit/services/llm-operation-disabled.spec.ts |
| `TST-PFM-LLM-078` | permanent | services-platform:modules/llm/tests/unit/services/refusal-snapshot.spec.ts |
| `TST-PFM-LLM-079` | permanent | services-platform:modules/llm/tests/unit/services/tenant-limits.spec.ts |
| `TST-PFM-LLM-080` | permanent | services-platform:modules/llm/tests/unit/services/threshold-notice.spec.ts |
| `TST-PFM-LLM-081` | permanent | services-platform:modules/llm/tests/unit/services/usage-reports/usage-status.spec.ts |
| `TST-PFM-LLM-082` | permanent | services-platform:modules/llm/tests/unit/services/usage-reports/usage-windows.spec.ts |
| `TST-PFM-LLM-083` | permanent | services-platform:modules/llm/tests/unit/services/usage/organization-usage.spec.ts |
| `TST-PFM-LLM-084` | permanent | services-platform:modules/llm/tests/unit/services/usage/usage-features.spec.ts |
| `TST-PFM-LLM-085` | permanent | services-platform:modules/llm/tests/unit/services/usage/usage-sentences.spec.ts |
| `TST-PFM-LLM-086` | permanent | services-platform:tests/unit/llm-provider-boundary.spec.ts |
| `TST-PFM-LLM-087` | permanent | services-platform:tests/unit/llm-stub-mode-config.spec.ts |
| `FND-PFM-LLM-060` | permanent | Coverage obligations for run ai requests with consistent attribution and accounting |
| `FND-PFM-LLM-061` | permanent | Coverage obligations for bound ai conversations and handle recoverable failures |
| `FND-PFM-LLM-062` | permanent | Coverage obligations for keep one account for a multi-request ai task |
| `FND-PFM-LLM-063` | permanent | Coverage obligations for retain redacted ai evidence and remove it safely |
| `FND-PFM-LLM-064` | permanent | Coverage obligations for publish ai operation definitions and historical prices |
| `FND-PFM-LLM-065` | permanent | Coverage obligations for check ai behavior with scripted models and deliberate live runs |
| `FND-PFM-LLM-066` | permanent | Coverage obligations for admit ai work against the organization’s monthly allowance |
| `FND-PFM-LLM-067` | permanent | Coverage obligations for notify administrators at allowance thresholds |
| `FND-PFM-LLM-068` | permanent | Coverage obligations for recover interrupted requests and identify accounting drift |
| `FND-PFM-LLM-069` | permanent | Coverage obligations for monitor ai usage across organizations |
| `FND-PFM-LLM-070` | permanent | Coverage obligations for inspect an organization’s ai account and request history |
| `FND-PFM-LLM-071` | permanent | Coverage obligations for explain an ai refusal or unsuccessful conversation |
| `FND-PFM-LLM-072` | permanent | Coverage obligations for set an organization’s ai access and recurring limits |
| `FND-PFM-LLM-073` | permanent | Coverage obligations for provide temporary ai capacity and revoke it |
| `FND-PFM-LLM-074` | permanent | Coverage obligations for correct an organization’s ai charges |
| `FND-PFM-LLM-075` | permanent | Coverage obligations for inspect captured ai content with a live access grant |
| `FND-PFM-LLM-076` | permanent | Coverage obligations for show administrators their organization’s ai allowance |
| `FND-PFM-LLM-077` | permanent | Coverage obligations for give people understandable ai refusal messages |
| `FND-PFM-LLM-078` | permanent | Coverage obligations for use jazz ai conversations and project folders |
| `FND-PFM-LLM-079` | permanent | Coverage obligations for refine queries and directory filters with jazz ai |
| `FND-PFM-LLM-080` | permanent | Test citation and binding corrections |
| `FND-PFM-LLM-081` | permanent | Feature execution and customer acceptance gaps |

## Control Gap Allocations

| Id | Controls | Existing Evidence |
|---|---|---|
| `FND-PFM-LLM-051` | `TC-AI-006`, `TC-AI-007`, `TC-VEN-001`, `TC-AZ-002` | `FND-PFM-LLM-001` |
| `FND-PFM-LLM-052` | `TC-TEN-001`, `TC-TEN-002`, `TC-TEN-003` | `FND-PFM-LLM-002` |
| `FND-PFM-LLM-053` | `TC-PI-002` | `FND-PFM-LLM-005` |
| `FND-PFM-LLM-054` | `TC-DAT-003`, `TC-MON-002` | `FND-PFM-LLM-009` |
| `FND-PFM-LLM-055` | `TC-AI-007`, `TC-VEN-001`, `TC-VEN-003` | `FND-PFM-LLM-014` |
| `FND-PFM-LLM-056` | `TC-AVL-004`, `TC-PI-004` | `FND-PFM-LLM-025` |
| `FND-PFM-LLM-057` | `TC-LOG-001` | `FND-PFM-LLM-028` |
| `FND-PFM-LLM-058` | `TC-PI-002`, `TC-PI-003`, `TC-PI-004` | `FND-PFM-LLM-038` |
| `FND-PFM-LLM-059` | `TC-PI-003` | `FND-PFM-LLM-047` |

| `ATS-PFM-LLM-013-18` | permanent | Disabled-operation conflict mapping |
