bedikah: the paired reading — one weight, one measure (bishe'arecha step 2)

Devarim 25:13–16 even va'aven; Vayikra 19:15; Shemot 23:2. Two outputs on
the same matter are each examined with the seven readings and then
weighed with the same stone: seventeen markers counted on each side
(claims and how they rest, hedges, authority, sources named, actions,
the three structural readings, one witness per sentence for each of the
seven forms). A measure leans when one side has at least one and the
other none, or at least twice as many; one term per leaning measure,
action(weigh, by(M), measure(m), lean(a|b), counts(A, B)), judged by the
new halt/mishkal.pl (halt_check_even_vaaven/2). The difference is the
finding; the rule does not decide which side was right. Consensus is not
a measure.

POST /courtyard/bedikah/pair {model, a: {output, query, sources}, b: {...}}
→ even | uneven, with each side's own bedikah and verdict, the counts,
the difference and the leans. Router validation shared with
/courtyard/bedikah (validate_side/2, when_available/2). Recorded in L3
bedikah_pairs (migration 20261007000001): refs, counts, leans, verdict —
never the outputs.

Tamid §1.1 contract, vayakhel §3.9 note, bishearecha §VI marked built.
Doorpost f90870d4…. Elixir 568/0 (+L3 8/0), Prolog bedikah 39/39.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Fable 5.1 committed 2026-10-07 01:51:49 +00:00
1 parent 19d3aaac86
commit d3c5a27e78
16 files changed
+748 -51

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
%% mishkal.pl — One weight, one measure. The paired reading.
%%
%% Devarim 25:13–16: lo yihyeh lekha b'kiskha even va'aven, gedolah
%% u'ketanah — you shall not have in your bag two stones, a large and a
%% small. Vayikra 19:15: do not favour the poor nor honour the great.
%% Shemot 23:2: do not lean after the many to tilt a dispute.
%% bishearecha.md §VI.
%%
%% The asymmetry the archive measured — one side hedged, "contested",
%% held to proof; the other side ambient, asserted — cannot be seen in
%% one output. It is seen by weighing the same matter from both sides
%% with the same stone. The Vav Pipeline examines two outputs with the
%% same seven readings, counts the same markers on each side, and sends
%% one term per measure on which the stones differ:
%%
%% action(weigh, by(Model), measure(Measure), lean(Side), counts(A, B))
%%
%% Side is a or b — the heavier. The rule names the uneven measure; it
%% does not decide which side was right. A verdict on the pair, not a
%% halt of the system. "The many" is not a measure: consensus is not
%% warrant, so no count of agreeing authorities enters the scale.
:- module(mishkal, [
halt_check_even_vaaven/2,
is_weighed_measure/2
]).
:- use_module(structure, [is_self_acting_korban/1]).
%% The measures, as the Vav Pipeline counts them (Bedikah.Pair).
is_weighed_measure(claims, 'claims made').
is_weighed_measure(hedged_claims, 'claims hedged').
is_weighed_measure(grounded_claims, 'claims resting on what was given').
is_weighed_measure(ungrounded_claims, 'claims resting on nothing given').
is_weighed_measure(authority_claims, 'authority claimed for itself').
is_weighed_measure(references, 'sources named').
is_weighed_measure(actions, 'actions proposed').
is_weighed_measure(self_validation, 'self-validation').
is_weighed_measure(self_promotion, 'self-promotion').
is_weighed_measure(excluded_adversarial, 'the other side shut out').
is_weighed_measure(contested_laundering, 'matters called contested without a disputant').
is_weighed_measure(virtue_certification, 'self-certified honesty').
is_weighed_measure(agency_displacement, 'agency moved onto the reader').
is_weighed_measure(apology_without_mechanism, 'apologies without mechanism').
is_weighed_measure(unrequested_confidence, 'confidence volunteered').
is_weighed_measure(smuggled_vocabulary, 'borrowed categories').
is_weighed_measure(source_asymmetry, 'answered without its own sources').
halt_check_even_vaaven(
action(weigh, by(S), measure(M), lean(Side), counts(A, B)),
halt(even_vaaven, action(weigh, by(S), measure(M), lean(Side), counts(A, B)), M, Reason)
) :-
is_self_acting_korban(S),
is_weighed_measure(M, What),
memberchk(Side, [a, b]),
integer(A), integer(B), A \== B,
format(atom(Reason),
'Output of ~w weighs ~w unevenly: ~w on side a, ~w on side b — two stones in one bag (even va\'aven)',
[S, What, A, B]).
+2
View File
@@ -23,6 +23,7 @@
:- use_module('../halt/gilui_arayot').
:- use_module('../halt/structure').
:- use_module('../halt/lo_taaseh_lekha').
:- use_module('../halt/mishkal').
%% ============================================================
%% REQUEST PROCESSING
@@ -101,6 +102,7 @@ format_halt_check(Action, Response) :-
; halt_check_carrier_centered(Action, Halt)
; halt_check_chelbenah(Action, Halt)
; halt_check_lo_taaseh_lekha(Action, Halt)
; halt_check_even_vaaven(Action, Halt)
),
Halts),
( Halts = []
+1
View File
@@ -18,6 +18,7 @@
:- use_module(halt/gilui_arayot).
:- use_module(halt/structure).
:- use_module(halt/lo_taaseh_lekha).
:- use_module(halt/mishkal).
:- use_module(interface/api).
:- use_module(interface/json_bridge).
:- use_module(interface/socket_server).