R-325 (controller half): retrieval_promise_gate imports the shared stem list

STEMS now comes from felhom.eu/scripts/customer_copy_vocab.py (RETRIEVAL_STEMS), read the
way controller_gates.py reads the other shared checkers (CI clones felhom.eu beside this repo);
an absent or empty vocabulary is INCONCLUSIVE (exit 2), never a pass. Decoys: vocabulary
absent -> rc 2; an invented stem in a doctored shared list convicts a template using it.
hub_copy_gate.check_drift on this file now reads 'ok — single source'.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-05 22:23:40 +02:00
parent 8ce496f124
commit daeed27223
2 changed files with 67 additions and 2 deletions
+18 -1
View File
@@ -51,7 +51,24 @@ GO_SOURCES = [
# R-311 adds `visszanyit`: the honest new message says a customer needs support's help „a régebbi
# előzményed visszanyitásához". That is the SAME claim in a fourth verb, and the docstring above
# records what happens when the guard chases words instead of claims — it misses the next one.
STEMS = ["visszaállíthat", "visszaszerezhet", "visszahozhat", "visszanyit"]
#
# R-325: the list is NOT kept here. It lives ONCE in felhom.eu/scripts/customer_copy_vocab.py, which
# the hub's copy gate imports too — two copies of a word list is the R-299 defect exactly. The
# sibling clone is read the way controller_gates.py reads reuse_refs_check.py: CI clones felhom.eu
# beside this repo, and an ABSENT clone is INCONCLUSIVE (exit 2) — never a pass on an empty list.
# FELHOM_SHARED_SCRIPTS overrides the directory (the decoy suite uses it; nothing else should).
_SHARED_SCRIPTS = os.environ.get("FELHOM_SHARED_SCRIPTS") or os.path.normpath(
os.path.join(_HERE, "..", "..", "..", "felhom.eu", "scripts"))
if not os.path.isfile(os.path.join(_SHARED_SCRIPTS, "customer_copy_vocab.py")):
print("retrieval-promise gate INCONCLUSIVE: the shared vocabulary is missing (%s) — the felhom.eu "
"clone must sit beside this repo; without the stems nothing can be judged" %
os.path.join(_SHARED_SCRIPTS, "customer_copy_vocab.py"))
sys.exit(2)
sys.path.insert(0, _SHARED_SCRIPTS)
from customer_copy_vocab import RETRIEVAL_STEMS as STEMS # noqa: E402
if not STEMS:
print("retrieval-promise gate INCONCLUSIVE: customer_copy_vocab.RETRIEVAL_STEMS is empty")
sys.exit(2)
# R-564 — THE SPLIT VERB. Hungarian moves the particle after the verb when something is stressed:
# „csak akkor ÁLLÍTHATÓK VISSZA", „csak a hiányzó fájlokat HOZOD VISSZA". The joined stems above never