diff --git a/data/target-language-ontology/en-US.yaml b/data/target-language-ontology/en-US.yaml index 9e9b98c..628cd1f 100644 --- a/data/target-language-ontology/en-US.yaml +++ b/data/target-language-ontology/en-US.yaml @@ -41,6 +41,94 @@ salience_axes: lowering_questions: - Should the speaker own the intervention directly? - Does the line preserve who is at risk? +linguistic_affordances: + grammar_features: + - feature_id: en_us_direct_imperative_warning + label: Direct imperative warning + status: draft + domain: + layer: grammar + category: clause_mood + subcategory: imperative + description: > + Broad en-US allows direct imperatives for urgent safety warnings when + the speaker has standing to intervene and the scene rewards clarity + over mitigation. + formal_conditions: + syntactic_environment: + - main_clause + - direct_address_optional + semantic_inputs: + - warning + - addressee_action_to_stop_or_avoid + - consequence_or_risk_available + required_interlingua_fields: + - speech_act + - addressee + - prohibited_action + realization: + function: stop_or_prevent_action + surface_strategy: bare_imperative_or_do_not_imperative + examples: + - "Don't touch the damaged control." + activation: + allowed_when: + - scene_has_immediate_risk + - speaker_has_contextual_authority_or_care_relation + forbidden_when: + - politeness_softening_is_required_by_target_profile + - imperative_would_falsely_imply_hierarchy + requires_profile_authority: false + minimum_density: light + maximum_density: normal + constraints: + grammar_contexts: + - avoid_if_source_requires_indirect_request + register_contexts: + - casual + - technical + - emergency + speaker_contexts: + - known_addressee + - operator_warning + incompatibilities: + - generic_assistant_over_politeness + indexicality: + social_meanings: + - urgency + - clarity + - responsibility + in_group_meanings: [] + out_group_risks: + - may sound abrupt if the scene is not urgent + stereotypes_to_avoid: [] + evidence: + source_refs: + - schemas/cultural-ontology-profile.md + qdrant_source_ids: [] + cached_source_refs: [] + source_hashes: [] + reviewer_refs: [] + confidence: medium + uncertainty: + open_questions: + - Should a later en-US regional overlay override imperative force? + known_limits: + - Base en-US does not model regional, racialized, or contact-language + dialect grammar. + trace: + trace_label: direct_imperative_warning + must_report_when_used: true + must_report_when_rejected: true + phonology_features: [] + lexicon_features: [] + discourse_patterns: [] + orthography_features: [] + code_switching: + allowed: false + constraints: + - Base en-US profile does not authorize contact-language switching. + patterns: [] forbidden_flattenings: - Do not treat English as the neutral source for other target languages. - Do not use generic assistant politeness when a character voice is required. diff --git a/docs/cultural-ontology-meta-analysis.tex b/docs/cultural-ontology-meta-analysis.tex index 26ba328..6532952 100644 --- a/docs/cultural-ontology-meta-analysis.tex +++ b/docs/cultural-ontology-meta-analysis.tex @@ -446,14 +446,132 @@ salience_axes: lowering_questions: [] linguistic_affordances: - grammar_features: [] - phonology_features: [] - lexicon_features: [] - discourse_patterns: [] - orthography_features: [] + grammar_features: + - feature_id: + status: draft | reviewed | deprecated + domain: + layer: grammar + category: tense_aspect_modality | negation | agreement | + pronoun | word_order | discourse_particle + description: + formal_conditions: + syntactic_environment: [] + semantic_inputs: [] + required_interlingua_fields: [] + realization: + function: + surface_strategy: + examples: [] + activation: + allowed_when: [] + forbidden_when: [] + requires_profile_authority: + minimum_density: + maximum_density: + constraints: + grammar_contexts: [] + register_contexts: [] + speaker_contexts: [] + incompatibilities: [] + indexicality: + social_meanings: [] + in_group_meanings: [] + out_group_risks: [] + stereotypes_to_avoid: [] + evidence: + source_refs: [] + qdrant_source_ids: [] + cached_source_refs: [] + source_hashes: [] + reviewer_refs: [] + confidence: low | medium | high + uncertainty: + open_questions: [] + known_limits: [] + trace: + trace_label: + must_report_when_used: + must_report_when_rejected: + phonology_features: + - feature_id: + domain: + layer: phonology + category: vowel_shift | consonant_realization | prosody | + rhythm | stress | intonation + realization: + ipa_hint: + orthography_should_change: + speech_synthesis_controls: [] + constraints: + lexical_sets: [] + environments: [] + density_safe_for_text: + indexicality: {} + evidence: {} + trace: {} + lexicon_features: + - feature_id: + domain: + layer: lexicon + category: regional_lexeme | loanword | calque | taboo | + honorific | kinship | ritual_term | technical_term + lexical_items: + - form: + gloss: + sense: + register: + allowed_speaker_standing: + forbidden_senses: [] + collocations: [] + activation: {} + indexicality: {} + evidence: {} + trace: {} + discourse_patterns: + - pattern_id: + domain: + layer: discourse + category: stance_marker | turn_taking | address_sequence | + narrative_frame | ritual_formula | humor | emphasis + interactional_function: + sequence_shape: [] + adjacency_constraints: [] + activation: {} + indexicality: {} + evidence: {} + trace: {} + orthography_features: + - feature_id: + domain: + layer: orthography + category: spelling_variant | script_choice | punctuation | + transliteration | eye_dialect_guard + allowed_surface_forms: [] + forbidden_surface_forms: [] + renderer_notes: + activation: {} + evidence: {} + trace: {} code_switching: allowed: constraints: [] + patterns: + - pattern_id: + domain: + layer: code_switching + category: lexical_insertion | tag_switch | alternation | + quotation | ritual_formula | metalinguistic + languages: [] + matrix_language: + embedded_language: + switch_sites: [] + pragmatic_functions: [] + constraints: + requires_bilingual_speaker: + requires_community_context: + forbidden_when: [] + evidence: {} + trace: {} style_controls: density: @@ -485,6 +603,15 @@ trace_requirements: - reviewer_required \end{lstlisting} +Flat lists such as \texttt{grammar\_features: [habitual\_be]} are allowed only +as summaries or search indexes. The accepted state must be the nested feature +record: a stable feature identifier, domain, activation gates, constraints, +indexical meanings, evidence, uncertainty, and trace behavior. This lets the +lowerer ask fine-grained questions without parsing prose, such as whether a +feature requires speaker authority, whether it can be rendered in text or only +speech synthesis, which source hashes support it, and what must be reported if +the feature is rejected. + Recommended CultCache paths: \begin{lstlisting}[basicstyle=\ttfamily\small] @@ -527,15 +654,145 @@ salience_axes: - bidialectal_context_switching linguistic_affordances: grammar_features: - - invariant_habitual_be - - stressed_BIN - - completive_done - - negative_concord - evidence_refs: - - Green2002 - - Rickford1999 - - CORAAL - - YaleInvariantBe + - feature_id: aal_invariant_habitual_be + status: draft_guarded + domain: + layer: grammar + category: tense_aspect_modality + subcategory: habitual_aspect + description: Marks habitual or characteristic occurrence, not present + progressive meaning. + formal_conditions: + semantic_inputs: + - habituality + required_interlingua_fields: + - event_iterativity_or_characteristic_state + realization: + function: express_habitual_aspect + surface_strategy: invariant_be + examples: [] + activation: + allowed_when: + - speaker_profile_refs_aal + - scene_context_refs_aal_community + forbidden_when: + - generic_black_coding + - outsider_performance_without_authority + requires_profile_authority: true + minimum_density: reviewed_light + maximum_density: reviewed_dense + constraints: + grammar_contexts: + - only_when_habitual_aspect_is_intended + incompatibilities: + - present_progressive_only_reading + indexicality: + social_meanings: + - aal_systematic_aspect + out_group_risks: + - treated_as_broken_standard_english + stereotypes_to_avoid: + - ignorance + - comedy + evidence: + source_refs: + - Green2002 + - Rickford1999 + - YaleInvariantBe + - CORAAL + confidence: high + trace: + trace_label: aal_habitual_be + must_report_when_used: true + must_report_when_rejected: true + - feature_id: aal_stressed_bin + status: draft_guarded + domain: + layer: grammar + category: tense_aspect_modality + subcategory: remote_past_or_remote_state + activation: + allowed_when: + - speaker_profile_refs_aal + forbidden_when: + - generic_flavor + requires_profile_authority: true + evidence: + source_refs: + - Green2002 + - Rickford1999 + confidence: medium + trace: + trace_label: aal_stressed_bin + must_report_when_used: true + must_report_when_rejected: true + - feature_id: aal_completive_done + status: draft_guarded + domain: + layer: grammar + category: tense_aspect_modality + subcategory: completive + activation: + allowed_when: + - speaker_profile_refs_aal + forbidden_when: + - generic_flavor + requires_profile_authority: true + evidence: + source_refs: + - Green2002 + - Rickford1999 + confidence: medium + trace: + trace_label: aal_completive_done + must_report_when_used: true + must_report_when_rejected: true + - feature_id: aal_negative_concord + status: draft_guarded + domain: + layer: grammar + category: negation + subcategory: negative_concord + activation: + allowed_when: + - speaker_profile_refs_aal + forbidden_when: + - generic_flavor + requires_profile_authority: true + evidence: + source_refs: + - Green2002 + - Rickford1999 + confidence: medium + trace: + trace_label: aal_negative_concord + must_report_when_used: true + must_report_when_rejected: true + phonology_features: [] + lexicon_features: [] + discourse_patterns: [] + orthography_features: + - feature_id: aal_eye_dialect_guard + status: draft_guarded + domain: + layer: orthography + category: eye_dialect_guard + allowed_surface_forms: [] + forbidden_surface_forms: + - misspelling_as_dialect + - random_apostrophe_deletion + renderer_notes: Text rendering must not fake AAL phonology through + stigmatizing spelling unless an orthographic practice is separately + evidenced and reviewed. + trace: + trace_label: aal_eye_dialect_guard + must_report_when_used: false + must_report_when_rejected: true + code_switching: + allowed: true + constraints: + - Requires speaker/community context and evidence-backed pattern. + patterns: [] forbidden_flattenings: - Do not treat AAL as broken Standard English. - Do not use AAL to imply criminality, ignorance, comedy, or informality. diff --git a/schemas/README.md b/schemas/README.md index 169d89f..6de8179 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -26,6 +26,10 @@ them. - [target-language-cultural-ontology.md](./target-language-cultural-ontology.md): contract for the address, politeness, register, idiom, metaphor, script, and forbidden-flattening profiles consumed by target lowerers. +- [cultural-ontology-profile.md](./cultural-ontology-profile.md): nested + CultCache profile contract for cultural ontology, including typed salience + axes, linguistic affordance feature records, evidence, activation gates, and + lowering traces. - [english-lowering-packet.md](./english-lowering-packet.md): packet contract for the older English-specific realization lane. - [english-pronunciation-plan.md](./english-pronunciation-plan.md): plan for diff --git a/schemas/cultural-ontology-profile.md b/schemas/cultural-ontology-profile.md new file mode 100644 index 0000000..84b1ed3 --- /dev/null +++ b/schemas/cultural-ontology-profile.md @@ -0,0 +1,278 @@ +# Cultural Ontology Profile Contract + +This is the human-facing schema receipt for +`weksa.cultural_ontology_profile.v0`, the CultCache document family that stores +reviewed cultural ontology used during utterance lowering. + +Executable schema code does not exist yet. When it does, it must reconcile with +this receipt, the meta-analysis paper, and the profiles under +`data/target-language-ontology/`. + +## Authority + +A cultural ontology profile owns the realization lens for a target speech +community, dialect, register, regional overlay, ritual register, historical +period, or contact-language repertoire. + +It owns: + +- salience axes the lowerer must inspect +- social-indexical meanings attached to forms +- linguistic affordances available to a dialect or register +- activation gates and forbidden use contexts +- evidence, reviewer status, uncertainty, and source hashes +- trace requirements for lowering audits + +It does not own: + +- source meaning +- speaker identity +- final wording without an interlingua packet +- unreviewed stereotypes +- Qdrant nearest-neighbor results as accepted truth +- renderer-specific surface tricks + +## State Shape + +The profile is typed state whose nested fields are also typed state. Lists of +strings may be used only as summaries or indexes; accepted affordance authority +lives in feature records. + +```yaml +schema: weksa.cultural_ontology_profile.v0 +profile_id: +kind: base_language | dialect | sociolect | regional_overlay | + institutional_register | religious_overlay | contact_language_overlay | + historical_period_profile | community_of_practice +status: draft | draft_guarded | reviewed | deprecated + +language: + code: + locale: + script: + variety_label: + endonyms: [] + exonyms: [] + +parent_profiles: [] + +community: + regions: [] + speech_community: + historical_context: + identity_authority: + consent_notes: + +activation: + allowed_when: [] + forbidden_when: [] + required_confidence: exploratory | provisional | reviewed + reviewer_required_when: [] + +salience_axes: + : + axis_id: + domain: temporality_aspect | stance | social_relation | + identity_indexing | sacred_or_ritual_context | address | + modality | evidentiality | affect | politeness + description: + relevant_distinctions: + - distinction_id: + label: + meaning: + lowering_questions: [] + required_when: [] + forbidden_when: [] + evidence_refs: [] + +linguistic_affordances: + grammar_features: [] + phonology_features: [] + lexicon_features: [] + discourse_patterns: [] + orthography_features: [] + code_switching: + allowed: + constraints: [] + patterns: [] +``` + +## Affordance Feature Records + +Every affordance list above contains typed feature records. Feature IDs should +be stable inside a profile and reusable in lowering traces. + +```yaml +feature_id: +label: +status: draft | reviewed | deprecated +domain: + layer: grammar | phonology | lexicon | discourse | orthography | code_switching + category: + subcategory: +description: +realization: + function: + surface_strategy: + examples: [] +activation: + allowed_when: [] + forbidden_when: [] + requires_profile_authority: + minimum_density: + maximum_density: +constraints: + grammar_contexts: [] + phonological_contexts: [] + register_contexts: [] + speaker_contexts: [] + collocation_limits: [] + incompatibilities: [] +indexicality: + social_meanings: [] + in_group_meanings: [] + out_group_risks: [] + stereotypes_to_avoid: [] +evidence: + source_refs: [] + qdrant_source_ids: [] + cached_source_refs: [] + source_hashes: [] + reviewer_refs: [] + confidence: low | medium | high +uncertainty: + open_questions: [] + known_limits: [] +trace: + trace_label: + must_report_when_used: + must_report_when_rejected: +``` + +Specialized feature records add fields rather than replacing the common record: + +```yaml +grammar_feature: + feature_id: + domain: + layer: grammar + category: tense_aspect_modality | negation | agreement | pronoun | + word_order | subordination | discourse_particle + formal_conditions: + syntactic_environment: [] + semantic_inputs: [] + required_interlingua_fields: [] + lowering_effect: + adds_meaning: + preserves_meaning: + changes_register: + can_be_omitted_when: [] + +phonology_feature: + feature_id: + domain: + layer: phonology + category: vowel_shift | consonant_realization | prosody | rhythm | + stress | intonation + realization: + ipa_hint: + orthography_should_change: + speech_synthesis_controls: [] + constraints: + lexical_sets: [] + environments: [] + density_safe_for_text: + +lexicon_feature: + feature_id: + domain: + layer: lexicon + category: regional_lexeme | loanword | calque | taboo | honorific | + kinship | ritual_term | technical_term + lexical_items: + - form: + gloss: + sense: + register: + allowed_speaker_standing: + forbidden_senses: [] + collocations: [] + +discourse_pattern: + pattern_id: + domain: + layer: discourse + category: stance_marker | turn_taking | address_sequence | + narrative_frame | ritual_formula | humor | emphasis + interactional_function: + sequence_shape: [] + adjacency_constraints: [] + +orthography_feature: + feature_id: + domain: + layer: orthography + category: spelling_variant | script_choice | punctuation | + transliteration | eye_dialect_guard + allowed_surface_forms: [] + forbidden_surface_forms: [] + renderer_notes: + +code_switching_pattern: + pattern_id: + domain: + layer: code_switching + category: lexical_insertion | tag_switch | alternation | + quotation | ritual_formula | metalinguistic + languages: [] + matrix_language: + embedded_language: + switch_sites: [] + pragmatic_functions: [] + constraints: + requires_bilingual_speaker: + requires_community_context: + forbidden_when: [] +``` + +## Lowering Trace Contract + +A lowered utterance trace should cite the nested state that actually affected +the line: + +```yaml +cultural_ontology_trace: + activated_profiles: [] + activated_axes: + - axis_id: + distinctions_used: [] + distinctions_rejected: [] + activated_affordances: + - profile_id: + layer: + feature_id: + density: + reason: + evidence_refs: [] + rejected_affordances: + - profile_id: + layer: + feature_id: + reason: + reviewer_required: + uncertainty: [] +``` + +## Storage + +Recommended CultCache paths: + +```text +.weksa/cultural-ontology/{profileId}.cc +.weksa/cultural-ontology/{baseProfileId}/overlays/{overlayId}.cc +.weksa/cultural-ontology/catalogs/{catalogId}.cc +.weksa/cultural-ontology/evidence-bundles/{bundleId}.cc +``` + +Qdrant may store chunks, vectors, and payload filters for retrieval. It does +not own profile acceptance, feature activation, or renderer authority. diff --git a/schemas/target-language-cultural-ontology.md b/schemas/target-language-cultural-ontology.md index d805fe9..ef34301 100644 --- a/schemas/target-language-cultural-ontology.md +++ b/schemas/target-language-cultural-ontology.md @@ -37,6 +37,9 @@ It does not own: - `scope`: bounded statement of what the profile is and is not. - `authority`: `owns` and `does_not_own` lists. - `salience_axes`: named axes the lowerer must inspect. +- `linguistic_affordances`: optional nested typed feature records, following + `cultural-ontology-profile.md`, when the profile owns dialect, register, + phonological, lexical, discourse, orthographic, or code-switching pressure. - `forbidden_flattenings`: mistakes the target lowerer must avoid. ## Salience Axes @@ -71,3 +74,8 @@ target_language: The realization trace should name the cultural ontology axes that shaped the line. + +For dialectal, regional, historical, ritual, and contact-language profiles, use +the nested `weksa.cultural_ontology_profile.v0` contract in +`cultural-ontology-profile.md`. Flat string lists are only summaries; typed +feature records own accepted affordance detail.