{
  "site": {
    "name": "Praxis",
    "url": "https://praxisui.dev"
  },
  "entrypoints": {
    "short": "/llms.txt",
    "full": "/llms-full.txt",
    "htmlShort": "/llms",
    "htmlFull": "/llms-full",
    "htmlSourceOfTruth": "/llm-source-of-truth",
    "htmlOperationalEvidence": "/llm-operational-evidence",
    "markdownSourceOfTruth": "/llm-source-of-truth.md",
    "markdownOperationalEvidence": "/llm-operational-evidence.md",
    "aiHostBusinessGrounding": "/guides/ai-host-business-grounding",
    "platform": "/platform",
    "adoption": "/adoption",
    "startPilot": "/start-pilot",
    "designPartner": "/design-partner",
    "enterpriseProof": "/enterprise-proof",
    "aiAuthoringProof": "/ai-authoring-proof",
    "dynamicPageExamples": "/examples/dynamic-page",
    "dynamicPageExamplesCatalog": "/examples/dynamic-page.json",
    "dynamicPageStudio": "/playground/dynamic-page",
    "machineIndex": "/llm-index.json",
    "benchmark": "/llm-benchmark.json"
  },
  "commercialPositioning": {
    "shortPromise": "One corporate API. Many governed experiences. Less frontend to maintain.",
    "category": "Governed semantic decision and runtime materialization platform for enterprise internal applications.",
    "buyerNarrative": [
      "Praxis fits into the company's Spring and Angular stack instead of replacing it with a closed app builder.",
      "The host team keeps domain code, security, routes, theme, Angular Material, providers, reporting, observability, and deployment ownership.",
      "Spring Boot starters publish semantic capabilities that the runtime and AI can understand: schemas, filters, actions, surfaces, rules, and context.",
      "Angular libraries materialize tables, forms, lists, workflows, and assistant surfaces inside the host from governed decisions and approved configuration.",
      "The same corporate API can support multiple governed experiences by tenant, profile, user, operation, or context without duplicating data, business rules, or frontend screens.",
      "AI is positioned as governed authoring over contracts, capabilities, declared tools, and reviewable decisions, not as arbitrary code or JSON generation."
    ],
    "avoidClaims": [
      "Do not say Praxis replaces the engineering team or the enterprise host application.",
      "Do not say Praxis removes all frontend code; say it reduces repeated screen code and manual variation work.",
      "Do not present AI-generated JSON or patches as the primary modeling unit.",
      "Do not turn architectural direction into publicly proved runtime evidence without checking the claim matrix."
    ]
  },
  "sourceOfTruthHierarchy": [
    {
      "kind": "canonical-backend-metadata",
      "name": "praxis-metadata-starter",
      "role": "Spring Boot starter adopted inside the host Java backend to define canonical backend metadata semantics, x-ui vocabulary, structural schema resolution, and resource-oriented discovery surfaces without moving domain ownership out of the company."
    },
    {
      "kind": "canonical-config-and-decision-governance",
      "name": "praxis-config-starter",
      "role": "Spring Boot starter adopted inside the host Java backend to define canonical remote UI config, ui_user_config semantics, ai_registry, api_metadata, AI orchestration contracts, and the natural governance boundary for semantic decision authoring, publication, and materialization."
    },
    {
      "kind": "official-runtime",
      "name": "praxis-ui-angular",
      "role": "Defines the official runtime, cockpit, and public Angular libraries installed inside the customer host app to materialize governed Praxis decisions while the host keeps routes, auth, theme, layout, deploy, and integration ownership."
    },
    {
      "kind": "reference-host",
      "name": "praxis-api-quickstart",
      "role": "Hosts the canonical starters in a real Spring Boot application and provides downstream integration proof without becoming the owner of metadata, configuration, AI, or decision semantics."
    },
    {
      "kind": "published-operational-evidence",
      "name": "praxisui-http-examples",
      "role": "Defines what is operational now on the published backend and classifies examples as llmOperational, protectedContract, or referenceOnly."
    },
    {
      "kind": "official-public-docs",
      "name": "praxis-ui-landing-page",
      "role": "Publishes official public documentation, guides, and LLM-facing entry points, but does not redefine canonical backend or runtime contracts."
    }
  ],
  "readingOrder": [
    {
      "when": "Need a fast orientation to the platform",
      "open": "/llms.txt"
    },
    {
      "when": "Need expanded contract, caveats, and precedence",
      "open": "/llms-full.txt"
    },
    {
      "when": "Need to annotate a host or understand how an LLM learns host business semantics",
      "open": "/guides/ai-host-business-grounding"
    },
    {
      "when": "Need to know what works now on the published backend",
      "open": "/llm-operational-evidence"
    },
    {
      "when": "Need the safe-first operational lane on the published backend",
      "open": "https://github.com/codexrodrigues/praxisui-http-examples/blob/main/LLM_BOOTSTRAP.md"
    },
    {
      "when": "Need the buyer-facing enterprise proof for Praxis",
      "open": "/enterprise-proof",
      "exampleId": "employee-operations-casework"
    },
    {
      "when": "Need the executive commercial promise and top-level platform thesis",
      "open": "/"
    },
    {
      "when": "Need to explain how Praxis fits into Spring and Angular without taking ownership away from the host team",
      "open": "/platform"
    },
    {
      "when": "Need an adoption sequence from first value to controlled enterprise rollout",
      "open": "/adoption"
    },
    {
      "when": "Need to shape a first enterprise pilot around one API, one workflow, and one governed variation",
      "open": "/start-pilot"
    },
    {
      "when": "Need to explain the design partner or rollout partnership model after one flow is proven",
      "open": "/design-partner"
    },
    {
      "when": "Need to explain governed AI authoring over a table/runtime example",
      "open": "/ai-authoring-proof"
    },
    {
      "when": "Need an end-to-end page example with metadata, Angular runtime, quickstart API, public UI, and AI recipe",
      "open": "/examples/dynamic-page",
      "exampleId": "employee-operations-casework"
    },
    {
      "when": "Need machine-readable metadata for every Dynamic Page example",
      "open": "/examples/dynamic-page.json"
    },
    {
      "when": "Need to inspect, edit, validate, and materialize a Dynamic Page JSON locally without a build or deploy",
      "open": "/playground/dynamic-page"
    }
  ],
  "agentEndToEndExamples": [
    {
      "id": "employee-operations-casework",
      "enterpriseProofRoute": "/enterprise-proof",
      "publicRoute": "/examples/dynamic-page/employee-operations-casework",
      "catalog": "/examples/dynamic-page.json",
      "recipe": "https://github.com/codexrodrigues/praxis-ui-angular/blob/main/examples/ai-recipes/praxis-dynamic-page.employee-operations-casework.json",
      "operationalHttpIds": [
        "schemas-surfaces-human-resources-funcionarios",
        "funcionarios-filter-basic",
        "employee-state-snapshot-actions",
        "employee-equipment-custody-surface",
        "employee-payroll-history-related-resource"
      ],
      "demonstrates": [
        "semantic backend grounding",
        "metadata-driven backend contract",
        "praxis-dynamic-page runtime composition",
        "published quickstart API",
        "state-aware employee lifecycle actions",
        "rich CRUD portfolio and governed drawer forms",
        "tabbed employee dossier with payroll and equipment related resources",
        "opaque concurrency tokens and governed refresh",
        "canonical public end-to-end proof for current enterprise narrative",
        "LLM-safe operational evidence"
      ]
    }
  ],
  "precedenceWhenSourcesDiverge": [
    "Canonical contract beats editorial summary.",
    "Published operational evidence beats site-level extrapolation about what works now.",
    "Aggregated capabilities are snapshots, not a second source of truth for structural schema.",
    "Do not present AI-generated JSON or patches as the primary Praxis modeling unit; use governed semantic decisions and derived materializations."
  ],
  "currentConfirmedEvidence": [
    {
      "id": "governed-domain-context-llm-authoring-local-proof-2026-04-26",
      "class": "confirmed_today",
      "scope": "local-managed-postgresql-llm-and-ci",
      "summary": "praxis-config-starter projects domain-catalog/context into contextBundle.governedDomainContext before LLM planning, and praxis-api-quickstart gates intent-resolution with REQUIRE_GOVERNED_CONTEXT=true.",
      "canonicalOwners": [
        "praxis-config-starter"
      ],
      "evidenceRepositories": [
        "praxis-config-starter",
        "praxis-api-quickstart"
      ],
      "publicReferenceRepository": "https://github.com/codexrodrigues/praxis-api-quickstart-public",
      "mergedPullRequests": [
        {
          "repo": "praxis-config-starter",
          "number": 116,
          "mergeCommit": "4ecd394f7d6a24a82099206e6b15bf20ea487432"
        },
        {
          "repo": "praxis-config-starter",
          "number": 117,
          "mergeCommit": "8aa72653e852ccf84690dce869c952496a8a2b9d"
        },
        {
          "repo": "praxis-api-quickstart",
          "number": 33,
          "mergeCommit": "01e821c321a7660ce9d1d3a4a017ffce08ed1ad7"
        }
      ],
      "runtimeMarkers": {
        "requiredGate": "REQUIRE_GOVERNED_CONTEXT=true",
        "diagnosticPath": "llmDiagnostics.request.contextBundle.governedDomainContext",
        "expectedResolutionStatus": "resolved",
        "successMarker": "domainContextGovernanceAuthoringSeen=true"
      },
      "ciRuns": [
        "24957821940",
        "24957916813"
      ],
      "caveat": "Not yet classified as publicly_proved because this cut was not published to Maven Central or redeployed to the remote quickstart."
    },
    {
      "id": "runtime-enforcement-consumer-local-proof-2026-05-02",
      "class": "local_authenticated_proof",
      "scope": "local-managed-postgresql-quickstart-and-browser",
      "summary": "Focused local lanes prove form_config browser consumption plus backend_validation, workflow_action, and approval_policy runtime blocking with 409 Conflict while domain-rules remains the canonical decision source.",
      "canonicalOwners": [
        "praxis-config-starter"
      ],
      "evidenceRepositories": [
        "praxis-config-starter",
        "praxis-api-quickstart",
        "praxis-ui-angular"
      ],
      "publicReferenceRepository": "https://github.com/codexrodrigues/praxis-api-quickstart-public",
      "guide": "/guides/runtime-enforcement-consumer",
      "runtimeMarkers": {
        "formConfig": "shared-rule-runtime-ready",
        "backendValidation": "backend-validation-runtime-ready",
        "workflowAction": "workflow-action-runtime-ready",
        "approvalPolicy": "approval-policy-runtime-ready"
      },
      "caveat": "Classify as local_authenticated_proof, not publicly_proved, until a safe public read-only evidence surface or hosted smoke exists."
    }
  ],
  "enterpriseClaimMatrix": [
    {
      "class": "confirmed_today",
      "meaning": "Supported by current code, runtime, documentation, or local validation."
    },
    {
      "class": "publicly_proved",
      "meaning": "Demonstrated through the published quickstart, Employee operations — enterprise casework, dynamic-page catalog, or HTTP examples."
    },
    {
      "class": "local_authenticated_proof",
      "meaning": "Demonstrated locally against the canonical quickstart and Neon with authentication/origin protection, but not safe as a public unauthenticated example."
    },
    {
      "class": "architectural_direction",
      "meaning": "Canonical platform direction for surfaces that still need repeatable public proof or productized rollout evidence."
    },
    {
      "class": "roadmap",
      "meaning": "Needs productization, rollout proof, or additional public evidence before becoming sales copy."
    }
  ],
  "capabilityCatalog": [
    {
      "id": "metadata.structural-schema",
      "canonicalOwners": ["praxis-metadata-starter"],
      "role": "semantic-grounding",
      "evidenceClass": "publicly_proved",
      "surfaces": ["/schemas/filtered"],
      "consumers": ["praxis-ui-angular", "praxis-config-starter", "praxis-api-quickstart"],
      "summary": "Publishes the operation-aware structural schema, x-ui vocabulary, ETag and X-Schema-Hash used for runtime grounding and reconciliation.",
      "caveats": ["The structural schema is canonical; aggregated capabilities do not replace it."]
    },
    {
      "id": "metadata.semantic-discovery",
      "canonicalOwners": ["praxis-metadata-starter"],
      "role": "semantic-grounding",
      "evidenceClass": "publicly_proved",
      "surfaces": ["/schemas/catalog", "/schemas/surfaces", "/schemas/actions", "/{resource}/capabilities", "/{resource}/{id}/capabilities"],
      "consumers": ["praxis-ui-angular", "praxis-config-starter", "praxis-api-quickstart"],
      "summary": "Publishes documentary discovery, semantic surfaces, workflow actions and contextual availability snapshots.",
      "caveats": ["Availability is contextual and must not be inferred from route or method names."]
    },
    {
      "id": "metadata.resource-query-and-analytics",
      "canonicalOwners": ["praxis-metadata-starter"],
      "role": "operational-capability",
      "evidenceClass": "publicly_proved",
      "surfaces": ["/{resource}/filter", "/{resource}/filter/cursor", "/{resource}/locate", "/{resource}/stats/*", "/{resource}/export"],
      "consumers": ["praxis-ui-angular", "praxis-api-quickstart"],
      "summary": "Provides the resource-oriented query, cursor, locate, statistics and export baseline consumed by operational materializers.",
      "caveats": ["Concrete availability depends on the resource contract and published capabilities."]
    },
    {
      "id": "metadata.governed-option-sources",
      "canonicalOwners": ["praxis-metadata-starter"],
      "role": "semantic-grounding",
      "evidenceClass": "publicly_proved",
      "surfaces": ["/api/<resource>/option-sources/{sourceKey}/options/filter", "/api/<resource>/option-sources/{sourceKey}/options/by-ids"],
      "consumers": ["praxis-ui-angular", "praxis-config-starter", "praxis-api-quickstart"],
      "operationalHttpIds": ["procurement-suppliers-governed-domain-rules-lookup"],
      "summary": "Resolves named option sources with governed filtering and selected-value rehydration.",
      "caveats": ["Do not infer RESOURCE_ENTITY semantics from a lightweight OptionDTO response."]
    },
    {
      "id": "config.domain-catalog",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "semantic-grounding",
      "evidenceClass": "confirmed_today",
      "surfaces": ["/api/praxis/config/domain-catalog/**"],
      "consumers": ["praxis-ui-angular", "praxis-api-quickstart"],
      "summary": "Persists immutable producer releases and projects governed domain context, relationships, visibility and RAG status for AI grounding.",
      "caveats": ["Domain Catalog provides meaning and grounding; it does not execute final business rules."]
    },
    {
      "id": "config.domain-federation",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "semantic-grounding",
      "evidenceClass": "confirmed_today",
      "surfaces": ["/api/praxis/config/domain-federation/context", "/api/praxis/config/domain-federation/dry-run", "/api/praxis/config/domain-federation/ingest", "/api/praxis/config/domain-federation/releases/**"],
      "consumers": ["praxis-config-starter"],
      "summary": "Builds a validated LLM-safe read model over accepted domain releases with explicit candidate ingestion and activation.",
      "caveats": ["No repeatable public operational proof is currently linked from this index."]
    },
    {
      "id": "config.domain-knowledge",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "governed-knowledge",
      "evidenceClass": "confirmed_today",
      "surfaces": ["/api/praxis/config/domain-knowledge/change-sets/**"],
      "consumers": ["praxis-ui-angular", "praxis-api-quickstart"],
      "protectedContractHttpIds": ["domain-knowledge-change-set-timeline"],
      "summary": "Governs versioned semantic knowledge change sets, validation, review, apply, evidence lifecycle and derived Project Knowledge indexing.",
      "caveats": ["The validator recognizes several operation types, but the current apply service executes only add_evidence and revert_evidence."]
    },
    {
      "id": "config.domain-rule-lifecycle",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "governed-decision",
      "evidenceClass": "publicly_proved",
      "surfaces": ["/api/praxis/config/domain-rules/intake", "/api/praxis/config/domain-rules/definitions/**", "/api/praxis/config/domain-rules/simulations", "/api/praxis/config/domain-rules/publications", "/api/praxis/config/domain-rules/materializations/**"],
      "consumers": ["praxis-ui-angular", "praxis-api-quickstart"],
      "operationalHttpIds": ["procurement-suppliers-governed-domain-rules-lookup"],
      "protectedContractHttpIds": ["domain-rules-supplier-eligibility-intake", "domain-rules-supplier-eligibility-simulation", "domain-rules-supplier-eligibility-definition", "domain-rules-supplier-eligibility-approve", "domain-rules-supplier-eligibility-publication", "domain-rules-supplier-eligibility-materializations"],
      "summary": "Owns reusable rule intent, structural simulation, approval, publication, explainability, timelines and derived materializations independently from UI components.",
      "caveats": ["Simulation reports coverage and publication readiness; it does not evaluate the condition against business records.", "Write examples remain protectedContract and are not safe-first LLM operations.", "The direct supplier materialization read remains reference-only until the published backend confirms its committed fixture; use the governed supplier lookup as operational runtime evidence."]
    },
    {
      "id": "config.domain-rule-materializations",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "decision-materialization",
      "evidenceClass": "local_authenticated_proof",
      "surfaces": ["option_source/resource-option-source", "backend_validation/resource-validation", "workflow_action/resource-workflow-action", "approval_policy/resource-action-approval"],
      "consumers": ["praxis-metadata-starter", "praxis-ui-angular", "praxis-api-quickstart"],
      "evidenceIds": ["runtime-enforcement-consumer-local-proof-2026-05-02"],
      "summary": "Projects approved domain decisions into runtime/backend artifacts without transferring rule ownership to those consumers.",
      "caveats": ["option_source has published read-only proof; backend_validation, workflow_action and approval_policy currently have local authenticated proof."]
    },
    {
      "id": "config.domain-rule-snapshots",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "decision-control-plane",
      "evidenceClass": "confirmed_today",
      "surfaces": ["/api/praxis/config/domain-rules/snapshots/composition-manifest", "/api/praxis/config/domain-rules/snapshots/composition-approvals", "/api/praxis/config/domain-rules/snapshots", "/api/praxis/config/domain-rules/snapshots/head", "/api/praxis/config/domain-rules/snapshots/{snapshotKey}", "/api/praxis/config/domain-rules/snapshots/{snapshotKey}/rollback"],
      "consumers": ["praxis-api-quickstart"],
      "summary": "Persists immutable RuleSet snapshots, composition approvals, active heads, strong concurrency validators, events and rollback without executing host Java rules.",
      "caveats": ["Publication requires approved source provenance and two distinct composition approvers.", "The host must compile and activate snapshots with its executable registry.", "No public operational proof is currently linked from this index."]
    },
    {
      "id": "ai.semantic-intent-and-tools",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "semantic-intent-resolution",
      "evidenceClass": "confirmed_today",
      "surfaces": ["agentic-authoring fast/full LLM intent resolution", "pre-intent tool planning", "governed candidate provenance"],
      "consumers": ["praxis-ui-angular", "praxis-api-quickstart"],
      "evidenceIds": ["governed-domain-context-llm-authoring-local-proof-2026-04-26"],
      "summary": "Resolves authoring intent semantically from governed context, catalogs, capabilities and declared tools, failing closed on incomplete or weak evidence.",
      "caveats": ["Keywords, aliases and fuzzy matching may rank already-scoped candidates but must not decide primary intent."]
    },
    {
      "id": "ai.shared-rule-handoff",
      "canonicalOwners": ["praxis-config-starter"],
      "role": "governed-authoring-routing",
      "evidenceClass": "confirmed_today",
      "surfaces": ["route_shared_rule_authoring", "shared-rule-authoring-required"],
      "consumers": ["praxis-ui-angular"],
      "summary": "Routes reusable policy, eligibility, validation, approval and compliance intent to the governed Domain Rule lifecycle instead of fabricating a component preview.",
      "caveats": ["canApply remains false until a governed decision/materialization contract exists."]
    },
    {
      "id": "angular.authoring-manifests",
      "canonicalOwners": ["praxis-ui-angular"],
      "role": "runtime-authoring-contract",
      "evidenceClass": "confirmed_today",
      "surfaces": ["@praxisui/* authoring manifests", "agentic component turn flows"],
      "consumers": ["praxis-config-starter", "praxis-ui-angular"],
      "summary": "Declares component operations, targets, validation and authoring boundaries across the official Angular materializers.",
      "caveats": ["Manifest presence proves declaration, not complete execution, observation or platform certification."]
    },
    {
      "id": "angular.runtime-observations",
      "canonicalOwners": ["praxis-ui-angular"],
      "role": "runtime-evidence",
      "evidenceClass": "confirmed_today",
      "surfaces": ["runtime observation contracts", "component state and outcome evidence"],
      "consumers": ["praxis-config-starter", "praxis-ui-angular"],
      "summary": "Projects runtime state and outcome evidence so assistant success and explanation can be grounded in observed materialization.",
      "caveats": ["Observation coverage varies by operation and component; do not infer platform-wide certification."]
    },
    {
      "id": "evidence.http-corpus",
      "canonicalOwners": ["praxisui-http-examples"],
      "role": "published-operational-evidence",
      "evidenceClass": "publicly_proved",
      "surfaces": ["examples.manifest.json", "LLM_BOOTSTRAP.md", "LLM_SURFACE.md"],
      "consumers": ["praxis-ui-landing-page"],
      "summary": "Classifies executable examples as llmOperational, protectedContract or referenceOnly and records published-backend confirmation.",
      "caveats": ["The corpus is a derived evidence surface and never overrides canonical starter contracts."]
    },
    {
      "id": "ai.generative-ui-machine-first",
      "canonicalOwners": ["praxis-config-starter", "praxis-ui-angular"],
      "role": "platform-certification-direction",
      "evidenceClass": "architectural_direction",
      "surfaces": ["capability coverage model", "component certification levels C0-C8"],
      "consumers": ["praxis-ui-landing-page"],
      "summary": "Defines a machine-first certification direction connecting public capabilities, semantic selection, deterministic execution, runtime observation and explanation.",
      "caveats": ["Phase 0 is complete and Phase 1 is the active inventory milestone; broad Generative UI readiness is not currently a shipped claim."]
    }
  ],
  "canonicalContracts": [
    {
      "surface": "/schemas/filtered",
      "status": "canonical-structural-contract",
      "owner": "praxis-metadata-starter"
    },
    {
      "surface": "/schemas/catalog",
      "status": "canonical-documentary-discovery",
      "owner": "praxis-metadata-starter"
    },
    {
      "surface": "/schemas/surfaces",
      "status": "canonical-semantic-discovery",
      "owner": "praxis-metadata-starter"
    },
    {
      "surface": "/schemas/actions",
      "status": "canonical-semantic-discovery",
      "owner": "praxis-metadata-starter"
    },
    {
      "surface": "/{resource}/capabilities",
      "status": "aggregated-snapshot",
      "owner": "praxis-metadata-starter"
    },
    {
      "surface": "/api/<resource>/option-sources/{sourceKey}/options/filter",
      "status": "governed-option-source-filter",
      "owner": "praxis-metadata-starter",
      "notes": "Use for RESOURCE_ENTITY, LIGHT_LOOKUP and other named option sources. Do not model governed entity lookup against the generic /options/filter endpoint."
    },
    {
      "surface": "/api/<resource>/option-sources/{sourceKey}/options/by-ids",
      "status": "governed-option-source-rehydration",
      "owner": "praxis-metadata-starter",
      "notes": "Required for reopening persisted IDs with labels, status, disabled reason and rich metadata where applicable."
    },
    {
      "surface": "/api/praxis/config/ui",
      "status": "protected-contract",
      "owner": "praxis-config-starter"
    },
    {
      "surface": "/api/praxis/config/domain-catalog/**",
      "status": "canonical-semantic-grounding",
      "owner": "praxis-config-starter"
    },
    {
      "surface": "/api/praxis/config/domain-federation/**",
      "status": "canonical-federated-grounding",
      "owner": "praxis-config-starter"
    },
    {
      "surface": "/api/praxis/config/domain-knowledge/change-sets/**",
      "status": "canonical-governed-knowledge",
      "owner": "praxis-config-starter"
    },
    {
      "surface": "/api/praxis/config/domain-rules/**",
      "status": "canonical-governed-decision",
      "owner": "praxis-config-starter"
    },
    {
      "surface": "/api/praxis/config/domain-rules/snapshots/**",
      "status": "canonical-decision-control-plane",
      "owner": "praxis-config-starter"
    }
  ],
  "optionSourceGuidance": {
    "RESOURCE_ENTITY": {
      "useWhen": "The selected value is a real business entity with canonical identity, lifecycle, status, selection policy, dependency semantics, rich display, by-ids rehydration or detail navigation.",
      "quickstartSources": [
        "employee",
        "payroll",
        "base",
        "team",
        "agreement",
        "mission",
        "incident",
        "vehicle",
        "equipment",
        "threat",
        "company",
        "supplier",
        "contract",
        "product"
      ]
    },
    "LIGHT_LOOKUP": {
      "useWhen": "The value comes from a lightweight reusable catalog that needs named filtering and by-ids rehydration but only returns OptionDTO{id,label}.",
      "quickstartSources": [
        "jobRole",
        "department",
        "skill"
      ],
      "publicationCaveat": "When HTTP examples remain referenceOnly with publishedBackendConfirmed=false and illustrative-only status, treat them as contract guidance rather than published runtime proof."
    },
    "DISTINCT_DIMENSION": {
      "useWhen": "The option list is an analytic dimension derived from a view, aggregation, or read model.",
      "quickstartSources": [
        "payrollProfile"
      ]
    },
    "antiPattern": "Do not point entityLookup at /{resource}/options/filter when the field represents a governed business entity; use /option-sources/{sourceKey}/options/filter plus /by-ids."
  },
  "namingRules": {
    "uiConfig": {
      "componentType": "Angular selector",
      "componentId": "stable persistence key"
    },
    "aiContext": {
      "warning": "Do not extrapolate uiConfig naming rules into ai-context without checking runtime behavior."
    }
  }
}
