---
title: Independent Examination of AI Requests, Usage and Jazz AI
examined_at: '2026-10-23'
examiner: codex
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
branch: agent/platform-llm-plan-exam-1
---

# Independent Examination and Final Text

## Scope and method

This examination checks the draft against the supplied source commits and recorded product decisions. Source references are opened from the pinned Git objects; existing test titles are checked as evidence, including Unicode-escaped apostrophes. The examination does not rerun the source repositories’ integration or browser suites and does not claim new customer acceptance.

The final text is authored by OpenAI. Verification corrections are committed independently of artifact wording passes, followed by focused additions and their final-text commits. All existing identifiers and source pins remain; no artifact becomes approved. Two broad intent claims are downgraded, and unsupported composite decision origins are cleared rather than treating implemented detail as approved policy.

## Counts examined

| Item | Count |
|---|---:|
| Existing files, including the shared actor file | 61 |
| Module charters | 1 |
| Features | 7 |
| Broad concepts | 5 |
| Capabilities and matching acceptance sets | 20 each |
| Journeys | 5 |
| Actor rows | 6 |
| Rule rows after corrections and additions | 205 |
| Capability scenarios and edge cases | 36 |
| Acceptance scenarios after additions | 148 |
| Journey steps | 25 |
| Journey assertions | 14 |
| Concept facets | 36 |
| Findings retained or added | 31 |
| Existing product questions | 3 |

Five concepts remain broad nouns with facets; none requires a split or retirement. Twenty capabilities remain within the module grain target. Newly found variants belong to existing request, conversation, task, capture, notice and correction outcomes; no additional capability kind or redundant rule home is introduced.

## Coverage against the pinned trees

Coverage identifies an artifact addressing an inventory item. It does not establish complete behavioral proof. Uncovered source inventory names are empty after the mappings below; the remaining missing behaviors and tests are explicitly captured as findings and proposed scenarios.

| Inventory | Covered / total | Uncovered by name | Mapping |
|---|---|---|---|
| Platform declared HTTP operations | 28 / 28 | None | Charter operation table |
| Console agent method-and-route operations | 10 / 10 | None | Console operation table below |
| Tables and reporting views | 14 / 14 | None | Charter table map |
| Permission keys | 4 / 4 | None | Charter permission map |
| Platform end-to-end specification files | 5 / 5 | None | Charter specification map |
| Platform integration specification files | 42 / 42 | None | Charter specification map; two helpers excluded |
| Module unit specification files | 34 / 34 | None | Charter specification map |
| Repository-level provider guards | 2 / 2 | None | Request boundary and scripted-mode acceptance |
| Console browser specification files | 2 / 2 | None | HQ inspection and explanation |
| Schedule, dead-letter queue and evidence bucket | 3 / 3 | None | Recovery and captured-evidence capabilities |
| Owned console pages and hosted organization card | 6 / 6 | None | Charter screen map |
| Contextual panel, query workspace and directory assistant | 3 / 3 | None | Conversation and scoped-assistance capabilities |
| Request and execution lifecycle definitions | 2 / 2 | None | Request accounting, task accounting and recovery |
| State-machine resources | 0 / 0 | None exist | No state-machine resource is declared |

The draft’s integration denominator was forty-three; the pinned tree has forty-two specification files. The ten console API operations were absent from its HTTP denominator. The shared health route is infrastructure rather than a declared module operation.

| Console source route | Methods | Capability |
|---|---|---|
| `app/api/agent/projects/route.ts` | GET, POST | `CAP-PFM-LLM-019` |
| `app/api/agent/projects/[id]/route.ts` | PATCH, DELETE | `CAP-PFM-LLM-019` |
| `app/api/agent/conversations/route.ts` | GET, POST | `CAP-PFM-LLM-019`, `CAP-PFM-LLM-020` |
| `app/api/agent/conversations/[id]/route.ts` | GET, PATCH, DELETE | `CAP-PFM-LLM-019` |
| `app/api/agent/conversations/[id]/messages/route.ts` | POST | `CAP-PFM-LLM-019`, `CAP-PFM-LLM-020` |

The console browser files are `e2e/mock/hq-ai-usage.mock.spec.ts` and `e2e/dev/hq-ai-usage.dev.spec.ts`. The first establishes mocked presentation; the second establishes that live screens render, not agreement of reported figures. The recovery schedule runs hourly with its dead-letter queue; captured evidence has its own private versioned bucket and retention configuration.

## Verification changes by artifact

| Artifact | Correction or retained qualification |
|---|---|
| `CAP-PFM-LLM-001` | Narrow normal settlement and transitions; use service code for catalog refusal, attribution and provider wording; document pre-cleanup and settlement recovery gaps. |
| `CAP-PFM-LLM-002` | Qualify ordinary tool batches, strict credit excess, per-turn rounding and retained-attempt bounds; add final-answer priority and missing-handler rules with proposed proof. |
| `CAP-PFM-LLM-003` | Add task-error versus close-error behavior and a fault-injection scenario. |
| `CAP-PFM-LLM-004` | Qualify capture as attempted, skipped or failed; separate bodies from operational metadata; add best-effort capture and deployed memory-store refusal. |
| `CAP-PFM-LLM-005` | Retain catalog versioning and pricing; normalize readable test titles and source references. |
| `CAP-PFM-LLM-006` | Retain scripted and explicit live modes, constructor refusals and credential behavior; rewrite the engineering outcome without promising that deliberately enabled live runs cannot spend. |
| `CAP-PFM-LLM-007` | Describe over-reservation protection rather than guaranteed spending containment; remove composite decision origins; retain the exhaustion disagreement. |
| `CAP-PFM-LLM-008` | Remove a composite origin, preserve charged-only crossings, and add delivery-before-stamp interruption risk and proposed fault injection. |
| `CAP-PFM-LLM-009` | Cite operational code for the hourly schedule and estimate-based recovery; distinguish eligible recovery from guaranteed repair of every failure. |
| `CAP-PFM-LLM-010` | Cite console component behavior for section failures and use browser level for price rendering. |
| `CAP-PFM-LLM-011` | Correct enforcement for missing records and use the mapper for complete request detail; narrow ordinary content exclusion to bodies and references actually removed. |
| `CAP-PFM-LLM-012` | Retain refusal snapshots and present comparisons; remove complete-journey proof claims from focused bindings. |
| `CAP-PFM-LLM-013` | Remove composite and unapproved-plan origins; add integer cap, sorted unique disabled keys and trimmed note limit; retain proposed validation proof. |
| `CAP-PFM-LLM-014` | Remove composite and unapproved-plan origins; qualify immutable grants as preserved on revocation rather than undeletable during organization purge. |
| `CAP-PFM-LLM-015` | State signed ten-million-credit bounds and the absent-current-period refund gap; add zero-floor accounting and a proposed scenario; remove an unapproved-plan origin. |
| `CAP-PFM-LLM-016` | Limit auditing to successful reads and missing-grant refusals; correct console role evidence and missing-request ordering; remove an unapproved-plan origin. |
| `CAP-PFM-LLM-017` | Downgrade the complete capability to proposed; clear origins that do not approve detailed summary or recipe mechanics; state the exemption mismatch and missing dashboard. |
| `CAP-PFM-LLM-018` | Separate service helper behavior from console rendering and unimplemented circuit breaking; distinguish customer reset wording from full dated messages. |
| `CAP-PFM-LLM-019` | Correct prompt history to thirty previous messages plus the new one and configured organization naming; distinguish direct and appended message limits and sample ownership. |
| `CAP-PFM-LLM-020` | Describe conversation reuse rather than an unconditional uniqueness invariant; retain scoped refinement, undo and prototype limitations. |
| `CON-PFM-LLM-002`, `CON-PFM-LLM-003` | Correct reservation and warned-state explanations; warning status does not prove charged-notice delivery. |
| `JNY-PFM-LLM-001` | Narrow scripted evidence to request accounting and admission rather than completed query creation or browser rendering. |
| `JNY-PFM-LLM-002` | Mark cross-screen agreement unknown with a finding, narrow body exclusion to the directory and use component evidence for independent failure states. |
| `JNY-PFM-LLM-003` | Preserve API proof boundaries and the duplicate-submit risk; console completion remains proposed. |
| `JNY-PFM-LLM-004` | Downgrade the complete journey to proposed and remove unproved HQ agreement and a warning status absent from the cited fixture. |
| `JNY-PFM-LLM-005` | Remove a specific unproved natural-language date example and explain the inferred refusal path. |
| `MOD-PFM-LLM` | Correct integration totals, add console operation coverage and separate source coverage from acceptance. |
| `ACTORS-PFM` | Keep responsibilities while clarifying that the observed console grants evidence access to administrators, not ordinary readers. |
| `FINDINGS.md`, `ID_REGISTRY.md` | Retain original identifiers, allocate additions before writing their rows and add eight examination findings. |
| `MOD-PFM-LLM` registry row | Expand source scope to the cited records and console helpers and set planning examined. |

