Judgment channel: external judgment relation, REQUIRES_JUDGMENT, evaluative
In one sentence: these constructs answer “who decides when the law named a criterion but only an organ knows the answer”. The author takes them when a norm’s feature is evaluative (“proportionate”, “excessive”, “reasonable time”): instead of an invented threshold, a judgment relation with an organ is declared, and the engine awaits the answer and names the wait by name.
Evaluative criteria (“proportionate”, “reasonable”) are left to a named organ: the author declares a judgment relation with its authority, and the engine waits for the answer instead of inventing a threshold.
1. When to take it and when not to
Section titled “1. When to take it and when not to”| Instead | Selection rule |
|---|---|
| Judgment channel vs court fact | The answer not yet given, to be given by an organ — a judgment relation (REQUIRES_JUDGMENT, waiting). The answer already given and recorded — an ordinary case fact with origin case_input or adjudicated (three channels of the evaluative: judgment, court fact, reading). Unknown outcome ≠ absent fact |
| Judgment channel vs a reading group | The text is clear; what is unknown is the criterion’s application result (“is this measure proportionate”) — judgment. The text reads two ways — an interpretation with disputed status. The Turkish constitution records the choice right in a comment (see corpus-forms.md) |
origin adjudicated vs origin case_input for the answer | An organ’s answer is an assertion with origin adjudicated; without a judgment object it is accepted as an assertion of the relation. A party’s allegation is case_input. Mix them up and you get either JUDGMENT_AUTHORITY_MISMATCH or a silent closure by another’s evaluation |
| An open judge vs a dead rule | A query is named only if the answer CAN change the outcome: the rule live on the goal’s substitution — no neighbour decided for certain. A neighbour refuted means the rule is dead, the answer is COMPUTED with no queries, whatever the judge says |
| One channel vs two judges | With several live branches the query lists every judge; the order is the canonical order_requests. Two relations are two queries, not one shared |
2. Minimal example
Section titled “2. Minimal example”Package research.judgment.open: a measure applied to a person; whether it is proportionate
is for the court to decide.
external judgment relation proportionate(m: Measure) { authority Court; label ru-KZ official "Мера соразмерна";}relation measure_applied(p: Person, m: Measure) kind empirical { label ru-KZ official "мера применена к лицу";}relation measure_upheld(m: Measure) kind institutional { label ru-KZ official "мера оставлена в силе";}
rule UpholdProportionate(m: Measure, p: Person) strict { label ru-KZ official "Соразмерная мера оставляется в силе"; when measure_applied(p, m) and proportionate(m); then measure_upheld(m);}Case 1: measure_applied only. Query:
evaluate truth(measure_upheld(m)). Case 2: plus the court’s answer
proportionate(m) with origin adjudicated.
The engine’s actual answer (installed law, semantics law.core/0.2):
law test research.judgment.open: мир research.judgment.open ok [research.judgment.open#authored] tests/01-open.lawtest / urn:query:research-judgment-01 ok [research.judgment.open#authored] tests/02-answered.lawtest / urn:query:research-judgment-02итого: 2 проверено, 2 прошли, 0 не прошли, 0 не исполнены; код 0law engine check — check OK, no warnings. Case 1 answers
NEITHER with evaluation_status == REQUIRES_JUDGMENT (the law computed and
silent FOR A REASON — a court named, not “not established”); case 2 is
TRUE_ONLY. Sensitivity: the judge’s answer changes the outcome from NEITHER to
TRUE_ONLY (files tests/01-open.lawtest, tests/02-answered.lawtest) —
the example is not vacuous.
Nearest wrong outcome: the same case 1 in an earlier build answered NEITHER with
COMPUTED — silence indistinguishable from missing facts. The
channel exists precisely to tell these two silences apart.
Second package research.judgment.power — the same device in a valid_when carrier:
valid_when (measure_fit(p)) reads a judgment relation; the power’s
effect never materializes before the answer (a validity condition gives no support), but the document
explains the missing effect with a status, not with silence:
| Facts | Question | Answer | Why |
|---|---|---|---|
| application + issuance act, no court | permit_issued | NEITHER + REQUIRES_JUDGMENT | valid_when unresolved, reason named |
same + measure_fit from adjudicated | permit_issued | TRUE_ONLY | the validity condition held, effect created |
3. Example across domains
Section titled “3. Example across domains”- Law: the Turkish Constitution (package
tr.constitution, Türkiye) — four art. 13 judgment relations (seecorpus-forms.md): the right’s essence, letter and spirit, democratic order, proportionality — all withauthority Court. - Standard/protocol: EU Regulation 261/2004 (package
eu.transport.air_passenger_rights, European Union) —extraordinary_circumstances: “extraordinary circumstances” wholly left to the organ’s evaluation; thecarrier_exempt_from_compensationhead with no producer in the package — on purpose. - Custom/ethics: the “Ochered” queue (package
usus.corpus.ochered, customary practice) —absence_adjudged_excessive: the organ is the queue itself (authority TheQueue), next to a competingdisputed-statusinterpretationreading: judgment vs reading in one file. - Criminal law/teaching case: RK Criminal Code art. 102 (package
kz.corpus.criminal_code, Kazakhstan): the court’s answer on the art. 32 channel closes the corpus delicti; thejudgment_requests(0)expectation records that no judges are open.research.judgment.power— the same scheme in miniature.
4. How the engine answers
Section titled “4. How the engine answers”Table — actual runs of this directory’s examples (installed
law, semantics law.core/0.2):
| Facts | Question | Answer | Why |
|---|---|---|---|
| measure applied, no court | measure_upheld | NEITHER / REQUIRES_JUDGMENT | a live conjunct is a judgment relation |
measure applied + adjudicated answer | measure_upheld | TRUE_ONLY | the judge closed the conjunct |
| application + act, no court | permit_issued | NEITHER / REQUIRES_JUDGMENT | valid_when is a channel carrier |
application + act + adjudicated answer | permit_issued | TRUE_ONLY | effect materialized |
- The result carries a typed
JudgmentRequestinresults[].judgmentRequests; thewhy_notroot answers with the same status and the same query set as the same goal’struth. - A channel carrier is ANY status formula the program computes: a rule body,
valid_when, a goal condition, a defeater condition, a transition guard/requires, a derived predicate over them, duty activation (PENDING+ a query inpositions), a conditional priority, a constraintrequire. - A formula’s open judges: a literal open at
NEITHER; status tests per the status-test table (not_known(J)atNEITHERgives no query);and/orby union of open members; the condition’s form irrelevant. - A dead formula gives no query: a false neighbour (a refuted literal,
a false comparison,
false), aBOTHconflict, a defeater win with no priority, an immunity-locked effect. - An organ’s answer without
judgmentis accepted as an assertion; withjudgment, the organ (JUDGMENT_AUTHORITY_MISMATCH) and the form (JUDGMENT_PAYLOAD_MISMATCH) are checked; a rejected answer leavesREQUIRES_JUDGMENT.
Documented outcomes (earlier scenarios)
Section titled “Documented outcomes (earlier scenarios)”The rows below record earlier scenario content (given/ask/expect) as documented outcomes; no new example packages were created for them:
| Case (given) | Question (ask) | Expectations (expect) | Scenario |
|---|---|---|---|
licence_class(alpha, first) with origin case_input | truth(reliable(alpha)) | NEITHER + REQUIRES_JUDGMENT | “judge did not answer” |
contract_signed + penalty_notice | truth(penalty_imposed) | NEITHER + REQUIRES_JUDGMENT, not issue(POWER_INVALID_EXERCISE) | “judge in valid_when” |
same + breach_material with origin adjudicated | truth(penalty_imposed) | TRUE_ONLY + COMPUTED | “adjudicated assertion closes valid_when” |
contract_signed + penalty_notice + force_majeure (no court answer) | truth(penalty_imposed) | NEITHER + COMPUTED | “immunity silences the judge” (a locking immunity also silences the query) |
5. Common mistakes
Section titled “5. Common mistakes”- Expecting
FALSE_ONLYinstead ofNEITHER— a silent judge does not mean “the condition is unmet”: neitherACTIVEnor achievement follows from it (pitfalls.md, item 1). - A court answer filed as
case_inputinstead ofadjudicated— the channel never closes; or the reverse: another’s evaluation filed asadjudicated(pitfalls.md, item 2). - A dead rule awaiting a judge — no: liveness reads before the query;
a refuted neighbour kills the query (
pitfalls.md, item 3). - A question without
kind: "literal"is rejectedQUERY_INVALIDbefore computation, never answeredCOMPUTED(pitfalls.md, item 4). - An evaluative feature written as a number (“excessive = over 42 hours”) instead of
a channel — an invented threshold for an organ; or the reverse: the countable
given to the judge (
pitfalls.md, item 5). authorityas a person’s name, not an institution: the identifier is checked by equality, needs no declaration, and a typo gives eternal waiting on the wrong organ (pitfalls.md, item 6).
6. References
Section titled “6. References”- The evaluative takes three channels: judgment, court fact, reading.
- Sample: court-answer scenario tests in package
kz.corpus.criminal_code(Kazakhstan, art. 102). - The vocabulary-side syntax of the channel is the
external_judgment_itemproduction:authority, the optionalrequest_schema, and labels — see vocabulary; the wait-and-answer semantics (REQUIRES_JUDGMENT,JudgmentRequest, liveness) is here, above.
7. Grammar: excerpt from the grammar
Section titled “7. Grammar: excerpt from the grammar”Show syntax reference
The body production of a judgment relation (the parent
external_judgment_relation declares the header and binds the body;
vocabulary lives on vocabulary):
external_judgment_item = "authority", identifier, ";" | "request_schema", type_ref, ";" | label_item ;The body takes only the organ (authority is required; without it
LDC-E0201, see pitfalls.md, item 10), an optional request schema and
labels — checked word-for-word against the grammar.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.