The scenarios identify the rules or journey assertions they are intended to prove. A test binding names existing evidence; an unbound proposal remains work to verify.
The interaction register links concrete experiments with run ai requests with consistent attribution and accounting; publish ai operation definitions and historical prices; notify administrators at allowance thresholds; recover interrupted requests and identify accounting drift; monitor ai usage across organizations; inspect an organization’s ai account and request history; explain an ai refusal or unsuccessful conversation; set an organization’s ai access and recurring limits; provide temporary ai capacity and revoke it; correct an organization’s ai charges; show administrators their organization’s ai allowance. Each experiment checks the outcome at the shared boundary; an unbound experiment remains proposed.
Complete displayed-position transitions, month-boundary races, changes during admission and interrupted period movement need additional proof beyond the atomic reservation race.
Coverage
Rulegap: FND-PFM-LLM-066
Transitiongap: FND-PFM-LLM-066
Validationgap: FND-PFM-LLM-066
Permissionnot-applicable
Edgecovered
Failurecovered
Boundarycovered
Concurrencycovered
Invariantgap: FND-PFM-LLM-066
Interactioncovered
Test Scenarios
21 scenarios proving CAP-PFM-LLM-007; 14 bound to an existing test.
01Concurrent first admission creates one periodconcurrencyapitest
services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#releases the hold, which is the whole point of the sweep,services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#charges the period once,services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#leaves the hold in place, so a live call keeps the credits it reserved
services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js#says the same request would be admitted now, after an override granted since is in force,services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js#leaves blocks 1 and 2 as the snapshot had them, whatever has changed since,services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js#holds no credits by explaining
services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#keeps what was reserved: a lowered allowance never cuts a call off,services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#refuses the next call while the period is over its lowered allowance,services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#takes held credits down to zero as each reservation settles, never below
17Grant boundaries change the next admissioninteractionapitest
services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#counts from its first instant,services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#refuses the same call from the instant the window ends,services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#counts the override no longer once it is revoked: whatever the race admitted, the next call fits only inside the base
18Correction changes capacity without rewriting requestsinteractionapiproposed