New rule identifiers are `BR-CAP-PFM-LLM-002-14`, `BR-CAP-PFM-LLM-002-15`, `BR-CAP-PFM-LLM-003-09`, `BR-CAP-PFM-LLM-004-09`, `BR-CAP-PFM-LLM-008-12` and `BR-CAP-PFM-LLM-015-10`. Their acceptance obligations are the matching newly allocated scenarios, with no assertion that proposed fault injection has already passed.

## Acceptance evidence corrections

Complete-journey bindings are removed wherever focused backend or mock tests cannot prove the journey assertions. Partial request, attribution, accounting and validation bindings are also removed from the focused scenarios named below. Their expected results remain proposed proof obligations.

| Acceptance set | Verification changes |
|---|---|
| `ATS-PFM-LLM-001` | Remove incomplete catalog, interruption, persistence-transition, attribution and provider-wording bindings; state persistence behavior rather than treating a declared transition catalog as runtime enforcement. |
| `ATS-PFM-LLM-002` | Qualify credit and tool guards; add accepted-answer priority and missing-handler scenarios. |
| `ATS-PFM-LLM-003` | Add close-failure fault injection. |
| `ATS-PFM-LLM-004` | Add skipped and failed capture and deployed-memory refusal proof. |
| `ATS-PFM-LLM-007` | Remove complete-journey and partial accounting bindings. |
| `ATS-PFM-LLM-008` | Add interruption between delivery and stamp as an unbound proposal. |
| `ATS-PFM-LLM-010` | Use browser level for the price-rendering test. |
| `ATS-PFM-LLM-012`, `ATS-PFM-LLM-014`, `ATS-PFM-LLM-017` | Remove complete-journey bindings; keep explicit proposals for agreement and control walkthroughs. |
| `ATS-PFM-LLM-013` | Remove partial full-validation proof. |
| `ATS-PFM-LLM-015` | Add the signed correction and zero-floor scenario. |

Composite rules whose single cited test proves only part of the statement now use observed implementation sources. The protected-field table records those changes individually; focused acceptance bindings remain independent evidence. The credential rule also loses its composite approval origin because the recorded secret choice does not approve cache mechanics.

## Authority and evidence field audit

The following table records every changed protected field from the original snapshot. Source pins, identifiers, supersession values, implementation-evidence values and document maturity remain unchanged. Empty decision origins are represented by the established none value.

