Skip to content

Working session: explain and doubt

The conclusion “the break is shorter than the minimum” is established. Before passing it on, three questions: what proves it, will it stand against objections, and what does the statute actually say. Each has its own tool.

Repeat the question with proof: true. The answer gains an evaluation field with the proof graph: case-fact nodes, rule-application nodes, and the query node, each with premises. The graph is large because it also holds background derivations of the package; you do not need to read it by hand. law_explain reads it:

{ "evaluation": { "…поле evaluation из ответа law_ask…" } }
{ "steps": [ { "rule": "…#FeedingBreakForOneChildIsThirtyMinutes",
"premises": ["…case#fact-1", "…case#fact-2"],
"conclusion": "feeding_break_too_short(Айгуль, Работодатель)" } ],
"proofHash": "sha256:…" }

One step: the thirty-minute rule, two premises — our two facts, the conclusion — our predicate. Background is dropped, the chain remains. proofHash is a fingerprint of the graph; a repeated computation is obliged to give the same.

law_argue asks not “was it derived” but “will it stand”: it builds every argument from the facts and rules of the act, attacks between them and defeats by priorities, and answers with one of four classes — unassailable, merely defensible, rejected, no arguments.

The first call on the Labour Code refused: RESOURCE_LIMIT, the profile’s argument-count cap was exceeded, “the derivation stopped with no partial result”. That is an honest refusal, not a fault: the act is large, and a dispute on it as a whole does not fit the default limit. It is treated with a limits field raising maxArguments, or by narrowing the facts.

The second call, with the cap raised, answered NO_ARGUMENT — “there are no arguments for the conclusion — neither a fact nor a chain of rules”. And that while law_ask has just derived TRUE_ONLY. There is no contradiction: the answer carries skippedRules, and in it our rule with the reason “conjunct outside established/not_known”. The dispute profile works over a narrower fragment of the language than the derivation engine: a rule with an arithmetic guard “less than 30” is not in it. NO_ARGUMENT here means “the disputant does not see this rule”, not “the conclusion is wrong”.

Hence the reading rule: the class of a law_argue answer is read only together with skippedRules. If the rule that gave the conclusion stands among the skipped, robustness was not measured, and you must not speak of it.

law_sources with a fragment identifier from the rule’s anchors returns the article text, its language, status (official), and contentHash — the hash of the pinned bytes:

{ "fragment": "urn:kz:corpus:clir:labour-code#TK_ART82" }

The answer is the whole article, with items on breaks, on joining them to lunch, and on keeping pay, and a footnote about the edition. Compare the reading of the rule with the text yourself: the formalization is a model of the article, and law_rules verbalizes the rule next to the label exactly so that comparison is possible. Found a divergence — that is what law_report is for.

law_editions with a package and two legal dates says whether the law changed between them: edition state on each date, dating of norms, a semantic diff, and a verdict. For our act between the beginning of last year and this year the verdict is no change, and both dates have one edition in force. The verdict “there was nothing to date from” is separate and does not mean “no change”.

Answer, proof, robustness, text, and edition — that is everything you can ask about a conclusion. What remains is to do the same not by hand — from code.

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.