# Arxo package question catalog 0.1 Authoring input for the question catalog: which queries are provided for the package and what verifies them. A card is a parameterized query template with a stable id, not an "answer": a card's presence does not mean a positive answer on the case, completeness of the law, or sufficiency of the facts submitted. Metadata, not semantics: not lowered into CLIR, not included in the package hash. The schema is closed; substantive links (the predicate is declared and derivable, the test executes exactly this template, the boundary is named in the package info) are held by a repository gate. ## Versions Accepted `format`: `law.package-questions/0.1`. ## Top-level fields | name | type-or-$ref | required | description | |---|---|---|---| | `format` | `"law.package-questions/0.1"` | yes | — | | `package` | `string` | yes | Package name from law.toml [package].name. | | `tasks` | `array` | yes | — | | `questions` | `array` | yes | — | | `boundaries` | `array` | yes | — | | `internal` | `array` | yes | Derivable predicates without their own card — listed by name, with a reason. A wildcard for "everything else internal" is not provided. | | `language` | enum (2) | no | Language of the QUESTIONS.md wrapper: ru by default. Packages published as a separate repository do not carry a second language (en). | ## Enumerations | location | values | |---|---| | `properties/format` | `"law.package-questions/0.1"` | | `properties/language` | `"ru"`, `"en"` | | `$defs/Parameter/properties/role` | `"bound"`, `"collected"` | | `$defs/Question/properties/kind` | `"truth"`, `"why_not"`, `"collect"`, `"positions"` | | `$defs/Question/allOf/0/if/properties/kind` | `"positions"` | | `$defs/Question/allOf/1/if/properties/kind` | `"collect"` | | `$defs/Question/allOf/1/then/properties/parameters/contains/properties/role` | `"collected"` | | `$defs/Question/allOf/1/else/properties/parameters/items/properties/role` | `"bound"` | | `$defs/Boundary/properties/reason_kind` | `"source_delegates"`, `"not_formalized"`, `"engine_limit"`, `"case_data"`, `"open_reading"` | ## Raw schema [`https://law.arxo.io/schema/package-questions.schema.json`](https://law.arxo.io/schema/package-questions.schema.json) ## `Id` Type: `string`. ## `Name` Type: `string`. ## `NormName` Short norm template name; expand instances add path segments (`InsurerMustPayWithinTerm/duty/norm`). Type: `string`. ## `SourceUnits` Identifiers of sources.law fragments (CLIR `fragment` nodes) without a namespace. Type: `array`. ## `Parameter` Type: `object`. Required: `name`, `type`, `role`. | name | type-or-$ref | description | |---|---|---| | `name` | [`#/$defs/Name`](#name) | — | | `type` | `string` | Short type name of the declaration (after `#`). | | `role` | enum (2) | bound — supplied by the asker; collected — gathered by the answer (only for kind=collect). | ## `Question` Type: `object`. Required: `id`, `task`, `question`, `kind`, `template`, `tests`. | name | type-or-$ref | description | |---|---|---| | `id` | [`#/$defs/Id`](#id) | — | | `task` | [`#/$defs/Id`](#id) | — | | `question` | `string` | The question in Russian, phrased as an insurer, injured party, or agent would ask it. | | `kind` | enum (4) | — | | `predicate` | [`#/$defs/Name`](#name) | — | | `norms` | `array` | — | | `parameters` | `array` | — | | `template` | `string` | The query template in `evaluate …;` form with `` placeholders for bound parameters; for positions — `evaluate positions();` and the expected form `position(, )`. | | `branches` | `array` | — | | `tests` | `array` | Titles of `test "…"` in the package's tests/**/*.lawtest that execute a query of this template. | | `cases` | `array` | Names of `[[cases]]` cases in the teaching packages examples/*/law.toml. | | `queries` | `array` | Files examples/*/queries/.json of the same kind and predicate. | | `evidence` | `array` | — | | `source_units` | [`#/$defs/SourceUnits`](#sourceunits) | — | | `related_boundaries` | `array` | — | | `notes` | `string` | — | ## `Boundary` Type: `object`. Required: `id`, `task`, `question`, `reason_kind`, `limitation`, `source_units`. | name | type-or-$ref | description | |---|---|---| | `id` | [`#/$defs/Id`](#id) | — | | `task` | [`#/$defs/Id`](#id) | — | | `question` | `string` | A question the package does NOT answer. | | `reason_kind` | enum (5) | source_delegates — the source delegates elsewhere; not_formalized — the norm exists in the text but has no rules yet; engine_limit — a limitation of the language or engine; case_data — data is needed that the case does not carry; open_reading — an open interpretation question with an adopted reading. | | `limitation` | `string` | Verbatim string from the package's package-info.json `limitations`: a single limitation text, not a third copy. | | `source_units` | [`#/$defs/SourceUnits`](#sourceunits) | — | | `input` | [`#/$defs/Name`](#name) | The empirical predicate through which the missing piece is supplied as a case fact. | | `related_question` | [`#/$defs/Id`](#id) | — | | `notes` | `string` | — |