| Row or artifact | Field | Original | Examined |
|---|---|---|---|
| `JNY-PFM-LLM-005` | `source` | `"react-console:components/console/agent-chat.tsx (detached scope)"` | `"react-console:components/console/agent-chat.tsx"` |
| `JNY-PFM-LLM-005` | `source` | `"react-console:lib/queries/client.ts:interpret; lib/api/generate-query.ts:allowanceMessage"` | `"react-console:lib/queries/client.ts:interpret"` |
| `JNY-PFM-LLM-001` | `source` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#9. Acceptance scenarios (PLAT-M1-S04)"` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#9. Acceptance scenarios"` |
| `AS-JNY-PFM-LLM-001-03` | `source` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#9. Acceptance scenarios (PLAT-M1-S04)"` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#9. Acceptance scenarios"` |
| `JNY-PFM-LLM-002` | `provenance` | `"test"` | `"observed"` |
| `JNY-PFM-LLM-002` | `source` | `"react-console:e2e/mock/hq-ai-usage.mock.spec.ts#says what it cannot show when the reads fail"` | `"react-console:components/console/hq/ai-usage/ai-usage-tiles.tsx"` |
| `AS-JNY-PFM-LLM-002-01` | `provenance` | `"test"` | `"unknown"` |
| `AS-JNY-PFM-LLM-002-01` | `source` | `"react-console:e2e/dev/hq-ai-usage.dev.spec.ts#the page, an organization's card and the request directory read Platform"` | `"FND-PFM-LLM-027"` |
| `JNY-PFM-LLM-004` | `product_intent` | `"confirmed"` | `"proposed"` |
| `ATS-PFM-LLM-019-01` | `source` | `"react-console:components/console/nav-config.ts:unlistedNav (Jazz AI)"` | `"react-console:components/console/nav-config.ts:unlistedNav"` |
| `ATS-PFM-LLM-019-07` | `source` | `"react-console:components/agent/conversation-browser.tsx (delete dialog)"` | `"react-console:components/agent/conversation-browser.tsx"` |
| `ATS-PFM-LLM-017-10` | `bound_to` | `["services-platform:modules/llm/tests/e2e/llm-adjustments-and-organization.e2e.spec.js#restricts the feature with the sentence when the organization turns it off"]` | `[]` |
| `ATS-PFM-LLM-017-10` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-017-10` | `source` | `"services-platform:modules/llm/tests/e2e/llm-adjustments-and-organization.e2e.spec.js#answers the summary to the organization’s administrator"` | `"FND-PFM-LLM-027"` |
| `ATS-PFM-LLM-012-07` | `bound_to` | `["react-console:e2e/dev/hq-ai-usage.dev.spec.ts#the page, an organization's card and the request directory read Platform","react-console:e2e/mock/hq-ai-usage.mock.spec.ts#a refused request explains itself in three blocks, and shows evidence statuses without content"]` | `[]` |
| `ATS-PFM-LLM-012-07` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-012-07` | `source` | `"react-console:e2e/dev/hq-ai-usage.dev.spec.ts#the page, an organization's card and the request directory read Platform"` | `"FND-PFM-LLM-027"` |
| `ATS-PFM-LLM-001-01` | `bound_to` | `["services-platform:modules/llm/tests/integration/services/persistence/rate-versions.integration.spec.js#answers nothing for the unpriced one, so metering refuses the call rather than guessing a price","services-platform:modules/llm/tests/unit/catalog/llm-executions.spec.ts#refuses an undeclared key, naming it"]` | `[]` |
| `ATS-PFM-LLM-001-01` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-001-01` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/rate-versions.integration.spec.js#answers nothing for the unpriced one, so metering refuses the call rather than guessing a price"` | `"services-platform:modules/llm/services/execution/run-operation.ts:runOperation"` |
| `ATS-PFM-LLM-001-02` | `bound_to` | `["services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#is the premise: the abandoned call was holding its reservation"]` | `[]` |
| `ATS-PFM-LLM-001-02` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-001-02` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#is the premise: the abandoned call was holding its reservation"` | `"services-platform:modules/llm/services/execution/run-operation.ts:runOperation"` |
| `ATS-PFM-LLM-001-04` | `level` | `"unit"` | `"api"` |
| `ATS-PFM-LLM-001-04` | `bound_to` | `["services-platform:modules/llm/tests/unit/db/invocation-transitions.spec.ts#never dispatches without reserving first, which would send a request nobody can pay for","services-platform:modules/llm/tests/unit/db/invocation-transitions.spec.ts#lets no status move to itself, which would make a compare-and-set a successful no-op"]` | `[]` |
| `ATS-PFM-LLM-001-04` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-001-04` | `source` | `"services-platform:modules/llm/tests/unit/db/invocation-transitions.spec.ts#never dispatches without reserving first, which would send a request nobody can pay for"` | `"services-platform:modules/llm/services/execution/run-operation.ts:runOperation"` |
| `ATS-PFM-LLM-001-05` | `bound_to` | `["services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#records the declared key, the attribution and the subject"]` | `[]` |
| `ATS-PFM-LLM-001-05` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-001-05` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#records the declared key, the attribution and the subject"` | `"services-platform:modules/llm/services/execution/run-operation.ts:runOperation"` |
| `ATS-PFM-LLM-001-08` | `bound_to` | `["services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#names the operation, never the provider’s own words","services-platform:modules/llm/tests/unit/services/llm-metering-errors.spec.ts#carries the invocation each was thrown for"]` | `[]` |
| `ATS-PFM-LLM-001-08` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-001-08` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#names the operation, never the provider’s own words"` | `"services-platform:modules/llm/services/execution/run-operation.ts:runOperation"` |
| `ATS-PFM-LLM-007-08` | `bound_to` | `["services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#leaves the difference available to the next call","services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#charges what was spent"]` | `[]` |
| `ATS-PFM-LLM-007-08` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-007-08` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#leaves the difference available to the next call"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `ATS-PFM-LLM-007-10` | `bound_to` | `["services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#tells each of the two administrators once when the second call passes 80 %","services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#refuses the next call, because the allowance is used","services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#never tells a person who is not an administrator"]` | `[]` |
| `ATS-PFM-LLM-007-10` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-007-10` | `source` | `"services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#tells each of the two administrators once when the second call passes 80 %"` | `"FND-PFM-LLM-027"` |
| `ATS-PFM-LLM-010-08` | `level` | `"unit"` | `"browser"` |
| `ATS-PFM-LLM-013-03` | `bound_to` | `["services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#refuses an allowance above the ceiling with 400 naming the field","services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#refuses an operation that is not declared with 400 naming it","services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#refuses a blank reason with 400","services-platform:modules/llm/tests/integration/services/limits/tenant-limits.integration.spec.js#changes nothing for an allowance above the ceiling"]` | `[]` |
| `ATS-PFM-LLM-013-03` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-013-03` | `source` | `"services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#refuses an allowance above the ceiling with 400 naming the field"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts:validateTenantLimitsInput"` |
| `ATS-PFM-LLM-014-10` | `bound_to` | `["services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#lets the ledger admit a call the base alone would refuse","services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#stops the override applying to the next call","services-platform:modules/llm/tests/e2e/llm-overrides.e2e.spec.js#audits the revocation as a non-widening action beside the grant"]` | `[]` |
| `ATS-PFM-LLM-014-10` | `provenance` | `"test"` | `"proposed"` |
| `ATS-PFM-LLM-014-10` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#lets the ledger admit a call the base alone would refuse"` | `"FND-PFM-LLM-027"` |
| `CON-PFM-LLM-002` | `source` | `"services-platform:modules/llm/catalog/pricing.ts; services/limits/tenant-limits.ts"` | `"services-platform:modules/llm/catalog/pricing.ts"` |
| `CON-PFM-LLM-005` | `source` | `"react-console:lib/queries/client.ts:interpret; app/api/agent/conversations/[id]/messages/route.ts"` | `"react-console:lib/queries/client.ts:interpret"` |
| `BR-CAP-PFM-LLM-009-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-009-01` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#settles it at its estimate, because its real cost was never learned"` | `"services-platform:modules/llm/aws/lambda/RECONCILIATION.handler.ts"` |
| `BR-CAP-PFM-LLM-009-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-009-03` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#charges the period once"` | `"services-platform:modules/llm/services/reconciliation/llm-settlement-sweep.ts"` |
| `BR-CAP-PFM-LLM-009-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-009-05` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-execution-sweep.integration.spec.js#marks it abandoned, with when the sweep found it and no duration"` | `"services-platform:modules/llm/services/reconciliation/llm-settlement-sweep.ts"` |
| `BR-CAP-PFM-LLM-009-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-009-06` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-execution-sweep.integration.spec.js#leaves the counters as they were, never correcting them"` | `"services-platform:modules/llm/services/reconciliation/llm-settlement-sweep.ts"` |
| `BR-CAP-PFM-LLM-009-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-009-07` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/llm-settlement-sweep.integration.spec.js#alerts once, because an invocation unsettled a day later is a problem time did not fix"` | `"services-platform:modules/llm/services/reconciliation/llm-settlement-sweep.ts"` |
| `BR-CAP-PFM-LLM-004-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-004-01` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#captured the request before it was sent"` | `"services-platform:modules/llm/services/execution/run-operation.ts:recordCapture"` |
| `BR-CAP-PFM-LLM-004-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-004-02` | `source` | `"services-platform:modules/llm/tests/unit/services/evidence-redaction.spec.ts#replaces an anthropic key pasted into a prompt"` | `"services-platform:modules/llm/services/evidence/evidence-redaction.ts"` |
| `BR-CAP-PFM-LLM-004-03` | `enforced_at` | `["service","database"]` | `["service"]` |
| `BR-CAP-PFM-LLM-004-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-004-03` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/invocations.integration.spec.js#records no prompt, tool input or tool output on any of them"` | `"services-platform:modules/llm/services/persistence/invocations.ts:recordInvocationAttempt"` |
| `BR-CAP-PFM-LLM-004-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-004-05` | `source` | `"services-platform:modules/llm/tests/integration/services/maintenance/tenant-participant.integration.spec.js#removes every version of the tenant’s evidence, leaving the prefix empty"` | `"services-platform:modules/llm/services/maintenance/tenant-participant.ts"` |
| `BR-CAP-PFM-LLM-020-07` | `source` | `"react-console:components/queries/query-workspace.tsx:create; openRefine"` | `"react-console:components/queries/query-workspace.tsx:openRefine"` |
| `BR-CAP-PFM-LLM-020-08` | `source` | `"react-console:components/record-explorer/record-explorer.tsx (D-27 comment)"` | `"react-console:components/record-explorer/record-explorer.tsx"` |
| `SC-CAP-PFM-LLM-020-01` | `source` | `"react-console:components/queries/query-workspace.tsx:refine; components/console/agent-chat.tsx"` | `"react-console:components/queries/query-workspace.tsx:refine"` |
| `CAP-PFM-LLM-017` | `product_intent` | `"confirmed"` | `"proposed"` |
| `BR-CAP-PFM-LLM-017-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-017-02` | `source` | `"services-platform:modules/llm/tests/integration/services/usage/organization-usage.integration.spec.js#is warned at eighty-five percent, with the band and the opening sentence"` | `"services-platform:modules/llm/services/usage/organization-usage.ts"` |
| `BR-CAP-PFM-LLM-017-02` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-2"` | `"none"` |
| `BR-CAP-PFM-LLM-017-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-017-04` | `source` | `"services-platform:modules/llm/tests/e2e/llm-adjustments-and-organization.e2e.spec.js#restricts the feature with the sentence when the organization turns it off"` | `"services-platform:modules/llm/services/usage/organization-usage.ts"` |
| `BR-CAP-PFM-LLM-017-05` | `provenance` | `"documented"` | `"observed"` |
| `BR-CAP-PFM-LLM-017-05` | `source` | `"services-platform:docs/milestones/PLAT-M3-ai-usage-organization-page.md#State found on 2026-10-19 (re-inspected)"` | `"services-platform:modules/llm/services/usage/organization-usage.ts:restrictionOf"` |
| `BR-CAP-PFM-LLM-017-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-017-06` | `source` | `"services-platform:modules/llm/tests/integration/services/usage/organization-usage.integration.spec.js#sums the period’s requests and credits by feature and groups an undeclared operation as other"` | `"services-platform:modules/llm/services/usage/organization-usage.ts"` |
| `BR-CAP-PFM-LLM-017-08` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-2"` | `"none"` |
| `BR-CAP-PFM-LLM-011-02` | `enforced_at` | `["api","service","database"]` | `["service","database"]` |
| `BR-CAP-PFM-LLM-011-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-03` | `source` | `"services-platform:modules/llm/tests/integration/services/usage-reports/tenant-usage.integration.spec.js#answers the current period against its allowance: committed, utilisation and a warned status"` | `"services-platform:modules/llm/services/usage-reports/tenant-usage.ts"` |
| `BR-CAP-PFM-LLM-011-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-04` | `source` | `"services-platform:modules/llm/tests/integration/services/usage-reports/tenant-usage.integration.spec.js#reads each recent period’s credits at the instant that decided it: now for this month, its last instant for last"` | `"services-platform:modules/llm/services/usage-reports/tenant-usage.ts"` |
| `BR-CAP-PFM-LLM-011-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-05` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers 400 for a status the invocation table does not have"` | `"services-platform:modules/llm/aws/api/llm-usage-api-mapper.ts"` |
| `BR-CAP-PFM-LLM-011-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-06` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers the capture status of a request’s bodies and never a storage key"` | `"services-platform:modules/llm/aws/api/llm-usage-api-mapper.ts"` |
| `BR-CAP-PFM-LLM-011-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-07` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers one invocation with its attempts and the refusal snapshot of a refused one"` | `"services-platform:modules/llm/aws/api/llm-usage-api-mapper.ts:toInvocationDetailResponse"` |
| `BR-CAP-PFM-LLM-011-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-08` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers one execution with the calls it made and what they cost together"` | `"services-platform:modules/llm/aws/api/llm-usage-api-mapper.ts"` |
| `BR-CAP-PFM-LLM-011-10` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-10` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers each crossing with its notice: who was told and when, or that nobody has been"` | `"services-platform:modules/llm/services/usage-reports/tenant-usage.ts"` |
| `BR-CAP-PFM-LLM-011-11` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-011-11` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#leaves out the role event that is about the same tenant, the premise being that it was written"` | `"services-platform:modules/llm/services/usage-reports/tenant-usage.ts"` |
| `BR-CAP-PFM-LLM-018-01` | `enforced_at` | `["service","console"]` | `["service"]` |
| `BR-CAP-PFM-LLM-018-06` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#11.1 Settled by inspection (Vocabulary: Andrew's standing rule)"` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#11.1 Settled by inspection (reported)"` |
| `BR-CAP-PFM-LLM-018-09` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-018-09` | `source` | `"services-platform:modules/llm/tests/unit/services/usage/usage-sentences.spec.ts#states the allowance in credits with a thousands separator and the day it resets"` | `"services-platform:modules/llm/services/notices/threshold-notice.ts"` |
| `BR-CAP-PFM-LLM-014-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-02` | `source` | `"services-platform:modules/llm/tests/e2e/llm-overrides.e2e.spec.js#is refused above the credit limit, naming the field"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-02` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-3"` | `"none"` |
| `BR-CAP-PFM-LLM-014-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-03` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#refuses a window longer than 92 days"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-03` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-3"` | `"none"` |
| `BR-CAP-PFM-LLM-014-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-04` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#refuses a ticket reference over 200 characters"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-05` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#accepts a second grant that starts when the first ends, though together they exceed what one instant may hold"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-06` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#left the override rows as they were and wrote no audit row"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-07` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#leaves the grant’s own fields as they were: an override is revoked, never edited"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-08` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#sends nothing when the organization still had room, even if asked"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-09` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-014-09` | `source` | `"services-platform:modules/llm/tests/integration/services/overrides/allowance-overrides.integration.spec.js#refuses what a grant would refuse, so a preview is no way around the rules"` | `"services-platform:modules/llm/services/overrides/allowance-overrides.ts"` |
| `BR-CAP-PFM-LLM-014-12` | `origin` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#2. Scope"` | `"none"` |
| `BR-CAP-PFM-LLM-008-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-008-01` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#tells exactly one caller it recorded the crossing"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-008-01` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-4"` | `"none"` |
| `BR-CAP-PFM-LLM-008-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-008-04` | `source` | `"services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#writes the 80 % notice with what was used and what remains, in the words of the console"` | `"services-platform:modules/llm/services/notices/threshold-notice.ts"` |
| `BR-CAP-PFM-LLM-008-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-008-05` | `source` | `"services-platform:modules/llm/tests/integration/services/notices/threshold-notice.integration.spec.js#lets exactly one of them claim and send"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-008-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-008-07` | `source` | `"services-platform:modules/llm/tests/integration/services/notices/threshold-notice.integration.spec.js#leaves the crossing unstamped with its three attempts, which is how HQ finds it"` | `"services-platform:modules/llm/services/notices/threshold-notice.ts"` |
| `BR-CAP-PFM-LLM-008-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-008-08` | `source` | `"services-platform:modules/llm/tests/integration/services/notices/threshold-notice.integration.spec.js#stamps the crossing notified with zero recipients"` | `"services-platform:modules/llm/services/notices/threshold-notice.ts"` |
| `BR-CAP-PFM-LLM-008-10` | `source` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#4. Assumptions (A10)"` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#4. Assumptions"` |
| `BR-CAP-PFM-LLM-016-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-016-01` | `source` | `"services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#refuses a staff member holding no grant into the tenant, 403"` | `"services-platform:modules/llm/services/evidence/evidence-access.ts"` |
| `BR-CAP-PFM-LLM-016-03` | `enforced_at` | `["service","database"]` | `["service"]` |
| `BR-CAP-PFM-LLM-016-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-016-03` | `source` | `"services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#writes one audit row for a read, saying who read which body of which invocation under which grant"` | `"services-platform:modules/llm/services/evidence/evidence-access.ts:readInvocationEvidence"` |
| `BR-CAP-PFM-LLM-016-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-016-04` | `source` | `"services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#answers purged when the row says captured and the bucket no longer holds the object"` | `"services-platform:modules/llm/services/evidence/evidence-access.ts"` |
| `BR-CAP-PFM-LLM-016-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-016-05` | `source` | `"services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#answers 404 for an invocation the tenant does not have, and writes no row for it"` | `"services-platform:modules/llm/services/evidence/evidence-access.ts"` |
| `BR-CAP-PFM-LLM-016-06` | `enforced_at` | `["api"]` | `["console"]` |
| `BR-CAP-PFM-LLM-016-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-016-06` | `source` | `"services-platform:modules/llm/tests/unit/aws/api/llm-usage-permissions.spec.ts#gives the HQ reader policy neither the manage key nor the evidence key"` | `"react-console:lib/hq/staff-roles.ts"` |
| `BR-CAP-PFM-LLM-016-07` | `origin` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#2. Scope"` | `"none"` |
| `BR-CAP-PFM-LLM-001-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-01` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/rate-versions.integration.spec.js#answers nothing for the unpriced one, so metering refuses the call rather than guessing a price"` | `"services-platform:modules/llm/services/catalog/catalog-authority.ts:resolveLlmOperation"` |
| `BR-CAP-PFM-LLM-001-03` | `enforced_at` | `["service","database"]` | `["service"]` |
| `BR-CAP-PFM-LLM-001-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-03` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#charges the estimate rather than nothing, because a call that happened and cost nothing is spend nobody sees"` | `"services-platform:modules/llm/services/execution/run-operation.ts:settleInvocation"` |
| `BR-CAP-PFM-LLM-001-04` | `enforced_at` | `["service","database"]` | `["service"]` |
| `BR-CAP-PFM-LLM-001-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-04` | `source` | `"services-platform:modules/llm/tests/unit/db/invocation-transitions.spec.ts#never dispatches without reserving first, which would send a request nobody can pay for"` | `"services-platform:modules/llm/services/persistence/invocations.ts:markInvocationSettled"` |
| `BR-CAP-PFM-LLM-001-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-05` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#records the declared key, the attribution and the subject"` | `"services-platform:modules/llm/services/persistence/invocations.ts:createInvocation"` |
| `BR-CAP-PFM-LLM-001-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-06` | `source` | `"services-platform:modules/llm/tests/unit/services/llm-metering-errors.spec.ts#answers 429, because it is this tenant’s limit and not a failure"` | `"services-platform:modules/llm/services/metering/llm-metering-errors.ts"` |
| `BR-CAP-PFM-LLM-001-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-001-08` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#names the operation, never the provider’s own words"` | `"services-platform:modules/llm/services/execution/run-operation.ts:providerFailure"` |
| `BR-CAP-PFM-LLM-007-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-01` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#answers a period at the default monthly allowance"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-007-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-02` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/llm-ledger-concurrency.integration.spec.js#admits exactly the fifteen the base and the override cover together"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-007-02` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-3"` | `"none"` |
| `BR-CAP-PFM-LLM-007-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-03` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/run-operation.integration.spec.js#never asked the provider, so a tenant out of credit costs nothing to refuse"` | `"services-platform:modules/llm/services/execution/run-operation.ts"` |
| `BR-CAP-PFM-LLM-007-04` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-6"` | `"none"` |
| `BR-CAP-PFM-LLM-007-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-06` | `source` | `"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/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-007-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-07` | `source` | `"services-platform:modules/llm/tests/e2e/allowance-warning.e2e.spec.js#tells both again, once, when the third call passes 100 %"` | `"services-platform:modules/llm/services/execution/run-operation.ts"` |
| `BR-CAP-PFM-LLM-007-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-08` | `source` | `"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/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-007-09` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-09` | `source` | `"services-platform:modules/llm/tests/integration/services/persistence/allowance-periods.integration.spec.js#leaves the difference available to the next call"` | `"services-platform:modules/llm/services/persistence/allowance-periods.ts"` |
| `BR-CAP-PFM-LLM-007-10` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-007-10` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#keeps a snapshot whose numbers are the period row’s at that instant"` | `"services-platform:modules/llm/services/metering/refusal-snapshot.ts"` |
| `BR-CAP-PFM-LLM-015-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-015-02` | `source` | `"services-platform:modules/llm/tests/integration/services/adjustments/adjust-allowance.integration.spec.js#refuses money pointing the other way from the credits, leaving the period as it was"` | `"services-platform:modules/llm/services/adjustments/adjust-allowance.ts:requireAdjustable"` |
| `BR-CAP-PFM-LLM-015-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-015-04` | `source` | `"services-platform:modules/llm/tests/integration/services/adjustments/adjust-allowance.integration.spec.js#refuses to give back more credits than the period has settled, leaving the period as it was"` | `"services-platform:modules/llm/services/adjustments/adjust-allowance.ts:requireAdjustable"` |
| `BR-CAP-PFM-LLM-015-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-015-05` | `source` | `"services-platform:modules/llm/tests/integration/services/adjustments/adjust-allowance.integration.spec.js#refuses a request of another organization as if it did not exist"` | `"services-platform:modules/llm/services/adjustments/adjust-allowance.ts"` |
| `BR-CAP-PFM-LLM-015-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-015-06` | `source` | `"services-platform:modules/llm/tests/integration/services/adjustments/adjust-allowance.integration.spec.js#marks the audit row widening, because credits were returned"` | `"services-platform:modules/llm/services/adjustments/adjust-allowance.ts"` |
| `BR-CAP-PFM-LLM-015-09` | `origin` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#2. Scope"` | `"none"` |
| `BR-CAP-PFM-LLM-002-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-03` | `source` | `"services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts#reports what was actually spent, which is over the limit by the turn that crossed it"` | `"services-platform:modules/llm/runtime/run-tool-loop.ts:runToolLoop"` |
| `BR-CAP-PFM-LLM-002-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-04` | `source` | `"services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts#makes no provider request at all in that case"` | `"services-platform:modules/llm/runtime/run-tool-loop.ts"` |
| `BR-CAP-PFM-LLM-002-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-05` | `source` | `"services-platform:modules/llm/tests/unit/runtime/retry-policy.spec.ts#retries a 529, which is the provider telling us it is overloaded"` | `"services-platform:modules/llm/runtime/execute-with-llm-retry.ts"` |
| `BR-CAP-PFM-LLM-002-07` | `enforced_at` | `["service","database"]` | `["service"]` |
| `BR-CAP-PFM-LLM-002-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-07` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#prices the retry from its own reported usage at the invocation’s rate version"` | `"services-platform:modules/llm/services/persistence/invocations.ts:recordInvocationAttempt"` |
| `BR-CAP-PFM-LLM-002-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-08` | `source` | `"services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts#answers them in one user message, because several would be a protocol error"` | `"services-platform:modules/llm/runtime/run-tool-loop.ts"` |
| `BR-CAP-PFM-LLM-002-10` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-10` | `source` | `"services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts#counts the rejected call against the tool-call budget, because it was answered like any other"` | `"services-platform:modules/llm/runtime/run-tool-loop.ts"` |
| `BR-CAP-PFM-LLM-002-11` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-002-11` | `source` | `"services-platform:modules/llm/tests/unit/runtime/run-tool-loop.spec.ts#ends as max_output_tokens rather than pretending the answer was complete"` | `"services-platform:modules/llm/runtime/run-tool-loop.ts"` |
| `BR-CAP-PFM-LLM-012-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-012-02` | `source` | `"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/services/explain/explain-invocation.ts"` |
| `BR-CAP-PFM-LLM-012-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-012-04` | `source` | `"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/services/explain/explain-invocation.ts"` |
| `BR-CAP-PFM-LLM-012-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-012-06` | `source` | `"services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js#lists the attempts in order with their status codes and the verdict on each"` | `"services-platform:modules/llm/services/explain/explain-invocation.ts"` |
| `BR-CAP-PFM-LLM-012-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-012-07` | `source` | `"services-platform:modules/llm/tests/integration/services/explain/explain-invocation.integration.spec.js#says which limit stopped a conversation that ran out of turns"` | `"services-platform:modules/llm/services/explain/explain-invocation.ts"` |
| `BR-CAP-PFM-LLM-012-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-012-08` | `source` | `"services-platform:modules/llm/tests/e2e/llm-adjustments-and-organization.e2e.spec.js#says 409 IllegalOperation for a request that settled without error"` | `"services-platform:modules/llm/services/explain/explain-invocation.ts"` |
| `BR-CAP-PFM-LLM-019-01` | `source` | `"react-console:components/console/nav-config.ts:unlistedNav (Jazz AI); components/console/site-header.tsx"` | `"react-console:components/console/nav-config.ts:unlistedNav"` |
| `BR-CAP-PFM-LLM-019-07` | `source` | `"react-console:lib/agent/store.ts:owned; lib/queries/store.ts:CURRENT_USER"` | `"react-console:lib/agent/store.ts:owned"` |
| `BR-CAP-PFM-LLM-019-10` | `source` | `"react-console:components/agent/conversation-browser.tsx (delete dialog)"` | `"react-console:components/agent/conversation-browser.tsx"` |
| `SC-CAP-PFM-LLM-019-01` | `source` | `"react-console:lib/agent/store.ts; components/agent/conversation-browser.tsx"` | `"react-console:lib/agent/store.ts"` |
| `BR-CAP-PFM-LLM-003-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-01` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#closes the execution failed"` | `"services-platform:modules/llm/services/execution/with-llm-execution.ts"` |
| `BR-CAP-PFM-LLM-003-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-02` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#gives a call outside a wrapper no execution"` | `"services-platform:modules/llm/services/execution/execution-scope.ts"` |
| `BR-CAP-PFM-LLM-003-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-03` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#refuses an execution inside an execution"` | `"services-platform:modules/llm/services/execution/with-llm-execution.ts"` |
| `BR-CAP-PFM-LLM-003-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-04` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#refuses a key nobody declared, before any row is written"` | `"services-platform:modules/llm/catalog/llm-executions.ts"` |
| `BR-CAP-PFM-LLM-003-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-05` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#links the refused call to its execution without counting it, since only settlements count"` | `"services-platform:modules/llm/services/persistence/invocations.ts"` |
| `BR-CAP-PFM-LLM-003-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-003-06` | `source` | `"services-platform:modules/llm/tests/integration/lifecycle/executions.integration.spec.js#runs the function once for a key, and again for another"` | `"services-platform:modules/llm/services/execution/with-llm-execution.ts"` |
| `BR-CAP-PFM-LLM-013-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-02` | `source` | `"services-platform:modules/llm/tests/integration/services/limits/tenant-limits.integration.spec.js#leaves the notes cleared, since a replacement states them"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts"` |
| `BR-CAP-PFM-LLM-013-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-03` | `source` | `"services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#refuses an allowance above the ceiling with 400 naming the field"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts"` |
| `BR-CAP-PFM-LLM-013-03` | `origin` | `"services-platform:docs/proposals/llm-observability/11-decisions.md#D-3"` | `"none"` |
| `BR-CAP-PFM-LLM-013-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-05` | `source` | `"services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#answers a replay of the write that committed with 200 and no second audit row"` | `"services-platform:modules/llm/services/persistence/limits.ts"` |
| `BR-CAP-PFM-LLM-013-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-06` | `source` | `"services-platform:modules/llm/tests/integration/services/limits/tenant-limits.integration.spec.js#leaves last month’s allowance as it was"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts"` |
| `BR-CAP-PFM-LLM-013-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-07` | `source` | `"services-platform:modules/llm/tests/integration/services/limits/tenant-limits.integration.spec.js#records switching AI on as widening"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts"` |
| `BR-CAP-PFM-LLM-013-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-013-08` | `source` | `"services-platform:modules/llm/tests/e2e/llm-limits.e2e.spec.js#previews the limits against this month without writing or auditing"` | `"services-platform:modules/llm/services/limits/tenant-limits.ts"` |
| `BR-CAP-PFM-LLM-013-11` | `origin` | `"services-platform:docs/milestones/plans/PLAT-M1-plan.md#2. Scope"` | `"none"` |
| `BR-CAP-PFM-LLM-005-01` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-005-01` | `source` | `"services-platform:modules/llm/tests/unit/catalog/pricing.spec.ts#never reserves more than the operation’s declared ceiling, which is what a tenant can lose on one call"` | `"services-platform:modules/llm/catalog/pricing.ts"` |
| `BR-CAP-PFM-LLM-005-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-005-02` | `source` | `"services-platform:modules/llm/tests/integration/services/catalog/materialize-catalog.integration.spec.js#wrote no rate version either, although every rate in the publication was valid"` | `"services-platform:modules/llm/services/catalog/materialize-catalog.ts"` |
| `BR-CAP-PFM-LLM-005-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-005-03` | `source` | `"services-platform:modules/llm/tests/integration/services/catalog/materialize-catalog.integration.spec.js#publishes no operation the second time, so an ordinary deploy leaves the histories alone"` | `"services-platform:modules/llm/services/catalog/materialize-catalog.ts"` |
| `BR-CAP-PFM-LLM-005-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-005-06` | `source` | `"services-platform:modules/llm/tests/unit/catalog/pricing.spec.ts#rounds a fractional credit up, so small calls cannot slip past an allowance"` | `"services-platform:modules/llm/catalog/pricing.ts"` |
| `BR-CAP-PFM-LLM-005-10` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-005-10` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers the catalog and the rates"` | `"services-platform:modules/llm/aws/api/llm-usage.routes.ts"` |
| `BR-CAP-PFM-LLM-006-07` | `origin` | `"services-platform:docs/llm.md#The live runs (Andrew, 2026-10-11)"` | `"none"` |
| `BR-CAP-PFM-LLM-010-02` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-02` | `source` | `"services-platform:modules/llm/tests/integration/services/usage-reports/platform-usage.integration.spec.js#answers the settled credits and cents with the window before for the delta"` | `"services-platform:modules/llm/services/usage-reports/platform-usage.ts"` |
| `BR-CAP-PFM-LLM-010-03` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-03` | `source` | `"services-platform:modules/llm/tests/unit/services/usage-reports/usage-status.spec.ts#is within again when an override raises the allowance past a crossing already recorded"` | `"services-platform:modules/llm/services/usage-reports/usage-status.ts"` |
| `BR-CAP-PFM-LLM-010-04` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-04` | `source` | `"services-platform:modules/llm/tests/unit/services/usage-reports/usage-status.spec.ts#is the committed share of the allowance to one decimal"` | `"services-platform:modules/llm/services/usage-reports/usage-status.ts"` |
| `BR-CAP-PFM-LLM-010-05` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-05` | `source` | `"services-platform:modules/llm/tests/integration/services/usage-reports/platform-usage.integration.spec.js#totals the folded series from exactly the series it folded"` | `"services-platform:modules/llm/services/usage-reports/platform-usage.ts"` |
| `BR-CAP-PFM-LLM-010-06` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-06` | `source` | `"services-platform:modules/llm/tests/integration/services/usage-reports/platform-usage.integration.spec.js#walks the cost order two at a time without repeating or skipping a tenant"` | `"services-platform:modules/llm/services/usage-reports/platform-usage.ts"` |
| `BR-CAP-PFM-LLM-010-07` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-07` | `source` | `"services-platform:modules/llm/tests/e2e/llm-usage.e2e.spec.js#answers the costliest executions across tenants, a closed one each, with the tenant named"` | `"services-platform:modules/llm/services/usage-reports/platform-usage.ts"` |
| `BR-CAP-PFM-LLM-010-08` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-08` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/rollup-settled-invocations.integration.spec.js#counts a call on the day it started even when it settled on the next"` | `"services-platform:modules/llm/services/reconciliation/rollup-settled-invocations.ts"` |
| `BR-CAP-PFM-LLM-010-09` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-09` | `source` | `"services-platform:modules/llm/tests/integration/services/reconciliation/rollup-settled-invocations.integration.spec.js#stops the watermark at the earliest change it did not finish, not at the run start"` | `"services-platform:modules/llm/services/reconciliation/rollup-settled-invocations.ts"` |
| `BR-CAP-PFM-LLM-010-11` | `enforced_at` | `["api","console"]` | `["service","console"]` |
| `BR-CAP-PFM-LLM-010-11` | `provenance` | `"test"` | `"observed"` |
| `BR-CAP-PFM-LLM-010-11` | `source` | `"react-console:e2e/mock/hq-ai-usage.mock.spec.ts#says what it cannot show when the reads fail"` | `"react-console:components/console/hq/ai-usage/ai-usage-tiles.tsx"` |

## Final-text coverage

Every existing feature, concept, capability, acceptance set and journey receives OpenAI-authored prose and human-facing row text. The shared actor descriptions, charter, identifier-register explanation, finding statements and product recommendations receive the same pass. Existing technical labels, source citations and authoritative metadata are retained except for the verification changes recorded above.

| Artifact series | Final-text artifacts |
|---|---|
| FEAT | `FEAT-PFM-LLM-01`, `FEAT-PFM-LLM-02`, `FEAT-PFM-LLM-03`, `FEAT-PFM-LLM-04`, `FEAT-PFM-LLM-05`, `FEAT-PFM-LLM-06`, `FEAT-PFM-LLM-07` |
| CON | `CON-PFM-LLM-001`, `CON-PFM-LLM-002`, `CON-PFM-LLM-003`, `CON-PFM-LLM-004`, `CON-PFM-LLM-005` |
| CAP | `CAP-PFM-LLM-001`, `CAP-PFM-LLM-002`, `CAP-PFM-LLM-003`, `CAP-PFM-LLM-004`, `CAP-PFM-LLM-005`, `CAP-PFM-LLM-006`, `CAP-PFM-LLM-007`, `CAP-PFM-LLM-008`, `CAP-PFM-LLM-009`, `CAP-PFM-LLM-010`, `CAP-PFM-LLM-011`, `CAP-PFM-LLM-012`, `CAP-PFM-LLM-013`, `CAP-PFM-LLM-014`, `CAP-PFM-LLM-015`, `CAP-PFM-LLM-016`, `CAP-PFM-LLM-017`, `CAP-PFM-LLM-018`, `CAP-PFM-LLM-019`, `CAP-PFM-LLM-020` |
| ATS | `ATS-PFM-LLM-001`, `ATS-PFM-LLM-002`, `ATS-PFM-LLM-003`, `ATS-PFM-LLM-004`, `ATS-PFM-LLM-005`, `ATS-PFM-LLM-006`, `ATS-PFM-LLM-007`, `ATS-PFM-LLM-008`, `ATS-PFM-LLM-009`, `ATS-PFM-LLM-010`, `ATS-PFM-LLM-011`, `ATS-PFM-LLM-012`, `ATS-PFM-LLM-013`, `ATS-PFM-LLM-014`, `ATS-PFM-LLM-015`, `ATS-PFM-LLM-016`, `ATS-PFM-LLM-017`, `ATS-PFM-LLM-018`, `ATS-PFM-LLM-019`, `ATS-PFM-LLM-020` |
| JNY | `JNY-PFM-LLM-001`, `JNY-PFM-LLM-002`, `JNY-PFM-LLM-003`, `JNY-PFM-LLM-004`, `JNY-PFM-LLM-005` |

Recommendations explicitly describe what the product should do. Concept bodies retain six sections and remain within the required word range. No capability or concept is superseded because no grain correction requires a merge or split.

## Disagreements left open

No implementation observation resolves product authority. All retained findings remain available for Andrew’s review; this examination corrects the specification rather than silently approving or repairing source-product behavior.

| Finding | Open issue |
|---|---|
| `FND-PFM-LLM-001` | The console calls a model directly for general Jazz AI replies. Those replies bypass Platform admission, metering, evidence capture and feature switches. They send conversation text and the configured workspace name through a provider path not covered by the Platform boundary or recorded provider assessment. |
| `FND-PFM-LLM-002` | The prototype stores conversations and projects in process memory with sample data and a fixed owner. It has no person or workspace partition, shares records within a server instance and loses them on restart. |
| `FND-PFM-LLM-003` | Admission requires room for the request’s maximum reservation, while summaries and notices use different charged or committed figures. A positive remaining balance can therefore coexist with a refusal and no pause notice. The exhaustion decision remains open. |
| `FND-PFM-LLM-004` | Feature availability does not account for active operation exemptions. A feature can appear disabled while exempted requests pass admission. |
| `FND-PFM-LLM-005` | Repeating a grant or correction creates another independently audited record. The reported proposal calls for idempotent HQ writes, and correction idempotency remains recorded debt. Limit updates use version checks rather than creating duplicate grants. |
| `FND-PFM-LLM-006` | The service implements limit changes, grants, revocation, corrections and evidence reads. Their console controls remain disabled or absent, and the control milestone remains proposed. |
| `FND-PFM-LLM-007` | The customer AI Usage dashboard and its navigation entry are absent. The recorded placement decision exists, while the summary, availability and reporting services already supply its underlying data. |
| `FND-PFM-LLM-008` | Corrections and allowance reductions can cross usage thresholds without creating notices. The plan treats this behavior as an unapproved assumption. |
| `FND-PFM-LLM-009` | The early-warning milestone is incomplete. Usage signals remain unavailable, the outage refusal is unused, and declared spike and raw-retention settings have no implementation. Request history has no implemented monthly partition or retention cleanup. |
| `FND-PFM-LLM-010` | Source guides and comments lag implementation. They describe implemented routes as deferred, understate permission and concurrency enforcement, and give query budgets and grant ceilings that differ from current declarations. |
| `FND-PFM-LLM-011` | The runtime distinguishes provider account exhaustion, but the shared server-error response omits that classification. The recorded debt prevents clients from reliably using the code. |
| `FND-PFM-LLM-012` | AI notices currently target the built-in Administrator role. The later direction for responsibility-based operational notifications has not been implemented here; the interim recipient decision remains pending. |
| `FND-PFM-LLM-013` | The records do not establish complete customer acceptance. The plan awaits approval, HQ browser tests use mocks or rendering checks, real-inbox delivery is not demonstrated, and evidence access lacks an HTTP end-to-end test. |
| `FND-PFM-LLM-014` | The outbound-model compliance exception remains open. The records do not establish provider subprocessor status, retention or training treatment, despite the separate decision governing Rhythm’s captured evidence. |
| `FND-PFM-LLM-015` | The directory assistant uses fixed client-side interpretation rather than a model. Its replies identify the behavior as a prototype. |
| `FND-PFM-LLM-016` | The original module registry omitted specific records and several console source surfaces. The examined registry now names the sources needed for this module’s documented scope. |
| `FND-PFM-LLM-017` | Usage reporting groups UTC dates while allowance periods follow the organization’s calendar. Month-boundary differences remain an unapproved reporting assumption. |
| `FND-PFM-LLM-018` | A failed restoration notice is logged and counted but is not retried or retained as delivery history available to HQ. Threshold notices have a different recovery path. |
| `FND-PFM-LLM-019` | The console exposes Jazz AI entry points without an AI-specific permission check or organization AI-switch evaluation. Product access policy remains unresolved. |
| `FND-PFM-LLM-020` | The request boundary stores caller-supplied person attribution without checking that the caller represents that person. |
| `FND-PFM-LLM-021` | The implementation contains unapproved plan assumptions: the default allowance and local month, maximum reservations, admitted-request overshoot, customer wording and UTC reporting days. Observed behavior does not approve these choices. |
| `FND-PFM-LLM-022` | The reconciliation guide describes charging reported attempt usage, but the recovery implementation and tests use the operation estimate with unknown money cost. |
| `FND-PFM-LLM-023` | The foundation record approves a work plan while identifying configuration choices as reversible author decisions. Later planning still lists those behaviors as unapproved assumptions. Earlier budgets also differ from the current catalog, so work-plan approval does not confirm current settings. |
| `FND-PFM-LLM-024` | The runtime takes allowance credits and writes request-capture metadata before entering its cleanup block. A failed reservation-status write, capture-metadata write or dispatch-status write can leave credits held until recovery, and a failure before the request records its hold leaves recovery without that held amount. |
| `FND-PFM-LLM-025` | The runtime and recovery sweep mark a request settled before updating its allowance period in a separate transaction. Outside a caller-supplied encompassing transaction, an interruption between these writes leaves a terminal request with a held or uncharged allowance balance; the sweep excludes terminal requests. Fault-injection proof remains needed. |
| `FND-PFM-LLM-026` | An accepted final answer returns before the tool and credit guards. The credit guard uses greater-than and rounded turn costs, not greater-than-or-equal or the eventual once-rounded charge; tool handlers and answer validation have no enforced wall-clock timeout. These bounds need an explicit product interpretation and focused acceptance proof. |
| `FND-PFM-LLM-027` | Some draft acceptance bindings prove individual backend results or mock rendering rather than the complete journey or broader expected result. Complete-journey bindings are removed; the remaining focused tests are useful evidence but do not establish customer acceptance. |
| `FND-PFM-LLM-028` | Content reads audit missing-grant refusals and successful responses, but permission and input rejections, store errors and malformed stored content can fail without a content-read audit entry. Missing-request reads with a valid grant also intentionally leave no entry. The product should define the required audit boundary before content-reading controls ship. |
| `FND-PFM-LLM-029` | Allowance refunds and charge additions are limited to ten million credits in either direction. A negative correction to a current month with no period bypasses the service refund check; persistence creates the period and clamps its balance to zero while retaining the negative correction. The product should require a matching charged balance for this path. |
| `FND-PFM-LLM-030` | The draft operations denominator omits ten console conversation API operations, and its integration test total exceeds the forty-two specification files actually present. The registry also omits several cited console helpers and source records. The examination expands the declared read scope and distinguishes code inventory coverage from tested behavior. |
| `FND-PFM-LLM-031` | Threshold email delivery precedes the completion stamp. An interruption after send can leave the claim retryable and send the same notice again after the lease expires. The product should choose and verify the delivery guarantee rather than infer exactly-once delivery from the racing-sender test. |

The three product questions cover allowance exhaustion, interim notice recipients and the customer boundary for Jazz AI. The registry and denominator inconsistencies are corrected in this corpus, but their findings retain the original examination trace.

## Validation

The required dependency installation, corpus check and test command pass. The corpus check reports zero errors, and all four checker tests pass. These results validate documentation conformance and checker behavior; they do not validate source-product runtime recovery or customer acceptance. No source repository, workflow or deployment is changed.

## Verdict for Andrew

The examined layer is a sourced description of the module at the pinned commits, with implementation gaps and unknown cross-screen agreement stated explicitly rather than presented as approved outcomes. Its weakest areas are prototype isolation and metering, failure-boundary recovery, and complete customer acceptance across browser screens and real email. Before design starts, the product should decide exhaustion, notice recipients and the Jazz AI release boundary, then prioritize fault-injection and complete journey proof for the identified gaps.
