diff --git a/.changeset/read-only-codegen-drift.md b/.changeset/read-only-codegen-drift.md new file mode 100644 index 000000000..04f3ca536 --- /dev/null +++ b/.changeset/read-only-codegen-drift.md @@ -0,0 +1,8 @@ +--- +"@croco/openapi-spec": patch +"@croco/problems-core": patch +"@croco/rpc-codegen": patch +"create-croco-app": patch +--- + +Detect stale committed OpenAPI and RPC outputs without rewriting them, make generated app contract verification use the read-only checks, and scaffold Next.js applications with the patched 15.5.21 release. diff --git a/docs/problem-code-registry.json b/docs/problem-code-registry.json index af4af734d..85eb98653 100644 --- a/docs/problem-code-registry.json +++ b/docs/problem-code-registry.json @@ -9566,7 +9566,7 @@ "sources": [ { "file": "packages/rpc-codegen/src/libs/generate.ts", - "line": 105, + "line": 110, "column": 5, "kind": "problem-constructor" } @@ -9626,7 +9626,7 @@ "sources": [ { "file": "packages/rpc-codegen/src/libs/generate.ts", - "line": 111, + "line": 116, "column": 5, "kind": "problem-constructor" } diff --git a/packages/create-croco-app/src/tests/e2e-generation.spec.ts b/packages/create-croco-app/src/tests/e2e-generation.spec.ts index ef88f2772..17b20e28e 100644 --- a/packages/create-croco-app/src/tests/e2e-generation.spec.ts +++ b/packages/create-croco-app/src/tests/e2e-generation.spec.ts @@ -2252,7 +2252,7 @@ describe("E2E: generate()", () => { build: "turbo build", test: "turbo test", "contract:verify": - "pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter @test/provider-rpc typecheck", + "pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check && pnpm --filter @test/provider-rpc typecheck", "di:graph": "pnpm --filter @test/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", "di:assert": "node scripts/assert-di-graph.mjs .croco/build/di-graph.manifest.json", @@ -2265,6 +2265,11 @@ describe("E2E: generate()", () => { }); expect(rootPackageJson.scripts?.["contract:client"]).toContain("--strict-schemas"); expect(rootPackageJson.scripts?.["contract:openapi"]).toContain("--strict-schemas"); + expect(rootPackageJson.scripts?.["contract:client:check"]).toContain("--output-check"); + expect(rootPackageJson.scripts?.["contract:openapi:check"]).toContain("--output-check"); + expect(rootPackageJson.scripts?.codegen).toBe( + "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", + ); expect(manifest).toMatchObject({ schemaVersion: 1, projectName: "my-saas-api", diff --git a/packages/create-croco-app/src/tests/templates-build.spec.ts b/packages/create-croco-app/src/tests/templates-build.spec.ts index 8acc854fd..4c806d51b 100644 --- a/packages/create-croco-app/src/tests/templates-build.spec.ts +++ b/packages/create-croco-app/src/tests/templates-build.spec.ts @@ -171,7 +171,7 @@ function checkSpaBeSplitStructure() { /^croco project map[\s\S]*--check --manifest croco\.project-map\.json --manifest-bundle \.croco\/manifest$/, ), "contract:verify": expect.stringMatching( - /^pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter \{\{scope\}\}\/provider-rpc typecheck$/, + /^pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check$/, ), "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", @@ -187,7 +187,11 @@ function checkSpaBeSplitStructure() { "contract:client": expect.stringMatching( /^pnpm contract:check &&[\s\S]*croco-rpc-codegen[\s\S]*--strict-schemas[\s\S]*--problem-runtime frontend-problems --manifest-bundle \.croco\/manifest[\s\S]*provider-rpc typecheck$/, ), - codegen: expect.any(String), + "contract:openapi:check": expect.stringMatching(/croco-openapi-spec[\s\S]*--output-check$/), + "contract:client:check": expect.stringMatching( + /croco-rpc-codegen[\s\S]*--output-check[\s\S]*provider-rpc typecheck$/, + ), + codegen: "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", lint: "biome lint .", test: "turbo test", }), @@ -321,7 +325,7 @@ function checkAdminConsoleStructure() { /croco project map[\s\S]*--check[\s\S]*--manifest-bundle \.croco\/manifest/, ), "contract:verify": expect.stringMatching( - /contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check/, + /contract:diff[\s\S]*contract:openapi:check && pnpm contract:client:check/, ), "di:graph": "pnpm --filter {{scope}}/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", @@ -333,6 +337,9 @@ function checkAdminConsoleStructure() { "contract:client": expect.stringMatching( /admin\.ts,users\.ts,problems\.ts[\s\S]*--strict-schemas[\s\S]*--problem-runtime frontend-problems --manifest-bundle \.croco\/manifest/, ), + "contract:openapi:check": expect.stringMatching(/croco-openapi-spec[\s\S]*--output-check$/), + "contract:client:check": expect.stringMatching(/croco-rpc-codegen[\s\S]*--output-check/), + codegen: "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", typecheck: "pnpm contract:client && turbo typecheck", build: "pnpm contract:client && turbo build", }), @@ -549,7 +556,7 @@ function checkSaasStructure() { expect(rootPackageJson).toMatchObject({ scripts: expect.objectContaining({ "contract:check": expect.stringMatching( - /^pnpm contract:client && pnpm --filter \{\{scope\}\}\/provider-rpc typecheck$/, + /^croco-rpc-codegen[\s\S]*--check[\s\S]*--strict-schemas[\s\S]*--fail-on-diagnostics$/, ), "contract:snapshot": expect.stringMatching( /^croco contracts check[\s\S]*--strict-schemas[\s\S]*--json --out contract-graph\.snapshot\.json$/, @@ -567,7 +574,7 @@ function checkSaasStructure() { /^croco project map[\s\S]*--runtime-policy croco-runtime-policy\.manifest\.json[\s\S]*--provider-profile croco-saas-profile\.manifest\.json[\s\S]*--check --manifest croco\.project-map\.json --manifest-bundle \.croco\/manifest$/, ), "contract:verify": expect.stringMatching( - /^pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter \{\{scope\}\}\/provider-rpc typecheck$/, + /^pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check && pnpm --filter \{\{scope\}\}\/provider-rpc typecheck$/, ), "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", @@ -583,6 +590,9 @@ function checkSaasStructure() { "contract:openapi": expect.stringMatching( /^pnpm contract:check && croco-openapi-spec[\s\S]*--strict-schemas[\s\S]*--out openapi\.json[\s\S]*--manifest-bundle \.croco\/manifest$/, ), + "contract:openapi:check": expect.stringMatching(/croco-openapi-spec[\s\S]*--output-check$/), + "contract:client:check": expect.stringMatching(/^croco-rpc-codegen[\s\S]*--output-check$/), + codegen: "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", "demo:seed": expect.any(String), "profile:check": "pnpm --filter {{scope}}/api-server profile:check", "architecture-policy:check": "croco architecture-policy check --manifest croco.arch.json", @@ -875,7 +885,7 @@ function checkAiSaasStructure() { /^croco project map[\s\S]*--check --manifest croco\.project-map\.json --manifest-bundle \.croco\/manifest$/, ), "contract:verify": expect.stringMatching( - /^pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check/, + /^pnpm contract:diff[\s\S]*contract:openapi:check && pnpm contract:client:check/, ), "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", @@ -888,6 +898,9 @@ function checkAiSaasStructure() { "contract:openapi": expect.stringMatching( /--strict-schemas[\s\S]*AI SaaS API[\s\S]*--manifest-bundle \.croco\/manifest$/, ), + "contract:openapi:check": expect.stringMatching(/croco-openapi-spec[\s\S]*--output-check$/), + "contract:client:check": expect.stringMatching(/^croco-rpc-codegen[\s\S]*--output-check$/), + codegen: "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", }), }); expect(Object.values(rootPackageJson.scripts ?? {})).not.toEqual( diff --git a/packages/create-croco-app/templates/admin-console/README.md.hbs b/packages/create-croco-app/templates/admin-console/README.md.hbs index 37c2827e8..1c48750a6 100644 --- a/packages/create-croco-app/templates/admin-console/README.md.hbs +++ b/packages/create-croco-app/templates/admin-console/README.md.hbs @@ -30,7 +30,7 @@ pnpm dev:web - API unavailable: resource table과 timeline은 마지막 성공 상태를 유지하고 상단 alert에 네트워크 실패를 표시합니다. - Missing user: generated `getUserResult` client가 declared Problem branch를 반환하며 UI는 `admin-console/user-not-found` code와 recovery action을 표시합니다. -- Contract drift: `pnpm contract:verify`가 snapshot diff, consumer coverage report, Project Map manifest bundle, OpenAPI generation, generated client typecheck를 순서대로 실행합니다. +- Contract drift: `pnpm contract:verify`가 snapshot diff, canonical graph, Project Map manifest bundle, OpenAPI/client output drift, generated client typecheck를 쓰기 없이 검사합니다. 의도한 출력 변경은 `pnpm codegen`으로 반영합니다. - DI graph drift: 의도적으로 갱신할 때 `pnpm di:graph`를 실행합니다. `pnpm di:verify`는 기존 `.croco/build/di-graph.manifest.json`과 Project Map 산출물을 변경하지 않은 채 검사하고 `croco doctor --json`을 실행합니다. ## Contract Commands @@ -43,7 +43,7 @@ pnpm codegen `contract:client`는 admin controller 계약에서 React Query hook을 포함한 fetch client를 생성합니다. Admin web은 `{{scope}}/provider-rpc`의 `adminClient`와 generated output types를 직접 사용하므로 `typecheck`와 `build`는 codegen을 먼저 실행합니다. `contract:coverage`는 같은 controller 계약에서 `contract-graph.coverage.json`을 써서 OpenAPI/RPC consumer coverage diagnostics를 남깁니다. -`contract:verify`는 `project-map:write`와 `project-map:check`를 실행해 `.croco/manifest` inspectable bundle을 갱신하고 검증합니다. Generated OpenAPI/RPC outputs는 같은 bundle 경로를 source reference로 남깁니다. +`codegen`은 Project Map과 `.croco/manifest` inspectable bundle을 갱신한 뒤 OpenAPI/RPC outputs를 생성합니다. `contract:verify`는 이 산출물들을 다시 쓰지 않고 검사합니다. Generated OpenAPI/RPC commands run strict ContractGraph schema checks by default and pass `--fail-on-diagnostics`, so strict Problem contract diagnostics block generated artifacts. `--compatibility-schemas` and `--compatibility-problems` are migration-only opt-outs for legacy routes, not generated app CI settings. ## Structure diff --git a/packages/create-croco-app/templates/admin-console/package.json.hbs b/packages/create-croco-app/templates/admin-console/package.json.hbs index 4d9ccce83..feda86f45 100644 --- a/packages/create-croco-app/templates/admin-console/package.json.hbs +++ b/packages/create-croco-app/templates/admin-console/package.json.hbs @@ -14,7 +14,7 @@ "contract:coverage": "croco contracts check --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --strict-schemas --json --out contract-graph.coverage.json", "project-map:write": "croco project map --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --out croco.project-map.json --manifest-bundle .croco/manifest", "project-map:check": "croco project map --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --check --manifest croco.project-map.json --manifest-bundle .croco/manifest", - "contract:verify": "pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:verify": "pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check", "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", @@ -22,8 +22,10 @@ "doctor": "croco doctor --json", "di:verify": "pnpm di:check && pnpm di:assert && pnpm project-map:check && pnpm doctor", "contract:openapi": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} Admin Console API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest", + "contract:openapi:check": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} Admin Console API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest --output-check", "contract:client": "pnpm contract:check && croco-rpc-codegen --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --react-query --problem-runtime frontend-problems --manifest-bundle .croco/manifest && pnpm --filter {{scope}}/provider-rpc typecheck", - "codegen": "pnpm contract:client", + "contract:client:check": "pnpm contract:check && croco-rpc-codegen --controllers \"apps/api-server/src/{controllers/**/*.ts,admin.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --react-query --problem-runtime frontend-problems --manifest-bundle .croco/manifest --output-check && pnpm --filter {{scope}}/provider-rpc typecheck", + "codegen": "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", "build": "pnpm contract:client && turbo build", "lint": "biome lint .", "test": "turbo test", diff --git a/packages/create-croco-app/templates/ai-saas/README.md.hbs b/packages/create-croco-app/templates/ai-saas/README.md.hbs index c35eb5996..f9626ec5e 100644 --- a/packages/create-croco-app/templates/ai-saas/README.md.hbs +++ b/packages/create-croco-app/templates/ai-saas/README.md.hbs @@ -86,7 +86,7 @@ pnpm demo:smoke `pnpm demo:smoke` runs the base SaaS demo, operational smoke checks, and the AI SaaS smoke flow. `pnpm ai:smoke` runs only the AI portion. -Intentional API contract changes should update and commit `contract-graph.snapshot.json` with `pnpm contract:snapshot`. CI should run `pnpm contract:verify` or `pnpm ci:contracts`; it does not rewrite the snapshot before diffing, writes `contract-graph.coverage.json`, regenerates and checks `.croco/manifest`, then regenerates `openapi.json` and `libs/shared/provider-rpc/src` from the accepted controller contract. The manifest bundle is referenced by generated OpenAPI and RPC outputs. Commit `contract-graph.coverage.json` only when audit artifacts need it. Commit `openapi.json` only when external consumers or deployment artifacts need it; the provider-rpc client is generated from the server contract and is typechecked by the verification gate. +Intentional API contract changes should update `contract-graph.snapshot.json` with `pnpm contract:snapshot`, then update and commit the Project Map, manifest bundle, `openapi.json`, and provider-rpc client with `pnpm codegen`. CI should run `pnpm contract:verify` or `pnpm ci:contracts`; it checks these committed artifacts without rewriting them. Commit `contract-graph.coverage.json` only when audit artifacts need it. Run `pnpm di:graph` when intentionally regenerating the DI graph. `pnpm di:verify` validates the existing DI graph and Project Map artifacts without rewriting them, asserts required manifest fields, and runs `croco doctor --json`. Generated OpenAPI/RPC commands run strict ContractGraph schema checks by default and pass `--fail-on-diagnostics`, so strict Problem contract diagnostics block generated artifacts. `--compatibility-schemas` and `--compatibility-problems` are migration-only opt-outs for legacy routes, not generated app CI settings. diff --git a/packages/create-croco-app/templates/ai-saas/package.json.hbs b/packages/create-croco-app/templates/ai-saas/package.json.hbs index d5ee79208..a1f8d5111 100644 --- a/packages/create-croco-app/templates/ai-saas/package.json.hbs +++ b/packages/create-croco-app/templates/ai-saas/package.json.hbs @@ -4,13 +4,13 @@ "packageManager": "pnpm@11.9.0", "scripts": { "dev:api": "pnpm --filter {{scope}}/api-server dev", - "contract:check": "pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:check": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --check --strict-schemas --fail-on-diagnostics", "contract:snapshot": "croco contracts check --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --json --out contract-graph.snapshot.json", "contract:diff": "croco contracts diff --baseline contract-graph.snapshot.json --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas", "contract:coverage": "croco contracts check --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --json --out contract-graph.coverage.json", "project-map:write": "croco project map --controllers \"apps/api-server/src/controllers/**/*.ts\" --out croco.project-map.json --manifest-bundle .croco/manifest", "project-map:check": "croco project map --controllers \"apps/api-server/src/controllers/**/*.ts\" --check --manifest croco.project-map.json --manifest-bundle .croco/manifest", - "contract:verify": "pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:verify": "pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check && pnpm --filter {{scope}}/provider-rpc typecheck", "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", @@ -18,8 +18,10 @@ "doctor": "croco doctor --json", "di:verify": "pnpm di:check && pnpm di:assert && pnpm project-map:check && pnpm doctor", "contract:openapi": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} AI SaaS API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest", + "contract:openapi:check": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} AI SaaS API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest --output-check", "contract:client": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --manifest-bundle .croco/manifest", - "codegen": "pnpm contract:client", + "contract:client:check": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --manifest-bundle .croco/manifest --output-check", + "codegen": "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", "demo:seed": "pnpm --filter {{scope}}/api-server demo:seed", "demo:smoke": "pnpm contract:check && pnpm --filter {{scope}}/api-server demo:smoke && pnpm --filter {{scope}}/api-server ops:smoke && pnpm --filter {{scope}}/api-server ai:smoke", "ops:smoke": "pnpm --filter {{scope}}/api-server ops:smoke", diff --git a/packages/create-croco-app/templates/saas/README.md.hbs b/packages/create-croco-app/templates/saas/README.md.hbs index c92317b6c..5f7e42d25 100644 --- a/packages/create-croco-app/templates/saas/README.md.hbs +++ b/packages/create-croco-app/templates/saas/README.md.hbs @@ -68,7 +68,7 @@ pnpm contract:check pnpm contract:verify ``` -컨트롤러 계약은 `apps/api-server/src/controllers/**/*.ts`에서 생성됩니다. 의도적인 계약 변경은 `contract:snapshot`으로 `contract-graph.snapshot.json`을 갱신한 뒤 커밋합니다. CI에서는 snapshot을 다시 쓰지 않는 `contract:verify` 또는 `ci:contracts`를 실행해 커밋된 스냅샷과 현재 컨트롤러 계약의 breaking drift를 먼저 비교하고, `contract-graph.coverage.json`과 `.croco/manifest` bundle을 쓴 뒤, 통과한 계약에서 `openapi.json`과 `libs/shared/provider-rpc/src` fetch client를 재생성합니다. +컨트롤러 계약은 `apps/api-server/src/controllers/**/*.ts`에서 생성됩니다. 의도적인 계약 변경은 `contract:snapshot`으로 `contract-graph.snapshot.json`을 갱신하고 `codegen`으로 Project Map, `.croco/manifest`, `openapi.json`, `libs/shared/provider-rpc/src` fetch client를 갱신한 뒤 커밋합니다. CI에서는 `contract:verify` 또는 `ci:contracts`를 실행해 이 계약 산출물들의 drift를 쓰기 없이 검사합니다. Generated OpenAPI/RPC commands run strict ContractGraph schema checks by default and pass `--fail-on-diagnostics`, so strict Problem contract diagnostics block generated artifacts. `--compatibility-schemas` and `--compatibility-problems` are migration-only opt-outs for legacy routes, not generated app CI settings. @@ -76,10 +76,10 @@ Artifact 책임은 다음과 같습니다. - `contract-graph.snapshot.json`: breaking change 기준선이므로 커밋합니다. - `contract-graph.coverage.json`: OpenAPI/RPC consumer coverage report입니다. CI/build에서 재생성하거나 감사용 산출물이 필요할 때 커밋합니다. -- `.croco/manifest`: Project Map에서 파생된 inspectable manifest bundle입니다. `contract:verify`가 생성 후 drift를 확인하며, `openapi.json`과 generated RPC client는 같은 bundle 경로를 source reference로 남깁니다. +- `.croco/manifest`: Project Map에서 파생된 inspectable manifest bundle입니다. `codegen`으로 갱신해 커밋하며, `contract:verify`는 drift만 검사합니다. - `.croco/build/di-graph.manifest.json`: API bootstrap에서 생성한 DI graph manifest입니다. 의도적으로 갱신할 때 `pnpm di:graph`를 실행하고, `pnpm di:verify`는 기존 DI graph와 Project Map 산출물을 변경하지 않은 채 검사합니다. -- `openapi.json`: 외부 소비자나 배포 산출물이 필요하면 커밋하고, 아니면 CI/build에서 재생성합니다. -- `libs/shared/provider-rpc/src`: 앱 내부 generated client 산출물입니다. 커밋 여부와 무관하게 `contract:verify`가 현재 서버 계약에서 다시 생성하고 typecheck합니다. +- `openapi.json`: `contract:verify`의 drift 기준이므로 `codegen`으로 갱신해 커밋합니다. +- `libs/shared/provider-rpc/src`: 앱 내부 generated client 산출물입니다. `codegen`이 생성하며 `contract:verify`는 현재 서버 계약과의 drift를 쓰기 없이 검사하고 typecheck합니다. ## Demo Endpoint Safety diff --git a/packages/create-croco-app/templates/saas/package.json.hbs b/packages/create-croco-app/templates/saas/package.json.hbs index a7e2de261..4a89980da 100644 --- a/packages/create-croco-app/templates/saas/package.json.hbs +++ b/packages/create-croco-app/templates/saas/package.json.hbs @@ -4,13 +4,13 @@ "packageManager": "pnpm@11.9.0", "scripts": { "dev:api": "pnpm --filter {{scope}}/api-server dev", - "contract:check": "pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:check": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --check --strict-schemas --fail-on-diagnostics", "contract:snapshot": "croco contracts check --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --json --out contract-graph.snapshot.json", "contract:diff": "croco contracts diff --baseline contract-graph.snapshot.json --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas", "contract:coverage": "croco contracts check --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --json --out contract-graph.coverage.json", "project-map:write": "croco project map --controllers \"apps/api-server/src/controllers/**/*.ts\" --runtime-policy croco-runtime-policy.manifest.json --provider-profile croco-saas-profile.manifest.json --out croco.project-map.json --manifest-bundle .croco/manifest", "project-map:check": "croco project map --controllers \"apps/api-server/src/controllers/**/*.ts\" --runtime-policy croco-runtime-policy.manifest.json --provider-profile croco-saas-profile.manifest.json --check --manifest croco.project-map.json --manifest-bundle .croco/manifest", - "contract:verify": "pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:verify": "pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check && pnpm --filter {{scope}}/provider-rpc typecheck", "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", @@ -18,8 +18,10 @@ "doctor": "croco doctor --json", "di:verify": "pnpm di:check && pnpm di:assert && pnpm project-map:check && pnpm doctor", "contract:openapi": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} SaaS API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest", + "contract:openapi:check": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} SaaS API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest --output-check", "contract:client": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --manifest-bundle .croco/manifest", - "codegen": "pnpm contract:client", + "contract:client:check": "croco-rpc-codegen --controllers \"apps/api-server/src/controllers/**/*.ts\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --manifest-bundle .croco/manifest --output-check", + "codegen": "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", "profile:check": "pnpm --filter {{scope}}/api-server profile:check", "architecture-policy:check": "croco architecture-policy check --manifest croco.arch.json", "runtime-policy:check": "croco runtime-policy check --manifest croco-runtime-policy.manifest.json", diff --git a/packages/create-croco-app/templates/spa-be-split/README.md.hbs b/packages/create-croco-app/templates/spa-be-split/README.md.hbs index f2076b90c..db510d706 100644 --- a/packages/create-croco-app/templates/spa-be-split/README.md.hbs +++ b/packages/create-croco-app/templates/spa-be-split/README.md.hbs @@ -44,7 +44,7 @@ pnpm contract:verify pnpm codegen ``` -`contract:check`는 생성 전에 canonical contract graph 진단을 실행합니다. 의도적인 계약 변경은 `contract:snapshot`으로 `contract-graph.snapshot.json`을 갱신한 뒤 커밋합니다. CI에서는 snapshot을 다시 쓰지 않는 `contract:verify` 또는 `ci:contracts`를 실행해 커밋된 스냅샷과 현재 컨트롤러 계약의 breaking drift를 먼저 비교하고, `contract-graph.coverage.json`과 `.croco/manifest` bundle을 쓴 뒤, 통과한 계약에서 `openapi.json`과 React Query hook을 포함한 fetch 클라이언트를 생성합니다. +`contract:check`는 생성 전에 canonical contract graph 진단을 실행합니다. 의도적인 계약 변경은 `contract:snapshot`으로 `contract-graph.snapshot.json`을 갱신하고 `codegen`으로 `openapi.json`과 React Query hook을 포함한 fetch 클라이언트를 갱신한 뒤 커밋합니다. CI에서는 snapshot과 generated output을 다시 쓰지 않는 `contract:verify` 또는 `ci:contracts`를 실행해 breaking drift와 output drift를 검사합니다. 생성된 OpenAPI/RPC 명령은 기본적으로 엄격한 ContractGraph 스키마 검사를 실행하고 `--fail-on-diagnostics`를 전달하므로, 엄격 모드의 Problem 계약 진단이 있으면 산출물 생성이 실패합니다. `--compatibility-schemas`와 `--compatibility-problems`는 레거시 라우트 마이그레이션 전용 opt-out이며 generated app CI 설정으로 사용하지 않습니다. @@ -52,12 +52,12 @@ Artifact 책임은 다음과 같습니다. - `contract-graph.snapshot.json`: breaking change 기준선이므로 커밋합니다. - `contract-graph.coverage.json`: OpenAPI/RPC consumer coverage report입니다. CI/build에서 재생성하거나 감사용 산출물이 필요할 때 커밋합니다. -- `.croco/manifest`: Project Map에서 파생된 inspectable manifest bundle입니다. `contract:verify`가 생성 후 drift를 확인하며, `openapi.json`과 generated RPC client는 같은 bundle 경로를 source reference로 남깁니다. +- `.croco/manifest`: Project Map에서 파생된 inspectable manifest bundle입니다. `codegen`으로 갱신해 커밋하며, `contract:verify`는 drift만 검사합니다. - `.croco/build/di-graph.manifest.json`: API bootstrap에서 생성한 DI graph manifest입니다. 의도적으로 갱신할 때 `pnpm di:graph`를 실행하고, `pnpm di:verify`는 기존 DI graph와 Project Map 산출물을 변경하지 않은 채 검사합니다. -- `openapi.json`: 외부 소비자나 배포 산출물이 필요하면 커밋하고, 아니면 CI/build에서 재생성합니다. -- `libs/shared/provider-rpc/src`: 웹 앱이나 다른 workspace package가 import하는 generated client이므로 이 템플릿에서는 생성 후 typecheck합니다. 커밋 여부와 무관하게 `contract:verify`가 항상 현재 서버 계약에서 다시 생성합니다. +- `openapi.json`: `contract:verify`의 drift 기준이므로 `codegen`으로 갱신해 커밋합니다. +- `libs/shared/provider-rpc/src`: 웹 앱이나 다른 workspace package가 import하는 generated client입니다. `codegen`이 생성하며 `contract:verify`는 현재 서버 계약과의 drift를 쓰기 없이 검사한 뒤 typecheck합니다. -`contract:openapi`는 `apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}`에서 REST 컨트롤러 메타데이터를 읽어 `openapi.json`을 생성합니다. `contract:client`는 같은 컨트롤러 계약에서 React Query hook을 포함한 fetch 클라이언트를 `libs/shared/provider-rpc/src`에 생성합니다. `codegen`은 기존 사용자를 위한 `contract:client` 별칭입니다. +`contract:openapi`는 `apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}`에서 REST 컨트롤러 메타데이터를 읽어 `openapi.json`을 생성합니다. `contract:client`는 같은 컨트롤러 계약에서 React Query hook을 포함한 fetch 클라이언트를 `libs/shared/provider-rpc/src`에 생성합니다. `codegen`은 Project Map과 manifest bundle, OpenAPI, RPC client를 함께 갱신합니다. `contract:client`는 생성 직후 `{{scope}}/provider-rpc`를 typecheck합니다. 예를 들어 `UserController`의 `@Get(getUserRoute)`, `@Param(getUserRoute, "id")`, `@Post(createUserRoute)`, `@Body(createUserRoute)` 계약은 다음처럼 `userClient` 타입으로 이어집니다. diff --git a/packages/create-croco-app/templates/spa-be-split/package.json.hbs b/packages/create-croco-app/templates/spa-be-split/package.json.hbs index dba09e6eb..b3e6aa2d8 100644 --- a/packages/create-croco-app/templates/spa-be-split/package.json.hbs +++ b/packages/create-croco-app/templates/spa-be-split/package.json.hbs @@ -13,7 +13,7 @@ "contract:coverage": "croco contracts check --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --strict-schemas --json --out contract-graph.coverage.json", "project-map:write": "croco project map --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --out croco.project-map.json --manifest-bundle .croco/manifest", "project-map:check": "croco project map --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --check --manifest croco.project-map.json --manifest-bundle .croco/manifest", - "contract:verify": "pnpm contract:diff && pnpm contract:coverage && pnpm project-map:write && pnpm project-map:check && pnpm contract:openapi && pnpm contract:client && pnpm --filter {{scope}}/provider-rpc typecheck", + "contract:verify": "pnpm contract:diff && pnpm contract:check && pnpm project-map:check && pnpm contract:openapi:check && pnpm contract:client:check", "ci:contracts": "pnpm contract:verify", "di:graph": "pnpm --filter {{scope}}/api-server di:graph", "di:check": "croco di check .croco/build/di-graph.manifest.json", @@ -21,8 +21,10 @@ "doctor": "croco doctor --json", "di:verify": "pnpm di:check && pnpm di:assert && pnpm project-map:check && pnpm doctor", "contract:openapi": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest", + "contract:openapi:check": "pnpm contract:check && croco-openapi-spec --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out openapi.json --title \"{{projectName}} API\" --version 0.1.0 --server http://localhost:3000 --manifest-bundle .croco/manifest --output-check", "contract:client": "pnpm contract:check && croco-rpc-codegen --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --react-query --problem-runtime frontend-problems --manifest-bundle .croco/manifest && pnpm --filter {{scope}}/provider-rpc typecheck", - "codegen": "pnpm contract:client", + "contract:client:check": "pnpm contract:check && croco-rpc-codegen --controllers \"apps/api-server/src/{controllers/**/*.ts,users.ts,problems.ts}\" --strict-schemas --fail-on-diagnostics --out libs/shared/provider-rpc/src --react-query --problem-runtime frontend-problems --manifest-bundle .croco/manifest --output-check && pnpm --filter {{scope}}/provider-rpc typecheck", + "codegen": "pnpm project-map:write && pnpm contract:openapi && pnpm contract:client", "build": "turbo build", "lint": "biome lint .", "test": "turbo test", diff --git a/packages/docs/src/content/docs/api/problems-core/src/variables/CROCO_PROBLEM_CODE_REGISTRY.md b/packages/docs/src/content/docs/api/problems-core/src/variables/CROCO_PROBLEM_CODE_REGISTRY.md index d3b214fa1..c8eab83bd 100644 --- a/packages/docs/src/content/docs/api/problems-core/src/variables/CROCO_PROBLEM_CODE_REGISTRY.md +++ b/packages/docs/src/content/docs/api/problems-core/src/variables/CROCO_PROBLEM_CODE_REGISTRY.md @@ -15,7 +15,7 @@ title: "CROCO_PROBLEM_CODE_REGISTRY" ### problems -> `readonly` **problems**: readonly \[\{ `category`: `"Forbidden"`; `code`: `"ACCESS_DENIED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#access-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/PipelineRunner.ts"`; `kind`: `"problem-factory"`; `line`: `196`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"access-core/forbidden"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#access-core-forbidden"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/access-core/src/libs/guards/AccessGuard.ts"`; `kind`: `"problem-constructor"`; `line`: `17`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"admin-console/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-console-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `79`; `file`: `"packages/create-croco-app/templates/admin-console/apps/api-server/src/controllers/adminSchemas.ts"`; `kind`: `"problem-metadata"`; `line`: `6`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"admin-core/resource-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-core-resource-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/admin-core/src/libs/AdminResource.ts"`; `kind`: `"problem-constructor"`; `line`: `79`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"admin-generated/contract-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-generated-contract-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/admin-generated/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `55`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"ai-saas/model-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-model-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ai-saas/model-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-model-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `22`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ai-saas/provider-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `62`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ai-saas/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ai-saas/rate-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `53`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ai-saas/smoke-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-smoke-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"ai-saas/tenant-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ai-saas/tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"ALREADY_MEMBER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#already-member"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/capture-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-capture-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/flush-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-flush-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/readiness-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-readiness-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"API_KEY_EXPIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `35`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"NotFound"`; `code`: `"API_KEY_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/apikey/problems/ApiKeyNotFoundProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"API_KEY_REVOKED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-revoked"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `43`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-json-parse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-json-parse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-schema-version"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-schema-version"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-shape"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-shape"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/package-json-parse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-package-json-parse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `46`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"audit-core/auditable-decorator-misuse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#audit-core-auditable-decorator-misuse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/audit-core/src/libs/problems/AuditableDecoratorProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"audit/insert-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#audit-insert-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/audit-drizzle/src/libs/DrizzleAuditLogRepository.ts"`; `kind`: `"problem-factory"`; `line`: `137`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/authentication-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-authentication-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthAuthenticationProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/invalid-session-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-session-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthInvalidSessionProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"auth-better-auth/invalid-webhook-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-webhook-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-better-auth/invalid-webhook-signature"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-webhook-signature"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/session-lookup-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-session-lookup-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthSessionLookupProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"auth-better-auth/session-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-session-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"auth-better-auth/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `39`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"auth-clerk/duplicate-tenant-mapping"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-duplicate-tenant-mapping"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `94`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/external-service-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-external-service-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `121`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-clerk/invalid-webhook-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-invalid-webhook-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/malformed-claim"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-malformed-claim"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `83`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/public-user-data-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-public-user-data-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `109`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/token-verification-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-token-verification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/token-verification-upstream-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-token-verification-upstream-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `60`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/webhook-verification-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-webhook-verification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-core/api-key-creation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-api-key-creation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `67`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-core/auth-provider-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-auth-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-core/invalid-permission-action"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-invalid-permission-action"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `59`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-core/invalid-permission-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-invalid-permission-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"BAD_REQUEST"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#bad-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/access-core/src/libs/guards/AccessGuard.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"batch-qstash/invalid-publish-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#batch-qstash-invalid-publish-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/batch-qstash/src/libs/problems/QStashBatchProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"batch-qstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#batch-qstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/batch-qstash/src/libs/problems/QStashBatchProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"BILLING_STATUS_MAPPING_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-status-mapping-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/BillingStatusMappingProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing-polar/customer-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-customer-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `51`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `77`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing-polar/subscription-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-subscription-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `64`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `93`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"billing-polar/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing/account-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-account-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing/checkout-creation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-checkout-creation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/invalid-money-amount"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-invalid-money-amount"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/invalid-money-currency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-invalid-money-currency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `44`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"billing/money-currency-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-money-currency-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `52`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/money-division-by-zero"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-money-division-by-zero"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `64`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing/subscription-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-subscription-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"billing/webhook-already-processed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-webhook-already-processed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"BLOCKED_DURING_IMPERSONATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#blocked-during-impersonation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `49`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalid-decorator-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalid-decorator-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-assertion-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-assertion-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-capability-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-capability-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `55`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"cache-core/invalidation-event-unknown"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-event-unknown"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `41`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"cache-core/invalidation-graph-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-graph-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `27`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"CIRCUIT_BREAKER_OPEN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#circuit-breaker-open"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/CircuitBreakerOpenProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-invalid-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-invalid-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `55`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-null-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-null-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `277`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-upload-intent-null-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-upload-intent-null-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `353`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CONFLICTING_PAGINATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#conflicting-pagination"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/pagination-core/src/libs/problems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/directory-not-empty"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-directory-not-empty"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/DirectoryNotEmptyProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-cli-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-cli-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidCliOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-goal-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-goal-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidGoalOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-saas-preset-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-saas-preset-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidSaasPresetOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"create-croco-app/lambda-telemetry-boundary"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-lambda-telemetry-boundary"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/addons/lambda/apps/graphql-api/src/telemetryFlush.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"create-croco-app/unexpected-failure"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-unexpected-failure"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/cli-result.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/unsupported-node-version"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-unsupported-node-version"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The detected Node.js version is outside the supported generated-app toolchain train."`; `operatorAction`: `"Compare the reported actual Node.js version with the supported Node.js 22 train and verify the active version-manager configuration."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: ``"Install and activate Node.js 22 with `nvm install 22 && nvm use 22`, then rerun the command."``; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/UnsupportedNodeVersionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/web-meta-vite-fullstack-missing-hydration-root"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-web-meta-vite-fullstack-missing-hydration-root"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/create-croco-app/templates/addons/web-meta-vite-fullstack/ssr-worker/src/client.tsx"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/web-meta-vite-missing-hydration-root"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-web-meta-vite-missing-hydration-root"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/create-croco-app/templates/addons/web-meta-vite/src/client.tsx"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `88`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `99`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_003"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-003"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `110`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"CROCO_CLI_JOBS_004"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-004"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `49`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-metadata"`; `line`: `137`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"CROCO_CLI_JOBS_005"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-005"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `63`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-metadata"`; `line`: `132`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_OPS_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-ops-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/libs/ops.ts"`; `kind`: `"problem-constructor"`; `line`: `66`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_OPS_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-ops-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/libs/ops.ts"`; `kind`: `"problem-constructor"`; `line`: `55`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_USAGE_DASHBOARD_005"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-usage-dashboard-005"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/generateUsageDashboard.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_MIDDLEWARE_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-middleware-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP middleware returned without a Response, without shortCircuit(reason), and without calling next() exactly once."`; `operatorAction`: `"Update the named @croco/transports-http middleware to return next(), await next() once, return a Response, or return shortCircuit(reason) for intentional termination."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry only after the service owner ships a middleware contract fix."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `367`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_MIDDLEWARE_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-middleware-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP middleware attempted to resume the downstream pipeline more than once."`; `operatorAction`: `"Store the Response from a single next() call and reuse or transform it instead of calling next() again."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry only after the service owner ships a middleware contract fix."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `272`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_SECURITY_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-security-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP bootstrap validation found a generated or application app without the required security middleware set."`; `operatorAction`: `"Add the missing @croco/transports-http middleware or keep securityValidation disabled only in an explicit local migration/testing fixture."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Use an app build that registers security headers, CORS, body limit, and rate-limit middleware before first run."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-factory"`; `line`: `246`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_HTTP_SECURITY_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-security-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/middleware/SecurityMiddlewareMarker.ts"`; `kind`: `"problem-factory"`; `line`: `154`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"dataloader-core/batch-result-length-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#dataloader-core-batch-result-length-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/dataloader-core/src/libs/problems/BatchLoaderProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"diagnostics-core/duplicate-provider"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#diagnostics-core-duplicate-provider"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/diagnostics-core/src/libs/problems/DiagnosticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"DUPLICATE_INVITATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duplicate-invitation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/RateLimitProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"DUPLICATE_RECOVER_HANDLER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duplicate-recover-handler"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/DuplicateRecoverHandlerProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"DURATION_PARSE_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duration-parse-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContextProblems.ts"`; `kind`: `"problem-class"`; `line`: `15`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"EMBEDDING_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#embedding-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `43`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_DENIED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_INACTIVE_SUBSCRIPTION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-inactive-subscription"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `45`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_MISSING_PLAN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-missing-plan"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"ENTITLEMENT_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `85`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ENTITLEMENT_PROVIDER_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `73`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ENTITLEMENT_QUOTA_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `59`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ENTITLEMENT_REQUIREMENT_INVALID"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-requirement-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/after-commit-requires-active-transaction"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-after-commit-requires-active-transaction"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `96`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/deserialization-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-deserialization-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/duplicate-event-field"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-duplicate-event-field"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/duplicate-event-name"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-duplicate-event-name"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/event-bus-not-set"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-event-bus-not-set"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/event-definition-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-event-definition-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/transaction-context-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-transaction-context-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `81`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/unknown-event-type"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-unknown-event-type"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"events-inmemory/backpressure-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-backpressure-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/problems/EventsInmemoryProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"events-inmemory/backpressure-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-backpressure-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/problems/EventsInmemoryProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/invalid-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-invalid-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/publish-dropped"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-publish-dropped"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/publish-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-publish-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `34`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/configuration-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-configuration-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"events-tx/inbox-claim-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-inbox-claim-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"An inbox completion request no longer owns the processing attempt it started."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints, then verify workers complete only the attempt they claimed."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Acquire a new inbox claim before retrying processing; discard the stale completion when a new claim cannot be acquired."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `89`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/outbox-publish-exhausted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-outbox-publish-exhausted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `74`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/outbox-transaction-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-outbox-transaction-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `56`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/storage-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-storage-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/transaction-state-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-transaction-state-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `45`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/continuation-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-continuation-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `76`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"execution/continuation-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-continuation-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/invalid-state-transition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-invalid-state-transition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/max-retries-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-max-retries-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `49`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"execution/not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `41`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Forbidden"`; `code`: `"FORBIDDEN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#forbidden"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-config/config-schema-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-config-schema-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-config/config-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-config-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-config/invalid-boolean-env"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-invalid-boolean-env"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `24`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/circular-dependency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-circular-dependency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/CircularDependencyProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/context-middleware-execution-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-context-middleware-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContextProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/di-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-di-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContainerResolutionProblem.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/di-scope-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-di-scope-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContainerResolutionProblem.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-context/on-shutdown-decorator-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-on-shutdown-decorator-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `9`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/pipeline-graph-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-pipeline-graph-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/PipelineGraphProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/policy-capability-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-capability-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/policy-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `9`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-context/policy-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/request-scope-outside-context"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-request-scope-outside-context"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/framework-context/src/libs/Container.ts"`; `kind`: `"problem-factory"`; `line`: `1408`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/shutdown-configuration-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-shutdown-configuration-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `84`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/shutdown-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-shutdown-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `73`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/circular-dependency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-circular-dependency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `26`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-module/invalid-module-definition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-invalid-module-definition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `16`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/lifecycle-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-lifecycle-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `42`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/provider-not-visible"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-not-visible"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-module/provider-ownership-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-ownership-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `92`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-module/provider-write-not-owned"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-write-not-owned"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `108`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"frontend-problems/fetch-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#frontend-problems-fetch-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/frontend-problems/src/index.ts"`; `kind`: `"problem-class"`; `line`: `204`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"frontend-vite/missing-cloudflare-vite-plugin"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#frontend-vite-missing-cloudflare-vite-plugin"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/frontend-vite/src/libs/problems/MissingCloudflareVitePluginProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `14`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"GENERATION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#generation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `34`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"gid-core/id-type-only-property"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#gid-core-id-type-only-property"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/gid-core/src/libs/problems/GidProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"gid-core/invalid-id-prefix"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#gid-core-invalid-id-prefix"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/gid-core/src/libs/problems/GidProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"governance-core/delete-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-delete-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `34`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"governance-core/export-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-export-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"ValidationError"`; `code`: `"governance-core/resource-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-resource-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/DataGovernanceResource.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"governance-core/retention-policy-violation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-retention-policy-violation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `59`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"NotFound"`; `code`: `"GRAPHQL_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#graphql-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/protocols-graphql/src/libs/errors/GraphQLProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `23`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"HEALTH_SCORE_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#health-score-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/customer-health-core/src/libs/problems/HealthProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"idempotency-core/invalid-key"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-invalid-key"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `53`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/key-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-key-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `37`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-expired"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `78`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `64`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-state"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `97`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"IMPERSONATION_IDENTITY_CONFLICT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-identity-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"IMPERSONATION_REASON_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-reason-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"IMPERSONATION_SESSION_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-session-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `58`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"IMPERSONATION_TARGET_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-target-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `22`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"INDEX_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#index-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"integrations-posthog/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#integrations-posthog-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/integrations-posthog/src/libs/problems/PostHogProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_AUTO_JOIN_ROLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-auto-join-role"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/invitation-core/src/libs/problems/DomainPolicyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_CURSOR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-cursor"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/pagination-core/src/libs/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"INVALID_RETRY_CONFIGURATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-retry-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_ROLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-role"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `44`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"INVITATION_ALREADY_ACCEPTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-already-accepted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `26`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"INVITATION_EMAIL_MISMATCH"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-email-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `37`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Gone"`; `code`: `"INVITATION_EXPIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource is no longer available through this API surface."`; `operatorAction`: `"Verify lifecycle, migration, deprecation, and retention state."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Stop using the stale reference and follow the replacement flow when available."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `15`; \}\]; `status`: `410`; `title`: `"Gone"`; \}, \{ `category`: `"Conflict"`; `code`: `"INVITATION_INVALID_STATUS"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-invalid-status"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"INVITATION_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"INVITATION_RATE_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/RateLimitProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"BadRequest"`; `code`: `"invitation-core/batch-size-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-core-batch-size-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/BatchInviteProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"LAMBDA_TIMEOUT_GUARD"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lambda-timeout-guard"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"LAST_OWNER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#last-owner"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/action-adapter-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-action-adapter-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `37`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/duplicate-rule"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-duplicate-rule"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/rule-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-rule-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"LLM_PROVIDER_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-provider-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"LLM_SERVICE_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-service-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-core/invalid-llm-prompt"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-invalid-llm-prompt"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `85`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-core/invalid-llm-response"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-invalid-llm-response"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-core/llm-service-not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-llm-service-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"llm-core/rate-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `43`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"Forbidden"`; `code`: `"llm-metering/cost-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-cost-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `41`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"llm-metering/pricing-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-pricing-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-class"`; `line`: `58`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"llm-metering/pricing-registry-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-pricing-registry-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `71`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"llm-metering/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-metering/record-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-record-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-openai/aborted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `117`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"llm-openai/authentication-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-authentication-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `42`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/invalid-response"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-invalid-response"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `135`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"llm-openai/rate-limited"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-rate-limited"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `87`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-openai/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Forbidden"`; `code`: `"MEMBERSHIP_CONSTRAINT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#membership-constraint"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipConstraintProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"MEMBERSHIP_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#membership-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"meta-vite/server-action-invalid-path"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-invalid-path"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `80`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"meta-vite/server-action-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"meta-vite/server-action-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `94`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"meter/insert-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meter-insert-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/metering-drizzle/src/libs/DrizzleMeterRepository.ts"`; `kind`: `"problem-factory"`; `line`: `131`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering-upstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-upstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metering-upstash/src/libs/problems/UpstashMeteringProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering/atomic-quota-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-atomic-quota-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metering-core/src/libs/problems/AtomicQuotaNotSupportedProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"metering/duplicate-record"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-duplicate-record"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/DuplicateRecordProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"metering/invalid-meter"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-invalid-meter"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/InvalidMeterProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"metering/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/QuotaExceededProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering/redis-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-redis-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/RedisProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metrics-billing/metric-dropped"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-billing-metric-dropped"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Billing metrics could not be recorded because the referenced account, subscription, or plan evidence was missing."`; `operatorAction`: `"Use extensions.reason, tenantId, resourceId, and eventKey to rebuild the missing account, subscription, or plan before replay."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Restore the missing billing state identified by reason/resourceId, then replay the same billing event with the same event key."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-billing/src/libs/problems/BillingMetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metrics-billing/recording-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-billing-recording-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-billing/src/libs/problems/BillingMetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"metrics-core/carrying-capacity-simulation-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-carrying-capacity-simulation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/carrying-capacity-tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-carrying-capacity-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/gross-margin-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-gross-margin-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/mixed-currency-mrr"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-mixed-currency-mrr"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"metrics-core/retention-metrics-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-retention-metrics-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/snapshot-tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-snapshot-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/SnapshotScheduler.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"MIDDLEWARE_EXECUTION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#middleware-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/MiddlewareProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/database-url-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-database-url-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/DatabaseUrlRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"migration-runner/history-drift"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-history-drift"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Recorded migration history no longer matches the available migration files by stable id and name."`; `operatorAction`: `"Compare the checkpoint rows with version-controlled migration files, restore missing or renamed files when possible, and repair history only after verifying the deployed schema."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Restore the original migration file identity or ask an operator to perform an explicitly verified history repair."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MigrationHistoryDriftProblem.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/invalid-count"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-invalid-count"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/InvalidMigrationCountProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/missing-down-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-missing-down-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MissingDownFunctionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/missing-up-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-missing-up-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MissingUpFunctionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/transaction-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-transaction-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MigrationTransactionRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/unsupported-dialect"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-unsupported-dialect"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/UnsupportedDialectProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"migration-runner/unsupported-query-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-unsupported-query-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/UnsupportedMigrationQueryResultProblem.ts"`; `kind`: `"problem-class"`; `line`: `11`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"MISSING_TENANT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#missing-tenant"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"MODEL_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#model-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `25`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Forbidden"`; `code`: `"NESTED_IMPERSONATION_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#nested-impersonation-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/default-provider-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-default-provider-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `80`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/delivery-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-delivery-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `152`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/idempotency-key-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-idempotency-key-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `224`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/outbox-idempotency-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-outbox-idempotency-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `240`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/preference-channel-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-channel-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `207`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/preference-context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `191`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"notifications-core/preference-denied"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `169`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-already-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-already-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `64`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-channel-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-channel-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `32`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `120`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/send-max-attempts-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-send-max-attempts-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `136`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"notifications-core/template-already-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-already-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `256`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"notifications-core/template-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `274`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/template-variables-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-variables-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `293`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"notifications-resend/idempotency-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-idempotency-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend rejected reuse of an idempotency key for a different send request."`; `operatorAction`: `"Audit callers so each business send intent has one stable idempotency key."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Replay the original payload with the same key or use a new key for a changed send intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `54`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Required Resend configuration is absent or blank before provider readiness can be proven."`; `operatorAction`: `"Check deployment env/config injection and verify diagnostics do not expose the raw key."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Configure RESEND_API_KEY and a verified default sender, then rerun diagnostics."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend returned a transient status, rate limit, or network timeout."`; `operatorAction`: `"Check Resend status, rate limits, and retry-after/upstream status in telemetry."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry with the same idempotency key when the send intent is unchanged."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend rejected the request with a non-retryable upstream failure."`; `operatorAction`: `"Inspect redacted upstream code/status and fix provider configuration before retrying."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Do not retry unchanged input; correct the API key, domain, sender verification, or request content."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `76`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-resend/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `40`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"onboarding/context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"NotFound"`; `code`: `"onboarding/definition-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-definition-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"onboarding/step-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-step-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"openapi-spec/controller-typescript-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-controller-typescript-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/loadControllers.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"openapi-spec/invalid-contract"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-invalid-contract"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/emitOpenAPI.ts"`; `kind`: `"problem-constructor"`; `line`: `106`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"openapi-spec/no-rest-controllers-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-no-rest-controllers-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/loadControllers.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"OTLP_ENDPOINT_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#otlp-endpoint-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/dispatch-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-dispatch-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `86`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/failure-metadata-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-failure-metadata-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A dispatcher attempted to mark an outbox record failed without the required retry metadata extensions."`; `operatorAction`: `"Audit dispatcher error mapping so every failure path preserves attempt, retryability, terminal state, and failedAt metadata."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Abort the dispatch attempt and pass an OutboxDispatchProblem or equivalent Problem with outbox retry metadata."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `116`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"outbox-core/record-id-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-record-id-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A caller tried to create an outbox record with an explicit id that already belongs to another idempotency scope."`; `operatorAction`: `"Inspect the producer id/idempotency assignment path and remove any shared id generator or manual id reuse."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Reuse the original idempotency key for the same intent or choose a new record id for a different intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `103`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/unit-of-work-context-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-unit-of-work-context-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"An outbox write received a Unit of Work context that was missing, malformed, or created by another store instance."`; `operatorAction`: `"Check transaction boundary wiring so repository and outbox writes share the same store-owned Unit of Work client."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Abort the write and use the context supplied by the active TransactionalOutboxStore.runInUnitOfWork callback."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `129`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"OWNERSHIP_TRANSFER_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ownership-transfer-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"problems-core/invalid-extensions"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-invalid-extensions"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/problems-core/src/libs/problems/InvalidExtensionsProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"problems-core/parse-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-parse-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/problems-core/src/libs/problems/ProblemDetailsParseProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"problems-core/problem-registry-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-problem-registry-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/problems-core/src/libs/ProblemRegistry.ts"`; `kind`: `"problem-constructor"`; `line`: `210`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"problems-core/unhandled-category"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-unhandled-category"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/problems-core/src/libs/ProblemCategoryMapper.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-core/contract-graph-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-core-contract-graph-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/protocols-core/src/libs/ContractGraph.ts"`; `kind`: `"problem-constructor"`; `line`: `142`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-graphql/auth-invalid-header-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-header-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `71`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-graphql/auth-invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `54`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-graphql/auth-invalid-token"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-token"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `14`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-graphql/auth-missing-header"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-missing-header"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `63`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-graphql/auth-verifier-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-verifier-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `97`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"protocols-graphql/guard-denied"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-guard-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-graphql/src/libs/problems/GuardProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-rest/auth-invalid-header-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-header-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `77`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-rest/auth-invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `59`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-rest/auth-invalid-token"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-token"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `15`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-rest/auth-missing-header"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-missing-header"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `69`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/auth-verifier-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-verifier-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/duplicate-parameter-index"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-duplicate-parameter-index"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/metadata/MetadataReader.ts"`; `kind`: `"problem-factory"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-rest/request-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-request-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/response-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-response-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-rest/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-trpc/route-handler-not-callable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-trpc-route-handler-not-callable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-trpc/src/libs/createTrpcRouter.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"PUBLIC_EMAIL_DOMAIN_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#public-email-domain-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/invitation-core/src/libs/problems/DomainPolicyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"RATE_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitExceededProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RATE_LIMIT_KEY_BUILDER_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-key-builder-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RATE_LIMIT_REFUND_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-refund-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `25`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"RATE_LIMIT_WINDOW_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-window-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `14`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ratelimit-upstash/invalid-policy"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ratelimit-upstash-invalid-policy"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-upstash/src/libs/problems/RateLimitUpstashProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ratelimit-upstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ratelimit-upstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-upstash/src/libs/problems/RateLimitUpstashProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-factory-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-factory-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-factory-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-factory-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-scope-collision"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-scope-collision"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RESEND_NOTIFICATION_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#resend-notification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `87`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_ABORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryAbortedProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_CIRCUIT_BREAKER_INVALID_STATE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-circuit-breaker-invalid-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_CIRCUIT_BREAKER_LOCK_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-circuit-breaker-lock-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_EXHAUSTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-exhausted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryExhaustedProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"retry-core/circuit-breaker-unexpected-state"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-core-circuit-breaker-unexpected-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/problems/CircuitBreakerProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ROLE_HIERARCHY_VIOLATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#role-hierarchy-violation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/controller-typescript-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-controller-typescript-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/loadRoutes.ts"`; `kind`: `"problem-constructor"`; `line`: `72`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/invalid-contract"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-invalid-contract"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `105`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"rpc-codegen/no-rest-controllers-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-no-rest-controllers-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/loadRoutes.ts"`; `kind`: `"problem-constructor"`; `line`: `33`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/unsupported-form-schema"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-unsupported-form-schema"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `111`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"saas-demo/demo-endpoint-disabled"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-demo-endpoint-disabled"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"saas-demo/invalid-jobs-query"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-invalid-jobs-query"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"saas-demo/invalid-port"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-invalid-port"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"saas-demo/job-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-job-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `39`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"saas-demo/smoke-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-smoke-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"saas-demo/tenant-already-exists"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-tenant-already-exists"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"saas-demo/tenant-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `57`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"SEARCH_CAPABILITY_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-capability-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"SEARCH_DRIZZLE_INVALID_ROW"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-drizzle-invalid-row"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/search-drizzle/src/libs/problems/InvalidSearchRowProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"search-core/sync-identity-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-core-sync-identity-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The event envelope tenant or document identity conflicts with context.tenantId, payload.id, or payload.tenantId."`; `operatorAction`: `"Use extensions.source to identify the conflicting field and verify envelope-authoritative tenant and document identity propagation."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Correct the conflicting event or execution context, then replay the event."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `23`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"search-core/transform-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-core-transform-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-class"`; `line`: `35`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"search-meilisearch/index-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-index-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `80`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"search-meilisearch/invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `60`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `39`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `100`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/tenant-token-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-tenant-token-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `140`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `120`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"SEAT_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#seat-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `78`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"SELF_IMPERSONATION_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#self-impersonation-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"starter/invalid-environment"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#starter-invalid-environment"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/spa-be-split/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"starter/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#starter-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/spa-be-split/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_DELETE_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-delete-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/DeleteFailedProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"STORAGE_FILE_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-file-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/FileNotFoundProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"STORAGE_INVALID_KEY"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-invalid-key"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-core/src/libs/problems/InvalidKeyProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_EMPTY_BODY"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-empty-body"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-r2/src/libs/problems/EmptyR2BodyProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_MISSING_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/MissingR2ConfigProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_OBJECT_TOO_LARGE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-object-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/R2ObjectTooLargeProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_READINESS_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-readiness-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/R2ReadinessProblem.ts"`; `kind`: `"problem-class"`; `line`: `14`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_UPLOAD_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-upload-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/UploadFailedProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `37`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `86`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"storage-cloudflare/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"storage-cloudinary/invalid-upload-intent-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-invalid-upload-intent-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryProvider.ts"`; `kind`: `"problem-factory"`; `line`: `331`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `84`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `100`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"storage-cloudinary/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `71`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"storage/invalid-upload-intent-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-invalid-upload-intent-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `305`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STRATEGY_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#strategy-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `44`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STRUCTURED_OUTPUT_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#structured-output-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/duplicate-task-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-duplicate-task-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `13`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/execution-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-execution-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"tasks-core/task-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-task-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/task-runner-di-failure"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-task-runner-di-failure"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"tasks-qstash/invalid-publish-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-qstash-invalid-publish-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-qstash/src/libs/problems/QStashTaskProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-qstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-qstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-qstash/src/libs/problems/QStashTaskProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"TELEMETRY_AUTO_INSTRUMENTATION_INVALID_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-auto-instrumentation-invalid-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryAutoInstrumentationProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"TELEMETRY_FORCE_FLUSH_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-force-flush-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `62`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"TELEMETRY_RUNTIME_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-runtime-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TELEMETRY_SAMPLER_INVALID_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-sampler-invalid-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TELEMETRY_SIGNAL_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-signal-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Forbidden"`; `code`: `"tenant-core/admin-bypass-reason-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-admin-bypass-reason-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `60`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/cross-tenant-leak"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-cross-tenant-leak"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `79`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"tenant-core/default-tenant-fallback"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-default-tenant-fallback"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `48`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/duplicate-tenant-manager-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-duplicate-tenant-manager-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/DuplicateTenantManagerRegistrationProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"tenant-core/isolation-context-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-isolation-context-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `39`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/tenant-manager-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-tenant-manager-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantManagerNotRegisteredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"tenant-core/unsafe-query"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-unsafe-query"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `69`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"tenant/not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantNotFoundProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"tenant/required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/after-commit-hooks-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-after-commit-hooks-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/testing.ts"`; `kind`: `"problem-constructor"`; `line`: `178`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/telemetry-provider-already-installed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-telemetry-provider-already-installed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/telemetry-testing.ts"`; `kind`: `"problem-constructor"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/transaction-context-not-active"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-transaction-context-not-active"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/testing.ts"`; `kind`: `"problem-constructor"`; `line`: `165`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TOKEN_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#token-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `21`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"TOOL_EXECUTION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tool-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `61`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"transports-graphql/request-body-aborted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-request-body-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `47`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"PayloadTooLarge"`; `code`: `"transports-graphql/request-body-too-large"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-request-body-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request body exceeded the configured byte limit."`; `operatorAction`: `"Confirm route body limits and upstream proxy limits match the intended upload policy."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Reduce the request body and retry."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `33`; \}\]; `status`: `413`; `title`: `"Payload Too Large"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/resolvers-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-resolvers-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/schema-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-schema-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/server-not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-server-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `24`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/body-limit-invalid-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-body-limit-invalid-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The HTTP body-limit middleware was configured with an invalid byte boundary."`; `operatorAction`: `"Set the body-limit value to a finite, nonnegative safe integer and restart the service."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the service configuration before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/di-bootstrap-validation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-di-bootstrap-validation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-factory"`; `line`: `283`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/duplicate-health-check"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-duplicate-health-check"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/transports-http/src/libs/HealthCheckRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `71`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/duplicate-route-definition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-duplicate-route-definition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Two REST controller methods compile to the same HTTP method and runtime path."`; `operatorAction`: `"Inspect the duplicate-route diagnostic for the existing and conflicting controller methods and their route decorator source locations, then rename one route path or change one HTTP method."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Use an application build where every route decorator has a unique HTTP method and path combination."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `115`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/graceful-shutdown-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-graceful-shutdown-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Graceful shutdown was configured with a non-finite total or event-bus drain timeout."`; `operatorAction`: `"Set timeoutMs and eventBusDrainTimeoutMs to finite numbers, then reconstruct the middleware or controller before retrying shutdown."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the graceful shutdown timeout configuration before reconstructing the HTTP application."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/GracefulShutdownProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/graceful-shutdown-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-graceful-shutdown-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Graceful shutdown did not finish a phase before that phase's configured deadline elapsed."`; `operatorAction`: `"Inspect the reported phase, timeoutMs, and elapsedMs extensions, then investigate slow request handlers, event-bus draining, or shutdown hooks."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Wait for the stalled shutdown phase to be investigated before retrying; active requests or cleanup work may still be settling."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/GracefulShutdownProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `47`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/middleware-next-called-multiple-times"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-middleware-next-called-multiple-times"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Compatibility metadata for the previous HTTP middleware multiple-next code. New runtime failures use CROCO_HTTP_MIDDLEWARE_002 and preserve this value as extensions.legacyCode."`; `operatorAction`: `"Update dashboards, alerts, and runbooks from transports-http/middleware-next-called-multiple-times to CROCO_HTTP_MIDDLEWARE_002 before removing legacy-code matching."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Migrate Problem.code matchers to CROCO_HTTP_MIDDLEWARE_002; use extensions.legacyCode only while rolling out compatibility changes."`; \}; `sources`: readonly \[\{ `column`: `49`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-metadata"`; `line`: `39`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/pipe-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-pipe-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/transports-http/src/libs/ParamResolver.ts"`; `kind`: `"problem-factory"`; `line`: `159`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/provider-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-provider-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `67`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"transports-http/request-body-read-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-read-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `67`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"PayloadTooLarge"`; `code`: `"transports-http/request-body-too-large"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request body exceeded the configured byte limit."`; `operatorAction`: `"Confirm route body limits and upstream proxy limits match the intended upload policy."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Reduce the request body and retry."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `413`; `statusPolicy`: \{ `configuration`: `"bodyLimitMiddleware.statusCode"`; `defaultStatus`: `413`; `kind`: `"runtime-configurable"`; \}; `title`: `"Payload Too Large"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/request-body-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/route-method-not-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-route-method-not-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `175`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"transports-http/runtime-capability-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-runtime-capability-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-http/src/libs/runtimeContext.ts"`; `kind`: `"problem-class"`; `line`: `88`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/security-middleware-validation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-security-middleware-validation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Compatibility metadata for the previous HTTP security middleware validation code. New runtime failures use CROCO_HTTP_SECURITY_001 and preserve this value as extensions.legacyCode."`; `operatorAction`: `"Update dashboards, alerts, and runbooks from transports-http/security-middleware-validation to CROCO_HTTP_SECURITY_001 before removing legacy-code matching."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Migrate Problem.code matchers to CROCO_HTTP_SECURITY_001; use extensions.legacyCode only while rolling out compatibility changes."`; \}; `sources`: readonly \[\{ `column`: `55`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-metadata"`; `line`: `79`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/unsupported-route-method"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-unsupported-route-method"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `245`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-core/duplicate-trigger-metadata"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-core-duplicate-trigger-metadata"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/triggers-core/src/libs/TriggerRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `69`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-core/duplicate-trigger-metadata-entry"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-core-duplicate-trigger-metadata-entry"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/triggers-core/src/libs/TriggerRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `121`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/duplicate-schedule-id"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-duplicate-schedule-id"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/triggers-qstash/src/libs/QStashScheduler.ts"`; `kind`: `"problem-factory"`; `line`: `253`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/execution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-execution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/triggers-qstash/src/libs/QStashTriggerHandler.ts"`; `kind`: `"problem-metadata"`; `line`: `264`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/service-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-service-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/triggers-qstash/src/libs/QStashTriggerHandler.ts"`; `kind`: `"problem-metadata"`; `line`: `254`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/after-commit-hooks-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-after-commit-hooks-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/decorator-misuse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-decorator-misuse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/duplicate-tx-manager-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-duplicate-tx-manager-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"tx-core/invalid-transaction-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-invalid-transaction-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/manager-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-manager-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/missing-transaction-context"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-missing-transaction-context"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `27`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"tx-core/propagation-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-propagation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `34`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/transaction-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-transaction-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `78`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-configuration-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-configuration-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A PostgreSQL RLS helper received malformed static identifier or setting-key configuration."`; `operatorAction`: `"Use the reported field name and the @croco/tx-drizzle RLS contract to correct the configuration, then restart the service."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the RLS configuration before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-debug-logging-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-debug-logging-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Requested RLS debug logging could not initialize or write its diagnostic event."`; `operatorAction`: `"Provide an RlsLogger or register the framework Logger, then verify its info() output path before retrying the transaction."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to restore the configured logger before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `57`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-execute-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-execute-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/savepoint-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-savepoint-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `76`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/tenant-context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-tenant-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"UNAUTHORIZED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#unauthorized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"WEBHOOK_PROCESSING_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhook-processing-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/WebhookProcessingProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"WEBHOOK_VALIDATION_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhook-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/WebhookValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `38`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/dispatch-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-dispatch-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `117`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"webhooks-core/duplicate-event"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-duplicate-event"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `139`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-envelope"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-envelope"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `74`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-fixture"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-fixture"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `178`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-signature"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-signature"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `54`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/reporter-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-reporter-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `162`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/unknown-event"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-unknown-event"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `94`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/duplicate-workflow-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-duplicate-workflow-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/replay-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-replay-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `47`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `62`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-execution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-execution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `127`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"workflow-core/saga-execution-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-execution-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-class"`; `line`: `77`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-replay-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-replay-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `103`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"workflow-core/saga-store-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-store-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `92`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/workflow-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-workflow-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"workflow-core/workflow-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-workflow-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}\] +> `readonly` **problems**: readonly \[\{ `category`: `"Forbidden"`; `code`: `"ACCESS_DENIED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#access-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/PipelineRunner.ts"`; `kind`: `"problem-factory"`; `line`: `196`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"access-core/forbidden"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#access-core-forbidden"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/access-core/src/libs/guards/AccessGuard.ts"`; `kind`: `"problem-constructor"`; `line`: `17`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"admin-console/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-console-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `79`; `file`: `"packages/create-croco-app/templates/admin-console/apps/api-server/src/controllers/adminSchemas.ts"`; `kind`: `"problem-metadata"`; `line`: `6`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"admin-core/resource-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-core-resource-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/admin-core/src/libs/AdminResource.ts"`; `kind`: `"problem-constructor"`; `line`: `79`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"admin-generated/contract-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#admin-generated-contract-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/admin-generated/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `55`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"ai-saas/model-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-model-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ai-saas/model-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-model-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `22`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ai-saas/provider-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `62`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ai-saas/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ai-saas/rate-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `53`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ai-saas/smoke-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-smoke-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"ai-saas/tenant-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ai-saas/tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ai-saas-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/ai-saas/apps/api-server/src/aiProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"ALREADY_MEMBER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#already-member"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/capture-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-capture-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/flush-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-flush-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"analytics-posthog/readiness-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#analytics-posthog-readiness-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/analytics-posthog/src/libs/problems/PostHogAnalyticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"API_KEY_EXPIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `35`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"NotFound"`; `code`: `"API_KEY_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/apikey/problems/ApiKeyNotFoundProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"API_KEY_REVOKED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#api-key-revoked"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `43`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-json-parse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-json-parse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-schema-version"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-schema-version"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/manifest-shape"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-manifest-shape"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"architecture-policy/package-json-parse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#architecture-policy-package-json-parse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/architecture-policy/src/index.ts"`; `kind`: `"problem-constructor"`; `line`: `46`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"audit-core/auditable-decorator-misuse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#audit-core-auditable-decorator-misuse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/audit-core/src/libs/problems/AuditableDecoratorProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"audit/insert-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#audit-insert-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/audit-drizzle/src/libs/DrizzleAuditLogRepository.ts"`; `kind`: `"problem-factory"`; `line`: `137`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/authentication-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-authentication-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthAuthenticationProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/invalid-session-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-session-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthInvalidSessionProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"auth-better-auth/invalid-webhook-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-webhook-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-better-auth/invalid-webhook-signature"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-invalid-webhook-signature"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-better-auth/session-lookup-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-session-lookup-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/BetterAuthSessionLookupProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"auth-better-auth/session-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-session-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"auth-better-auth/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-better-auth-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-better-auth/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `39`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"auth-clerk/duplicate-tenant-mapping"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-duplicate-tenant-mapping"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `94`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/external-service-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-external-service-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `121`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-clerk/invalid-webhook-payload"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-invalid-webhook-payload"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/malformed-claim"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-malformed-claim"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `83`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/public-user-data-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-public-user-data-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `109`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/token-verification-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-token-verification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-clerk/token-verification-upstream-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-token-verification-upstream-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `60`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"auth-clerk/webhook-verification-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-clerk-webhook-verification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-clerk/src/libs/problems/ClerkProblems.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-core/api-key-creation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-api-key-creation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `67`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"auth-core/auth-provider-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-auth-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-core/invalid-permission-action"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-invalid-permission-action"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `59`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"auth-core/invalid-permission-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#auth-core-invalid-permission-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"BAD_REQUEST"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#bad-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/access-core/src/libs/guards/AccessGuard.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"batch-qstash/invalid-publish-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#batch-qstash-invalid-publish-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/batch-qstash/src/libs/problems/QStashBatchProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"batch-qstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#batch-qstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/batch-qstash/src/libs/problems/QStashBatchProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"BILLING_STATUS_MAPPING_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-status-mapping-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/BillingStatusMappingProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing-polar/customer-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-customer-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `51`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `77`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing-polar/subscription-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-subscription-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `64`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing-polar/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `93`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"billing-polar/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-polar-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/billing-polar/src/libs/problems/PolarBillingProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing/account-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-account-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"billing/checkout-creation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-checkout-creation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/invalid-money-amount"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-invalid-money-amount"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/invalid-money-currency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-invalid-money-currency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `44`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"billing/money-currency-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-money-currency-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `52`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"BadRequest"`; `code`: `"billing/money-division-by-zero"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-money-division-by-zero"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `64`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"billing/subscription-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-subscription-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"billing/webhook-already-processed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#billing-webhook-already-processed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-core/src/libs/problems/BillingProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"BLOCKED_DURING_IMPERSONATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#blocked-during-impersonation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `49`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalid-decorator-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalid-decorator-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-assertion-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-assertion-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-capability-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-capability-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `55`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"cache-core/invalidation-event-unknown"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-event-unknown"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `41`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cache-core/invalidation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"cache-core/invalidation-graph-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cache-core-invalidation-graph-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/cache-core/src/libs/problems/CacheDecoratorProblems.ts"`; `kind`: `"problem-class"`; `line`: `27`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"CIRCUIT_BREAKER_OPEN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#circuit-breaker-open"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/CircuitBreakerOpenProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-invalid-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-invalid-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `55`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-null-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-null-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `277`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"cloudflare/images-upload-intent-null-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#cloudflare-images-upload-intent-null-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `353`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CONFLICTING_PAGINATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#conflicting-pagination"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/pagination-core/src/libs/problems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/directory-not-empty"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-directory-not-empty"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/DirectoryNotEmptyProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-cli-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-cli-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidCliOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-goal-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-goal-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidGoalOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/invalid-saas-preset-option"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-invalid-saas-preset-option"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/InvalidSaasPresetOptionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"create-croco-app/lambda-telemetry-boundary"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-lambda-telemetry-boundary"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/addons/lambda/apps/graphql-api/src/telemetryFlush.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"create-croco-app/unexpected-failure"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-unexpected-failure"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/cli-result.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/unsupported-node-version"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-unsupported-node-version"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The detected Node.js version is outside the supported generated-app toolchain train."`; `operatorAction`: `"Compare the reported actual Node.js version with the supported Node.js 22 train and verify the active version-manager configuration."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: ``"Install and activate Node.js 22 with `nvm install 22 && nvm use 22`, then rerun the command."``; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/src/libs/problems/UnsupportedNodeVersionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/web-meta-vite-fullstack-missing-hydration-root"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-web-meta-vite-fullstack-missing-hydration-root"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/create-croco-app/templates/addons/web-meta-vite-fullstack/ssr-worker/src/client.tsx"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"create-croco-app/web-meta-vite-missing-hydration-root"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#create-croco-app-web-meta-vite-missing-hydration-root"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/create-croco-app/templates/addons/web-meta-vite/src/client.tsx"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `88`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `99`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_JOBS_003"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-003"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-constructor"`; `line`: `110`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"CROCO_CLI_JOBS_004"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-004"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `49`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-metadata"`; `line`: `137`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"CROCO_CLI_JOBS_005"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-jobs-005"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `63`; `file`: `"packages/cli/src/commands/jobs.ts"`; `kind`: `"problem-metadata"`; `line`: `132`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_OPS_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-ops-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/libs/ops.ts"`; `kind`: `"problem-constructor"`; `line`: `66`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_OPS_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-ops-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/libs/ops.ts"`; `kind`: `"problem-constructor"`; `line`: `55`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_CLI_USAGE_DASHBOARD_005"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-cli-usage-dashboard-005"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/cli/src/commands/generateUsageDashboard.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_MIDDLEWARE_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-middleware-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP middleware returned without a Response, without shortCircuit(reason), and without calling next() exactly once."`; `operatorAction`: `"Update the named @croco/transports-http middleware to return next(), await next() once, return a Response, or return shortCircuit(reason) for intentional termination."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry only after the service owner ships a middleware contract fix."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `367`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_MIDDLEWARE_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-middleware-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP middleware attempted to resume the downstream pipeline more than once."`; `operatorAction`: `"Store the Response from a single next() call and reuse or transform it instead of calling next() again."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry only after the service owner ships a middleware contract fix."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `272`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"CROCO_HTTP_SECURITY_001"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-security-001"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"HTTP bootstrap validation found a generated or application app without the required security middleware set."`; `operatorAction`: `"Add the missing @croco/transports-http middleware or keep securityValidation disabled only in an explicit local migration/testing fixture."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Use an app build that registers security headers, CORS, body limit, and rate-limit middleware before first run."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-factory"`; `line`: `246`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"CROCO_HTTP_SECURITY_002"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#croco-http-security-002"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/middleware/SecurityMiddlewareMarker.ts"`; `kind`: `"problem-factory"`; `line`: `154`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"dataloader-core/batch-result-length-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#dataloader-core-batch-result-length-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/dataloader-core/src/libs/problems/BatchLoaderProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"diagnostics-core/duplicate-provider"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#diagnostics-core-duplicate-provider"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/diagnostics-core/src/libs/problems/DiagnosticsProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"DUPLICATE_INVITATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duplicate-invitation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/RateLimitProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"DUPLICATE_RECOVER_HANDLER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duplicate-recover-handler"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/DuplicateRecoverHandlerProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"DURATION_PARSE_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#duration-parse-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContextProblems.ts"`; `kind`: `"problem-class"`; `line`: `15`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"EMBEDDING_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#embedding-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `43`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_DENIED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_INACTIVE_SUBSCRIPTION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-inactive-subscription"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `45`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ENTITLEMENT_MISSING_PLAN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-missing-plan"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"ENTITLEMENT_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `85`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ENTITLEMENT_PROVIDER_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-provider-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `73`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"ENTITLEMENT_QUOTA_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `59`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"ValidationError"`; `code`: `"ENTITLEMENT_REQUIREMENT_INVALID"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#entitlement-requirement-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/entitlements-core/src/libs/problems/EntitlementProblems.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/after-commit-requires-active-transaction"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-after-commit-requires-active-transaction"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `96`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/deserialization-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-deserialization-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/duplicate-event-field"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-duplicate-event-field"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/duplicate-event-name"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-duplicate-event-name"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/event-bus-not-set"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-event-bus-not-set"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/event-definition-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-event-definition-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/transaction-context-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-transaction-context-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `81`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-core/unknown-event-type"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-core-unknown-event-type"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-core/src/libs/problems/EventsProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"events-inmemory/backpressure-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-backpressure-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/problems/EventsInmemoryProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"events-inmemory/backpressure-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-backpressure-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/problems/EventsInmemoryProblems.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/invalid-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-invalid-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/publish-dropped"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-publish-dropped"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-inmemory/publish-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-inmemory-publish-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-inmemory/src/libs/InmemoryEventBus.ts"`; `kind`: `"problem-class"`; `line`: `34`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/configuration-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-configuration-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `28`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"events-tx/inbox-claim-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-inbox-claim-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"An inbox completion request no longer owns the processing attempt it started."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints, then verify workers complete only the attempt they claimed."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Acquire a new inbox claim before retrying processing; discard the stale completion when a new claim cannot be acquired."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `89`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/outbox-publish-exhausted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-outbox-publish-exhausted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `74`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/outbox-transaction-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-outbox-transaction-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `56`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/storage-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-storage-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"events-tx/transaction-state-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#events-tx-transaction-state-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/events-tx/src/libs/problems/EventsTxProblems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `45`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/continuation-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-continuation-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `76`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"execution/continuation-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-continuation-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/invalid-state-transition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-invalid-state-transition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"execution/max-retries-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-max-retries-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `49`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"execution/not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#execution-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `12`; `file`: `"packages/execution-core/src/libs/ExecutionProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `41`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Forbidden"`; `code`: `"FORBIDDEN"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#forbidden"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-config/config-schema-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-config-schema-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-config/config-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-config-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-config/invalid-boolean-env"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-config-invalid-boolean-env"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-config/src/libs/problems/ConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `24`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/circular-dependency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-circular-dependency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/CircularDependencyProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/context-middleware-execution-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-context-middleware-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContextProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/di-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-di-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContainerResolutionProblem.ts"`; `kind`: `"problem-class"`; `line`: `10`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/di-scope-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-di-scope-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ContainerResolutionProblem.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-context/on-shutdown-decorator-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-on-shutdown-decorator-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `9`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/pipeline-graph-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-pipeline-graph-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/PipelineGraphProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/policy-capability-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-capability-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/policy-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `9`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-context/policy-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-policy-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/RuntimePolicyProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/request-scope-outside-context"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-request-scope-outside-context"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/framework-context/src/libs/Container.ts"`; `kind`: `"problem-factory"`; `line`: `1408`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-context/shutdown-configuration-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-shutdown-configuration-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `84`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-context/shutdown-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-context-shutdown-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/ShutdownProblems.ts"`; `kind`: `"problem-class"`; `line`: `73`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/circular-dependency"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-circular-dependency"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `26`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"framework-module/invalid-module-definition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-invalid-module-definition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `16`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/lifecycle-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-lifecycle-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `42`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"framework-module/provider-not-visible"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-not-visible"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-module/provider-ownership-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-ownership-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `92`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"framework-module/provider-write-not-owned"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#framework-module-provider-write-not-owned"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/framework-module/src/problems.ts"`; `kind`: `"problem-constructor"`; `line`: `108`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"frontend-problems/fetch-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#frontend-problems-fetch-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/frontend-problems/src/index.ts"`; `kind`: `"problem-class"`; `line`: `204`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"frontend-vite/missing-cloudflare-vite-plugin"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#frontend-vite-missing-cloudflare-vite-plugin"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/frontend-vite/src/libs/problems/MissingCloudflareVitePluginProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `14`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"GENERATION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#generation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `34`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"gid-core/id-type-only-property"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#gid-core-id-type-only-property"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/gid-core/src/libs/problems/GidProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"gid-core/invalid-id-prefix"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#gid-core-invalid-id-prefix"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/gid-core/src/libs/problems/GidProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"governance-core/delete-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-delete-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `34`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"governance-core/export-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-export-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"ValidationError"`; `code`: `"governance-core/resource-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-resource-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/DataGovernanceResource.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"governance-core/retention-policy-violation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#governance-core-retention-policy-violation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/governance-core/src/libs/problems/DataGovernanceProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `59`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"NotFound"`; `code`: `"GRAPHQL_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#graphql-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/protocols-graphql/src/libs/errors/GraphQLProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `23`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"HEALTH_SCORE_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#health-score-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/customer-health-core/src/libs/problems/HealthProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"idempotency-core/invalid-key"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-invalid-key"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `53`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/key-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-key-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `37`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-expired"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `78`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `64`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Conflict"`; `code`: `"idempotency-core/reservation-state"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#idempotency-core-reservation-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/idempotency-core/src/libs/problems/IdempotencyProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `97`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"IMPERSONATION_IDENTITY_CONFLICT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-identity-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"IMPERSONATION_REASON_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-reason-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `40`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"IMPERSONATION_SESSION_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-session-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `58`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"IMPERSONATION_TARGET_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#impersonation-target-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `22`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"INDEX_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#index-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"integrations-posthog/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#integrations-posthog-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/integrations-posthog/src/libs/problems/PostHogProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_AUTO_JOIN_ROLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-auto-join-role"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/invitation-core/src/libs/problems/DomainPolicyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_CURSOR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-cursor"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/pagination-core/src/libs/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"INVALID_RETRY_CONFIGURATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-retry-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"INVALID_ROLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invalid-role"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `44`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"INVITATION_ALREADY_ACCEPTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-already-accepted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `26`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"INVITATION_EMAIL_MISMATCH"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-email-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `37`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Gone"`; `code`: `"INVITATION_EXPIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-expired"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource is no longer available through this API surface."`; `operatorAction`: `"Verify lifecycle, migration, deprecation, and retention state."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Stop using the stale reference and follow the replacement flow when available."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `15`; \}\]; `status`: `410`; `title`: `"Gone"`; \}, \{ `category`: `"Conflict"`; `code`: `"INVITATION_INVALID_STATUS"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-invalid-status"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"INVITATION_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/InvitationProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"INVITATION_RATE_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/RateLimitProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"BadRequest"`; `code`: `"invitation-core/batch-size-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#invitation-core-batch-size-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/invitation-core/src/libs/problems/BatchInviteProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"LAMBDA_TIMEOUT_GUARD"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lambda-timeout-guard"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `33`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"LAST_OWNER"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#last-owner"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/action-adapter-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-action-adapter-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `37`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/duplicate-rule"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-duplicate-rule"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"lifecycle-core/rule-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#lifecycle-core-rule-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/lifecycle-core/src/libs/problems/LifecycleProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"LLM_PROVIDER_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-provider-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"LLM_SERVICE_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-service-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-core/invalid-llm-prompt"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-invalid-llm-prompt"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `85`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-core/invalid-llm-response"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-invalid-llm-response"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-core/llm-service-not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-llm-service-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"llm-core/rate-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-core-rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `43`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"Forbidden"`; `code`: `"llm-metering/cost-limit-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-cost-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `41`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"llm-metering/pricing-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-pricing-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-class"`; `line`: `58`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Conflict"`; `code`: `"llm-metering/pricing-registry-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-pricing-registry-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `71`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"Forbidden"`; `code`: `"llm-metering/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-metering/record-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-metering-record-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-metering/src/libs/problems/LlmMeteringProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-openai/aborted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `117`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"llm-openai/authentication-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-authentication-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `42`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/invalid-response"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-invalid-response"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `135`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `24`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"llm-openai/rate-limited"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-rate-limited"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `72`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"llm-openai/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `87`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"llm-openai/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#llm-openai-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-openai/src/libs/problems/OpenAiProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Forbidden"`; `code`: `"MEMBERSHIP_CONSTRAINT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#membership-constraint"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipConstraintProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"MEMBERSHIP_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#membership-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"meta-vite/server-action-invalid-path"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-invalid-path"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `80`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"meta-vite/server-action-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"meta-vite/server-action-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meta-vite-server-action-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/meta-vite/src/libs/actions/serverActions.ts"`; `kind`: `"problem-class"`; `line`: `94`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"meter/insert-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#meter-insert-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/metering-drizzle/src/libs/DrizzleMeterRepository.ts"`; `kind`: `"problem-factory"`; `line`: `131`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering-upstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-upstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metering-upstash/src/libs/problems/UpstashMeteringProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering/atomic-quota-not-supported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-atomic-quota-not-supported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metering-core/src/libs/problems/AtomicQuotaNotSupportedProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"metering/duplicate-record"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-duplicate-record"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/DuplicateRecordProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"metering/invalid-meter"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-invalid-meter"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/InvalidMeterProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"metering/quota-exceeded"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-quota-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/QuotaExceededProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metering/redis-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metering-redis-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/metering-core/src/libs/problems/RedisProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metrics-billing/metric-dropped"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-billing-metric-dropped"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Billing metrics could not be recorded because the referenced account, subscription, or plan evidence was missing."`; `operatorAction`: `"Use extensions.reason, tenantId, resourceId, and eventKey to rebuild the missing account, subscription, or plan before replay."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Restore the missing billing state identified by reason/resourceId, then replay the same billing event with the same event key."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-billing/src/libs/problems/BillingMetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"metrics-billing/recording-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-billing-recording-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-billing/src/libs/problems/BillingMetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"metrics-core/carrying-capacity-simulation-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-carrying-capacity-simulation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/carrying-capacity-tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-carrying-capacity-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/gross-margin-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-gross-margin-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/mixed-currency-mrr"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-mixed-currency-mrr"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"metrics-core/retention-metrics-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-retention-metrics-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/problems/MetricsProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"ValidationError"`; `code`: `"metrics-core/snapshot-tenant-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#metrics-core-snapshot-tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/metrics-core/src/libs/SnapshotScheduler.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"MIDDLEWARE_EXECUTION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#middleware-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/framework-context/src/libs/problems/MiddlewareProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/database-url-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-database-url-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/DatabaseUrlRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Conflict"`; `code`: `"migration-runner/history-drift"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-history-drift"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Recorded migration history no longer matches the available migration files by stable id and name."`; `operatorAction`: `"Compare the checkpoint rows with version-controlled migration files, restore missing or renamed files when possible, and repair history only after verifying the deployed schema."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Restore the original migration file identity or ask an operator to perform an explicitly verified history repair."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MigrationHistoryDriftProblem.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/invalid-count"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-invalid-count"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/InvalidMigrationCountProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/missing-down-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-missing-down-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MissingDownFunctionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/missing-up-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-missing-up-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MissingUpFunctionProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"migration-runner/transaction-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-transaction-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/MigrationTransactionRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"migration-runner/unsupported-dialect"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-unsupported-dialect"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/UnsupportedDialectProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"migration-runner/unsupported-query-result"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#migration-runner-unsupported-query-result"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/migration-runner/src/libs/problems/UnsupportedMigrationQueryResultProblem.ts"`; `kind`: `"problem-class"`; `line`: `11`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"MISSING_TENANT"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#missing-tenant"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"NotFound"`; `code`: `"MODEL_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#model-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `25`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Forbidden"`; `code`: `"NESTED_IMPERSONATION_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#nested-impersonation-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/default-provider-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-default-provider-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `80`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/delivery-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-delivery-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `152`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/idempotency-key-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-idempotency-key-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `224`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/outbox-idempotency-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-outbox-idempotency-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `240`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/preference-channel-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-channel-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `207`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/preference-context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `191`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"notifications-core/preference-denied"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-preference-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `169`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-already-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-already-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `64`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-channel-mismatch"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-channel-mismatch"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `32`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `120`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/provider-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-provider-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-core/send-max-attempts-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-send-max-attempts-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `136`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"notifications-core/template-already-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-already-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `256`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"notifications-core/template-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `274`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-core/template-variables-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-core-template-variables-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-core/src/libs/problems/NotificationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `293`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"notifications-resend/idempotency-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-idempotency-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend rejected reuse of an idempotency key for a different send request."`; `operatorAction`: `"Audit callers so each business send intent has one stable idempotency key."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Replay the original payload with the same key or use a new key for a changed send intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `54`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Required Resend configuration is absent or blank before provider readiness can be proven."`; `operatorAction`: `"Check deployment env/config injection and verify diagnostics do not expose the raw key."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Configure RESEND_API_KEY and a verified default sender, then rerun diagnostics."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend returned a transient status, rate limit, or network timeout."`; `operatorAction`: `"Check Resend status, rate limits, and retry-after/upstream status in telemetry."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry with the same idempotency key when the send intent is unchanged."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"notifications-resend/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Resend rejected the request with a non-retryable upstream failure."`; `operatorAction`: `"Inspect redacted upstream code/status and fix provider configuration before retrying."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Do not retry unchanged input; correct the API key, domain, sender verification, or request content."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `76`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"notifications-resend/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#notifications-resend-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `40`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"onboarding/context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"NotFound"`; `code`: `"onboarding/definition-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-definition-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"onboarding/step-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#onboarding-step-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/onboarding-core/src/libs/problems/OnboardingProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"openapi-spec/controller-typescript-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-controller-typescript-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/loadControllers.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"openapi-spec/invalid-contract"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-invalid-contract"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/emitOpenAPI.ts"`; `kind`: `"problem-constructor"`; `line`: `106`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"openapi-spec/no-rest-controllers-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#openapi-spec-no-rest-controllers-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/openapi-spec/src/libs/loadControllers.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"OTLP_ENDPOINT_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#otlp-endpoint-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/dispatch-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-dispatch-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `86`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/failure-metadata-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-failure-metadata-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A dispatcher attempted to mark an outbox record failed without the required retry metadata extensions."`; `operatorAction`: `"Audit dispatcher error mapping so every failure path preserves attempt, retryability, terminal state, and failedAt metadata."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Abort the dispatch attempt and pass an OutboxDispatchProblem or equivalent Problem with outbox retry metadata."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `116`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"outbox-core/record-id-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-record-id-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A caller tried to create an outbox record with an explicit id that already belongs to another idempotency scope."`; `operatorAction`: `"Inspect the producer id/idempotency assignment path and remove any shared id generator or manual id reuse."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Reuse the original idempotency key for the same intent or choose a new record id for a different intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `103`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"outbox-core/unit-of-work-context-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#outbox-core-unit-of-work-context-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"An outbox write received a Unit of Work context that was missing, malformed, or created by another store instance."`; `operatorAction`: `"Check transaction boundary wiring so repository and outbox writes share the same store-owned Unit of Work client."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Abort the write and use the context supplied by the active TransactionalOutboxStore.runInUnitOfWork callback."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/outbox-core/src/libs/problems/OutboxProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `129`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"OWNERSHIP_TRANSFER_REQUIRED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ownership-transfer-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"problems-core/invalid-extensions"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-invalid-extensions"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/problems-core/src/libs/problems/InvalidExtensionsProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"problems-core/parse-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-parse-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/problems-core/src/libs/problems/ProblemDetailsParseProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"problems-core/problem-registry-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-problem-registry-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/problems-core/src/libs/ProblemRegistry.ts"`; `kind`: `"problem-constructor"`; `line`: `210`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"problems-core/unhandled-category"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#problems-core-unhandled-category"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/problems-core/src/libs/ProblemCategoryMapper.ts"`; `kind`: `"problem-class"`; `line`: `19`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-core/contract-graph-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-core-contract-graph-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/protocols-core/src/libs/ContractGraph.ts"`; `kind`: `"problem-constructor"`; `line`: `142`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-graphql/auth-invalid-header-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-header-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `71`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-graphql/auth-invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `54`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-graphql/auth-invalid-token"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-invalid-token"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `14`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-graphql/auth-missing-header"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-missing-header"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `63`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-graphql/auth-verifier-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-auth-verifier-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-graphql/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `97`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"protocols-graphql/guard-denied"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-graphql-guard-denied"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-graphql/src/libs/problems/GuardProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-rest/auth-invalid-header-format"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-header-format"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `77`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"protocols-rest/auth-invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `59`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-rest/auth-invalid-token"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-invalid-token"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `15`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"protocols-rest/auth-missing-header"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-missing-header"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `69`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/auth-verifier-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-auth-verifier-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/guards/AuthGuard.ts"`; `kind`: `"problem-factory"`; `line`: `102`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/duplicate-parameter-index"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-duplicate-parameter-index"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/protocols-rest/src/libs/metadata/MetadataReader.ts"`; `kind`: `"problem-factory"`; `line`: `48`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-rest/request-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-request-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `31`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-rest/response-validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-response-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"protocols-rest/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-rest-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-rest/src/libs/validators/ValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `12`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"protocols-trpc/route-handler-not-callable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#protocols-trpc-route-handler-not-callable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/protocols-trpc/src/libs/createTrpcRouter.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"PUBLIC_EMAIL_DOMAIN_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#public-email-domain-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/invitation-core/src/libs/problems/DomainPolicyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"TooManyRequests"`; `code`: `"RATE_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller exceeded a rate, quota, or concurrency limit."`; `operatorAction`: `"Check limiter state, quota configuration, and abuse signals."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Wait for the retry window or reduce request volume."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitExceededProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `429`; `title`: `"Too Many Requests"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RATE_LIMIT_KEY_BUILDER_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-key-builder-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RATE_LIMIT_REFUND_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-refund-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `25`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"RATE_LIMIT_WINDOW_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rate-limit-window-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-core/src/libs/problems/RateLimitConfigProblems.ts"`; `kind`: `"problem-class"`; `line`: `14`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ratelimit-upstash/invalid-policy"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ratelimit-upstash-invalid-policy"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-upstash/src/libs/problems/RateLimitUpstashProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"ratelimit-upstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#ratelimit-upstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/ratelimit-upstash/src/libs/problems/RateLimitUpstashProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-factory-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-factory-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-factory-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-factory-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"repository-core/batch-loader-scope-collision"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#repository-core-batch-loader-scope-collision"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/repository-core/src/libs/problems/BatchLoadProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RESEND_NOTIFICATION_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#resend-notification-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/notifications-resend/src/libs/problems/ResendNotificationProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `87`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_ABORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryAbortedProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_CIRCUIT_BREAKER_INVALID_STATE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-circuit-breaker-invalid-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_CIRCUIT_BREAKER_LOCK_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-circuit-breaker-lock-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryInfrastructureProblem.ts"`; `kind`: `"problem-class"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"RETRY_EXHAUSTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-exhausted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/errors/RetryExhaustedProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"retry-core/circuit-breaker-unexpected-state"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#retry-core-circuit-breaker-unexpected-state"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/retry-core/src/libs/problems/CircuitBreakerProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"ROLE_HIERARCHY_VIOLATION"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#role-hierarchy-violation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/controller-typescript-diagnostics"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-controller-typescript-diagnostics"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/loadRoutes.ts"`; `kind`: `"problem-constructor"`; `line`: `72`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/invalid-contract"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-invalid-contract"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `110`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"rpc-codegen/no-rest-controllers-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-no-rest-controllers-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/loadRoutes.ts"`; `kind`: `"problem-constructor"`; `line`: `33`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"ValidationError"`; `code`: `"rpc-codegen/unsupported-form-schema"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#rpc-codegen-unsupported-form-schema"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/rpc-codegen/src/libs/generate.ts"`; `kind`: `"problem-constructor"`; `line`: `116`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"saas-demo/demo-endpoint-disabled"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-demo-endpoint-disabled"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"saas-demo/invalid-jobs-query"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-invalid-jobs-query"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `30`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"saas-demo/invalid-port"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-invalid-port"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `17`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"saas-demo/job-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-job-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `39`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"saas-demo/smoke-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-smoke-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `66`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"saas-demo/tenant-already-exists"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-tenant-already-exists"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `48`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"saas-demo/tenant-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#saas-demo-tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/saas/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `57`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"SEARCH_CAPABILITY_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-capability-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `65`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"SEARCH_DRIZZLE_INVALID_ROW"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-drizzle-invalid-row"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/search-drizzle/src/libs/problems/InvalidSearchRowProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"search-core/sync-identity-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-core-sync-identity-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The event envelope tenant or document identity conflicts with context.tenantId, payload.id, or payload.tenantId."`; `operatorAction`: `"Use extensions.source to identify the conflicting field and verify envelope-authoritative tenant and document identity propagation."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Correct the conflicting event or execution context, then replay the event."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `23`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"NotFound"`; `code`: `"search-core/transform-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-core-transform-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-class"`; `line`: `35`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"NotFound"`; `code`: `"search-meilisearch/index-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-index-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `80`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"ValidationError"`; `code`: `"search-meilisearch/invalid-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-invalid-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `60`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `39`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `100`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/tenant-token-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-tenant-token-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `140`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"search-meilisearch/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#search-meilisearch-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-meilisearch/src/libs/problems/MeilisearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `120`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"SEAT_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#seat-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/membership-core/src/libs/problems/MembershipProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `78`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"Forbidden"`; `code`: `"SELF_IMPERSONATION_NOT_ALLOWED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#self-impersonation-not-allowed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/impersonation-core/src/libs/problems/ImpersonationProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"ValidationError"`; `code`: `"starter/invalid-environment"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#starter-invalid-environment"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/spa-be-split/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"starter/user-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#starter-user-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/create-croco-app/templates/spa-be-split/apps/api-server/src/problems.ts"`; `kind`: `"problem-class"`; `line`: `13`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_DELETE_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-delete-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/DeleteFailedProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"STORAGE_FILE_NOT_FOUND"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-file-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/FileNotFoundProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"BadRequest"`; `code`: `"STORAGE_INVALID_KEY"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-invalid-key"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-core/src/libs/problems/InvalidKeyProblem.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_EMPTY_BODY"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-empty-body"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-r2/src/libs/problems/EmptyR2BodyProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `9`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_MISSING_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/MissingR2ConfigProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_OBJECT_TOO_LARGE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-object-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/R2ObjectTooLargeProblem.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_R2_READINESS_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-r2-readiness-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/storage-r2/src/libs/problems/R2ReadinessProblem.ts"`; `kind`: `"problem-class"`; `line`: `14`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STORAGE_UPLOAD_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-upload-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-core/src/libs/problems/UploadFailedProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `11`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `37`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `70`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudflare/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `86`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"storage-cloudflare/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudflare-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `57`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"storage-cloudinary/invalid-upload-intent-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-invalid-upload-intent-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryProvider.ts"`; `kind`: `"problem-factory"`; `line`: `331`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `51`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/retryable-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-retryable-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `84`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"storage-cloudinary/terminal-upstream"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-terminal-upstream"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `100`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"storage-cloudinary/validation-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-cloudinary-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/storage-cloudinary/src/libs/CloudinaryDiagnosticsProvider.ts"`; `kind`: `"problem-constructor"`; `line`: `71`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"storage/invalid-upload-intent-ttl"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#storage-invalid-upload-intent-ttl"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/storage-cloudflare/src/libs/CloudflareImagesProvider.ts"`; `kind`: `"problem-factory"`; `line`: `305`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STRATEGY_UNAVAILABLE"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#strategy-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/search-core/src/libs/problems/SearchProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `44`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"STRUCTURED_OUTPUT_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#structured-output-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/duplicate-task-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-duplicate-task-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `13`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/execution-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-execution-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `46`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"tasks-core/task-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-task-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-core/task-runner-di-failure"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-core-task-runner-di-failure"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tasks-core/src/libs/problems/TasksProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"tasks-qstash/invalid-publish-request"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-qstash-invalid-publish-request"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-qstash/src/libs/problems/QStashTaskProblems.ts"`; `kind`: `"problem-class"`; `line`: `18`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tasks-qstash/missing-config"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tasks-qstash-missing-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tasks-qstash/src/libs/problems/QStashTaskProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"TELEMETRY_AUTO_INSTRUMENTATION_INVALID_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-auto-instrumentation-invalid-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryAutoInstrumentationProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"NotImplemented"`; `code`: `"TELEMETRY_FORCE_FLUSH_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-force-flush-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested capability is not supported by this runtime or adapter."`; `operatorAction`: `"Check runtime capability declarations and provider maturity documentation."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Use a supported capability or choose an adapter/runtime that provides it."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `62`; \}\]; `status`: `501`; `title`: `"Not Implemented"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"TELEMETRY_RUNTIME_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-runtime-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `75`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TELEMETRY_SAMPLER_INVALID_CONFIG"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-sampler-invalid-config"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `8`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TELEMETRY_SIGNAL_UNSUPPORTED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#telemetry-signal-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/telemetry-sdk-node/src/libs/problems/TelemetryProblems.ts"`; `kind`: `"problem-class"`; `line`: `36`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"Forbidden"`; `code`: `"tenant-core/admin-bypass-reason-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-admin-bypass-reason-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `60`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/cross-tenant-leak"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-cross-tenant-leak"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `79`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"tenant-core/default-tenant-fallback"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-default-tenant-fallback"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `48`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/duplicate-tenant-manager-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-duplicate-tenant-manager-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/DuplicateTenantManagerRegistrationProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"tenant-core/isolation-context-missing"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-isolation-context-missing"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `39`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tenant-core/tenant-manager-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-tenant-manager-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantManagerNotRegisteredProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Forbidden"`; `code`: `"tenant-core/unsafe-query"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-core-unsafe-query"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The authenticated caller is not allowed to perform the requested action."`; `operatorAction`: `"Review policy, role, tenant, entitlement, and impersonation context."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Request the required permission or choose an allowed action."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/tenant-core/src/libs/problems/TenantIsolationProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `69`; \}\]; `status`: `403`; `title`: `"Forbidden"`; \}, \{ `category`: `"NotFound"`; `code`: `"tenant/not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantNotFoundProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"tenant/required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tenant-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tenant-core/src/libs/problems/TenantRequiredProblem.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/after-commit-hooks-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-after-commit-hooks-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/testing.ts"`; `kind`: `"problem-constructor"`; `line`: `178`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/telemetry-provider-already-installed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-telemetry-provider-already-installed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/telemetry-testing.ts"`; `kind`: `"problem-constructor"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"testing/transaction-context-not-active"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#testing-transaction-context-not-active"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/testing/src/libs/testing.ts"`; `kind`: `"problem-constructor"`; `line`: `165`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"TOKEN_LIMIT_EXCEEDED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#token-limit-exceeded"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `21`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"TOOL_EXECUTION_ERROR"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tool-execution-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/llm-core/src/libs/problems/LlmServiceProblem.ts"`; `kind`: `"problem-constructor"`; `line`: `61`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"transports-graphql/request-body-aborted"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-request-body-aborted"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `47`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"PayloadTooLarge"`; `code`: `"transports-graphql/request-body-too-large"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-request-body-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request body exceeded the configured byte limit."`; `operatorAction`: `"Confirm route body limits and upstream proxy limits match the intended upload policy."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Reduce the request body and retry."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `33`; \}\]; `status`: `413`; `title`: `"Payload Too Large"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/resolvers-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-resolvers-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/schema-not-configured"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-schema-not-configured"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-graphql/server-not-initialized"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-graphql-server-not-initialized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-graphql/src/libs/problems/GraphQLTransportProblems.ts"`; `kind`: `"problem-class"`; `line`: `24`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/body-limit-invalid-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-body-limit-invalid-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The HTTP body-limit middleware was configured with an invalid byte boundary."`; `operatorAction`: `"Set the body-limit value to a finite, nonnegative safe integer and restart the service."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the service configuration before retrying."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/di-bootstrap-validation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-di-bootstrap-validation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-factory"`; `line`: `283`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/duplicate-health-check"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-duplicate-health-check"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `10`; `file`: `"packages/transports-http/src/libs/HealthCheckRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `71`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/duplicate-route-definition"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-duplicate-route-definition"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Two REST controller methods compile to the same HTTP method and runtime path."`; `operatorAction`: `"Inspect the duplicate-route diagnostic for the existing and conflicting controller methods and their route decorator source locations, then rename one route path or change one HTTP method."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Use an application build where every route decorator has a unique HTTP method and path combination."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `115`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/graceful-shutdown-configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-graceful-shutdown-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Graceful shutdown was configured with a non-finite total or event-bus drain timeout."`; `operatorAction`: `"Set timeoutMs and eventBusDrainTimeoutMs to finite numbers, then reconstruct the middleware or controller before retrying shutdown."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the graceful shutdown timeout configuration before reconstructing the HTTP application."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/GracefulShutdownProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `20`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/graceful-shutdown-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-graceful-shutdown-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Graceful shutdown did not finish a phase before that phase's configured deadline elapsed."`; `operatorAction`: `"Inspect the reported phase, timeoutMs, and elapsedMs extensions, then investigate slow request handlers, event-bus draining, or shutdown hooks."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Wait for the stalled shutdown phase to be investigated before retrying; active requests or cleanup work may still be settling."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/GracefulShutdownProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `47`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/middleware-next-called-multiple-times"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-middleware-next-called-multiple-times"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Compatibility metadata for the previous HTTP middleware multiple-next code. New runtime failures use CROCO_HTTP_MIDDLEWARE_002 and preserve this value as extensions.legacyCode."`; `operatorAction`: `"Update dashboards, alerts, and runbooks from transports-http/middleware-next-called-multiple-times to CROCO_HTTP_MIDDLEWARE_002 before removing legacy-code matching."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Migrate Problem.code matchers to CROCO_HTTP_MIDDLEWARE_002; use extensions.legacyCode only while rolling out compatibility changes."`; \}; `sources`: readonly \[\{ `column`: `49`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-metadata"`; `line`: `39`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/pipe-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-pipe-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/transports-http/src/libs/ParamResolver.ts"`; `kind`: `"problem-factory"`; `line`: `159`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/provider-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-provider-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `67`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"transports-http/request-body-read-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-read-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `67`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"PayloadTooLarge"`; `code`: `"transports-http/request-body-too-large"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-too-large"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request body exceeded the configured byte limit."`; `operatorAction`: `"Confirm route body limits and upstream proxy limits match the intended upload policy."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Reduce the request body and retry."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `413`; `statusPolicy`: \{ `configuration`: `"bodyLimitMiddleware.statusCode"`; `defaultStatus`: `413`; `kind`: `"runtime-configurable"`; \}; `title`: `"Payload Too Large"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/request-body-unavailable"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-request-body-unavailable"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/transports-http/src/libs/problems/HttpRequestBodyProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `52`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/route-method-not-function"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-route-method-not-function"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/transports-http/src/libs/RouteCompiler.ts"`; `kind`: `"problem-factory"`; `line`: `175`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"transports-http/runtime-capability-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-runtime-capability-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/transports-http/src/libs/runtimeContext.ts"`; `kind`: `"problem-class"`; `line`: `88`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/security-middleware-validation"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-security-middleware-validation"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Compatibility metadata for the previous HTTP security middleware validation code. New runtime failures use CROCO_HTTP_SECURITY_001 and preserve this value as extensions.legacyCode."`; `operatorAction`: `"Update dashboards, alerts, and runbooks from transports-http/security-middleware-validation to CROCO_HTTP_SECURITY_001 before removing legacy-code matching."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Migrate Problem.code matchers to CROCO_HTTP_SECURITY_001; use extensions.legacyCode only while rolling out compatibility changes."`; \}; `sources`: readonly \[\{ `column`: `55`; `file`: `"packages/transports-http/src/libs/CrocoApp.ts"`; `kind`: `"problem-metadata"`; `line`: `79`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"transports-http/unsupported-route-method"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#transports-http-unsupported-route-method"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/transports-http/src/libs/CrocoRouteRegistrar.ts"`; `kind`: `"problem-factory"`; `line`: `245`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-core/duplicate-trigger-metadata"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-core-duplicate-trigger-metadata"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/triggers-core/src/libs/TriggerRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `69`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-core/duplicate-trigger-metadata-entry"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-core-duplicate-trigger-metadata-entry"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `17`; `file`: `"packages/triggers-core/src/libs/TriggerRegistry.ts"`; `kind`: `"problem-factory"`; `line`: `121`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/duplicate-schedule-id"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-duplicate-schedule-id"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/triggers-qstash/src/libs/QStashScheduler.ts"`; `kind`: `"problem-factory"`; `line`: `253`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/execution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-execution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `13`; `file`: `"packages/triggers-qstash/src/libs/QStashTriggerHandler.ts"`; `kind`: `"problem-metadata"`; `line`: `264`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"triggers-qstash/service-resolution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#triggers-qstash-service-resolution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `15`; `file`: `"packages/triggers-qstash/src/libs/QStashTriggerHandler.ts"`; `kind`: `"problem-metadata"`; `line`: `254`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/after-commit-hooks-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-after-commit-hooks-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `54`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/decorator-misuse"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-decorator-misuse"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `16`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/duplicate-tx-manager-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-duplicate-tx-manager-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"ValidationError"`; `code`: `"tx-core/invalid-transaction-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-invalid-transaction-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request or generated contract failed schema or semantic validation."`; `operatorAction`: `"Inspect schema diagnostics, generated contracts, and validation metadata."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Fix the invalid fields and retry with schema-conformant input."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `38`; \}\]; `status`: `422`; `title`: `"Validation Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/manager-not-registered"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-manager-not-registered"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `23`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/missing-transaction-context"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-missing-transaction-context"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `27`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BusinessRuleViolation"`; `code`: `"tx-core/propagation-error"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-propagation-error"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request is syntactically valid but violates a domain rule."`; `operatorAction`: `"Review domain policy, entitlement, quota, and lifecycle rule evidence."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Change the workflow state or request values so the business rule is satisfied."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/errors.ts"`; `kind`: `"problem-class"`; `line`: `34`; \}\]; `status`: `422`; `title`: `"Business Rule Violation"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-core/transaction-timeout"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-core-transaction-timeout"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-core/src/libs/problems/TransactionProblems.ts"`; `kind`: `"problem-class"`; `line`: `78`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-configuration-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-configuration-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"A PostgreSQL RLS helper received malformed static identifier or setting-key configuration."`; `operatorAction`: `"Use the reported field name and the @croco/tx-drizzle RLS contract to correct the configuration, then restart the service."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to correct the RLS configuration before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `7`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-debug-logging-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-debug-logging-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Requested RLS debug logging could not initialize or write its diagnostic event."`; `operatorAction`: `"Provide an RlsLogger or register the framework Logger, then verify its info() output path before retrying the transaction."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Ask the operator to restore the configured logger before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `57`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/rls-execute-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-rls-execute-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `29`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/savepoint-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-savepoint-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `76`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"tx-drizzle/tenant-context-required"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#tx-drizzle-tenant-context-required"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/tx-drizzle/src/libs/problems/TxDrizzleProblems.ts"`; `kind`: `"problem-class"`; `line`: `21`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Unauthorized"`; `code`: `"UNAUTHORIZED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#unauthorized"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request did not include valid authentication credentials."`; `operatorAction`: `"Check authentication configuration, token issuer, and clock skew."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Sign in again or provide a valid credential."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/auth-core/src/libs/problems/AuthProblems.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `401`; `title`: `"Unauthorized"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"WEBHOOK_PROCESSING_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhook-processing-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/WebhookProcessingProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"WEBHOOK_VALIDATION_FAILED"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhook-validation-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/billing-polar/src/libs/problems/WebhookValidationProblem.ts"`; `kind`: `"problem-class"`; `line`: `4`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/configuration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-configuration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `38`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/dispatch-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-dispatch-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `117`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"webhooks-core/duplicate-event"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-duplicate-event"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `139`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-envelope"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-envelope"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `74`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-fixture"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-fixture"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `178`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/invalid-signature"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-invalid-signature"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `54`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"webhooks-core/reporter-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-reporter-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `162`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"BadRequest"`; `code`: `"webhooks-core/unknown-event"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#webhooks-core-unknown-event"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The caller sent malformed input or unsupported request options."`; `operatorAction`: `"Inspect validation details and request logs; do not retry unchanged input."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Correct the request input and retry after validation passes."`; \}; `sources`: readonly \[\{ `column`: `11`; `file`: `"packages/webhooks-core/src/libs/problems/WebhookProblems.ts"`; `kind`: `"problem-metadata"`; `line`: `94`; \}\]; `status`: `400`; `title`: `"Bad Request"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/duplicate-workflow-registration"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-duplicate-workflow-registration"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `15`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/replay-unsupported"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-replay-unsupported"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `47`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `62`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-execution-failed"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-execution-failed"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `127`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"workflow-core/saga-execution-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-execution-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-class"`; `line`: `77`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/saga-replay-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-replay-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `103`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"Conflict"`; `code`: `"workflow-core/saga-store-conflict"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-saga-store-conflict"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The request conflicts with current state or an idempotency constraint."`; `operatorAction`: `"Inspect concurrent writes, idempotency keys, and uniqueness constraints."`; `redactionPolicy`: `"safe-message"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.warning"`; `severity`: `"warning"`; \}; `userAction`: `"Refresh state, resolve the conflict, and retry with the updated intent."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `92`; \}\]; `status`: `409`; `title`: `"Conflict"`; \}, \{ `category`: `"InternalServerError"`; `code`: `"workflow-core/workflow-definition-invalid"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-workflow-definition-invalid"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"Croco or an upstream dependency failed after accepting the request."`; `operatorAction`: `"Use traces, logs, and upstream diagnostics to isolate the failing boundary."`; `redactionPolicy`: `"operator-only"`; `retryability`: `"conditional"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.error"`; `severity`: `"error"`; \}; `userAction`: `"Retry later only when the operation is idempotent or the caller owns retry safety."`; \}; `sources`: readonly \[\{ `column`: `5`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-constructor"`; `line`: `31`; \}\]; `status`: `500`; `title`: `"Internal Server Error"`; \}, \{ `category`: `"NotFound"`; `code`: `"workflow-core/workflow-not-found"`; `cookbookPath`: `"/reference/problem-recovery-cookbook/#workflow-core-workflow-not-found"`; `lifecycle`: \{ `status`: `"active"`; \}; `recovery`: \{ `cause`: `"The requested resource or route-visible record does not exist."`; `operatorAction`: `"Confirm tenant scoping, data retention, and backing-store lookup behavior."`; `redactionPolicy`: `"public"`; `retryability`: `"not-retryable"`; `telemetry`: \{ `attributes`: readonly \[`"problem.code"`, `"problem.category"`, `"problem.status"`\]; `eventName`: `"croco.problem.info"`; `severity`: `"info"`; \}; `userAction`: `"Verify the identifier and refresh the resource list before retrying."`; \}; `sources`: readonly \[\{ `column`: `3`; `file`: `"packages/workflow-core/src/libs/problems/WorkflowProblems.ts"`; `kind`: `"problem-class"`; `line`: `5`; \}\]; `status`: `404`; `title`: `"Not Found"`; \}\] ### version diff --git a/packages/docs/src/content/docs/en/reference/problem-recovery-cookbook.md b/packages/docs/src/content/docs/en/reference/problem-recovery-cookbook.md index 3bf1e3dd4..0db7cddf3 100644 --- a/packages/docs/src/content/docs/en/reference/problem-recovery-cookbook.md +++ b/packages/docs/src/content/docs/en/reference/problem-recovery-cookbook.md @@ -6202,7 +6202,7 @@ Sources: Sources: -- `packages/rpc-codegen/src/libs/generate.ts:105:5` (problem-constructor) +- `packages/rpc-codegen/src/libs/generate.ts:110:5` (problem-constructor) @@ -6238,7 +6238,7 @@ Sources: Sources: -- `packages/rpc-codegen/src/libs/generate.ts:111:5` (problem-constructor) +- `packages/rpc-codegen/src/libs/generate.ts:116:5` (problem-constructor) diff --git a/packages/openapi-spec/src/libs/cli.ts b/packages/openapi-spec/src/libs/cli.ts index 78f2bbeb9..895a4dd9f 100644 --- a/packages/openapi-spec/src/libs/cli.ts +++ b/packages/openapi-spec/src/libs/cli.ts @@ -9,6 +9,7 @@ import type { EmitOpenAPIOptions } from "./emitOpenAPI"; type CliOptions = { readonly controllers: string; readonly outFile: string | null; + readonly outputCheck: boolean; readonly title: string; readonly version: string; readonly servers: { readonly url: string }[]; @@ -49,17 +50,12 @@ export async function runCli(args: readonly string[], io: CliIo = defaultCliIo): return 1; } - const [ - { writeFile }, - { buildContractGraph }, - { emitOpenAPIFromContractGraph }, - { loadControllers }, - ] = await Promise.all([ - import("node:fs/promises"), - import("@croco/protocols-core"), - import("./emitOpenAPI"), - import("./loadControllers"), - ]); + const [{ buildContractGraph }, { emitOpenAPIFromContractGraph }, { loadControllers }] = + await Promise.all([ + import("@croco/protocols-core"), + import("./emitOpenAPI"), + import("./loadControllers"), + ]); const controllers = await loadControllers(result.options.controllers); const graph = buildContractGraph(controllers, { strictProblemResponses: result.options.strictProblems, @@ -93,8 +89,26 @@ export async function runCli(args: readonly string[], io: CliIo = defaultCliIo): } const document = emitOpenAPIFromContractGraph(graph, toEmitOpenAPIOptions(result.options)); + const { checkOpenAPIOutput, serializeOpenAPIDocument } = await import("./output"); + const content = serializeOpenAPIDocument(document); - await writeFile(outFile, JSON.stringify(document, null, 2)); + if (result.options.outputCheck) { + const drift = await checkOpenAPIOutput(outFile, content); + + if (!drift) { + io.stdout(`Generated OpenAPI output is current: ${outFile}`); + return 0; + } + + io.stdout(`[CROCO_OPENAPI_OUTPUT_${drift.toUpperCase()}] ${outFile}`); + io.stdout( + `OpenAPI output drift detected. Regenerate with: ${formatRegenerationCommand("croco-openapi-spec", args)}`, + ); + return 1; + } + + const { writeFile } = await import("node:fs/promises"); + await writeFile(outFile, content); return 0; } @@ -113,10 +127,17 @@ export function parseArgs(args: readonly string[]): CliParseResult { const controllers = getFlagValue(args, CLI_FLAGS.value.controllers); const outFile = getFlagValue(args, CLI_FLAGS.value.out); const check = args.includes(CLI_FLAGS.boolean.check); + const outputCheck = args.includes(CLI_FLAGS.boolean.outputCheck); const strictProblems = parseStrictProblems(args); const strictSchemas = parseStrictSchemas(args); - if (!controllers || (!outFile && !check) || strictProblems === null || strictSchemas === null) { + if ( + !controllers || + (!outFile && !check) || + (check && outputCheck) || + strictProblems === null || + strictSchemas === null + ) { return { kind: "invalid" }; } @@ -125,6 +146,7 @@ export function parseArgs(args: readonly string[]): CliParseResult { options: { controllers, outFile, + outputCheck, title: getFlagValue(args, CLI_FLAGS.value.title) ?? "Croco API", version: getFlagValue(args, CLI_FLAGS.value.version) ?? "1.0.0", servers: getFlagValues(args, CLI_FLAGS.value.server).map((url) => ({ url })), @@ -201,6 +223,7 @@ const CLI_FLAGS = { failOnDiagnostics: "--fail-on-diagnostics", help: "--help", helpShort: "-h", + outputCheck: "--output-check", strictProblems: "--strict-problems", strictSchemas: "--strict-schemas", }, @@ -250,6 +273,18 @@ function getFlagValues(args: readonly string[], flag: string): string[] { }); } +function formatRegenerationCommand(binary: string, args: readonly string[]): string { + const generationArgs = args.filter((argument) => argument !== CLI_FLAGS.boolean.outputCheck); + + return [binary, ...generationArgs].map(quoteShellArgument).join(" "); +} + +function quoteShellArgument(argument: string): string { + return /^[A-Za-z0-9_./:@%+=,-]+$/.test(argument) + ? argument + : `'${argument.replace(/'/g, `'"'"'`)}'`; +} + function printHelp(io: CliIo): void { io.stdout(`Usage: croco-openapi-spec --controllers --out [--title ] [--version ] [--server ] [--bearer-auth [name]] croco-openapi-spec --controllers --check [--strict-problems] @@ -264,6 +299,7 @@ Options: --manifest-bundle Reference the shared Project manifest bundle in generated OpenAPI --check Validate the canonical contract graph without writing OpenAPI + --output-check Fail when generated OpenAPI output drifts without writing files --strict-problems Warn when routes do not declare generated client Problem unions (default) --compatibility-problems Allow legacy routes without declared generated client Problem unions diff --git a/packages/openapi-spec/src/libs/output.ts b/packages/openapi-spec/src/libs/output.ts new file mode 100644 index 000000000..a4cf45a64 --- /dev/null +++ b/packages/openapi-spec/src/libs/output.ts @@ -0,0 +1,36 @@ +import { readFile } from "node:fs/promises"; + +export type OpenAPIOutputDrift = "changed" | "missing"; + +export function serializeOpenAPIDocument(document: unknown): string { + return JSON.stringify(document, null, 2); +} + +export async function checkOpenAPIOutput( + outFile: string, + expectedContent: string, +): Promise { + let actualContent: string; + + try { + actualContent = await readFile(outFile, "utf8"); + } catch (error) { + if (isErrorWithCode(error, "ENOENT")) { + return "missing"; + } + + throw error; + } + + return normalizeGeneratedContent(actualContent) === normalizeGeneratedContent(expectedContent) + ? null + : "changed"; +} + +function normalizeGeneratedContent(content: string): string { + return content.replace(/\r\n?/g, "\n"); +} + +function isErrorWithCode(error: unknown, code: string): boolean { + return error instanceof Error && "code" in error && error.code === code; +} diff --git a/packages/openapi-spec/src/tests/Cli.spec.ts b/packages/openapi-spec/src/tests/Cli.spec.ts index 54a3f6721..80d0b64a0 100644 --- a/packages/openapi-spec/src/tests/Cli.spec.ts +++ b/packages/openapi-spec/src/tests/Cli.spec.ts @@ -13,6 +13,7 @@ const generationModuleImports = vi.hoisted(() => ({ buildContractGraph: 0, lastBuildOptions: null as null | Record, lastEmitOptions: null as null | Record, + outputDrift: null as null | "changed" | "missing", graph: { version: "croco.contract-graph.v1", controllers: [ @@ -54,6 +55,11 @@ vi.mock("../libs/emitOpenAPI", () => { }; }); +vi.mock("../libs/output", () => ({ + checkOpenAPIOutput: async () => generationModuleImports.outputDrift, + serializeOpenAPIDocument: (document: unknown) => JSON.stringify(document, null, 2), +})); + vi.mock("../libs/loadControllers", () => { return { loadControllers: () => { @@ -118,6 +124,7 @@ describe("openapi-spec CLI", () => { generationModuleImports.buildContractGraph = 0; generationModuleImports.lastBuildOptions = null; generationModuleImports.lastEmitOptions = null; + generationModuleImports.outputDrift = null; fileSystemImports.writeFile = 0; fileSystemImports.lastWritePath = null; fileSystemImports.lastWriteContents = null; @@ -151,6 +158,7 @@ describe("openapi-spec CLI", () => { buildContractGraph: 0, lastBuildOptions: null, lastEmitOptions: null, + outputDrift: null, graph: generationModuleImports.graph, }); }); @@ -195,6 +203,7 @@ describe("openapi-spec CLI", () => { buildContractGraph: 0, lastBuildOptions: null, lastEmitOptions: null, + outputDrift: null, graph: generationModuleImports.graph, }); }); @@ -473,4 +482,31 @@ describe("openapi-spec CLI", () => { manifestBundlePath: ".croco/manifest", }); }); + + it.each(["changed", "missing"] as const)( + "reports stable %s output drift without writing OpenAPI", + async (drift) => { + generationModuleImports.outputDrift = drift; + + const exitCode = await runCli( + [ + "--controllers", + "src/controllers/**/*.ts", + "--out", + "openapi.json", + "--title", + "Croco API", + "--output-check", + ], + { stdout: (message) => stdout.push(message) }, + ); + + expect(exitCode).toBe(1); + expect(stdout).toEqual([ + `[CROCO_OPENAPI_OUTPUT_${drift.toUpperCase()}] openapi.json`, + "OpenAPI output drift detected. Regenerate with: croco-openapi-spec --controllers 'src/controllers/**/*.ts' --out openapi.json --title 'Croco API'", + ]); + expect(fileSystemImports.writeFile).toBe(0); + }, + ); }); diff --git a/packages/openapi-spec/src/tests/Output.spec.ts b/packages/openapi-spec/src/tests/Output.spec.ts new file mode 100644 index 000000000..73c9ff4db --- /dev/null +++ b/packages/openapi-spec/src/tests/Output.spec.ts @@ -0,0 +1,61 @@ +import { mkdtemp, readFile, rm, stat, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { afterEach, describe, expect, it } from "vitest"; +import { checkOpenAPIOutput, serializeOpenAPIDocument } from "../libs/output"; + +describe("OpenAPI output verification", () => { + let tempDirectory: string | undefined; + + afterEach(async () => { + if (tempDirectory) { + await rm(tempDirectory, { force: true, recursive: true }); + tempDirectory = undefined; + } + }); + + it("checks unchanged output without changing bytes or mtime", async () => { + const outFile = await createOutputFile(); + const expected = serializeOpenAPIDocument(createDocument()); + await writeFile(outFile, expected); + const before = { + content: await readFile(outFile), + mtimeMs: (await stat(outFile)).mtimeMs, + }; + + await expect(checkOpenAPIOutput(outFile, expected)).resolves.toBeNull(); + await expect( + Promise.all([readFile(outFile), stat(outFile)]).then(([content, metadata]) => ({ + content, + mtimeMs: metadata.mtimeMs, + })), + ).resolves.toEqual(before); + }); + + it("reports changed output", async () => { + const outFile = await createOutputFile(); + const expected = serializeOpenAPIDocument(createDocument()); + await writeFile(outFile, `${expected}\n`); + + await expect(checkOpenAPIOutput(outFile, expected)).resolves.toBe("changed"); + }); + + it("reports missing output", async () => { + const outFile = await createOutputFile(); + + await expect(checkOpenAPIOutput(outFile, "{}")).resolves.toBe("missing"); + }); + + async function createOutputFile(): Promise { + tempDirectory = await mkdtemp(join(tmpdir(), "croco-openapi-output-")); + return join(tempDirectory, "openapi.json"); + } +}); + +function createDocument(): object { + return { + openapi: "3.1.0", + info: { title: "Croco API", version: "1.0.0" }, + paths: {}, + }; +} diff --git a/packages/problems-core/src/generated/problem-code-registry.ts b/packages/problems-core/src/generated/problem-code-registry.ts index ecd3bd819..50ada11e3 100644 --- a/packages/problems-core/src/generated/problem-code-registry.ts +++ b/packages/problems-core/src/generated/problem-code-registry.ts @@ -9974,7 +9974,7 @@ export const CROCO_PROBLEM_CODE_REGISTRY = { sources: [ { file: "packages/rpc-codegen/src/libs/generate.ts", - line: 105, + line: 110, column: 5, kind: "problem-constructor", }, @@ -10035,7 +10035,7 @@ export const CROCO_PROBLEM_CODE_REGISTRY = { sources: [ { file: "packages/rpc-codegen/src/libs/generate.ts", - line: 111, + line: 116, column: 5, kind: "problem-constructor", }, diff --git a/packages/rpc-codegen/src/libs/cli.ts b/packages/rpc-codegen/src/libs/cli.ts index f36bf9317..58ed3db64 100644 --- a/packages/rpc-codegen/src/libs/cli.ts +++ b/packages/rpc-codegen/src/libs/cli.ts @@ -12,6 +12,7 @@ type CliOptions = { readonly frontendActionManifestPath: string | null; readonly manifestBundlePath: string | null; readonly outDir: string | null; + readonly outputCheck: boolean; readonly problemRuntime: GenerateClientProblemRuntime; readonly reactQuery: boolean; readonly strictProblems: boolean; @@ -85,17 +86,32 @@ export async function runCli(args: readonly string[], io: CliIo = defaultCliIo): return 1; } - const { generateClientFilesFromContractGraph } = await import("./generate"); - const files = generateClientFilesFromContractGraph(graph, outDir, { - ...(result.options.frontendActionManifestPath - ? { frontendActionManifestPath: result.options.frontendActionManifestPath } - : {}), - ...(result.options.manifestBundlePath - ? { manifestBundlePath: result.options.manifestBundlePath } - : {}), - problemRuntime: result.options.problemRuntime, - reactQuery: result.options.reactQuery, - }); + const generateOptions = toGenerateClientOptions(result.options); + const { checkClientFilesFromContractGraph, generateClientFilesFromContractGraph } = + await import("./generate"); + + if (result.options.outputCheck) { + const drifts = checkClientFilesFromContractGraph(graph, outDir, generateOptions); + + if (drifts.length === 0) { + io.stdout(`Generated RPC outputs are current: ${outDir}`); + return 0; + } + + for (const drift of drifts) { + io.stdout(`[CROCO_RPC_OUTPUT_${drift.status.toUpperCase()}] ${drift.filePath}`); + } + io.stdout( + `RPC output drift detected. Regenerate with: ${formatRegenerationCommand( + "croco-rpc-codegen", + args, + drifts.filter(({ status }) => status === "unexpected").map(({ filePath }) => filePath), + )}`, + ); + return 1; + } + + const files = generateClientFilesFromContractGraph(graph, outDir, generateOptions); for (const file of files) { io.stdout(file); @@ -121,6 +137,7 @@ export function parseArgs(args: readonly string[]): CliParseResult { const manifestBundlePath = getFlagValue(args, CLI_FLAGS.value.manifestBundle); const outDir = getFlagValue(args, CLI_FLAGS.value.out); const check = args.includes(CLI_FLAGS.boolean.check); + const outputCheck = args.includes(CLI_FLAGS.boolean.outputCheck); const strictProblems = parseStrictProblems(args); const strictSchemas = parseStrictSchemas(args); const problemRuntime = parseProblemRuntime(args); @@ -129,6 +146,8 @@ export function parseArgs(args: readonly string[]): CliParseResult { !controllers || (!outDir && !check && !frontendActionManifestCheck) || (frontendActionManifestCheck && !frontendActionManifestPath) || + (frontendActionManifestCheck && outputCheck) || + (check && outputCheck) || strictProblems === null || strictSchemas === null || !problemRuntime @@ -144,6 +163,7 @@ export function parseArgs(args: readonly string[]): CliParseResult { frontendActionManifestPath, manifestBundlePath, outDir, + outputCheck, problemRuntime, reactQuery: args.includes(CLI_FLAGS.boolean.reactQuery), strictProblems, @@ -191,6 +211,7 @@ const CLI_FLAGS = { frontendActionManifestCheck: "--frontend-action-manifest-check", help: "--help", helpShort: "-h", + outputCheck: "--output-check", reactQuery: "--react-query", strictProblems: "--strict-problems", strictSchemas: "--strict-schemas", @@ -240,6 +261,43 @@ function parseProblemRuntime(args: readonly string[]): GenerateClientProblemRunt return value === "inline" || value === "frontend-problems" ? value : null; } +function toGenerateClientOptions(options: CliOptions): { + readonly frontendActionManifestPath?: string; + readonly manifestBundlePath?: string; + readonly problemRuntime: GenerateClientProblemRuntime; + readonly reactQuery: boolean; +} { + return { + ...(options.frontendActionManifestPath + ? { frontendActionManifestPath: options.frontendActionManifestPath } + : {}), + ...(options.manifestBundlePath ? { manifestBundlePath: options.manifestBundlePath } : {}), + problemRuntime: options.problemRuntime, + reactQuery: options.reactQuery, + }; +} + +function formatRegenerationCommand( + binary: string, + args: readonly string[], + unexpectedPaths: readonly string[], +): string { + const generationArgs = args.filter((argument) => argument !== CLI_FLAGS.boolean.outputCheck); + const generationCommand = [binary, ...generationArgs].map(quoteShellArgument).join(" "); + + if (unexpectedPaths.length === 0) { + return generationCommand; + } + + return `rm -- ${unexpectedPaths.map(quoteShellArgument).join(" ")} && ${generationCommand}`; +} + +function quoteShellArgument(argument: string): string { + return /^[A-Za-z0-9_./:@%+=,-]+$/.test(argument) + ? argument + : `'${argument.replace(/'/g, `'"'"'`)}'`; +} + function printHelp(io: CliIo): void { io.stdout(`Usage: croco-rpc-codegen --controllers --out [--react-query] [--problem-runtime inline|frontend-problems] [--frontend-action-manifest ] croco-rpc-codegen --controllers --check [--strict-problems] @@ -257,6 +315,7 @@ Options: --manifest-bundle Generate a source reference to the shared Project manifest bundle --check Validate the canonical contract graph without writing clients + --output-check Fail when generated client outputs drift without writing files --strict-problems Warn when routes do not declare generated client Problem unions (default) --compatibility-problems Allow legacy routes without declared generated client Problem unions diff --git a/packages/rpc-codegen/src/libs/generate.ts b/packages/rpc-codegen/src/libs/generate.ts index db2ec673f..658de90db 100644 --- a/packages/rpc-codegen/src/libs/generate.ts +++ b/packages/rpc-codegen/src/libs/generate.ts @@ -61,6 +61,11 @@ type GeneratedClientFile = { readonly content: string; }; +export type GeneratedClientDrift = { + readonly filePath: string; + readonly status: "changed" | "missing" | "unexpected"; +}; + type GeneratedClientRouteWithAccess = GeneratedClientRoute & { readonly access?: { readonly guards?: readonly FrontendActionMetadataReference[]; @@ -139,6 +144,23 @@ export function generateClientFiles( outDir: string, options: GenerateClientOptions = {}, ): string[] { + const files = emitClientFiles(routes, outDir, options); + + fs.mkdirSync(outDir, { recursive: true }); + + for (const file of files) { + fs.mkdirSync(path.dirname(file.filePath), { recursive: true }); + fs.writeFileSync(file.filePath, file.content); + } + + return files.map((file) => file.filePath); +} + +function emitClientFiles( + routes: GeneratedClientRoute[], + outDir: string, + options: GenerateClientOptions, +): readonly GeneratedClientFile[] { assertGeneratedClientRoutes(routes); const domainRouteGroups = groupRoutesByDomain(routes); @@ -176,14 +198,7 @@ export function generateClientFiles( ...(frontendActionManifestFile ? [frontendActionManifestFile] : []), ]; - fs.mkdirSync(outDir, { recursive: true }); - - for (const file of files) { - fs.mkdirSync(path.dirname(file.filePath), { recursive: true }); - fs.writeFileSync(file.filePath, file.content); - } - - return files.map((file) => file.filePath); + return files; } export function createFrontendActionManifestFromContractGraph( @@ -619,6 +634,7 @@ ${entries} function collectGeneratedRpcConsumerRoutes( files: readonly string[], + generatedContents?: ReadonlyMap, ): ContractGraphObservedConsumerRoute[] { const routes: ContractGraphObservedConsumerRoute[] = []; const metadataPattern = @@ -629,7 +645,7 @@ function collectGeneratedRpcConsumerRoutes( continue; } - const content = fs.readFileSync(file, "utf-8"); + const content = generatedContents?.get(file) ?? fs.readFileSync(file, "utf-8"); for (const match of content.matchAll(metadataPattern)) { const routeId = match[1]; @@ -3450,3 +3466,78 @@ function toPascalCase(value: string): string { .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`) .join(""); } + +export function checkClientFilesFromContractGraph( + graph: ContractGraph, + outDir: string, + options: GenerateClientOptions = {}, +): readonly GeneratedClientDrift[] { + assertContractGraphHasNoErrors(graph); + + const files = emitClientFiles([...graph.routes], outDir, options); + const generatedContents = new Map(files.map((file) => [file.filePath, file.content])); + + assertContractGraphConsumerRouteCoverage( + graph, + "rpc-client", + collectGeneratedRpcConsumerRoutes([...generatedContents.keys()], generatedContents), + ); + + return compareClientFiles(files, outDir); +} + +export function checkGeneratedClientFiles( + routes: GeneratedClientRoute[], + outDir: string, + options: GenerateClientOptions = {}, +): readonly GeneratedClientDrift[] { + return compareClientFiles(emitClientFiles(routes, outDir, options), outDir); +} + +function compareClientFiles( + expectedFiles: readonly GeneratedClientFile[], + outDir: string, +): readonly GeneratedClientDrift[] { + const expectedPaths = new Set(expectedFiles.map((file) => path.resolve(file.filePath))); + const drifts: GeneratedClientDrift[] = []; + + for (const file of expectedFiles) { + if (!fs.existsSync(file.filePath)) { + drifts.push({ filePath: file.filePath, status: "missing" }); + continue; + } + + const actual = normalizeGeneratedContent(fs.readFileSync(file.filePath, "utf8")); + const expected = normalizeGeneratedContent(file.content); + + if (actual !== expected) { + drifts.push({ filePath: file.filePath, status: "changed" }); + } + } + + for (const filePath of collectOutputFiles(outDir)) { + if (!expectedPaths.has(path.resolve(filePath))) { + drifts.push({ filePath, status: "unexpected" }); + } + } + + return drifts.sort((left, right) => + left.filePath < right.filePath ? -1 : left.filePath > right.filePath ? 1 : 0, + ); +} + +function collectOutputFiles(directory: string): string[] { + if (!fs.existsSync(directory)) { + return []; + } + + return fs.readdirSync(directory, { withFileTypes: true }).flatMap((entry) => { + const entryPath = path.join(directory, entry.name); + + return entry.isDirectory() ? collectOutputFiles(entryPath) : [entryPath]; + }); +} + +function normalizeGeneratedContent(content: string): string { + return content.replace(/\r\n?/g, "\n"); +} diff --git a/packages/rpc-codegen/src/tests/Cli.spec.ts b/packages/rpc-codegen/src/tests/Cli.spec.ts index b6eedc064..c94c8cbe4 100644 --- a/packages/rpc-codegen/src/tests/Cli.spec.ts +++ b/packages/rpc-codegen/src/tests/Cli.spec.ts @@ -3,12 +3,17 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; const generationModuleImports = vi.hoisted(() => ({ generate: 0, generateClientFiles: 0, + checkClientFiles: 0, manifestChecks: 0, loadRoutes: 0, loadContractGraph: 0, lastLoadOptions: null as null | Record, lastCheckedManifestPath: null as null | string, lastGenerateOptions: null as null | Record, + clientDrifts: [] as { + readonly filePath: string; + readonly status: "changed" | "missing" | "unexpected"; + }[], manifestCheckResult: { ok: true, status: "current", @@ -53,6 +58,15 @@ vi.mock("../libs/generate", () => { generationModuleImports.lastGenerateOptions = options; return ["client/user.ts"]; }, + checkClientFilesFromContractGraph: ( + _graph: unknown, + _outDir: string, + options: Record, + ) => { + generationModuleImports.checkClientFiles += 1; + generationModuleImports.lastGenerateOptions = options; + return generationModuleImports.clientDrifts; + }, createFrontendActionManifestFromContractGraph: () => { return generationModuleImports.frontendActionManifest; }, @@ -98,12 +112,14 @@ describe("rpc-codegen CLI", () => { stdout = []; generationModuleImports.generate = 0; generationModuleImports.generateClientFiles = 0; + generationModuleImports.checkClientFiles = 0; generationModuleImports.manifestChecks = 0; generationModuleImports.loadRoutes = 0; generationModuleImports.loadContractGraph = 0; generationModuleImports.lastLoadOptions = null; generationModuleImports.lastCheckedManifestPath = null; generationModuleImports.lastGenerateOptions = null; + generationModuleImports.clientDrifts = []; generationModuleImports.manifestCheckResult = { ok: true, status: "current", @@ -139,12 +155,14 @@ describe("rpc-codegen CLI", () => { expect(generationModuleImports).toEqual({ generate: 0, generateClientFiles: 0, + checkClientFiles: 0, manifestChecks: 0, loadRoutes: 0, loadContractGraph: 0, lastLoadOptions: null, lastCheckedManifestPath: null, lastGenerateOptions: null, + clientDrifts: [], manifestCheckResult: generationModuleImports.manifestCheckResult, frontendActionManifest: generationModuleImports.frontendActionManifest, graph: generationModuleImports.graph, @@ -199,12 +217,14 @@ describe("rpc-codegen CLI", () => { expect(generationModuleImports).toEqual({ generate: 0, generateClientFiles: 0, + checkClientFiles: 0, manifestChecks: 0, loadRoutes: 0, loadContractGraph: 0, lastLoadOptions: null, lastCheckedManifestPath: null, lastGenerateOptions: null, + clientDrifts: [], manifestCheckResult: generationModuleImports.manifestCheckResult, frontendActionManifest: generationModuleImports.frontendActionManifest, graph: generationModuleImports.graph, @@ -544,4 +564,39 @@ describe("rpc-codegen CLI", () => { "client/frontend-action-manifest.json", ); }); + + it("reports stable output drift diagnostics and an exact regeneration command", async () => { + generationModuleImports.clientDrifts = [ + { filePath: "client/rpc.ts", status: "missing" }, + { filePath: "client/stale.ts", status: "unexpected" }, + { filePath: "client/user.ts", status: "changed" }, + ]; + + const exitCode = await runCli( + [ + "--controllers", + "src/controllers/**/*.ts", + "--out", + "client", + "--problem-runtime", + "frontend-problems", + "--output-check", + ], + { stdout: (message) => stdout.push(message) }, + ); + + expect(exitCode).toBe(1); + expect(stdout).toEqual([ + "[CROCO_RPC_OUTPUT_MISSING] client/rpc.ts", + "[CROCO_RPC_OUTPUT_UNEXPECTED] client/stale.ts", + "[CROCO_RPC_OUTPUT_CHANGED] client/user.ts", + "RPC output drift detected. Regenerate with: rm -- client/stale.ts && croco-rpc-codegen --controllers 'src/controllers/**/*.ts' --out client --problem-runtime frontend-problems", + ]); + expect(generationModuleImports.checkClientFiles).toBe(1); + expect(generationModuleImports.generateClientFiles).toBe(0); + expect(generationModuleImports.lastGenerateOptions).toEqual({ + problemRuntime: "frontend-problems", + reactQuery: false, + }); + }); }); diff --git a/packages/rpc-codegen/src/tests/codegen.spec.ts b/packages/rpc-codegen/src/tests/codegen.spec.ts index 606f81fef..38fd32968 100644 --- a/packages/rpc-codegen/src/tests/codegen.spec.ts +++ b/packages/rpc-codegen/src/tests/codegen.spec.ts @@ -14,6 +14,7 @@ import ts from "typescript"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { z } from "zod"; import { + checkGeneratedClientFiles, createFrontendActionManifestFromContractGraph, generateClientFiles, generateClientFilesFromContractGraph, @@ -260,6 +261,43 @@ describe("generateClientFiles", () => { fs.rmSync(TEMP_DIR, { recursive: true, force: true }); }); + it("checks unchanged outputs without changing their bytes, mtimes, or directory contents", () => { + const routes = [createBasicRoute()]; + const files = generateClientFiles(routes, TEMP_DIR); + const before = files.map((filePath) => ({ + content: fs.readFileSync(filePath), + filePath, + mtimeMs: fs.statSync(filePath).mtimeMs, + })); + const directoryEntries = fs.readdirSync(TEMP_DIR); + + expect(checkGeneratedClientFiles(routes, TEMP_DIR)).toEqual([]); + expect(fs.readdirSync(TEMP_DIR)).toEqual(directoryEntries); + expect( + before.map(({ filePath }) => ({ + content: fs.readFileSync(filePath), + filePath, + mtimeMs: fs.statSync(filePath).mtimeMs, + })), + ).toEqual(before); + }); + + it("reports changed, missing, and unexpected generated client outputs", () => { + const routes = [createBasicRoute()]; + generateClientFiles(routes, TEMP_DIR); + fs.appendFileSync(path.join(TEMP_DIR, "user.ts"), "// drift\n"); + fs.rmSync(path.join(TEMP_DIR, "rpc.ts")); + fs.writeFileSync(path.join(TEMP_DIR, "Zulu.ts"), "export {};\n"); + fs.writeFileSync(path.join(TEMP_DIR, "stale.ts"), "export {};\n"); + + expect(checkGeneratedClientFiles(routes, TEMP_DIR)).toEqual([ + { filePath: path.join(TEMP_DIR, "Zulu.ts"), status: "unexpected" }, + { filePath: path.join(TEMP_DIR, "rpc.ts"), status: "missing" }, + { filePath: path.join(TEMP_DIR, "stale.ts"), status: "unexpected" }, + { filePath: path.join(TEMP_DIR, "user.ts"), status: "changed" }, + ]); + }); + it("should generate a GET fetch client", () => { const routes: RouteIR[] = [ { @@ -2725,6 +2763,21 @@ void updateResult; }); }); +function createBasicRoute(): RouteIR { + return { + controllerName: "UserController", + methodName: "list", + httpMethod: "GET", + path: "/users", + routeContract: null, + params: [], + inputSchema: null, + inputSchemas: EMPTY_INPUT_SCHEMAS, + outputSchema: null, + domain: null, + }; +} + function assertGeneratedClientTypechecks( source: string, rpcSource = fs.readFileSync(path.join(TEMP_DIR, "rpc.ts"), "utf-8"), diff --git a/scripts/alpha-release-smoke.mts b/scripts/alpha-release-smoke.mts index 5457e9417..b137fd282 100644 --- a/scripts/alpha-release-smoke.mts +++ b/scripts/alpha-release-smoke.mts @@ -83,6 +83,7 @@ export const alphaReleaseEvidenceReportPath = "ci-reports/release/alpha-release- export const alphaReleaseGeneratedAppValidations = [ "contract:snapshot", + "codegen", "contract:verify", "typecheck", "build", diff --git a/scripts/create-croco-app-generated-smoke.mts b/scripts/create-croco-app-generated-smoke.mts index 7761df413..308db0c46 100644 --- a/scripts/create-croco-app-generated-smoke.mts +++ b/scripts/create-croco-app-generated-smoke.mts @@ -529,7 +529,17 @@ const smokeCaseDefinitions: readonly Omit[] = [ }, runtimeCapabilityManifestValidation("node"), { label: "contract snapshot", args: ["contract:snapshot"] }, - { label: "contract verification", args: ["contract:verify"] }, + { + label: "contract codegen", + args: ["codegen"], + paths: ["croco.project-map.json", "openapi.json", "libs/shared/provider-rpc/src/saas.ts"], + }, + { + label: "contract verification", + readOnly: true, + recovery: "pnpm codegen", + args: ["contract:verify"], + }, { label: "doctor", args: ["doctor"] }, { label: "typecheck", args: ["typecheck"] }, { label: "build", args: ["build"] }, @@ -1017,10 +1027,16 @@ const smokeCaseDefinitions: readonly Omit[] = [ args: ["contract:snapshot"], paths: ["contract-graph.snapshot.json"], }, + { + label: "Contract codegen", + args: ["codegen"], + paths: ["croco.project-map.json", "openapi.json", "libs/shared/provider-rpc/src/admin.ts"], + }, { label: "Contract verify", + readOnly: true, + recovery: "pnpm codegen", args: ["contract:verify"], - paths: ["contract-graph.coverage.json"], }, { label: "Admin RPC client", @@ -1125,10 +1141,16 @@ const smokeCaseDefinitions: readonly Omit[] = [ args: ["contract:snapshot"], paths: ["contract-graph.snapshot.json"], }, + { + label: "Contract codegen", + args: ["codegen"], + paths: ["croco.project-map.json", "openapi.json", "libs/shared/provider-rpc/src/saas.ts"], + }, { label: "Contract verify", + readOnly: true, + recovery: "pnpm codegen", args: ["contract:verify"], - paths: ["contract-graph.coverage.json"], }, { label: "DI graph generation", @@ -1331,10 +1353,16 @@ const smokeCaseDefinitions: readonly Omit[] = [ args: ["contract:snapshot"], paths: ["contract-graph.snapshot.json"], }, + { + label: "Contract codegen", + args: ["codegen"], + paths: ["croco.project-map.json", "openapi.json", "libs/shared/provider-rpc/src/ai.ts"], + }, { label: "Contract verify", + readOnly: true, + recovery: "pnpm codegen", args: ["contract:verify"], - paths: ["contract-graph.coverage.json"], }, { label: "DI graph generation", @@ -2607,7 +2635,7 @@ export function assertGeneratedVerificationValidationsAreReadOnly( const name = validation.args?.[0]; return ( name !== undefined && - !name.startsWith("contract:") && + (name === "contract:verify" || !name.startsWith("contract:")) && /:(?:check|verify)$/.test(name) && (!validation.readOnly || !validation.recovery) ); @@ -2625,7 +2653,7 @@ function ensureGeneratedVerificationBaseline(validationDir: string): void { run("git", ["init", "--quiet"], validationDir); run("git", ["config", "user.email", "generated-smoke@croco.local"], validationDir); run("git", ["config", "user.name", "Croco Generated Smoke"], validationDir); - run("git", ["add", "-A"], validationDir); + run("git", ["add", "-A", "--", ".", ":(exclude)**/node_modules/**"], validationDir); run("git", ["commit", "--quiet", "-m", "generated verification baseline"], validationDir); } @@ -3136,14 +3164,29 @@ function runSpaBeSplitContractSmoke( report, caseResult, projectDir, - "contract verify", + "contract codegen", corepackCommand, - ["pnpm", "contract:verify"], + ["pnpm", "codegen"], projectDir, ); - assertExists( - join(projectDir, "contract-graph.coverage.json"), - "REST SPA contract smoke did not create contract-graph.coverage.json", + ensureGeneratedVerificationBaseline(projectDir); + runSmokeCaseCommand( + report, + caseResult, + projectDir, + "contract verify", + process.execPath, + [ + "--experimental-strip-types", + join(rootDir, "scripts", "tracked-file-mutation-guard.mts"), + "--recovery", + "pnpm codegen", + "--", + "corepack", + "pnpm", + "contract:verify", + ], + projectDir, ); assertExists( join(projectDir, "openapi.json"), diff --git a/scripts/static-misuse-raw-error-allowlist.json b/scripts/static-misuse-raw-error-allowlist.json index a02f2db0a..c49c12f26 100644 --- a/scripts/static-misuse-raw-error-allowlist.json +++ b/scripts/static-misuse-raw-error-allowlist.json @@ -405,7 +405,7 @@ { "package": "@croco/rpc-codegen", "file": "packages/rpc-codegen/src/libs/generate.ts", - "line": 1355, + "line": 1371, "excerpt": "throw new Error(\\`Unhandled RPC Problem variant\\${suffix}\\`);", "reason": "Internal exhaustive/programmer assertion retained as a reviewed exception while user-facing runtime validation paths use coded errors.", "owner": "framework-error-handling" diff --git a/scripts/tests/alpha-release-smoke.spec.ts b/scripts/tests/alpha-release-smoke.spec.ts index 74f663b82..11a787d2c 100644 --- a/scripts/tests/alpha-release-smoke.spec.ts +++ b/scripts/tests/alpha-release-smoke.spec.ts @@ -63,6 +63,7 @@ describe("alpha-release-smoke.mts", () => { }); expect(alphaReleaseGeneratedAppValidations).toEqual([ "contract:snapshot", + "codegen", "contract:verify", "typecheck", "build", diff --git a/scripts/tests/create-croco-app-generated-smoke.spec.ts b/scripts/tests/create-croco-app-generated-smoke.spec.ts index 1f45a272a..0563e82a0 100644 --- a/scripts/tests/create-croco-app-generated-smoke.spec.ts +++ b/scripts/tests/create-croco-app-generated-smoke.spec.ts @@ -71,14 +71,17 @@ describe("generated smoke command execution", () => { }); describe("generated verification mutation coverage", () => { - it("requires guards and recovery for non-codegen check and verify validations", () => { + it("requires guards and recovery for contract and non-codegen verify validations", () => { expect(() => assertGeneratedVerificationValidationsAreReadOnly([ - { args: ["contract:verify"] }, + { args: ["contract:verify"], readOnly: true, recovery: "pnpm codegen" }, { args: ["profile:check"], readOnly: true, recovery: "regenerate profile" }, { args: ["di:verify"], readOnly: true, recovery: "pnpm di:graph" }, ]), ).not.toThrow(); + expect(() => + assertGeneratedVerificationValidationsAreReadOnly([{ args: ["contract:verify"] }]), + ).toThrow("contract:verify"); expect(() => assertGeneratedVerificationValidationsAreReadOnly([{ args: ["profile:check"] }]), ).toThrow("profile:check"); diff --git a/scripts/tests/verification-policy.spec.ts b/scripts/tests/verification-policy.spec.ts index d76eca29f..39cb741c9 100644 --- a/scripts/tests/verification-policy.spec.ts +++ b/scripts/tests/verification-policy.spec.ts @@ -109,6 +109,20 @@ describe("verification policy", () => { "--dry-run", ]); }); + + it("classifies codegen output checks as regression-tested read-only verification", () => { + const discoveries = discoverCliVerificationDeclarations({ + "packages/openapi-spec/src/libs/cli.ts": + 'const outputCheck = args.includes("--output-check");', + "packages/rpc-codegen/src/libs/cli.ts": + 'const outputCheck = args.includes("--output-check");', + }); + + expect(discoveries.map(({ name }) => name)).toEqual(["--output-check", "--output-check"]); + expect( + discoveries.map((discovery) => classifyVerificationPath(discovery)?.classification), + ).toEqual(["generator-regression-tested", "generator-regression-tested"]); + }); }); describe("workflow read-only contracts", () => { diff --git a/scripts/verification-policy.mts b/scripts/verification-policy.mts index e8ebd2296..4e363cf39 100644 --- a/scripts/verification-policy.mts +++ b/scripts/verification-policy.mts @@ -94,8 +94,10 @@ const TEMPLATE_SCRIPT_NAMES = new Set([ "ci:contracts", "contract:check", "contract:client", + "contract:client:check", "contract:coverage", "contract:openapi", + "contract:openapi:check", "contract:snapshot", "contract:verify", "demo:smoke", @@ -125,7 +127,11 @@ const CLI_POLICIES: Readonly> = { "MigrationCommandE2E.spec.ts and transaction harness coverage", ), "packages/openapi-spec/src/libs/cli.ts:--check": relatedIssuePolicy("OpenAPI --check"), + "packages/openapi-spec/src/libs/cli.ts:--output-check": outputCheckPolicy("OpenAPI output check"), "packages/rpc-codegen/src/libs/cli.ts:--check": relatedIssuePolicy("RPC codegen --check"), + "packages/rpc-codegen/src/libs/cli.ts:--output-check": outputCheckPolicy( + "RPC codegen output check", + ), }; export function discoverRootVerificationScripts(packageJson: string): VerificationPath[] { @@ -207,6 +213,9 @@ export function discoverCliVerificationDeclarations( if (/args\.includes\(["']--dry-run["']\)|\.option\(["']--dry-run["']/.test(source)) { declarations.add("--dry-run"); } + if (/args\.includes\(["']--output-check["']\)|\.option\(["']--output-check["']/.test(source)) { + declarations.add("--output-check"); + } if (/name:\s*["']check["']/.test(source)) declarations.add("check-subcommand"); for (const declaration of declarations) { @@ -246,6 +255,16 @@ export function classifyVerificationPath(path: VerificationPath): VerificationPo if (path.surface === "package-script") { if (path.path.startsWith("packages/create-croco-app/templates/")) { if (!TEMPLATE_SCRIPT_NAMES.has(path.name)) return undefined; + if ( + [ + "ci:contracts", + "contract:client:check", + "contract:openapi:check", + "contract:verify", + ].includes(path.name) + ) { + return outputCheckPolicy(`generated template script ${path.name}`); + } const excluded = path.name.startsWith("contract:") || path.name === "ci:contracts"; return excluded ? relatedIssuePolicy(`generated template script ${path.name}`) @@ -401,6 +420,16 @@ function relatedIssuePolicy(owner: string): VerificationPolicy { }; } +function outputCheckPolicy(owner: string): VerificationPolicy { + return { + classification: "generator-regression-tested", + owner, + nonmutationEvidence: + "OpenAPI Output.spec.ts and RPC codegen.spec.ts assert unchanged checks preserve bytes, mtimes, and directory contents", + recoveryCommand: "Run the reported regeneration command and commit the generated outputs", + }; +} + function compareVerificationPaths(left: VerificationPath, right: VerificationPath): number { return left.id.localeCompare(right.id); } diff --git a/tsconfig/contract-strict.baseline.json b/tsconfig/contract-strict.baseline.json index ba6b5fa35..df3482c7c 100644 --- a/tsconfig/contract-strict.baseline.json +++ b/tsconfig/contract-strict.baseline.json @@ -3265,7 +3265,7 @@ { "packageName": "@croco/rpc-codegen", "file": "packages/rpc-codegen/src/libs/generate.ts", - "line": 761, + "line": 777, "column": 16, "code": "TS2345", "message": "Argument of type 'string | undefined' is not assignable to parameter of type 'string'." @@ -3273,7 +3273,7 @@ { "packageName": "@croco/rpc-codegen", "file": "packages/rpc-codegen/src/libs/generate.ts", - "line": 761, + "line": 777, "column": 49, "code": "TS2345", "message": "Argument of type 'string | undefined' is not assignable to parameter of type 'string'."