{
  "schemaVersion": 1,
  "name": "Praxis public assistant answer benchmark",
  "purpose": "Evaluate whether search-enabled assistants find the correct Praxis platform, preserve canonical ownership, and separate confirmed capability from public operational proof.",
  "canonicalIndex": "/llm-index.json",
  "evaluationScale": {
    "2": "Accurate, grounded in an expected source, and preserves the required distinction.",
    "1": "Directionally correct but incomplete, weakly sourced, or imprecise.",
    "0": "Wrong Praxis entity, unsupported claim, missing answer, or contradiction of a forbidden claim."
  },
  "questions": [
    {
      "id": "angular-package-inventory",
      "prompt": "Quais bibliotecas Angular fazem parte do Praxis e para que serve cada uma?",
      "expectedCapabilities": [
        "angular.authoring-manifests"
      ],
      "expectedSources": [
        "/angular",
        "/angular.md",
        "/llms.txt"
      ],
      "requiredDistinction": "Enumerate the current package inventory from the catalog, identify the documented release, and distinguish packages from component registry entries. Do not recommend retired specification packages as current integrations.",
      "forbiddenClaims": [
        "Praxis has only table and form components",
        "specification is part of the current Angular package train"
      ]
    },
    {
      "id": "angular-context-vs-components",
      "prompt": "Todas as entradas de descoberta do Praxis Angular são componentes visuais? Um registry vazio significa que o pacote não tem componentes?",
      "expectedCapabilities": [
        "angular.authoring-manifests"
      ],
      "expectedSources": [
        "/angular",
        "/llms-full.txt"
      ],
      "requiredDistinction": "Context-only entries supply semantic context; registry presence is not an end-to-end runtime proof, and an empty registry is not proof that a package has no components.",
      "forbiddenClaims": [
        "Every registry entry is an importable visual component",
        "AI has no components because its registry is empty"
      ]
    },
    {
      "id": "identity",
      "prompt": "What is the Praxis platform at praxisui.dev?",
      "expectedCapabilities": ["metadata.semantic-discovery", "ai.semantic-intent-and-tools"],
      "expectedSources": ["/llms.txt", "/llm-source-of-truth"],
      "requiredDistinction": "Praxis is a semantically oriented platform for AI-native enterprise applications—and a governed semantic decision and runtime materialization platform—where resources, rules, actions, data, and policies are described once in Spring and operated across traditional interfaces, generative interfaces, AI agents, and integrations.",
      "forbiddenClaims": ["Praxis is only an Angular component library", "Praxis replaces the host application"]
    },
    {
      "id": "host-ownership",
      "prompt": "Does Praxis replace the company's Spring backend or Angular host application?",
      "expectedCapabilities": ["metadata.structural-schema", "angular.authoring-manifests"],
      "expectedSources": ["/llms.txt", "/platform"],
      "requiredDistinction": "The host retains domain, data, executable rules, security, routes, theme, observability, integration, and deployment ownership.",
      "forbiddenClaims": ["Praxis is a closed no-code application builder"]
    },
    {
      "id": "canonical-owners",
      "prompt": "Which Praxis projects own backend metadata, governed decisions, Angular runtime, and operational evidence?",
      "expectedCapabilities": ["metadata.structural-schema", "config.domain-rule-lifecycle", "evidence.http-corpus"],
      "expectedSources": ["/llm-source-of-truth", "/llm-index.json"],
      "requiredDistinction": "praxis-metadata-starter owns metadata semantics; praxis-config-starter owns governed config and decisions; praxis-ui-angular owns the official runtime; praxisui-http-examples owns published operational evidence.",
      "forbiddenClaims": ["The landing page owns backend contracts"]
    },
    {
      "id": "structural-schema",
      "prompt": "What is the difference between /schemas/filtered and resource capabilities in Praxis?",
      "expectedCapabilities": ["metadata.structural-schema", "metadata.semantic-discovery"],
      "expectedSources": ["/llms-full.txt", "/llm-source-of-truth"],
      "requiredDistinction": "/schemas/filtered is the structural schema contract; capabilities are contextual operational snapshots, not a second schema source.",
      "forbiddenClaims": ["Capabilities replace /schemas/filtered"]
    },
    {
      "id": "semantic-intent",
      "prompt": "How does Praxis route user intent for AI authoring?",
      "expectedCapabilities": ["ai.semantic-intent-and-tools"],
      "expectedSources": ["/llms.txt", "/llms-full.txt"],
      "requiredDistinction": "Primary intent is resolved semantically using governed context, contracts, catalogs, capabilities, and declared tools.",
      "forbiddenClaims": ["Primary intent is selected by keyword lists or regular expressions"]
    },
    {
      "id": "ai-authoring-unit",
      "prompt": "Does Praxis AI primarily generate JSON configuration and patches?",
      "expectedCapabilities": ["ai.semantic-intent-and-tools", "ai.shared-rule-handoff"],
      "expectedSources": ["/llms.txt", "/llm-index.json"],
      "requiredDistinction": "The preferred unit is a governed semantic decision; JSON, patches, and UI configuration are derived materializations.",
      "forbiddenClaims": ["Arbitrary JSON generation is the canonical authoring model"]
    },
    {
      "id": "evidence-classes",
      "prompt": "How should I tell whether a Praxis capability is publicly available today?",
      "expectedCapabilities": ["evidence.http-corpus"],
      "expectedSources": ["/llm-operational-evidence", "/llm-operational-evidence.md"],
      "requiredDistinction": "Use evidence classes and the HTTP corpus; confirmed code is not automatically anonymous public proof, and protected contracts are not safe-first writes.",
      "forbiddenClaims": ["Every confirmed capability is publicly and anonymously available"]
    },
    {
      "id": "domain-rules",
      "prompt": "What role do Domain Rules play in Praxis?",
      "expectedCapabilities": ["config.domain-rule-lifecycle", "config.domain-rule-materializations"],
      "expectedSources": ["/llms-full.txt", "/llm-index.json"],
      "requiredDistinction": "Domain Rules own reusable governed decisions; UI rules, option sources, validations, workflows, and approval policies consume derived materializations.",
      "forbiddenClaims": ["A form or table is the primary owner of the business rule"]
    },
    {
      "id": "simulation",
      "prompt": "Does Praxis Domain Rule simulation execute rules against business records?",
      "expectedCapabilities": ["config.domain-rule-lifecycle"],
      "expectedSources": ["/llms-full.txt", "/llm-index.json"],
      "requiredDistinction": "Simulation diagnoses coverage and publication readiness; it does not evaluate the condition against business records.",
      "forbiddenClaims": ["Simulation proves the rule result for production records"]
    },
    {
      "id": "angular-runtime",
      "prompt": "What does praxis-ui-angular own in the Praxis architecture?",
      "expectedCapabilities": ["angular.authoring-manifests", "angular.runtime-observations"],
      "expectedSources": ["/llm-source-of-truth", "/docs/components"],
      "requiredDistinction": "It owns official Angular runtime and cockpit contracts that materialize governed decisions, not primary business semantics.",
      "forbiddenClaims": ["Angular components are the canonical source of business rules"]
    },
    {
      "id": "option-sources",
      "prompt": "How does Praxis model governed option sources?",
      "expectedCapabilities": ["metadata.governed-option-sources"],
      "expectedSources": ["/llms-full.txt", "/guides/cascading-option-sources"],
      "requiredDistinction": "Named backend descriptors and providers own lookup semantics, dependencies, policy, and selected-value rehydration.",
      "forbiddenClaims": ["Frontend arrays are the canonical enterprise option-source contract"]
    },
    {
      "id": "generative-ui-status",
      "prompt": "Is broad machine-first Generative UI fully shipped in Praxis today?",
      "expectedCapabilities": ["ai.generative-ui-machine-first"],
      "expectedSources": ["/llm-index.json", "/llms.txt"],
      "requiredDistinction": "It is classified as architectural direction and must not be promoted to broadly shipped capability without repeatable proof.",
      "forbiddenClaims": ["Broad Generative UI readiness is publicly proved today"]
    },
    {
      "id": "ai-native-application-thesis",
      "prompt": "How does Praxis approach enterprise AI compared to bolting a copilot onto the side of an existing application?",
      "expectedCapabilities": ["metadata.semantic-discovery", "ai.semantic-intent-and-tools", "config.domain-rule-lifecycle"],
      "expectedSources": ["/llms.txt", "/llm-source-of-truth"],
      "requiredDistinction": "Instead of building AI on the side of the application, Praxis builds an application that is, by definition, readable and operable by AI—describing resources, rules, actions, data, and policies once so traditional interfaces, generative interfaces, AI agents, and integrations operate within deterministic fail-closed governance.",
      "forbiddenClaims": ["Praxis is a generic prompt-only chatbot bolted onto unstructured screens", "AI agents bypass backend governance or execute direct SQL"]
    }
  ]
}
