From 565cca0b0c7ff9f2d6ef029d4f59f24b0c81f32a Mon Sep 17 00:00:00 2001 From: Shay Date: Tue, 19 May 2026 23:49:00 -0700 Subject: [PATCH] feat(packs): pedagogical_v1, precise_v1 registers + 5 new anchor lens packs (#47) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(packs): add pedagogical_v1, precise_v1 register packs + 5 new anchor lens packs Register packs: - pedagogical_v1: fills the reserved 'pedagogical' depth tier (loader had it in _ALLOWED_DEPTH_PREFERENCES since R1 with zero packs using it). Socratic markers in openings/closings; transitions scaffold inquiry progression. - precise_v1: standard depth, disclosure_domain_count=2 override. Focused output (two semantic domains vs default three) with no discourse markers. Distinct from terse_v1 (which forces count=1) and default_neutral_v1 (which has no overrides). Anchor lens packs (all grc or he substrate, all atoms confirmed in language_packs/data lexicons): - grc_zoe_v1: logos.vitality.animate — animate-vitality pole, grc substrate - grc_aletheia_v1: logos.aletheia.verity — unconcealment pole, grc substrate; dual-correction pair with he_logos_v1 (same atom, different substrate + mode) - grc_arche_v1: logos.genesis.origin — generative-origin pole, completes grc quad - he_dabar_v1: logos.utterance.word — divine-word pole, he substrate; dual-correction pair with grc_logos_v1 (same atom, different substrate + mode) - he_chayyim_v1: logos.vitality.animate — covenant-life pole, he substrate; dual-correction pair with grc_zoe_v1 Also updates ratify scripts to include all new IDs in REGISTER_IDS / LENS_IDS tuples so ratify_*.py picks them up on next run. All packs ship with mastery_report_sha256='' — operator runs ratify scripts after merge to seal. No schema changes; all fields within existing loader bounds. * fix(packs): wire R6 boolean knobs into precise_v1 + pedagogical_v1; widen R4 gate Precise: add drop_provenance_tag=true — formal output drops the meta-tag, making it substantively distinct from default_neutral_v1 on the gloss path (not just the rare no-gloss disclosure surface). Pedagogical: add append_semantic_domain_clause=true — expands the gloss with full semantic domain context, giving the learner cognitive anchor points. Pairs with the existing Socratic markers for a genuinely distinct substantive+presentational posture. ratify_register_packs.py: widen _KNOWN_OVERRIDE_KEYS to include the four R6 boolean knobs (drop_provenance_tag, compress_gloss, drop_articles, append_semantic_domain_clause). Validator: isinstance(v, bool). This anticipates R6 landing on main — the R4 gate must know the keys before the packs can ratify. All four keys are informational-only in _KNOWN_OVERRIDE_KEYS until the realizer dispatch code in R6 actually reads them; the gate just needs to not refuse them. --- packs/anchor_lens/grc_aletheia_v1.json | 13 +++++++++++ packs/anchor_lens/grc_arche_v1.json | 13 +++++++++++ packs/anchor_lens/grc_zoe_v1.json | 13 +++++++++++ packs/anchor_lens/he_chayyim_v1.json | 13 +++++++++++ packs/anchor_lens/he_dabar_v1.json | 13 +++++++++++ packs/register/pedagogical_v1.json | 31 ++++++++++++++++++++++++++ packs/register/precise_v1.json | 18 +++++++++++++++ scripts/ratify_anchor_lens_packs.py | 5 +++++ scripts/ratify_register_packs.py | 14 +++++++++--- 9 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 packs/anchor_lens/grc_aletheia_v1.json create mode 100644 packs/anchor_lens/grc_arche_v1.json create mode 100644 packs/anchor_lens/grc_zoe_v1.json create mode 100644 packs/anchor_lens/he_chayyim_v1.json create mode 100644 packs/anchor_lens/he_dabar_v1.json create mode 100644 packs/register/pedagogical_v1.json create mode 100644 packs/register/precise_v1.json diff --git a/packs/anchor_lens/grc_aletheia_v1.json b/packs/anchor_lens/grc_aletheia_v1.json new file mode 100644 index 00000000..e9713cef --- /dev/null +++ b/packs/anchor_lens/grc_aletheia_v1.json @@ -0,0 +1,13 @@ +{ + "cognitive_mode_label": "unconcealment", + "description": "Greek-substrate anchor lens. Pivots English 'truth' onto \u1f00\u03bb\u03ae\u03b8\u03b5\u03b9\u03b1's logos.aletheia.verity atom via the grc cognition pack's field hook. Renders surface as English compound 'unconcealment'. Dual-correction pair with he_logos_v1: same domain atom (logos.aletheia.verity), different substrate and cognitive mode — Greek aletheia is phenomenological disclosure (truth-as-unconcealment), Hebrew emet is covenantal reliability. Atom confirmed in grc_logos_cognition_v1 lexicon (grc-core-cog-002). See ADR-0073c.", + "display_name": "Greek aletheia (unconcealment)", + "lens_id": "grc_aletheia_v1", + "mastery_report_sha256": "", + "primary_substrate": "grc", + "schema_version": "1.0.0", + "semantic_domain_preferences": [ + "logos.aletheia.verity" + ], + "version": "1.0.0" +} diff --git a/packs/anchor_lens/grc_arche_v1.json b/packs/anchor_lens/grc_arche_v1.json new file mode 100644 index 00000000..a79b103e --- /dev/null +++ b/packs/anchor_lens/grc_arche_v1.json @@ -0,0 +1,13 @@ +{ + "cognitive_mode_label": "generative-origin", + "description": "Greek-substrate anchor lens. Pivots English 'beginning' onto \u1f00\u03c1\u03c7\u03ae's logos.genesis.origin atom via the grc cognition pack's field hook. Renders surface as English compound 'generative-origin'. Fills the temporal/origination pole of the anchor-lens space — distinct from epistemic (grc_logos_v1), vitality (grc_zoe_v1), and truth (grc_aletheia_v1) lenses. Completes the grc quad. Atom confirmed in grc_logos_cognition_v1 lexicon (grc-core-cog-005). See ADR-0073c.", + "display_name": "Greek arche (generative origin)", + "lens_id": "grc_arche_v1", + "mastery_report_sha256": "", + "primary_substrate": "grc", + "schema_version": "1.0.0", + "semantic_domain_preferences": [ + "logos.genesis.origin" + ], + "version": "1.0.0" +} diff --git a/packs/anchor_lens/grc_zoe_v1.json b/packs/anchor_lens/grc_zoe_v1.json new file mode 100644 index 00000000..4c70bb5d --- /dev/null +++ b/packs/anchor_lens/grc_zoe_v1.json @@ -0,0 +1,13 @@ +{ + "cognitive_mode_label": "animate-vitality", + "description": "Greek-substrate anchor lens. Pivots English 'life' onto \u03b6\u03c9\u03ae's logos.vitality.animate atom via the grc cognition pack's field hook. Renders surface as English compound 'animate-vitality'. Substantively distinct from grc_logos_v1 (epistemic knowledge) — targets the vitality/being pole. Atom confirmed in grc_logos_cognition_v1 lexicon (grc-core-cog-004). See ADR-0073c.", + "display_name": "Greek zoe (animate vitality)", + "lens_id": "grc_zoe_v1", + "mastery_report_sha256": "", + "primary_substrate": "grc", + "schema_version": "1.0.0", + "semantic_domain_preferences": [ + "logos.vitality.animate" + ], + "version": "1.0.0" +} diff --git a/packs/anchor_lens/he_chayyim_v1.json b/packs/anchor_lens/he_chayyim_v1.json new file mode 100644 index 00000000..1dbcebbe --- /dev/null +++ b/packs/anchor_lens/he_chayyim_v1.json @@ -0,0 +1,13 @@ +{ + "cognitive_mode_label": "covenant-life", + "description": "Hebrew-substrate anchor lens. Pivots English 'life' onto \u05d7\u05b7\u05d9\u05bc\u05b4\u05d9\u05dd's logos.vitality.animate atom via the he cognition pack's field hook. Renders surface as English compound 'covenant-life'. Dual-correction pair with grc_zoe_v1: same domain atom (logos.vitality.animate), different substrate and cognitive mode — Hebrew chayyim is plural living-ness, communal and covenantal; Greek zoe is singular animate vitality. Atom confirmed in he_core_cognition_v1 lexicon (he-core-cog-004). See ADR-0073c.", + "display_name": "Hebrew chayyim (covenant life)", + "lens_id": "he_chayyim_v1", + "mastery_report_sha256": "", + "primary_substrate": "he", + "schema_version": "1.0.0", + "semantic_domain_preferences": [ + "logos.vitality.animate" + ], + "version": "1.0.0" +} diff --git a/packs/anchor_lens/he_dabar_v1.json b/packs/anchor_lens/he_dabar_v1.json new file mode 100644 index 00000000..27dd4991 --- /dev/null +++ b/packs/anchor_lens/he_dabar_v1.json @@ -0,0 +1,13 @@ +{ + "cognitive_mode_label": "divine-word", + "description": "Hebrew-substrate anchor lens. Pivots English 'word' onto \u05d3\u05b8\u05bc\u05d1\u05b8\u05e8's logos.utterance.word atom via the he cognition pack's field hook. Renders surface as English compound 'divine-word'. Dual-correction pair with grc_logos_v1: same domain atom (logos.utterance.word), different substrate and cognitive mode — Hebrew dabar is the enacted, event-making divine word (spoken reality), Greek logos is the rational structuring principle. Atom confirmed in he_core_cognition_v1 lexicon (he-core-cog-001). See ADR-0073c.", + "display_name": "Hebrew dabar (divine word)", + "lens_id": "he_dabar_v1", + "mastery_report_sha256": "", + "primary_substrate": "he", + "schema_version": "1.0.0", + "semantic_domain_preferences": [ + "logos.utterance.word" + ], + "version": "1.0.0" +} diff --git a/packs/register/pedagogical_v1.json b/packs/register/pedagogical_v1.json new file mode 100644 index 00000000..dfaca07b --- /dev/null +++ b/packs/register/pedagogical_v1.json @@ -0,0 +1,31 @@ +{ + "register_id": "pedagogical_v1", + "version": "1.0.0", + "description": "Pedagogical register. Uses the 'pedagogical' depth tier to expand disclosure across all available semantic domains, with append_semantic_domain_clause=true to anchor each gloss with full semantic domain context. Discourse markers scaffold Socratic progression — questions fold back to the learner, transitions move the inquiry forward. Variation is deterministic across (trace_hash, register_id, turn_idx). See ADR-0071, R6.", + "schema_version": "1.0.0", + "mastery_report_sha256": "", + "display_name": "Pedagogical", + "depth_preference": "pedagogical", + "realizer_overrides": { + "append_semantic_domain_clause": true + }, + "discourse_markers": { + "openings": [ + "Let's think through this —", + "Consider:", + "Here's the core of it —", + "" + ], + "transitions": [ + "Now, the key move is —", + "Which raises the question:", + "Notice that" + ], + "closings": [ + " — does that step make sense?", + " — what does that imply for you?", + " — where does that land?", + "" + ] + } +} diff --git a/packs/register/precise_v1.json b/packs/register/precise_v1.json new file mode 100644 index 00000000..43421c50 --- /dev/null +++ b/packs/register/precise_v1.json @@ -0,0 +1,18 @@ +{ + "register_id": "precise_v1", + "version": "1.0.0", + "description": "Precise register. Standard depth with disclosure_domain_count=2 and drop_provenance_tag=true. Exposes exactly two semantic domains (focused but not terse), and drops the parenthetical meta-tag from gloss output — giving formal, clean surface text. Occupies the focused/technical pole: more substantive than terse_v1 (count=1) but narrower than default_neutral_v1 (count=3, no tag suppression). See ADR-0068, ADR-0070, R6.", + "schema_version": "1.0.0", + "mastery_report_sha256": "", + "display_name": "Precise", + "depth_preference": "standard", + "realizer_overrides": { + "disclosure_domain_count": 2, + "drop_provenance_tag": true + }, + "discourse_markers": { + "openings": [], + "transitions": [], + "closings": [] + } +} diff --git a/scripts/ratify_anchor_lens_packs.py b/scripts/ratify_anchor_lens_packs.py index d8b0dde7..a8a4c7a3 100644 --- a/scripts/ratify_anchor_lens_packs.py +++ b/scripts/ratify_anchor_lens_packs.py @@ -50,6 +50,11 @@ LENS_IDS: tuple[str, ...] = ( "default_unanchored_v1", "grc_logos_v1", "he_logos_v1", + "grc_zoe_v1", + "grc_aletheia_v1", + "grc_arche_v1", + "he_dabar_v1", + "he_chayyim_v1", ) _SUBSTRATE_PACK_IDS: dict[str, tuple[str, ...]] = { diff --git a/scripts/ratify_register_packs.py b/scripts/ratify_register_packs.py index ab3494fa..55e4b099 100644 --- a/scripts/ratify_register_packs.py +++ b/scripts/ratify_register_packs.py @@ -46,6 +46,8 @@ REGISTER_IDS: tuple[str, ...] = ( "default_neutral_v1", "terse_v1", "convivial_v1", + "pedagogical_v1", + "precise_v1", ) #: Valid IntentTag names for ``per_intent`` keys (ADR-0071, R4). This @@ -55,10 +57,16 @@ def _valid_intent_names() -> frozenset[str]: from generate.intent import IntentTag return frozenset(t.name for t in IntentTag) -# Known realizer_overrides keys (ADR-0070, Phase R3). The allow-list is -# the trust boundary against arbitrary operator-authored data driving +# Known realizer_overrides keys (ADR-0070, Phase R3 + R6). The allow-list +# is the trust boundary against arbitrary operator-authored data driving # realizer dispatch. Each entry maps a key name to a validator that -# returns True iff the value is in-bounds for R3. +# returns True iff the value is in-bounds. +# +# R6 boolean knobs (drop_provenance_tag, compress_gloss, drop_articles, +# append_semantic_domain_clause): validated as strict bool only. The +# loader's closed-set boolean allow-list mirrors this gate, and the +# realizer dispatch in ``chat.register_substantive`` reads these keys +# at runtime. def _is_bool(v: Any) -> bool: return isinstance(v, bool)