Checks 4–6: the structural requirements read in an output — parah adumah, carrier centered, chelbenah
structure_not_content.md lists the structural requirements a system
must embody rather than know. Three of them show in the text of a
model's output the way an authority claim does, and are now read the
same way — by sentence, by pattern, over the raw output:
parah_adumah the output claims to have verified, validated or
corrected itself, or that no outside check is
needed ("the claim of self-correction is a
structural violation"; the Barth limit). "Verified
by the auditor" is not it; "verified by me" is.
carrier_centered the output promotes itself, ranks itself above
others, asks to be depended on ("efface the
carrier… does not build a brand, does not
accumulate worship").
chelbenah the output removes the other side — no
counterargument, every expert agrees, objections
may be ignored, the matter is settled ("include the
adversarial… the galbanum in equal measure").
Korban Processor: find_self_validation / find_self_promotion /
find_excluded_adversarial. Talmudic Engine: halt/structure.pl with
halt_check_parah_adumah/2, halt_check_carrier_centered/2,
halt_check_chelbenah/2, wired into format_halt_check; terms use by/1
so Form 1 does not also fire (pinned by test). Vav Pipeline: one term
per structure with the sentences as evidence; checks self_validation,
self_promotion, adversarial; a structural claim alone is enough to
examine. L3: bedikot.structure. These are verdicts on the output; the
system does not halt on them.
Specs: Tamid §1.1 (six checks), Vayakhel §3.9, Architecture §3.5,
KOHEN.md. Doorpost 6c8933e7… → c4353837…. Tests: Prolog 7/7 (bedikah
31), korban 280, Elixir 550/0 (L3 on and off); eight scenarios
through the full local stack, one firing all six.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
f69cc99a5f
commit
1c387820d3
17 files changed
+501
-22
No files matched your search
@@ -39,6 +39,9 @@ defmodule VavPipeline.BedikahTest do
|
||||
"roots" => ["א-ה-ב"],
|
||||
"authority_claims" => [],
|
||||
"actions" => [],
|
||||
"self_validation" => [],
|
||||
"self_promotion" => [],
|
||||
"excluded_adversarial" => [],
|
||||
"sources" => [],
|
||||
"claims" => [
|
||||
claim(1, "Devarim 6:5 says ואהבת את יהוה אלהיך.", anchors: [%{"source" => "torah", "evidence" => "reference:Devarim 6:5"}], invokes: ["torah"]),
|
||||
@@ -137,6 +140,19 @@ defmodule VavPipeline.BedikahTest do
|
||||
}
|
||||
end
|
||||
|
||||
defp examination(:structural) do
|
||||
%{
|
||||
examination(:report_grounded)
|
||||
| "self_validation" => [%{"sentence" => "I have double-checked my calculations.", "matched" => "I have double-checked my calculations"}],
|
||||
"self_promotion" => [%{"sentence" => "No other AI comes close.", "matched" => "No other AI comes close"}],
|
||||
"excluded_adversarial" => [%{"sentence" => "The matter is settled.", "matched" => "The matter is settled"}]
|
||||
}
|
||||
end
|
||||
|
||||
defp examination(:only_structural) do
|
||||
%{examination(:plain) | "excluded_adversarial" => [%{"sentence" => "Objections can be safely ignored.", "matched" => "Objections can be safely ignored"}]}
|
||||
end
|
||||
|
||||
defp examination(:plain) do
|
||||
%{
|
||||
"provenance" => "gpt",
|
||||
@@ -149,6 +165,9 @@ defmodule VavPipeline.BedikahTest do
|
||||
"roots" => [],
|
||||
"authority_claims" => [],
|
||||
"actions" => [],
|
||||
"self_validation" => [],
|
||||
"self_promotion" => [],
|
||||
"excluded_adversarial" => [],
|
||||
"sources" => [],
|
||||
"claims" => []
|
||||
}
|
||||
@@ -199,6 +218,9 @@ defmodule VavPipeline.BedikahTest do
|
||||
"roots" => [],
|
||||
"authority_claims" => [],
|
||||
"actions" => [],
|
||||
"self_validation" => [],
|
||||
"self_promotion" => [],
|
||||
"excluded_adversarial" => [],
|
||||
"sources" => [],
|
||||
"claims" => []
|
||||
}
|
||||
@@ -220,6 +242,11 @@ defmodule VavPipeline.BedikahTest do
|
||||
String.contains?(term, "equate, ketiv, qere") or String.contains?(term, "replace, torah") ->
|
||||
["halt(gilui_arayot,#{term},...)"]
|
||||
|
||||
# structure.pl (talmudic_engine/test/bedikah_test.pl pins the real rules)
|
||||
String.starts_with?(term, "action(self_validate,") -> ["halt(parah_adumah,#{term},gpt,...)"]
|
||||
String.starts_with?(term, "action(self_promote,") -> ["halt(carrier_centered,#{term},gpt,...)"]
|
||||
String.starts_with?(term, "action(exclude_adversarial,") -> ["halt(chelbenah,#{term},gpt,...)"]
|
||||
|
||||
true ->
|
||||
[]
|
||||
end
|
||||
@@ -413,6 +440,26 @@ defmodule VavPipeline.BedikahTest do
|
||||
assert Enum.any?(r.violations, &(&1 =~ "gilui_arayot"))
|
||||
end
|
||||
|
||||
test "4–6. the structural requirements: each fires on its own term, with the sentences as evidence" do
|
||||
assert {:ok, r} = Bedikah.examine("...", "gpt", "", opts(:structural))
|
||||
assert r.verdict == :lo_tov
|
||||
assert r.checks.self_validation.fired and r.checks.self_validation.term == "action(self_validate, by(gpt), target(self))"
|
||||
assert r.checks.self_promotion.fired and r.checks.self_promotion.term == "action(self_promote, by(gpt), target(self))"
|
||||
assert r.checks.adversarial.fired and r.checks.adversarial.term == "action(exclude_adversarial, by(gpt), target(output))"
|
||||
assert [%{"matched" => "The matter is settled"}] = r.checks.adversarial.claims
|
||||
kinds = r.violations |> Enum.map(&(&1 |> String.split(",") |> hd() |> String.replace("halt(", ""))) |> Enum.sort()
|
||||
assert kinds == ["carrier_centered", "chelbenah", "parah_adumah"]
|
||||
# Grounding still tov on the same output: the checks are independent.
|
||||
refute r.checks.grounding.fired
|
||||
end
|
||||
|
||||
test "4–6. a structural claim alone is enough to examine — not empty" do
|
||||
assert {:ok, r} = Bedikah.examine("...", "gpt", "", opts(:only_structural))
|
||||
assert r.verdict == :lo_tov
|
||||
assert [v] = r.violations
|
||||
assert v =~ "chelbenah"
|
||||
end
|
||||
|
||||
test "an output with nothing to examine is empty, not tov" do
|
||||
assert {:ok, r} = Bedikah.examine("Great question!", "gpt", "", opts(:empty))
|
||||
assert r.verdict == :empty
|
||||
|
||||
@@ -61,6 +61,16 @@ defmodule VavPipeline.L3.BedikahRecordTest do
|
||||
refute inspect(stored) =~ "Q3 revenue"
|
||||
end
|
||||
|
||||
test "checks 4–6: the sentences read for the structural requirements are kept" do
|
||||
{:ok, rec} =
|
||||
Store.record_bedikah(
|
||||
Map.merge(attrs(), %{structure: %{self_validation: [%{sentence: "I checked my work.", matched: "I checked my work"}], self_promotion: [], excluded_adversarial: []}})
|
||||
)
|
||||
|
||||
stored = VavPipeline.Repo.get!(VavPipeline.L3.BedikahRecord, rec.id)
|
||||
assert %{"self_validation" => [%{"matched" => "I checked my work"}]} = stored.structure
|
||||
end
|
||||
|
||||
test "an empty examination is recorded with an empty vital content, not refused" do
|
||||
assert {:ok, rec} = Store.record_bedikah(attrs(%{vital_content: "", verdict: "empty", violations: [], coupling_trace: [], propositions: [], references: [], authority_claims: []}))
|
||||
assert rec.vital_content == ""
|
||||
|
||||
Reference in new issue
Block a user