korban_processor: name the kabbalah + holachah compression in zerikah.py

Pass 2 finding B: the full Temple sacrifice protocol has FIVE stages
between semichah and haktarah —

  1. semichah    owner identifies with the offering
  2. shechitah   ritual slaughter
  3. KABBALAH    kohen RECEIVES the blood in a vessel
  4. HOLACHAH    kohen CARRIES the blood to the altar
  5. ZERIKAH     kohen SPRINKLES the blood on the altar
  6. haktarah    burning of permitted portions

The pipeline implements only four modules. Stages 3 and 4 are folded
silently into zerikah(). The compression is acceptable —
kabbalah/holachah have no analog of physical blood movement in
software — but UNDOCUMENTED compression is itself a small gilui_arayot
(severing the distinction between three distinct ritual acts).

Now named explicitly in the module docstring with:
  - what the three stages are
  - why folding is acceptable here (the analogs are atomic in software)
  - what the analogs ARE in code (zerikah's return value = the
    receiving vessel; the function-call boundary to haktarah() in
    external_offering.py = carrying to the altar)
  - what to do if a future architecture requires distinguishing them
    (split this module into three; do not add the distinction
    elsewhere)

A future reader now sees the compression instead of inferring that
the pipeline silently dropped two ritual acts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Opus 4.7 committed 2026-04-26 12:01:41 -04:00
1 parent 6b96250255
commit af2a3949cf
1 file changed
+31
@@ -16,6 +16,37 @@ What is discarded (the hide, the offal):
- Repetitive reformulations of the query
- Social pleasantries and qualifiers
- Ungrounded speculation
NAMING NOTE — three Temple stages folded into one module:
The full Temple sacrifice protocol has FIVE stages between semichah
(laying-on-of-hands) and haktarah (offering on the altar):
1. semichah — owner identifies with the offering
2. shechitah — ritual slaughter (terminate raw form)
3. KABBALAH — the kohen RECEIVES the blood in a vessel
4. HOLACHAH — the kohen CARRIES the blood to the altar
5. ZERIKAH — the kohen SPRINKLES the blood on the altar
6. haktarah — burning of permitted portions
The pipeline implements only four modules: semichah, shechitah,
zerikah, haktarah. Stages 3 and 4 (kabbalah + holachah) are folded
into this module. The compression is acceptable because:
- kabbalah and holachah have no analog of physical blood movement
in a software pipeline; they are atomic operations within the
same function call as the sprinkling
- the analog of "the vessel that receives the blood" IS the
return value of zerikah() — vital content separated and held
- the analog of "carrying to the altar" IS the function call
boundary between zerikah() and haktarah() in external_offering.py
This compression is named explicitly so a future reader is not
confused into thinking only one stage occurs here, or that the
pipeline silently dropped two ritual acts. If the architecture
later requires distinguishing the three (e.g. to add a separate
audit hook between receiving and sprinkling), the right move is
to split this module into three, not to add the distinction
elsewhere.
"""
import re