feat(packs): pedagogical_v1, precise_v1 registers + 5 new anchor lens packs (#47)

* 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.
This commit is contained in:
Shay 2026-05-19 23:49:00 -07:00 committed by GitHub
parent 5a78b0e37b
commit 565cca0b0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 130 additions and 3 deletions

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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?",
""
]
}
}

View file

@ -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": []
}
}

View file

@ -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, ...]] = {

View file

@ -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)