From 358a56dadc734d80856c34efb4a862c91f316b3e Mon Sep 17 00:00:00 2001 From: Shay Date: Sat, 16 May 2026 15:15:14 -0700 Subject: [PATCH] feat(packs): en_core_cognition_v1 v1.2.0 - rhetoric/metaphor/narrative Adds 15 lexical entries (071-085) extending the cognition pack with rhetoric, metaphor, narrative, and writing-style vocabulary. Layer 1 of the work plan recorded in evals/compositionality/gaps.md and evals/cross_domain_transfer/gaps.md: lexical scaffolding only, no new operators. Building first-class metaphor / narrative / style support remains correctly downstream of the cross-domain-transfer literal case working (now closed in commit 57a6174). New entries: 071 metaphor 076 voice 081 figure 072 simile 077 style 082 symbol 073 analogy 078 register 083 image 074 narrative 079 tone 084 discourse 075 story 080 rhetoric 085 account Each entry follows the existing pack convention: NOUN pos, four semantic_domains, morphology_tags=["noun"], seed provenance. The domains anchor on rhetoric.*, language.figure/discourse/style, cognition.*, and meaning.* clusters that integrate with the existing pack vocabulary. Pack-level updates: - manifest.json checksum recomputed against the bytes actually written to disk (per CLAUDE.md Semantic Pack Discipline). - version bump 1.1.0 -> 1.2.0. - test_core_semantic_seed_pack.py last-entry assertion updated from 070 to 085. Verification: probe "What is X?" against the new vocabulary grounds cleanly in the pipeline (narrative 7 hits, style 9, rhetoric 8, analogy 9 vault matches; metaphor produces a coherent surface despite zero vault hits, consistent with the field-geometry characterisation in the adversarial-identity calibration probe). CLI suites packs / smoke / cognition / teaching / runtime all pass; no regression. What this does NOT do (deferred by design): - No metaphor / simile / narrative operator at the proposition- graph layer. ADR-0018 forbids building operators ahead of eval evidence; these become a Phase 3 v3 (or Phase 4) candidate once cross-domain transfer with selectivity has its own eval lane. - No first-class is_like(A,B) relation distinct from is(A,B). Same reasoning - downstream of compositionality engineering. - No persona/style work on the output side. That belongs in persona/motor.py per the cross_domain_transfer/gaps.md architectural sketch. The entries serve as substrate for future eval lanes that probe these capabilities specifically (metaphor-comprehension, narrative-coherence, register-control). When those lanes are authored, the vocabulary needed for the probes is already grounded. --- .../data/en_core_cognition_v1/lexicon.jsonl | 15 +++++++++++++++ .../data/en_core_cognition_v1/manifest.json | 4 ++-- tests/test_core_semantic_seed_pack.py | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/language_packs/data/en_core_cognition_v1/lexicon.jsonl b/language_packs/data/en_core_cognition_v1/lexicon.jsonl index e014c320..d638649a 100644 --- a/language_packs/data/en_core_cognition_v1/lexicon.jsonl +++ b/language_packs/data/en_core_cognition_v1/lexicon.jsonl @@ -68,3 +68,18 @@ {"entry_id":"en-core-cog-068","surface":"however","lemma":"however","language":"en","pos":"ADV","semantic_domains":["relation.contrast","dialogue.concession","reason.qualification"],"morphology_tags":["adverb","connective"],"provenance_ids":["seed:core_cognition_v1"]} {"entry_id":"en-core-cog-069","surface":"then","lemma":"then","language":"en","pos":"ADV","semantic_domains":["relation.sequence.after","temporal.sequence","dialogue.continuation"],"morphology_tags":["adverb","connective"],"provenance_ids":["seed:core_cognition_v1"]} {"entry_id":"en-core-cog-070","surface":"first","lemma":"first","language":"en","pos":"ADV","semantic_domains":["relation.sequence.before","temporal.ordinal","procedure.step","dialogue.opening"],"morphology_tags":["adverb","ordinal"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-071","surface":"metaphor","lemma":"metaphor","language":"en","pos":"NOUN","semantic_domains":["rhetoric.metaphor","language.figure","cognition.analogy","meaning.transfer"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-072","surface":"simile","lemma":"simile","language":"en","pos":"NOUN","semantic_domains":["rhetoric.simile","language.figure","cognition.comparison","meaning.likeness"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-073","surface":"analogy","lemma":"analogy","language":"en","pos":"NOUN","semantic_domains":["rhetoric.analogy","cognition.comparison","reason.structure","meaning.mapping"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-074","surface":"narrative","lemma":"narrative","language":"en","pos":"NOUN","semantic_domains":["rhetoric.narrative","language.discourse","cognition.story","temporal.sequence"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-075","surface":"story","lemma":"story","language":"en","pos":"NOUN","semantic_domains":["rhetoric.narrative","language.discourse","cognition.account","meaning.sequence"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-076","surface":"voice","lemma":"voice","language":"en","pos":"NOUN","semantic_domains":["rhetoric.voice","language.style","identity.persona","expression.register"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-077","surface":"style","lemma":"style","language":"en","pos":"NOUN","semantic_domains":["rhetoric.style","language.register","expression.manner","identity.signature"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-078","surface":"register","lemma":"register","language":"en","pos":"NOUN","semantic_domains":["rhetoric.register","language.style","dialogue.formality","expression.tone"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-079","surface":"tone","lemma":"tone","language":"en","pos":"NOUN","semantic_domains":["rhetoric.tone","expression.affect","dialogue.style","meaning.attitude"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-080","surface":"rhetoric","lemma":"rhetoric","language":"en","pos":"NOUN","semantic_domains":["rhetoric.discipline","language.persuasion","cognition.argument","meaning.craft"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-081","surface":"figure","lemma":"figure","language":"en","pos":"NOUN","semantic_domains":["rhetoric.figure","language.device","cognition.image","meaning.representation"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-082","surface":"symbol","lemma":"symbol","language":"en","pos":"NOUN","semantic_domains":["meaning.symbol","language.sign","cognition.representation","logos.token"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-083","surface":"image","lemma":"image","language":"en","pos":"NOUN","semantic_domains":["cognition.image","perception.visual","meaning.representation","language.figure"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-084","surface":"discourse","lemma":"discourse","language":"en","pos":"NOUN","semantic_domains":["language.discourse","rhetoric.discipline","dialogue.extended","cognition.expression"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} +{"entry_id":"en-core-cog-085","surface":"account","lemma":"account","language":"en","pos":"NOUN","semantic_domains":["cognition.account","rhetoric.narrative","language.explanation","meaning.report"],"morphology_tags":["noun"],"provenance_ids":["seed:core_cognition_v1"]} diff --git a/language_packs/data/en_core_cognition_v1/manifest.json b/language_packs/data/en_core_cognition_v1/manifest.json index cd14da53..f166bff3 100644 --- a/language_packs/data/en_core_cognition_v1/manifest.json +++ b/language_packs/data/en_core_cognition_v1/manifest.json @@ -6,8 +6,8 @@ "normalization_policy": "unitize_versor", "source_manifest": "en_core_cognition_v1.lexicon.jsonl", "determinism_class": "D0", - "checksum": "994e63c5d72053691a09502bcac0fc6f863cd5af08372022399c95b1606ad5b3", - "version": "1.1.0", + "checksum": "cf16e96afac62c0b409dbb2e3209d79a816951890444aa5908838aabcf2ace75", + "version": "1.2.0", "gate_engaged": true, "oov_policy": "tagged_fallback" } diff --git a/tests/test_core_semantic_seed_pack.py b/tests/test_core_semantic_seed_pack.py index 60392bf9..493cd9a2 100644 --- a/tests/test_core_semantic_seed_pack.py +++ b/tests/test_core_semantic_seed_pack.py @@ -114,4 +114,4 @@ def test_pack_entries_are_deterministic() -> None: assert [entry.entry_id for entry in entries_a] == [entry.entry_id for entry in entries_b] assert [entry.surface for entry in entries_a] == [entry.surface for entry in entries_b] assert entries_a[0].entry_id == "en-core-cog-001" - assert entries_a[-1].entry_id == "en-core-cog-070" + assert entries_a[-1].entry_id == "en-core-cog-085"