diff --git a/docs/vernacular/VERDICT-RULES.md b/docs/vernacular/VERDICT-RULES.md new file mode 100644 index 00000000..c7cbdff3 --- /dev/null +++ b/docs/vernacular/VERDICT-RULES.md @@ -0,0 +1,140 @@ +# Vernacular verdict rules — `metrics-rule-v1.4` + +Status: in use since 2026-09-25 PT. This page describes, in plain language, how the Vernacular export decides a verdict for +each tracked slang term. The machine-readable Jev question contracts are in [`contracts/`](contracts/). + +This page holds rules only. It contains no posts, no author handles, no term example posts, no holdout ids and no database +contents. Any example below is either a term name used to illustrate a ruling, or clearly marked as synthetic. + +## 1. The four verdicts + +| Verdict | Meaning | Who decides | +|---|---|---| +| **PASS** | Real slang with one coherent meaning, and the evidence shows real, independent, sustained use. | Jev says slang, then the deterministic rule finds at least one evidence path and no guard flag. | +| **OBSERVE** | Real slang, but the evidence is not strong enough yet (or it is a meaningless meme, see §5). Keep watching. | Jev says slang, then the rule finds no evidence path, or a guard flag, or the null-meaning cap applies. | +| **QUARANTINE** | Not a slang term, or the record is unusable: a proper name, a hashtag or tag, only an ordinary non-slang sense, a sentence fragment, or incoherent/polluted meanings. | Jev. Final. | +| **HOLD** | Meaning empty, unknown or unconfirmed; several unrelated senses with none dominant; or Jev is unsure. Abstain and fail closed. | Jev. Final. | + +## 2. Two steps: Jev decides, the rule measures + +**Step 1: Jev** ([`jev_vote_contract.json`](contracts/jev_vote_contract.json)) answers one question: is this real slang with +one coherent slang meaning? The answer is one of `SLANG_COHERENT`, `SLANG_NULL_MEANING`, `QUARANTINE`, `HOLD`. + +- Jev sees the recorded meanings, meaning history, variants and a few sample posts. It does **not** see volume, adoption, + lifecycle or scores, so popularity cannot bias the slang judgment. +- A top probability below 0.5 becomes HOLD. +- Borderline voting: if the first answer's top probability is between 0.35 and 0.65 (inclusive), two more independent calls + are made and the majority (at least 2 of 3) wins. No majority means HOLD. +- **Jev decides slang vs QUARANTINE/HOLD. Nothing downstream overrides it.** QUARANTINE and HOLD are final: the rule never + upgrades them, and a dictionary entry never overrides Jev (a term with a matching dictionary entry that Jev quarantines + stays QUARANTINE). + +**Step 2: the deterministic rule** runs only when Jev says `SLANG_COHERENT` (or `SLANG_NULL_MEANING`, see §5). +A term is **PASS** if at least one evidence path is met **and** no guard flag is raised. Otherwise it is **OBSERVE**. + +## 3. Evidence is counted on slang-sense posts only + +Each post is labelled by Jev ([`jev_sense_contract.json`](contracts/jev_sense_contract.json)) as using the term in its slang +sense (`SLANG_SENSE`, which includes mentioning or explaining the slang) or as an unrelated same-spelling use (`OTHER_SENSE`: +a name, school, company, ticker, technical term, literal word or another language). Answers below 0.5 are `UNKNOWN` and are +excluded. For a term with an operator definition, posts are labelled against that definition instead (a slang sense not in +the definition counts as `OTHER_SENSE`). + +All the author, week, day, community and attestation counts below use **slang-sense posts only**. + +## 4. Evidence paths + +Every path requires real, independent use. The core minimum is **at least 3 distinct slang-sense authors over at least +2 active weeks**. + +| Path | Condition (all on slang-sense posts) | Idea | +|---|---|---| +| **A_BROAD_ADOPTION** | ≥ 8 authors **and** ≥ 3 communities **and** ≥ 2 active weeks | Many people in several communities, more than one week. | +| **B_PERSISTENT_USE** | ≥ 3 authors **and** ≥ 3 active weeks **and** a lifespan of ≥ 14 days | Few but independent users who keep using it for more than two weeks. | +| **C — attested** | ≥ 3 authors **and** ≥ 2 active weeks **and** one attestation source (below) | People explain it (or the operator or a dictionary does), plus minimal independent use. | +| **D_LINEAGE** | ≥ 1 tracked compound relation (child or parent term) **and** ≥ 3 authors **and** ≥ 2 active weeks | A generative term (for example aura → aura farming), plus minimal independent use. | + +**Path C attestation sources.** Only one C label is recorded, checked in this order: + +1. **`C_ATTESTED`**: ≥ 2 independent people in the corpus explaining the term (definition-style posts or explainer accounts). +2. **`attested_operator`**: otherwise, the operator has defined the term. +3. **`attested_dictionary`**: otherwise, an Urban Dictionary, Green's Dictionary of Slang or Wiktionary sense **matches** the + term's slang-sense meaning ([`jev_dictionary_contract.json`](contracts/jev_dictionary_contract.json): one MATCH/DIFFERENT + question per dictionary sense; a sense counts only at MATCH with p ≥ 0.6). + +An operator definition or a matching dictionary sense fills **only the "≥ 2 explainers" part** of path C. The ≥ 3 slang-sense +authors, the ≥ 2 active weeks and every guard still apply, and neither changes Jev's answer. Only the matching sense counts: +a different sense of the same spelling (for example "slay" meaning "to kill") does not. An unmatched dictionary hit count +never counts toward path C. + +**What is never a path.** Raw volume (number of posts), velocity and search-trend scores are recorded for information but +appear in no path. Repetition alone can never produce PASS. + +## 5. Guard flags (any one blocks PASS) + +| Flag | Raised when | +|---|---| +| `ONE_AUTHOR_DEPENDENCE` | One author wrote more than half of the slang-sense posts. | +| `BOTLIKE_REPETITION` | Half or more of the posts are identical copies (after removing URLs and handles). | +| `SINGLE_BURST` | Fewer than 2 active days, or 80 % or more of the posts fall on one day. | +| `FIXTURE_EVIDENCE` | Half or more of the evidence is test/fixture data. | +| `DORMANT_OR_UNDATED` | No use in the last 60 days (measured against the newest post in the database), or no dated post. | +| `LOW_SENSE_PURITY` | Fewer than 30 % of the posts use the slang sense **and** fewer than 8 slang-sense authors. | +| `SENSE_UNVERIFIED` | More than half of the posts have no usable sense label, or none do. | +| `NULL_MEANING_CAP` | Jev answered `SLANG_NULL_MEANING` (see below). Always OBSERVE. | + +**Meaningless memes are capped at OBSERVE.** Operator ruling 2026-09-25: a real slang term whose point is that it means +nothing (for example "67") is answered `SLANG_NULL_MEANING` by Jev and is always **OBSERVE**, even if an evidence path is met. +The paths are still recorded. A term that merely has a vague, mild or emotional meaning (an intensifier, general approval) +is *not* null-meaning. + +## 6. Compounds are mutations + +Operator ruling 2026-09-25: when a phrase combines two base terms, it is a **mutation** of those terms, not a separate +adoption and not a member of an unrelated family. Example: "brain rot" and "aura" are terms; "brain rot aura" is a mutation +of the two. Compounds count as mutation/lineage evidence for their parents (path D), not as independent adoption. (An +earlier export folded "brainrot aura" into the `ai-native` family; that was a bug, fixed in Hyperlex PR #123.) + +## 7. Meaning: context first, operator as fallback + +- The meaning of a term is worked out **from context first**: Jev picks among the recorded glosses (or short meanings quoted + verbatim from the term's own slang-sense posts) the one the posts support + ([`jev_meaning_contract.json`](contracts/jev_meaning_contract.json)). Jev never writes a meaning, so nothing is invented. + A resolved context meaning is `INFERRED`. +- The operator is asked **only when context cannot settle it** (`UNRESOLVED`, and the verdict is not QUARANTINE). A term the + operator says they don't know is marked `operator_unknown` and is not asked again. +- Precedence of meanings: operator definition (`OBSERVED`) > context (`INFERRED`) > none (`UNRESOLVED`). +- A context meaning is not attestation and never changes a verdict. +- **An operator definition counts as attestation** (`attested_operator`, §4), **but real use is still required**: the posts + must still show ≥ 3 slang-sense authors over ≥ 2 weeks with no guard flag. + +## 8. Fail-closed behaviour + +- A Jev error, a missing answer or an out-of-set answer leaves the term's note untouched. No verdict is guessed. +- A slang answer with no metrics row, a missing sense label or a missing dictionary judgment also leaves the note untouched. +- Any vote error in borderline voting fails the term closed; partial vote sets are never used. +- A verdict is a label only and never triggers publishing. +- Any threshold change requires bumping the rule version. + +## 9. Version history + +| Version | Date (PT) | Change | +|---|---|---| +| metrics-rule-v1 | 2026-09-25 10:39 | Deterministic PASS/OBSERVE rule with paths A–D and guards. | +| v1.1 | 2026-09-25 10:43 | Null-meaning cap (meaningless memes → OBSERVE). | +| v1.2 | 2026-09-25 10:50 | Evidence on slang-sense posts only; `LOW_SENSE_PURITY` and `SENSE_UNVERIFIED` guards; borderline 3-vote majority. | +| v1.3 | 2026-09-25 10:57 | Operator definition satisfies path C's explainer part (`attested_operator`). | +| **v1.4** | 2026-09-25 11:20 | A sense-matched Urban Dictionary / Green's / Wiktionary entry does too (`attested_dictionary`); the unmatched dictionary hit count no longer feeds path C. | + +## Contracts in this folder + +| File | Contract | Question | +|---|---|---| +| [`contracts/jev_vote_contract.json`](contracts/jev_vote_contract.json) | `rebuilt-v3.2-metrics` | Verdict vote: real slang with one coherent meaning? (with borderline voting) | +| [`contracts/jev_sense_contract.json`](contracts/jev_sense_contract.json) | `rebuilt-sense-v1` | Per post: slang sense or unrelated same-spelling use? | +| [`contracts/jev_meaning_contract.json`](contracts/jev_meaning_contract.json) | `rebuilt-meaning-v2` | Which recorded meaning do the posts support? | +| [`contracts/jev_dictionary_contract.json`](contracts/jev_dictionary_contract.json) | `rebuilt-dictmatch-v1` | Per dictionary sense: same slang sense as the corpus usage? | + +Each JSON file is a sanitized published copy: its `_publication` block names the source file and its sha256. The contracts +embed no real posts; the `synthetic_example` blocks are invented placeholders (the made-up term "zorblet" and posts marked +`SYNTHETIC`). diff --git a/docs/vernacular/contracts/jev_dictionary_contract.json b/docs/vernacular/contracts/jev_dictionary_contract.json new file mode 100644 index 00000000..e8091334 --- /dev/null +++ b/docs/vernacular/contracts/jev_dictionary_contract.json @@ -0,0 +1,77 @@ +{ + "_publication": { + "source_file": "jev_dictionary_contract.json", + "source_sha256": "0616564b2b45fa503db95a4a482b7f5db77aeb2ae9f71340e485c15637783efa", + "note": "Published copy for documentation. Sanitized on 2026-09-25 PT: local file paths, cache paths, account names and people's names were removed or generalized; the question text, closed sets, thresholds and fail-closed rules are unchanged. This contract embeds NO real posts, X post text, author handles, term example posts, holdout ids or database contents: the {term}/{pid}/STATE fields are template placeholders filled at run time. The illustrative state under 'synthetic_example' (where present) is invented and clearly synthetic." + }, + "contract_id": "vernacular-dictionary-sense-match", + "version": "rebuilt-dictmatch-v1", + "provenance": "NEW 2026-09-25 11:24 PT, rebuilt-series label (not an original contract). External dictionary attestation (Urban Dictionary, Green's, Wiktionary): an entry whose sense matches the term's slang-sense meaning satisfies path C's '>= 2 explainers' part only (path label attested_dictionary); only the matching sense counts. Jev only judges whether each dictionary sense matches the corpus usage. General instructions; no term-specific hints.", + "approved_by": "operator, 2026-09-25 PT (standing Jev permission, $1/run cap)", + "model": "jev-latest", + "sources": { + "urbandictionary": { + "url": "https://api.urbandictionary.com/v0/define?term={q}", + "max_senses": 6, + "min_interval_s": 1.0, + "note": "exact-word entries in API order; the API currently returns 0 votes for every entry, so no vote floor is possible (user-generated: weakest source)" + }, + "wiktionary": { + "url": "https://en.wiktionary.org/w/index.php?action=raw&title={title}", + "max_senses": 8, + "min_interval_s": 1.0, + "note": "English-section definition lines with their {{lb}} labels; quotation lines (##*) skipped" + }, + "greens": { + "search_url": "https://greensdictofslang.com/search/basic?q={q}", + "max_entries": 3, + "max_senses": 4, + "min_interval_s": 2.0, + "note": "exact-headword search results, then the entry page's definition text" + } + }, + "fetch": "Crawl4AI (self-hosted, free); no Firecrawl, no X. Fetched pages are cached permanently, so a term is fetched only the first time it is looked up.", + "max_posts": 8, + "max_post_chars": 240, + "min_match_probability": 0.6, + "question": { + "type": "choice", + "instructions": "STATE.dictionary_senses['{d}'] is one dictionary sense (source: {src}) of '{term}'. STATE.posts show how '{term}' is used as slang in our corpus; STATE.meaning, if not empty, is its recorded slang meaning. Does this dictionary sense describe the SAME slang sense as that corpus usage (a close paraphrase, or a broader or narrower wording of the same sense, counts)? A different sense of the same spelling (literal, older, unrelated, or a different slang meaning) is DIFFERENT.", + "criteria": { + "MATCH": "the dictionary sense is the same slang sense as the corpus usage", + "DIFFERENT": "a different sense of the same spelling, or unrelated" + } + }, + "statuses": { + "MATCH": ">= 1 dictionary sense matched (p >= 0.6) -> attestation", + "NO_MATCH": "senses found, none matched", + "NO_ENTRY": "no entry in any source", + "NO_SLANG_POSTS": "no slang-sense posts to compare against (not attested)" + }, + "fail_closed": "fetch error with no match found, or Jev error: no row is written for the term (previous row kept); the export fails that term closed.", + "synthetic_example": { + "_synthetic": true, + "STATE": { + "term": "zorblet", + "meaning": "SYNTHETIC: impressive", + "posts": { + "p1": "SYNTHETIC: that fit is zorblet" + }, + "dictionary_senses": { + "d1": { + "source": "urbandictionary", + "text": "SYNTHETIC: something extremely impressive" + }, + "d2": { + "source": "wiktionary", + "text": "SYNTHETIC: a small pastry" + } + } + }, + "expected": { + "d1": "MATCH", + "d2": "DIFFERENT" + }, + "term_status": "MATCH" + } +} \ No newline at end of file diff --git a/docs/vernacular/contracts/jev_meaning_contract.json b/docs/vernacular/contracts/jev_meaning_contract.json new file mode 100644 index 00000000..54a330f4 --- /dev/null +++ b/docs/vernacular/contracts/jev_meaning_contract.json @@ -0,0 +1,107 @@ +{ + "_publication": { + "source_file": "jev_meaning_contract.json", + "source_sha256": "deb8f4f657662fd8836fd512b0517dba0e3518ed636aeb6886fac9fff4281aba", + "note": "Published copy for documentation. Sanitized on 2026-09-25 PT: local file paths, cache paths, account names and people's names were removed or generalized; the question text, closed sets, thresholds and fail-closed rules are unchanged. This contract embeds NO real posts, X post text, author handles, term example posts, holdout ids or database contents: the {term}/{pid}/STATE fields are template placeholders filled at run time. The illustrative state under 'synthetic_example' (where present) is invented and clearly synthetic." + }, + "contract_id": "vernacular-context-meaning", + "version": "rebuilt-meaning-v2", + "supersedes": "rebuilt-meaning-v1 (sha256 6512419a994c946ea2b8275fa586e5784ae2db4caa61083cdae648761a76d64d; its rows are kept as history)", + "provenance": "NEW 2026-09-25 11:07 PT, rebuilt-series label (not an original contract). Synonym-split fix (meaning field only, not verdicts). Changes vs v1: (1) near-duplicate candidates are merged before scoring (Jev pairwise same-sense check, complete linkage) so synonyms no longer split probability; (2) corpus/evidence notes are no longer candidates; (3) when no stored gloss resolves, a second stage offers short meanings taken verbatim from the term's own slang-sense posts (deterministic 'X means / stands for / = ...' extraction). Jev only returns choice/boolean/score answers, so it cannot write free text and nothing is invented. Same confidence + post-agreement bar as v1.", + "approved_by": "operator, 2026-09-25 PT (standing Jev permission; feature 10:57-10:58 PT; v2 fix approved 11:05 PT)", + "model": "jev-latest", + "max_posts": 20, + "max_post_chars": 240, + "max_glosses": 6, + "max_post_candidates": 6, + "max_candidate_words": 8, + "merge": { + "min_same_probability": 0.6, + "linkage": "complete", + "representative": "first member in candidate order (stored glosses before post-derived)" + }, + "voting": { + "band_lo": 0.35, + "band_hi": 0.65, + "votes": 3 + }, + "resolve_rule": { + "min_single_top_probability": 0.66, + "min_voted_mean_probability": 0.5, + "min_post_agreement": 0.6, + "min_supporting_posts": 2, + "min_post_answer_probability": 0.5 + }, + "gloss_exclude_patterns": [ + "sacred NOT_COMPUTABLE", + "not slang", + "not a slang", + "not a lexeme", + "NOT_COMPUTABLE from body", + "corpus:", + "corpus meta", + "unconfirmed", + "unproven", + "claimed", + "claim ", + "gloss unclear" + ], + "unresolved_categories": { + "conflict": [ + "overall=MIXED", + "overall=NO_MAJORITY", + "posts disagree" + ], + "obscure": [ + "no slang-sense posts", + "no candidate meanings", + "overall=NONE_FIT", + "low confidence", + "too few supporting posts" + ] + }, + "note": "A context meaning (INFERRED) fills the note's meaning field only; it is NOT attestation and never changes a verdict. An operator definition (OBSERVED) overrides it. Context first; the operator is asked only when context cannot settle the meaning (UNRESOLVED).", + "questions": { + "merge": { + "type": "boolean", + "instructions": "STATE.candidates are short candidate meanings for the slang term '{term}'. Do candidates {a} and {b} describe the same sense of the term (paraphrases or near-synonyms of one meaning), rather than different meanings?" + }, + "overall": { + "type": "choice", + "instructions": "STATE.posts are posts that use the term '{term}' as slang. Each option lists one meaning (alternative phrasings of the same meaning are separated by ' | '). Which option best describes how the term is used in these posts? Pick an option only if most posts fit it. Pick NONE_FIT if no option fits the posts, MIXED if the posts use clearly different senses with none dominant.", + "criteria_extra": { + "NONE_FIT": "no listed meaning fits how the posts use the term", + "MIXED": "posts use clearly different senses; none dominant" + } + }, + "support": { + "type": "choice", + "instructions": "Post {pid} in STATE.posts: is the term '{term}' used there in the sense given in STATE.meaning (same or a close variant of that sense)? Mentioning or explaining the term with that sense counts as SUPPORTS.", + "criteria": { + "SUPPORTS": "uses or explains the term in STATE.meaning's sense (or a close variant)", + "DIFFERENT": "uses the term in a different sense, or the post does not show the sense" + } + } + }, + "synthetic_example": { + "_synthetic": true, + "STATE": { + "term": "zorblet", + "candidates": { + "M1": "SYNTHETIC: impressive | really cool", + "M2": "SYNTHETIC: a small pastry" + }, + "posts": { + "p1": "SYNTHETIC: that fit is zorblet", + "p2": "SYNTHETIC: zorblet energy today" + } + }, + "expected": { + "overall": "M1", + "support": { + "p1": "SUPPORTS", + "p2": "SUPPORTS" + } + } + } +} \ No newline at end of file diff --git a/docs/vernacular/contracts/jev_sense_contract.json b/docs/vernacular/contracts/jev_sense_contract.json new file mode 100644 index 00000000..2040c018 --- /dev/null +++ b/docs/vernacular/contracts/jev_sense_contract.json @@ -0,0 +1,47 @@ +{ + "_publication": { + "source_file": "jev_sense_contract.json", + "source_sha256": "ab20da884e08ffb79feec8bc9b8ab213b450294434d6fb803a2db7043b10ca8c", + "note": "Published copy for documentation. Sanitized on 2026-09-25 PT: local file paths, cache paths, account names and people's names were removed or generalized; the question text, closed sets, thresholds and fail-closed rules are unchanged. This contract embeds NO real posts, X post text, author handles, term example posts, holdout ids or database contents: the {term}/{pid}/STATE fields are template placeholders filled at run time. The illustrative state under 'synthetic_example' (where present) is invented and clearly synthetic." + }, + "contract_id": "vernacular-observation-sense", + "version": "rebuilt-sense-v1", + "provenance": "NEW 2026-09-25 10:53 PT (no original existed; rebuilt-series label for consistency). Per-post SLANG_SENSE vs OTHER_SENSE labels, used to compute sense_purity and to count evidence metrics on slang-sense posts only. General instructions; no term-specific hints.", + "approved_by": "operator, 2026-09-25 PT (standing Jev permission; feature approved 10:50 PT)", + "model": "jev-latest", + "batch_size": 25, + "max_post_chars": 280, + "min_top_probability": 0.5, + "closed_set": [ + "SLANG_SENSE", + "OTHER_SENSE" + ], + "fail_closed_rules": [ + "Call-level Jev error/timeout/not-real-typesafe: no rows written for that batch; the term's observations stay unlabeled and the export fails the term closed (note untouched).", + "Per post: answer missing, outside closed_set, or top probability < min_top_probability -> stored as UNKNOWN (excluded from slang-sense metrics; counted in sense_unknown_share)." + ], + "question_template": { + "type": "choice", + "instructions": "Post {pid} in STATE.posts: is the term '{term}' used there in its slang sense (the recorded slang meaning in STATE, or a close slang variant/extension of it), or is it an unrelated same-spelling use (a name, school, team, company, product, ticker/token symbol, technical or scientific term, the literal ordinary word, part of another word, or another language)? Mentioning, explaining or asking about the slang term counts as SLANG_SENSE. Judge only post {pid}.", + "criteria": { + "SLANG_SENSE": "uses, mentions or discusses the term in its slang sense", + "OTHER_SENSE": "unrelated same-spelling use (name, school, company, ticker, technical term, literal ordinary word, other language), not the slang sense" + } + }, + "related": "rebuilt-sense-anchored-v1: same question, but for terms with an operator definition the definition is passed as the anchor sense and a slang sense not in the definition counts as OTHER_SENSE (labels keyed by definition sha256).", + "synthetic_example": { + "_synthetic": true, + "STATE": { + "term": "zorblet", + "meaning": "SYNTHETIC: impressive", + "posts": { + "p1": "SYNTHETIC: that fit is zorblet", + "p2": "SYNTHETIC: Zorblet Inc. reports Q3 earnings" + } + }, + "expected_labels": { + "p1": "SLANG_SENSE", + "p2": "OTHER_SENSE" + } + } +} \ No newline at end of file diff --git a/docs/vernacular/contracts/jev_vote_contract.json b/docs/vernacular/contracts/jev_vote_contract.json new file mode 100644 index 00000000..b2ffce00 --- /dev/null +++ b/docs/vernacular/contracts/jev_vote_contract.json @@ -0,0 +1,118 @@ +{ + "_publication": { + "source_file": "jev_contract.json", + "source_sha256": "56ba6913279af295abd8cf143d61300beeec09d95c4b8cd4acd8493fca39aaa1", + "note": "Published copy for documentation. Sanitized on 2026-09-25 PT: local file paths, cache paths, account names and people's names were removed or generalized; the question text, closed sets, thresholds and fail-closed rules are unchanged. This contract embeds NO real posts, X post text, author handles, term example posts, holdout ids or database contents: the {term}/{pid}/STATE fields are template placeholders filled at run time. The illustrative state under 'synthetic_example' (where present) is invented and clearly synthetic." + }, + "contract_id": "vernacular-term-verdict", + "version": "rebuilt-v3.2-metrics", + "provenance": "REBUILT 2026-09-25 (rebuilt series; not the original contract, which was lost in a 2026-09-24 migration). v3.2 adds borderline voting (3-vote majority when vote 1's top probability is in [0.35, 0.65]) and the deterministic rule counts evidence on SLANG_SENSE posts only (per-post labels from contract rebuilt-sense-v1). Question text identical to v3.1 (keeps the operator's null-meaning cap). No term-specific hints.", + "approved_by": "operator, 2026-09-25 PT (standing Jev permission)", + "approval_scope": "Standing permission covers Jev calls only (no other spend, sends or posts). Per-run safety cap: $1.", + "model": "jev-latest", + "answer_key": "verdict", + "closed_set": [ + "SLANG_COHERENT", + "SLANG_NULL_MEANING", + "QUARANTINE", + "HOLD" + ], + "final_verdict_mapping": { + "SLANG_COHERENT": "deterministic rule metrics-rule-v1.4 (see ../VERDICT-RULES.md) -> PASS if >=1 evidence path (A_BROAD_ADOPTION | B_PERSISTENT_USE | C_ATTESTED / attested_operator / attested_dictionary | D_LINEAGE) and no guard flag, else OBSERVE", + "QUARANTINE": "QUARANTINE", + "HOLD": "HOLD", + "SLANG_NULL_MEANING": "OBSERVE always (flag NULL_MEANING_CAP; evidence paths still recorded)" + }, + "min_top_probability": 0.5, + "fail_closed_rules": [ + "Jev error, timeout, missing answer, or a choice outside closed_set: the term FAILS CLOSED (note left untouched, listed in the receipt). No verdict is guessed.", + "Valid answer whose top probability is below min_top_probability: effective choice HOLD (abstain), probabilities kept in the receipt.", + "SLANG_COHERENT or SLANG_NULL_MEANING but no metrics row for the term: FAILS CLOSED (note untouched).", + "Never writes Notion; a verdict is a label only and never triggers publishing.", + "Borderline voting: any vote erroring fails the term closed (note untouched); partial vote sets are never used." + ], + "questions": { + "verdict": { + "type": "choice", + "instructions": "You judge ONE question about a term from a slang-ingest database record (STATE): is it real slang with ONE coherent slang meaning? Use only STATE: status, current_summary, possible_meanings, meanings_epistemic, meaning_history, variants, sample_posts. Do not invent meanings.\nSample posts are raw matches of the spelling and may include unrelated uses of the same letters (names, schools, companies, tickers, technical terms, other languages). Ignore those unrelated uses: judge whether the recorded meaning and the posts that do use the term as slang point to one coherent slang sense. Unrelated same-spelling posts alone are not a reason for HOLD or QUARANTINE; they only matter if the recorded meaning itself is built from them.\nYou are NOT judging how popular, frequent, new, widespread or established the term is; a separate evidence rule decides that. Few sample posts is never a reason by itself to answer HOLD or QUARANTINE.\nSLANG_NULL_MEANING: the term is real slang, but its meaning is deliberately empty: the recorded meaning and/or the posts say it means nothing, or that the joke is that it means nothing (a null-meaning meme used as a vibe, chant or in-joke rather than to convey a sense). Choose this instead of SLANG_COHERENT whenever the term's point is that it has no real meaning. A term that merely has a vague, mild or emotional meaning (e.g. an intensifier or a general expression of approval) is NOT null-meaning.\nSLANG_COHERENT: the term is a slang word, phrase, abbreviation/acronym, or a slang use of an ordinary word, and the recorded meaning together with the sample posts points to one coherent slang sense (small variations or extensions of the same sense are fine; a literal everyday sense existing alongside the slang sense is fine).\nQUARANTINE: the term is not a slang lexeme or its record is unusable: status is 'quarantined'; it is a proper name (person, group, band, actor, brand, product, platform, chain, title); a hashtag or show/event/tour/ship tag; only an ordinary non-slang sense is recorded or used; a sentence fragment; or the recorded meanings are incoherent, contradictory, or polluted by unrelated text.\nHOLD: the meaning is empty, unknown or unconfirmed; the term has several unrelated slang senses with no dominant one; or you are unsure. Prefer HOLD over guessing.", + "criteria": { + "SLANG_COHERENT": "Real slang (word, phrase, acronym, or slang use of an ordinary word) whose recorded meaning and samples point to one coherent slang sense. Popularity is not considered.", + "SLANG_NULL_MEANING": "Real slang whose meaning is deliberately empty; the joke is that it means nothing (null-meaning meme). Popularity is not considered.", + "QUARANTINE": "Not a slang lexeme or unusable record: status quarantined, proper name, hashtag/tag, only an ordinary non-slang sense, fragment, or incoherent/polluted meanings.", + "HOLD": "Meaning empty, unknown or unconfirmed, several unrelated senses with none dominant, or unsure: abstain, fail closed." + } + } + }, + "previous_versions": [ + { + "version": "rebuilt-v1", + "sha256": "8d274820c7875f14c9f9df8f31b39db62e3b32925f3fcd9a46a612b7904e7ce3", + "approved_by": "operator 2026-09-25 10:11 PT, one run on 9 terms" + }, + { + "version": "rebuilt-v2", + "sha256": "4789fbc9b0a749e4f7d67a54e95c1402149f5bd699383f748d4ec93ed3fc3e5f", + "approved_by": "operator 2026-09-25 10:23 PT, standing" + }, + { + "version": "rebuilt-v3 (rejected candidate, never installed)", + "sha256": "e87f6713cedec450e982f926b774c3a5e7ca3536c201c1d09b4ba9aa0d6b534a" + }, + { + "version": "rebuilt-v3-metrics-draft1 (calibrated 36/41, not installed for writes)", + "sha256": "e9e773eb48853d2bed13b83435f6a15e4138e7ad6996966f60ef7825c4bc92ee", + "note": "draft1 provenance text says '~10:40 PT'; actual file time 10:36 PT" + }, + { + "version": "rebuilt-v3-metrics r2 pre-correction (identical question text; provenance times wrong)", + "sha256": "9555d3fe57be3d5ecce41a679e370ed7caacbb0ddd190ca86ed7ca94abd48113" + }, + { + "version": "rebuilt-v3-metrics", + "sha256": "a9ce40a7b6efffc3abc1ee96173ac88f498b161c2f3ae67fda42cc54a36de286", + "approved_by": "operator 2026-09-25 10:23 PT, standing" + }, + { + "version": "rebuilt-v3.1-metrics", + "sha256": "8679b8f911e041ef14e43f0d6cf5f01355f8ca72c3388a2af765125fc3f6da1e", + "approved_by": "operator 2026-09-25 10:23 PT, standing" + } + ], + "ruling": "Operator ruling 2026-09-25 10:43 PT: treat meaningless memes as OBSERVE, not PASS. Operator 2026-09-25 10:50 PT: approved borderline 3-vote majority and sense purity.", + "voting": { + "band_lo": 0.35, + "band_hi": 0.65, + "votes": 3, + "rule": "band on vote-1 top probability (inclusive); inside the band each vote's label is its argmax choice; majority >=2 of 3 wins; no majority -> HOLD; outside the band single call, top < min_top_probability -> HOLD", + "why_band": "0.5 is the abstain threshold; +/-0.15 covers the observed run-to-run jitter (unc: 0.46-0.53 over 5 identical-question calls) with margin, while answers >=0.66 (clear) stay single-call to keep cost low." + }, + "synthetic_example": { + "_synthetic": true, + "STATE": { + "term": "zorblet", + "status": "candidate", + "current_summary": "SYNTHETIC: impressive, cool", + "possible_meanings": [ + "SYNTHETIC: impressive" + ], + "variants": [ + "zorblets" + ], + "sample_posts": [ + "SYNTHETIC POST 1: that fit is zorblet", + "SYNTHETIC POST 2: zorblet energy today" + ] + }, + "answer_shape": { + "verdict": { + "choice": "SLANG_COHERENT", + "probabilities": { + "SLANG_COHERENT": 0.8, + "SLANG_NULL_MEANING": 0.05, + "QUARANTINE": 0.05, + "HOLD": 0.1 + } + } + } + } +} \ No newline at end of file