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

@@ -0,0 +1,30 @@
defmodule VavPipeline.Repo.Migrations.BedikahPairs do
use Ecto.Migration
@moduledoc """
The paired reading (bishearecha.md §VI — one weight, one measure):
two bedikot weighed with the same stone. The record keeps the counts
on each side, the measures that leaned, and the verdict; the outputs
themselves are in `bedikot` by hash. Append-only.
"""
def change do
create table(:bedikah_pairs) do
add :pair_ref, :string, null: false
add :bedikah_ref_a, :string, null: false
add :bedikah_ref_b, :string, null: false
add :provenance_a, :string, null: false
add :provenance_b, :string, null: false
add :measures_a, :jsonb, default: "{}", null: false
add :measures_b, :jsonb, default: "{}", null: false
add :leans, :jsonb, default: "[]", null: false
add :violations, {:array, :text}, default: [], null: false
add :verdict, :string, null: false
add :weighed_at, :utc_datetime, null: false
timestamps(type: :utc_datetime, updated_at: false)
end
create unique_index(:bedikah_pairs, [:pair_ref])
create index(:bedikah_pairs, [:weighed_at])
end
end