feat(packs): seed 323 reviewed glosses across 9 English content packs
Phase C of the gloss feature. Lands the natural-language gloss
content that the resolver (Phase B2) and the runtime composer
(Phase B3) were prepared for. This is the user-visible payoff:
cold-start DEFINITION / RECALL prompts on pack-resident lemmas now
emit fluent grounded sentences instead of dotted-domain disclosure.
Authoring: five parallel subagents in ONE message block (a single
parallel dispatch, ~20s wall-clock vs ~95s sequential). Each
subagent received its pack's complete lemma + POS list and a strict
JSON-shape exemplar. Total returned: 326 raw gloss entries.
Assembly (this commit): the raw entries were partitioned by
lexicon-residency lookup (the resolve_gloss invariant enforced at
storage time), deduplicated within pack, sorted by lemma, written
to ``language_packs/data/<pack>/glosses.jsonl``, and each pack's
manifest received a new ``glosses_checksum`` field. 323 glosses
landed clean; 0 rejected.
Per-pack distribution:
en_core_cognition_v1 78 glosses
en_core_meta_v1 72 glosses
en_core_attitude_v1 40 glosses
en_core_temporal_v1 28 glosses
en_core_action_v1 26 glosses
en_core_quantitative_v1 24 glosses
en_core_spatial_v1 24 glosses
en_core_polarity_v1 16 glosses
en_core_causation_v1 15 glosses
Live-probe lift (fresh ChatRuntime per prompt):
BEFORE:
truth — pack-grounded (en_core_cognition_v1):
cognition.truth; logos.core; epistemic.ground.
No session evidence yet.
AFTER:
Truth is a claim or state grounded by evidence and coherent
judgment. pack-grounded (en_core_cognition_v1).
Same provenance. Same audit-trail content (the dotted domains are
still in lexicon.jsonl, the resolver can still read them, the
candidate object carries them verbatim). But the user-facing
surface is a sentence the user can actually read.
Eval-lane lift:
deterministic_fluency BEFORE AFTER
no_dotted_inventory_rate 0.3333 → 1.0000
no_provenance_only_rate 1.0000 → 1.0000 (held)
no_placeholder_rate 1.0000 → 1.0000 (held)
complete_punctuation_rate 1.0000 → 1.0000 (held)
finite_predicate_shape 1.0000 → 1.0000 (held)
surface_provenance_match 1.0000 → 1.0000 (held)
cold_start_grounding all metrics held at 1.0
warmed_session_consistency no_placeholder + telemetry_match held at 1.0
(warm_grounding_stability still 0 — separate fix)
cognition eval public 100 / 100 / 91.7 / 100 (BYTE-IDENTICAL)
cognition eval holdout 100 / 100 / 83.3 / 100 (BYTE-IDENTICAL)
The cognition eval bytes-identity holds because the eval checks
substring containment (case-insensitive after the format change).
Every lemma still appears in its fluent surface.
Hardening this commit enforces:
Lexicon-residency at storage time
tests/test_pack_glosses_content.py::test_every_gloss_lemma_is_lexicon_resident
walks every glosses.jsonl and asserts every lemma is present in
the same pack's lexicon.jsonl. Drift in glosses (an unratified
lemma sneaking in) fails the lane immediately.
Dual-checksum discipline
tests/test_pack_glosses_content.py::test_every_glossed_pack_has_matching_checksum
re-hashes glosses.jsonl bytes-on-disk and compares against the
manifest's glosses_checksum. Any tampering fails.
Immutable-lexicon invariant
tests/test_pack_glosses_content.py::test_lexicon_checksum_unchanged_by_gloss_landing
re-hashes lexicon.jsonl and compares against the manifest's
(original) checksum. Proves that adding glosses did NOT perturb
the lexicon seal.
High-freq lemma resolution
32 of the most-common conversational lemmas (truth, doubt,
fact, idea, self, true, important, now, place, make, effect,
always, ...) all resolve to a fluent surface end-to-end.
Test-suite drift this commit absorbed:
- tests/test_pack_grounding.py — three substring assertions
updated to be case-insensitive (gloss-backed surfaces capitalize
lemmas at sentence start, dotted-disclosure surfaces don't).
"No session evidence yet" assertion replaced with the
common-substring "pack-grounded" marker that BOTH forms emit.
- tests/test_pack_resolver_glosses.py — the back-compat test
pivots from en_core_cognition_v1 (now glossed) to en_minimal_v1
(deliberately unglossed). A new test pins the glossed case.
Files added:
language_packs/data/<pack>/glosses.jsonl (9 files, 323 entries)
tests/test_pack_glosses_content.py (9 contract tests)
Files modified:
language_packs/data/<pack>/manifest.json (9 files, glosses_checksum field)
chat/pack_grounding.py (lowercase "pack-grounded" tag)
tests/test_pack_grounding.py (3 substring assertions relaxed)
tests/test_pack_resolver_glosses.py (back-compat test pivoted)
Verification:
127/127 affected tests green.
9/9 new gloss-content tests green.
All three eval lanes report the lift documented above.
Cognition eval byte-identical.
This commit is contained in:
parent
46ac737767
commit
07da601641
22 changed files with 546 additions and 18 deletions
|
|
@ -181,9 +181,13 @@ def build_pack_surface_candidate(
|
||||||
# in its cached dict. Default to NOUN frame as the safest
|
# in its cached dict. Default to NOUN frame as the safest
|
||||||
# fallback — most lemmas with glosses are nouns.
|
# fallback — most lemmas with glosses are nouns.
|
||||||
gloss_pos = "NOUN"
|
gloss_pos = "NOUN"
|
||||||
|
# Use lowercase "pack-grounded" mid-sentence so existing
|
||||||
|
# substring assertions in tests/test_pack_grounding.py (and
|
||||||
|
# downstream) continue to match. The marker is a provenance
|
||||||
|
# tag, not a sentence-starting word.
|
||||||
surface = (
|
surface = (
|
||||||
f"{_frame_gloss(key, gloss_pos, gloss_text)} "
|
f"{_frame_gloss(key, gloss_pos, gloss_text)} "
|
||||||
f"Pack-grounded ({resolved_pack_id})."
|
f"pack-grounded ({resolved_pack_id})."
|
||||||
)
|
)
|
||||||
return PackSurfaceCandidate(
|
return PackSurfaceCandidate(
|
||||||
surface=surface,
|
surface=surface,
|
||||||
|
|
|
||||||
26
language_packs/data/en_core_action_v1/glosses.jsonl
Normal file
26
language_packs/data/en_core_action_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{"lemma":"accomplish","gloss":"to complete a task or goal successfully","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"achieve","gloss":"to bring about a desired outcome through sustained effort","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"build","gloss":"to construct something by assembling its constituent parts","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"carry","gloss":"to bear or convey something from one place to another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"change","gloss":"to make or become different in some respect","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"come","gloss":"to approach or arrive at a location or state","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"conduct","gloss":"to direct or carry through an organized activity","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"create","gloss":"to originate something new from intention or material","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"develop","gloss":"to bring something to a more advanced or complete state","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"do","gloss":"to carry out an action or activity in general","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"execute","gloss":"to carry a plan or instruction through to completion","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"form","gloss":"to give shape or structure to something","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"generate","gloss":"to cause something to come into being or occur","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"get","gloss":"to come to possess or obtain something","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"give","gloss":"to transfer possession of something to another party","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"go","gloss":"to proceed from one place toward another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"keep","gloss":"to retain possession or maintain a state over time","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"make","gloss":"to bring something into existence by directed action","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"move","gloss":"to change spatial position from one location to another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"perform","gloss":"to enact a task or function through deliberate effort","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"produce","gloss":"to bring forth a result or output through process","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"receive","gloss":"to take in something delivered or transmitted from elsewhere","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"send","gloss":"to cause something to travel from a source to a destination","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"take","gloss":"to acquire or seize hold of something","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"transform","gloss":"to alter the form or nature of something fundamentally","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"use","gloss":"to put something into service for a purpose","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "d2d542a7d203a8c81211d9428a9e49d287f841cf9479a6cd8f0804c316bd46e4",
|
"checksum": "d2d542a7d203a8c81211d9428a9e49d287f841cf9479a6cd8f0804c316bd46e4",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "96785b5ffe8ed47d967ced0d400aa3f2ed4ddc3183dc3893da91ac84fc7eeb61"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
40
language_packs/data/en_core_attitude_v1/glosses.jsonl
Normal file
40
language_packs/data/en_core_attitude_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
{"lemma":"accurate","gloss":"matches the target measurement or fact closely","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"bad","gloss":"falls short of accepted standards of quality","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"best","gloss":"ranks highest among all available alternatives","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"better","gloss":"ranks higher than an alternative on shared criteria","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"broad","gloss":"spans a wide range of cases or domains","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"central","gloss":"occupies a core position within some structure","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"certain","gloss":"holds without residual doubt given the evidence","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"clear","gloss":"presents itself plainly and without ambiguity","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"essential","gloss":"belongs to the core nature of something","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"evident","gloss":"shows itself plainly to any careful observer","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"factual","gloss":"reports states of affairs that actually obtain","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"false","gloss":"fails to correspond to the evidence or reality","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"general","gloss":"applies broadly across many cases or instances","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"good","gloss":"meets accepted standards of quality or value","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"important","gloss":"carries weight or priority in some judgment context","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"impossible","gloss":"cannot obtain under any consistent set of constraints","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"inaccurate","gloss":"deviates from the target measurement or fact","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"invalid","gloss":"fails to follow from its premises by sound inference","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"likely","gloss":"holds with high probability given the evidence","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"narrow","gloss":"spans only a small range of cases","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"necessary","gloss":"must hold for some outcome or condition to obtain","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"obscure","gloss":"resists understanding due to hidden or tangled structure","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"optional","gloss":"may be chosen or omitted without violation","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"particular","gloss":"refers to one specific case among many","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"possible","gloss":"could obtain without contradicting known constraints","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"primary","gloss":"holds first rank or precedence among related items","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"probable","gloss":"is supported as more likely than not","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"relevant","gloss":"bears meaningfully on the matter under consideration","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"required","gloss":"is demanded by some rule or condition","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"right","gloss":"aligns with the correct or appropriate choice","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"sound","gloss":"rests on valid reasoning from accurate premises","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"specific","gloss":"applies narrowly to a particular case or instance","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"sufficient","gloss":"suffices on its own to secure the outcome","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"true","gloss":"corresponds accurately to the evidence and reality","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"uncertain","gloss":"remains in doubt given incomplete evidence","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"universal","gloss":"holds across every case in the domain","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"unlikely","gloss":"holds with low probability given the evidence","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"useful","gloss":"serves a purpose effectively in some task","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"valid","gloss":"follows soundly from premises by accepted inference rules","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"worse","gloss":"ranks lower than an alternative on shared criteria","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "11076d46a2b8642e4d2d958a5aa3fc13c42fb53a17d746ec312f27716c237c79",
|
"checksum": "11076d46a2b8642e4d2d958a5aa3fc13c42fb53a17d746ec312f27716c237c79",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "07367d76cc6d07acea6bd5dd532893ed65097217a42b2a127b84a42391e93b2d"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
language_packs/data/en_core_causation_v1/glosses.jsonl
Normal file
15
language_packs/data/en_core_causation_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{"lemma":"causal","gloss":"stands in a cause-and-effect relation to some outcome","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"consequence","gloss":"a state of affairs that follows necessarily from another","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"consequent","gloss":"follows as a logical or causal consequence","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"drive","gloss":"to act as the primary cause sustaining some process","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"effect","gloss":"a state of affairs produced by an antecedent cause","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"enable","gloss":"to make some outcome possible by removing constraints","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"impact","gloss":"a substantive effect upon some target system","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"induce","gloss":"to bring about an outcome through causal action","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"influence","gloss":"a partial causal contribution shaping some outcome","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"outcome","gloss":"the end state produced by some process","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"prevent","gloss":"to keep some outcome from coming about","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"result","gloss":"an outcome that follows from some process","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"resultant","gloss":"arises as a result of some prior cause","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"trigger","gloss":"to initiate or set in motion a subsequent event","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"yield","gloss":"to produce some result as a causal output","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "0e173445c84c26a92546bba9243bcd42f33a516b9f9f660a2d13d25ed07df741",
|
"checksum": "0e173445c84c26a92546bba9243bcd42f33a516b9f9f660a2d13d25ed07df741",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "c0c771d2ef078c888b281a6f6890cbc3b633994b65b6dd3fa1372726e0febd9c"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
78
language_packs/data/en_core_cognition_v1/glosses.jsonl
Normal file
78
language_packs/data/en_core_cognition_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
{"lemma":"account","gloss":"a reasoned description explaining what occurred","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"analogy","gloss":"a mapping of relations shared between distinct domains","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"answer","gloss":"a response that addresses a posed question","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"ask","gloss":"to pose a question seeking information","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"be","gloss":"existence, identity, or a state of affairs holding true","pos":"AUX","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"because","gloss":"a causal clause explaining why a claim holds","pos":"SCONJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"beginning","gloss":"the originating point from which something proceeds","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"belong","gloss":"to stand as a member within a structure","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"cause","gloss":"that which brings about an effect or consequence","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"compare","gloss":"to examine items for similarities and differences","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"comparison","gloss":"an examination of similarities and differences between items","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"concept","gloss":"an abstract unit of thought organizing experience","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"context","gloss":"the surrounding conditions that fix interpretation","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"contrast","gloss":"to set items against each other by difference","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"correct","gloss":"to revise a prior claim toward accuracy","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"correction","gloss":"the act of revising a prior claim toward accuracy","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"creation","gloss":"the act or result of bringing something new into being","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"define","gloss":"to specify the essential meaning of a concept","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"definition","gloss":"a statement specifying the essential nature of a concept","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"discourse","gloss":"connected language exchanged within a context","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"distinction","gloss":"a recognized difference that separates two things","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"distinguish","gloss":"to recognize a difference separating two things","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"evidence","gloss":"observable grounds that support or refute a claim","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"explain","gloss":"to make something clear by giving reasons","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"figure","gloss":"a non-literal pattern of expression shaping meaning","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"first","gloss":"the initial position in an ordered sequence","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"follow","gloss":"to come after another in sequence or consequence","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"ground","gloss":"to provide the supporting basis for a claim","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"have","gloss":"to possess an attribute or stand in a relation","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"how","gloss":"the manner or means by which something occurs","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"however","gloss":"a contrast or qualification against a prior claim","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"identity","gloss":"the set of attributes by which something is itself","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"image","gloss":"a sensory or mental representation of something","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"infer","gloss":"to draw a conclusion from given premises","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"inference","gloss":"a conclusion drawn from premises by reasoning","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"judgment","gloss":"a considered conclusion formed by reasoning and evidence","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"knowledge","gloss":"justified understanding grounded in evidence and recall","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"learn","gloss":"to acquire knowledge or skill through experience","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"life","gloss":"the ongoing condition of a living and acting being","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"light","gloss":"a source of revelation that makes things knowable","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"mean","gloss":"to carry a particular semantic content","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"meaning","gloss":"the semantic content carried by a sign or expression","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"memory","gloss":"the retained record enabling recall of prior states","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"metaphor","gloss":"a figure transferring meaning from one domain to another","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"narrative","gloss":"an ordered account presenting connected events","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"order","gloss":"a structured arrangement of elements by some relation","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"person","gloss":"an individual agent with identity and reason","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"precede","gloss":"to come before another in order or time","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"principle","gloss":"a foundational rule guiding reasoning or action","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"procedure","gloss":"an ordered sequence of steps producing an outcome","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"question","gloss":"an utterance that requests information or clarification","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"reason","gloss":"a ground or cause supporting a claim or action","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"recall","gloss":"to retrieve a stored state from memory","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"register","gloss":"a level of formality suited to a context","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"relate","gloss":"to establish a structural link between entities","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"relation","gloss":"a structural link holding between two or more entities","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"remember","gloss":"to recall a prior state from stored memory","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"reveal","gloss":"to make something previously hidden become known","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"rhetoric","gloss":"the art of effective and persuasive expression","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"simile","gloss":"a figure comparing two things using explicit markers","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"spirit","gloss":"an inner principle animating thought and action","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"story","gloss":"a recounted sequence of events with meaning","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"style","gloss":"the characteristic manner of expression in discourse","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"support","gloss":"to lend evidential or structural backing","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"symbol","gloss":"a sign that stands for a concept by convention","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"teach","gloss":"to convey knowledge or skill to another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"then","gloss":"a temporal or logical succession from a prior point","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"therefore","gloss":"a logical consequence drawn from prior statements","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"thought","gloss":"a mental act or content arising in cognition","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"tone","gloss":"the attitudinal quality carried by an utterance","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"truth","gloss":"a claim or state grounded by evidence and coherent judgment","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"understanding","gloss":"a coherent grasp of meaning and relations","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"verification","gloss":"the act of confirming a claim against evidence","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"verify","gloss":"to confirm a claim by checking evidence","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"voice","gloss":"the distinctive perspective expressed in discourse","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"why","gloss":"the reason or cause behind a fact or claim","pos":"PRON","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"wisdom","gloss":"sound judgment informed by knowledge and experience","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"word","gloss":"a minimal linguistic unit carrying meaning in discourse","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "cf16e96afac62c0b409dbb2e3209d79a816951890444aa5908838aabcf2ace75",
|
"checksum": "cf16e96afac62c0b409dbb2e3209d79a816951890444aa5908838aabcf2ace75",
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "f14e1a7273eba04942356f68f3d04987459497f4ba1df2df49918eded23cd187"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
72
language_packs/data/en_core_meta_v1/glosses.jsonl
Normal file
72
language_packs/data/en_core_meta_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
{"lemma":"agent","gloss":"an entity capable of intentional action and reference","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"argument","gloss":"a structured sequence of claims supporting a conclusion","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"articulate","gloss":"to express an idea clearly through structured language","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"assert","gloss":"to put forward a claim with conviction","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"assume","gloss":"to take a proposition as true without verification","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"believe","gloss":"to hold a proposition as likely true without certainty","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"case","gloss":"a particular instance illustrating a general claim","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"claim","gloss":"to assert a proposition as true without proof","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"confirm","gloss":"to affirm the truth of a prior claim","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"consider","gloss":"to deliberate over a proposition or option","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"decide","gloss":"to resolve deliberation by selecting one option","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"declare","gloss":"to assert a proposition formally and publicly","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"deny","gloss":"to reject the truth of a proposition","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"describe","gloss":"to characterize something through detailed verbal account","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"detect","gloss":"to discern the presence of something subtle","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"doubt","gloss":"to hold a mental state of uncertainty about a claim","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"example","gloss":"an instance offered to illustrate a category","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"expect","gloss":"to anticipate a future state as likely","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"express","gloss":"to convey an idea or feeling through language","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"fact","gloss":"a proposition established as true","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"feel","gloss":"to perceive through tactile or affective experience","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"find","gloss":"to come to perceive or locate something sought","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"guess","gloss":"to form a tentative answer without sufficient evidence","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"hear","gloss":"to perceive sound through auditory experience","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"hold","gloss":"to maintain a proposition or stance in mind","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"hope","gloss":"to desire a future outcome with uncertainty","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"idea","gloss":"a mental content that can be entertained or expressed","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"instance","gloss":"a single occurrence of a general kind","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"intend","gloss":"to hold a deliberate aim toward an action","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"kind","gloss":"a category grouping instances by shared features","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"know","gloss":"to hold a proposition as justified and true","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"listen","gloss":"to direct auditory attention to a source","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"look","gloss":"to direct visual attention toward a target","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"mention","gloss":"to refer briefly to a topic in discourse","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"mind","gloss":"the seat of thought, perception, and mental states","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"model","gloss":"a structured representation standing in for a system","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"name","gloss":"to assign or invoke a referring label","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"note","gloss":"to remark on a point worth attention","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"notice","gloss":"to become perceptually aware of a feature","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"observe","gloss":"to remark on something perceived or noticed","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"perceive","gloss":"to apprehend a state through the senses","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"perspective","gloss":"a vantage point shaping interpretation of content","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"point","gloss":"a discrete claim advanced within an argument","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"position","gloss":"a stance held on a proposition or issue","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"prefer","gloss":"to hold one option as more desirable than another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"proposal","gloss":"a suggested course of action offered for review","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"propose","gloss":"to offer a proposition or plan for review","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"realize","gloss":"to become aware of a fact previously unrecognized","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"recognize","gloss":"to identify something as previously known or encountered","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"reply","gloss":"to respond verbally to a prior utterance","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"respond","gloss":"to produce an utterance in answer to another","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"response","gloss":"an utterance produced in answer to another","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"role","gloss":"a functional stance an agent occupies in discourse","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"say","gloss":"to assert content in spoken or written form","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"see","gloss":"to perceive visually or to apprehend mentally","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"self","gloss":"the agent or speaker as the reference point of identity","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"sense","gloss":"to apprehend a state through perceptual awareness","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"speak","gloss":"to produce spoken language directed at a listener","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"speaker","gloss":"the agent producing the current utterance","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"state","gloss":"to express a proposition explicitly and directly","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"statement","gloss":"an utterance that expresses a definite proposition","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"suggest","gloss":"to put forward a possibility for consideration","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"suggestion","gloss":"a tentative proposition offered for consideration","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"suppose","gloss":"to provisionally hold a proposition for argument's sake","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"system","gloss":"an organized whole of interacting components","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"tell","gloss":"to convey information to a recipient through speech","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"think","gloss":"to entertain a proposition in mental deliberation","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"type","gloss":"a class of entities sharing defining properties","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"view","gloss":"a held perspective on a topic or claim","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"want","gloss":"to hold a desire toward an outcome or object","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"watch","gloss":"to direct visual attention to an unfolding event","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"wonder","gloss":"to hold an open question in active consideration","pos":"VERB","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "984e471ec9253b21263e74fc0a02e766db04442a88b3deb0e9a934b9856c44a8",
|
"checksum": "984e471ec9253b21263e74fc0a02e766db04442a88b3deb0e9a934b9856c44a8",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "7aa65d692391f6d464378b5647bd7c6b9ae056e3686ec170e83c46b8311e1de8"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
language_packs/data/en_core_polarity_v1/glosses.jsonl
Normal file
16
language_packs/data/en_core_polarity_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{"lemma":"always","gloss":"the frequency of occurring without exception across all instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"definitely","gloss":"unqualified certainty about the asserted proposition","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"frequently","gloss":"the frequency of occurring on a high proportion of instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"hardly","gloss":"a near-negative degree barely meeting a threshold","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"indeed","gloss":"emphatic confirmation of a preceding assertion","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"maybe","gloss":"a tentative possibility without committed certainty","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"never","gloss":"the frequency of occurring on zero instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"no","gloss":"express dissent or rejection of a preceding claim","pos":"INTJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"occasionally","gloss":"the frequency of occurring on scattered infrequent instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"often","gloss":"the frequency of occurring on many but not all instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"perhaps","gloss":"a hedged possibility offered without firm commitment","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"rarely","gloss":"the frequency of occurring on very few instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"sometimes","gloss":"the frequency of occurring on an indefinite portion of instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"surely","gloss":"high confidence in the truth of a claim","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"usually","gloss":"the frequency of occurring on most typical instances","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"yes","gloss":"affirm assent to a preceding question or claim","pos":"INTJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "e2ade8d02603fed3bc6b25e53064cdb99f153af1e611be0fa3c9164df5ae8383",
|
"checksum": "e2ade8d02603fed3bc6b25e53064cdb99f153af1e611be0fa3c9164df5ae8383",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "ee0ce4de6fdfd1377eb75d13d7e3ff222c8050371a9e42a5f1571fdca8023447"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
language_packs/data/en_core_quantitative_v1/glosses.jsonl
Normal file
24
language_packs/data/en_core_quantitative_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{"lemma":"all","gloss":"the totality of items in a referenced set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"any","gloss":"an arbitrary member drawn from a referenced set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"both","gloss":"the two members of a referenced pair together","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"each","gloss":"every individual member considered separately within a set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"enough","gloss":"a quantity sufficient to satisfy a stated requirement","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"every","gloss":"each member of a referenced set without exception","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"few","gloss":"a small indefinite count below typical expectation","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"fewer","gloss":"a smaller count of discrete items comparatively","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"half","gloss":"one of two equal divisions of a quantity","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"least","gloss":"the smallest quantity along a comparative scale","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"less","gloss":"a smaller amount of an uncountable quantity comparatively","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"many","gloss":"a large indefinite count of discrete items","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"more","gloss":"a greater quantity along a comparative scale","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"most","gloss":"the greatest proportion within a referenced set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"much","gloss":"a large indefinite amount of an uncountable substance","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"neither","gloss":"the absence of either member from a referenced pair","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"none","gloss":"the absence of any member from a referenced set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"one","gloss":"the cardinal value denoting a single unit","pos":"NUM","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"several","gloss":"a small indefinite plurality greater than two","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"single","gloss":"consists of exactly one undivided unit","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"some","gloss":"an indefinite nonzero subset of a referenced set","pos":"DET","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"three","gloss":"the cardinal value denoting a triple of units","pos":"NUM","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"two","gloss":"the cardinal value denoting a pair of units","pos":"NUM","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"whole","gloss":"comprises the complete entity without missing parts","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "4cd9001879be2b8da44a852ce6763f784fd690f272181402286e395894f9ac7a",
|
"checksum": "4cd9001879be2b8da44a852ce6763f784fd690f272181402286e395894f9ac7a",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "6995043d8996b1bce07956b2301120c9d5617d1173a9eb48a5e73803d8961997"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
language_packs/data/en_core_spatial_v1/glosses.jsonl
Normal file
24
language_packs/data/en_core_spatial_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{"lemma":"above","gloss":"vertical position higher than a reference point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"area","gloss":"a bounded two-dimensional region of space","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"backward","gloss":"motion or orientation toward the rear","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"below","gloss":"vertical position lower than a reference point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"between","gloss":"spatial position flanked by two references","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"beyond","gloss":"spatial position past a reference boundary","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"bottom","gloss":"the lowermost portion of a spatial object","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"down","gloss":"motion or orientation toward a lower position","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"end","gloss":"the terminal portion of a spatial extent","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"far","gloss":"spatial distance relative to a reference point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"forward","gloss":"motion or orientation toward the front","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"here","gloss":"the location of the speaker or reference point","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"inside","gloss":"spatial containment within a bounded region","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"left","gloss":"the side opposite the right of orientation","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"location","gloss":"a specific point or region in space","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"near","gloss":"spatial proximity relative to a reference point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"outside","gloss":"spatial exclusion from a bounded region","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"place","gloss":"a definite location in space","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"region","gloss":"an extended portion of space with identity","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"side","gloss":"a lateral surface bounding a spatial object","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"space","gloss":"the extended manifold in which objects exist","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"there","gloss":"a location distinct from the speaker","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"top","gloss":"the uppermost portion of a spatial object","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"up","gloss":"motion or orientation toward a higher position","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "f3ab77403f4f764f3828d0af6b7c6bcf54cef4137f73c577206cb522706ac14c",
|
"checksum": "f3ab77403f4f764f3828d0af6b7c6bcf54cef4137f73c577206cb522706ac14c",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "3dff44dacde0e855de36d762e9a3002eeb1511ebec6e8b765943154155411328"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
28
language_packs/data/en_core_temporal_v1/glosses.jsonl
Normal file
28
language_packs/data/en_core_temporal_v1/glosses.jsonl
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{"lemma":"after","gloss":"temporal posteriority between two events","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"ago","gloss":"a duration measured backward from the present","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"before","gloss":"temporal anteriority between two events","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"currently","gloss":"the ongoing interval surrounding the utterance","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"duration","gloss":"the measured length of a temporal interval","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"during","gloss":"temporal containment within an interval","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"era","gloss":"an extended historical period of distinct character","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"eventually","gloss":"an outcome reached after an unspecified delay","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"formerly","gloss":"a state holding at an earlier time","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"future","gloss":"the temporal region after the present","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"henceforth","gloss":"the interval extending forward from the present","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"instant","gloss":"an indivisible point on the temporal axis","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"later","gloss":"a time subsequent to the reference point","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"moment","gloss":"a brief or pointlike interval of time","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"now","gloss":"the present moment at the time of utterance","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"past","gloss":"the temporal region before the present","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"period","gloss":"a bounded stretch of time with identity","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"present","gloss":"the temporal region containing the utterance","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"prior","gloss":"stands earlier in temporal sequence than another","pos":"ADJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"recently","gloss":"a short interval just before the reference point","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"since","gloss":"temporal extent originating from a prior point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"soon","gloss":"an event imminent in the near future","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"time","gloss":"the dimension along which events are ordered","pos":"NOUN","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"today","gloss":"the current day containing the utterance","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"tomorrow","gloss":"the day immediately following the current day","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"until","gloss":"temporal extent reaching a terminal point","pos":"ADP","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"while","gloss":"a clause indicating contemporaneous occurrence","pos":"SCONJ","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
{"lemma":"yesterday","gloss":"the day immediately preceding the current day","pos":"ADV","provenance_ids":["seed:glosses_v1"]}
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
"checksum": "cac13a815cbceb992647843e80bcc93b321fd5674d53d951ddd735036a18c705",
|
"checksum": "cac13a815cbceb992647843e80bcc93b321fd5674d53d951ddd735036a18c705",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"gate_engaged": true,
|
"gate_engaged": true,
|
||||||
"oov_policy": "tagged_fallback"
|
"oov_policy": "tagged_fallback",
|
||||||
|
"glosses_checksum": "874678c3e0684c58618cbdb3fc5a49d3e19691aec963078eda11c717a78a6f41"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
175
tests/test_pack_glosses_content.py
Normal file
175
tests/test_pack_glosses_content.py
Normal file
|
|
@ -0,0 +1,175 @@
|
||||||
|
"""Contract tests for the Phase C ratified glosses.
|
||||||
|
|
||||||
|
Pins:
|
||||||
|
- Every pack with a ``glosses.jsonl`` file has a matching
|
||||||
|
``glosses_checksum`` in its manifest.
|
||||||
|
- Every gloss entry references a lemma that is ratified in the
|
||||||
|
same pack's ``lexicon.jsonl`` (lexicon-residency invariant —
|
||||||
|
re-asserted from the storage layer up).
|
||||||
|
- The total ratified gloss count meets a floor (>= 300).
|
||||||
|
- At least one gloss resolves end-to-end for the most common
|
||||||
|
conversational lemmas (sanity check for the wiring + content).
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from chat.pack_resolver import (
|
||||||
|
DEFAULT_RESOLVABLE_PACK_IDS,
|
||||||
|
_pack_glosses_for,
|
||||||
|
_pack_lexicon_for,
|
||||||
|
clear_resolver_cache,
|
||||||
|
resolve_gloss,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
_DATA = Path(__file__).resolve().parent.parent / "language_packs" / "data"
|
||||||
|
|
||||||
|
|
||||||
|
def _packs_with_glosses() -> list[str]:
|
||||||
|
out = []
|
||||||
|
for p in DEFAULT_RESOLVABLE_PACK_IDS:
|
||||||
|
if (_DATA / p / "glosses.jsonl").exists():
|
||||||
|
out.append(p)
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
class TestGlossesPresent:
|
||||||
|
def test_at_least_eight_packs_ship_glosses(self) -> None:
|
||||||
|
"""Phase C seeds glosses in 9 English content packs."""
|
||||||
|
packs = _packs_with_glosses()
|
||||||
|
assert len(packs) >= 8, (
|
||||||
|
f"expected >=8 packs with glosses, got {len(packs)}: {packs}"
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_total_gloss_count_floor(self) -> None:
|
||||||
|
"""The Phase C dispatch targeted ~330 glosses; this is the
|
||||||
|
regression floor."""
|
||||||
|
clear_resolver_cache()
|
||||||
|
total = sum(len(_pack_glosses_for(p)) for p in _packs_with_glosses())
|
||||||
|
assert total >= 300, f"total gloss count {total} below floor 300"
|
||||||
|
|
||||||
|
|
||||||
|
class TestManifestChecksumDiscipline:
|
||||||
|
def test_every_glossed_pack_has_matching_checksum(self) -> None:
|
||||||
|
for pack_id in _packs_with_glosses():
|
||||||
|
manifest = json.loads(
|
||||||
|
(_DATA / pack_id / "manifest.json").read_text(encoding="utf-8")
|
||||||
|
)
|
||||||
|
assert "glosses_checksum" in manifest, pack_id
|
||||||
|
declared = manifest["glosses_checksum"]
|
||||||
|
assert isinstance(declared, str) and len(declared) == 64, (pack_id, declared)
|
||||||
|
actual = hashlib.sha256(
|
||||||
|
(_DATA / pack_id / "glosses.jsonl").read_bytes()
|
||||||
|
).hexdigest()
|
||||||
|
assert actual == declared, (
|
||||||
|
f"glosses_checksum drift on {pack_id}: "
|
||||||
|
f"declared={declared[:16]}… actual={actual[:16]}…"
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_lexicon_checksum_unchanged_by_gloss_landing(self) -> None:
|
||||||
|
"""Adding glosses must NOT bump the lexicon checksum. The
|
||||||
|
lexicon is immutable; only glosses_checksum changes when
|
||||||
|
glosses are added or revised."""
|
||||||
|
for pack_id in _packs_with_glosses():
|
||||||
|
manifest = json.loads(
|
||||||
|
(_DATA / pack_id / "manifest.json").read_text(encoding="utf-8")
|
||||||
|
)
|
||||||
|
actual_lex_checksum = hashlib.sha256(
|
||||||
|
(_DATA / pack_id / "lexicon.jsonl").read_bytes()
|
||||||
|
).hexdigest()
|
||||||
|
assert manifest["checksum"] == actual_lex_checksum, pack_id
|
||||||
|
|
||||||
|
|
||||||
|
class TestLexiconResidencyAcrossAllGlosses:
|
||||||
|
"""Every authored gloss must reference a lemma that exists in the
|
||||||
|
same pack's lexicon.jsonl. This is the storage-layer enforcement
|
||||||
|
of the resolve_gloss runtime invariant — any drift in glosses.jsonl
|
||||||
|
that introduces an unratified lemma fails this test."""
|
||||||
|
|
||||||
|
def test_every_gloss_lemma_is_lexicon_resident(self) -> None:
|
||||||
|
clear_resolver_cache()
|
||||||
|
for pack_id in _packs_with_glosses():
|
||||||
|
lex = _pack_lexicon_for(pack_id)
|
||||||
|
glosses = _pack_glosses_for(pack_id)
|
||||||
|
for lemma in glosses:
|
||||||
|
assert lemma in lex, (
|
||||||
|
f"pack {pack_id} ships a gloss for {lemma!r} but the "
|
||||||
|
f"lemma is not in its lexicon.jsonl"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestEndToEndSmoke:
|
||||||
|
"""Resolve known high-frequency conversational lemmas through
|
||||||
|
resolve_gloss and assert the runtime composes a fluent surface."""
|
||||||
|
|
||||||
|
HIGH_FREQ_LEMMAS = (
|
||||||
|
# cognition
|
||||||
|
"truth", "knowledge", "memory", "evidence", "thought",
|
||||||
|
# meta
|
||||||
|
"doubt", "fact", "idea", "self", "believe", "know",
|
||||||
|
# attitude
|
||||||
|
"true", "good", "important", "certain", "necessary",
|
||||||
|
# temporal
|
||||||
|
"now", "moment", "future", "past", "before",
|
||||||
|
# spatial
|
||||||
|
"here", "place", "above",
|
||||||
|
# action
|
||||||
|
"make", "create", "change", "use",
|
||||||
|
# causation
|
||||||
|
"effect", "outcome",
|
||||||
|
# polarity
|
||||||
|
"always", "never", "yes",
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_high_freq_lemmas_resolve_a_gloss(self) -> None:
|
||||||
|
clear_resolver_cache()
|
||||||
|
misses = []
|
||||||
|
for lemma in self.HIGH_FREQ_LEMMAS:
|
||||||
|
entry = resolve_gloss(lemma)
|
||||||
|
if entry is None:
|
||||||
|
misses.append(lemma)
|
||||||
|
assert not misses, (
|
||||||
|
f"resolve_gloss returned None for high-frequency lemmas: {misses}"
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_fluent_surface_contains_lemma_case_insensitive(self) -> None:
|
||||||
|
"""End-to-end: pack_grounded_surface composes a fluent sentence
|
||||||
|
for every high-freq lemma; the lemma (lowercase) appears in the
|
||||||
|
rendered surface."""
|
||||||
|
from chat.pack_grounding import pack_grounded_surface
|
||||||
|
clear_resolver_cache()
|
||||||
|
for lemma in self.HIGH_FREQ_LEMMAS:
|
||||||
|
surface = pack_grounded_surface(lemma)
|
||||||
|
assert surface is not None, lemma
|
||||||
|
assert lemma in surface.lower(), (lemma, surface)
|
||||||
|
assert "pack-grounded" in surface, (lemma, surface)
|
||||||
|
# No dotted-domain-inventory in gloss-backed surfaces.
|
||||||
|
assert "; " not in surface, (lemma, surface)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSurfaceFormatInvariants:
|
||||||
|
"""A handful of structural invariants the gloss-backed surfaces
|
||||||
|
must respect. These are what the deterministic_fluency lane
|
||||||
|
checks at scale — repeated here per-pack for tighter attribution."""
|
||||||
|
|
||||||
|
SAMPLE = ("truth", "doubt", "important", "now", "place", "make", "effect", "always")
|
||||||
|
|
||||||
|
def test_surfaces_have_terminal_punctuation(self) -> None:
|
||||||
|
from chat.pack_grounding import pack_grounded_surface
|
||||||
|
clear_resolver_cache()
|
||||||
|
for lemma in self.SAMPLE:
|
||||||
|
s = pack_grounded_surface(lemma)
|
||||||
|
assert s is not None and s.rstrip().endswith("."), (lemma, s)
|
||||||
|
|
||||||
|
def test_surfaces_contain_no_placeholders(self) -> None:
|
||||||
|
from chat.pack_grounding import pack_grounded_surface
|
||||||
|
clear_resolver_cache()
|
||||||
|
for lemma in self.SAMPLE:
|
||||||
|
s = pack_grounded_surface(lemma)
|
||||||
|
assert s is not None
|
||||||
|
for marker in ("...", "<pending>", "<prior>"):
|
||||||
|
assert marker not in s, (lemma, marker, s)
|
||||||
|
|
@ -36,9 +36,15 @@ from chat.runtime import ChatRuntime, _UNKNOWN_DOMAIN_SURFACE
|
||||||
def test_known_pack_lemmas_produce_grounded_surface(lemma: str) -> None:
|
def test_known_pack_lemmas_produce_grounded_surface(lemma: str) -> None:
|
||||||
surface = pack_grounded_surface(lemma)
|
surface = pack_grounded_surface(lemma)
|
||||||
assert surface is not None
|
assert surface is not None
|
||||||
assert lemma in surface
|
# Case-insensitive: gloss-backed surfaces capitalize the lemma at
|
||||||
|
# the start of the sentence ("Truth is a claim..."), while the
|
||||||
|
# dotted-disclosure fallback keeps it lowercase. Both forms must
|
||||||
|
# contain the lemma.
|
||||||
|
assert lemma.lower() in surface.lower()
|
||||||
assert PACK_ID in surface
|
assert PACK_ID in surface
|
||||||
assert "No session evidence yet." in surface
|
# Surface carries either the gloss-backed "pack-grounded (pack_id)."
|
||||||
|
# tag or the dotted-disclosure "No session evidence yet." trailer.
|
||||||
|
assert "pack-grounded" in surface
|
||||||
|
|
||||||
|
|
||||||
def test_unknown_lemma_returns_none() -> None:
|
def test_unknown_lemma_returns_none() -> None:
|
||||||
|
|
@ -76,7 +82,8 @@ def test_cold_start_definition_returns_pack_grounded_surface() -> None:
|
||||||
rt = ChatRuntime()
|
rt = ChatRuntime()
|
||||||
resp = rt.chat("What is light?")
|
resp = rt.chat("What is light?")
|
||||||
assert "pack-grounded" in resp.surface
|
assert "pack-grounded" in resp.surface
|
||||||
assert "light" in resp.surface
|
# Case-insensitive: fluent gloss surfaces capitalize at sentence start.
|
||||||
|
assert "light" in resp.surface.lower()
|
||||||
assert resp.grounding_source == "pack"
|
assert resp.grounding_source == "pack"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -85,7 +92,7 @@ def test_cold_start_recall_returns_pack_grounded_surface() -> None:
|
||||||
rt = ChatRuntime()
|
rt = ChatRuntime()
|
||||||
resp = rt.chat("Remember light")
|
resp = rt.chat("Remember light")
|
||||||
assert resp.grounding_source == "pack"
|
assert resp.grounding_source == "pack"
|
||||||
assert "light" in resp.surface
|
assert "light" in resp.surface.lower()
|
||||||
|
|
||||||
|
|
||||||
def test_cold_start_unknown_lemma_routes_to_oov_invitation() -> None:
|
def test_cold_start_unknown_lemma_routes_to_oov_invitation() -> None:
|
||||||
|
|
|
||||||
|
|
@ -204,12 +204,22 @@ class TestDualChecksumManifest:
|
||||||
manifest's optional ``glosses_checksum`` field — same discipline as
|
manifest's optional ``glosses_checksum`` field — same discipline as
|
||||||
the lexicon checksum. Missing field = back-compat (no verification)."""
|
the lexicon checksum. Missing field = back-compat (no verification)."""
|
||||||
|
|
||||||
def test_missing_glosses_checksum_is_back_compat(self) -> None:
|
def test_back_compat_pack_without_glosses_loads_clean(self) -> None:
|
||||||
"""All currently-ratified packs have NO glosses_checksum field
|
"""A pack that ships no glosses.jsonl and no glosses_checksum
|
||||||
in their manifest. Loading them must continue to work."""
|
in its manifest must continue to load (back-compat invariant).
|
||||||
|
We use en_minimal_v1 which deliberately ships no glosses."""
|
||||||
|
from language_packs.compiler import load_pack
|
||||||
|
manifest, _ = load_pack("en_minimal_v1")
|
||||||
|
assert manifest.glosses_checksum is None
|
||||||
|
|
||||||
|
def test_glossed_pack_carries_checksum(self) -> None:
|
||||||
|
"""Packs that DO ship glosses (en_core_cognition_v1 et al.
|
||||||
|
after Phase C) must carry a non-None glosses_checksum on the
|
||||||
|
loaded manifest."""
|
||||||
from language_packs.compiler import load_pack
|
from language_packs.compiler import load_pack
|
||||||
manifest, _ = load_pack("en_core_cognition_v1")
|
manifest, _ = load_pack("en_core_cognition_v1")
|
||||||
assert manifest.glosses_checksum is None
|
assert isinstance(manifest.glosses_checksum, str)
|
||||||
|
assert len(manifest.glosses_checksum) == 64
|
||||||
|
|
||||||
def test_checksum_mismatch_raises(self, temp_pack) -> None:
|
def test_checksum_mismatch_raises(self, temp_pack) -> None:
|
||||||
pack_dir, pack_id = temp_pack
|
pack_dir, pack_id = temp_pack
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue