language-ontology-seed: model-drafted en-US and ja-JP seed entries; target-language YAML deleted #52

Merged
weksa merged 5 commits from weksa-lowering/language-ontology-seed into main 2026-11-12 16:13:00 +00:00
26 changed files with 116 additions and 671 deletions

View file

@ -1,27 +0,0 @@
# Cultural Ontology CultCache Seeds
This directory stores Weksa cultural ontology as CultCache `.cc` witnesses.
## Starter Database
- `starter-targets.cc`
This store contains one catalog entry and three draft guarded profile entries:
- `weksa.cultural_ontology.pt-BR.vanilla_brazilian.v0`
- `weksa.cultural_ontology.en.transatlantic.v0`
- `weksa.cultural_ontology.ja-JP.kanto.contemporary.v0`
The catalog entry is:
- `weksa.cultural_ontology.catalog.seed_targets.v0`
The `.cc` file is the typed state witness. This README is only an inspection
guide; it does not own cultural ontology truth.
The profiles follow `schemas/cultural-ontology-profile.md`: salience axes and
linguistic affordances are nested typed state with feature IDs, activation
gates, constraints, indexicality, evidence, uncertainty, and trace labels.
Qdrant retrieval may later propose evidence bundles for these profiles. It does
not own accepted profile state.

View file

@ -5,7 +5,7 @@ culture, and constraint, and the planned lowerer that turns an agent's
meaning packet into the reader's display language.
**What is valuable here.** The interlingua standard and the lowering design: a
meaning packet owns what is meant, a target-language profile owns register,
meaning packet owns what is meant, speaker and scene state (planned; not yet live) own register,
address and politeness, and a lowerer owns surface text and leaves a trace.
**The problem it solves.** An agent's outward speech today is one English
@ -28,7 +28,7 @@ measured.
- [Lowering target](./docs/targets/interlingua-lowering.md) and
[its map](./docs/targets/interlingua-lowering-map.md): the design, scoring
and cut sequence.
- `data/`: the cultural ontology and target-language profile data.
- `data/`: the committed stores (corpora, entities, inventory, language ontology) and research data; there are no target-language profiles.
- `settings/`: setting-specific proving grounds for language projects.
**Live versus planned.** Live: docs, fixtures, examples, ontology data and the
@ -82,9 +82,12 @@ English, Brazilian Portuguese, Japanese, and later target-language dialogue.
[Flavored English Lowering](./docs/flavored-english-lowering.md) remains the
target-specific English receipt.
See [Target-Language Cultural Ontology Profiles](./data/target-language-ontology/README.md)
for the reviewable address, register, politeness, idiom, metaphor, and script
distinctions that target lowerers must inspect before producing output.
The language ontology is `data/ontology/ontology.cc` (read it with
`weksa ontology dump`): per language, the lexicon, grammar and discourse choices a lowerer
reads for a stance and discourse packet. No entry fixes an address or politeness level; those
belong to the speaker and scene state. Its en-US and ja-JP entries are
model-drafted seeds, never Test evidence. Nothing yet grows them from accepted
rounds; until that mint exists they change only by a new `weksa ontology admit`.
For the first AquaSynth speech-training handoff, see
[Tiny PanPhon v0.1 Speech Curriculum](./examples/speech-training/tiny-panphon-v0.1/README.md).

View file

@ -251,6 +251,73 @@ fn the_original_inventory_is_the_dao_revision_three() {
assert!(InventoryStore::open(&copy).is_ok());
}
/// The committed seed ontology: every entry model-drafted, exactly the two
/// panel languages, each with a Stance-conditioned entry, and every committed
/// corpus opens a run over it (ruling `ja-ontology-owner-answer`: a model-drafted
/// entry is labelled so and is never Test evidence).
#[test]
fn committed_ontology_is_model_drafted_and_reads_every_inventory() {
use weksa::OntologyStore;
use weksa::ontology::Condition;
use weksa::run::{LowererReach, RunPaths, RunStores};
use weksa::speaker::Annotator;
let data = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../data");
let tmp = tempfile::tempdir().unwrap();
let onto = tmp.path().join("ontology.cc");
std::fs::copy(data.join("ontology/ontology.cc"), &onto).unwrap();
let entries = OntologyStore::open(&onto).unwrap().all().unwrap();
for e in &entries {
match &e.annotator {
Annotator::Model { family, generator } => {
assert_eq!(*family, ModelFamily::Anthropic, "{}", e.key());
assert_eq!(
generator, "claude-sonnet-5-5 (Weksa Hands, model-drafted seed ontology)",
"{}",
e.key()
);
}
other => panic!("{} is {other:?}", e.key()),
}
}
let mut langs: Vec<&str> = entries.iter().map(|e| e.language.as_str()).collect();
langs.sort();
langs.dedup();
assert_eq!(langs, PANEL);
for lang in PANEL {
let stance = |c: &Condition| c.slot == weksa::inventory::Slot::Stance;
assert!(
entries
.iter()
.any(|e| e.language == lang && e.when.iter().any(stance)),
"{lang} has no Stance-conditioned entry"
);
}
for (corpus, panel) in [("original", &PANEL[..]), ("daodejing", &PANEL[..1])] {
let dir = data.join(corpus);
let copy = |f: &str| {
std::fs::copy(dir.join(f), tmp.path().join(format!("{corpus}-{f}"))).unwrap();
tmp.path().join(format!("{corpus}-{f}"))
};
let (c, i, e) = (copy("corpus.cc"), copy("inventory.cc"), copy("entity.cc"));
RunStores::create(
&tmp.path().join(format!("run-{corpus}")),
corpus,
RunPaths {
corpus: &c,
inventory: &i,
entities: &e,
ontology: &onto,
},
"m",
"bag",
LowererReach::BriefedSubagent,
ModelFamily::Unrecorded,
&panel.iter().map(|l| l.to_string()).collect::<Vec<_>>(),
)
.unwrap_or_else(|e| panic!("{corpus}: {e:?}"));
}
}
/// The probe over the real original corpus: every item is offered, none names a
/// work, and a model that answers with unrelated words reads at the noise floor.
#[test]

View file

@ -45,8 +45,8 @@ fn chrf_matches_sacrebleu_vectors() {
#[test]
fn chrf_argument_order() {
let short = "mind the hatch";
let long = "mind the hatch before the storm arrives tonight";
let short = "shut the gate";
let long = "shut the gate before the storm arrives tonight";
let (as_hypothesis, as_reference) = (chrf(short, long), chrf(long, short));
assert!(
as_hypothesis < as_reference - 1.0,
@ -104,8 +104,8 @@ fn chrf_whitespace_parity() {
#[test]
fn scorer_argument_order() {
let short = "mind the hatch";
let long = "mind the hatch before the storm arrives tonight";
let short = "shut the gate";
let long = "shut the gate before the storm arrives tonight";
let scorer = Scorer::new(Bag);
let got = score_one(&scorer, long, short);
assert_eq!(got.chrf, chrf(short, long));
@ -156,7 +156,7 @@ impl Embedder for Fixed {
fn scorer_refuses_bad_vectors() {
let run = |vectors: Vec<Vec<f32>>| {
Scorer::new(Fixed(vectors)).score(&[ScoreInput {
reference: "mind the hatch",
reference: "shut the gate",
output: "mind the door",
}])
};
@ -671,16 +671,16 @@ fn every_script_scores_a_near_miss_as_sacrebleu_does() {
#[test]
fn coverage_splits_at_any_non_word_character() {
let items = [
validation("item:v:1", "mind the hatch before the storm"),
validation("item:v:1", "shut the gate before the storm"),
train("item:t:1", UNRELATED),
];
let want = read(&["mind the hatch"], &items);
let want = read(&["shut the gate"], &items);
assert_eq!(want, [(5, 3), (5, 2), (4, 1)]);
for joiner in [
":", "\u{b7}", "'", "\u{2019}", "\u{ff3f}", "-", "/", "\u{2014}", "|", "+", "\u{ff1a}",
"\u{30fb}",
] {
let glued = format!("mind{joiner}the{joiner}hatch");
let glued = format!("shut{joiner}the{joiner}gate");
assert_eq!(read(&[&glued], &items), want, "{joiner:?}");
}
// a mark, a joiner or a digit is part of its word, not a break

BIN
data/ontology/ontology.cc Normal file

Binary file not shown.

View file

@ -1,39 +0,0 @@
# Target-Language Cultural Ontology Profiles
These profiles describe culturally loaded realization choices for human target
languages used by Weksa utterance lowering.
They are not whole-culture summaries. They are bounded lowering profiles: the
distinctions a target lowerer must inspect before producing dialogue.
## Authority
Target-language cultural ontology profiles own:
- address and politeness distinctions
- register and social stance pressures
- agency, responsibility, and directness defaults
- idiom and metaphor risks
- script or orthographic choices that carry meaning
- forbidden flattenings that would make the output dishonest
They do not own:
- source meaning
- speaker-private state
- target-language grammar as a whole
- national or cultural stereotypes
- final wording without an interlingua packet
## Current Profiles
- [English, US fixture default](./en-US.yaml)
- [Brazilian Portuguese](./pt-BR.yaml)
- [Brazilian Portuguese overlay catalog](./pt-BR-overlays.yaml)
- [Brazilian Portuguese, Umbanda overlay](./pt-BR-umbanda.yaml)
- [Japanese](./ja-JP.yaml)
Each multilingual lowering fixture should cite the profile or profile stack it
used so reviewers can tell which social and cultural distinctions were
considered. Regional and religious-cultural options are overlays on a base
language profile, not replacements for source meaning.

View file

@ -1,135 +0,0 @@
profile_id: weksa.target_cultural_ontology.en-US.v0
language:
code: en
locale: en-US
script: Latn
scope: >
Bounded English dialogue lowering profile for current Weksa fixtures. This is
not a claim about all English-speaking cultures.
authority:
owns:
- address directness choices
- casual versus formal register
- technical metaphor legibility
- understatement or sarcasm risk
does_not_own:
- source meaning
- speaker identity
- whole-culture description
salience_axes:
address:
relevant_distinctions:
- direct second person is acceptable when scene context names the addressee
- imperative force can be softened or sharpened through wording
lowering_questions:
- Does direct address preserve the speech act?
- Does softening erase urgency?
register:
relevant_distinctions:
- casual
- technical
- formal
- intimate
- institutional
lowering_questions:
- Is technical language character pressure or exposition sludge?
- Does sarcasm obscure the actual warning?
agency:
relevant_distinctions:
- explicit agent responsibility is usually available
- passive phrasing can hide authority or blame
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.
- Do not let sarcasm replace the actual predicate being lowered.

View file

@ -1,70 +0,0 @@
profile_id: weksa.target_cultural_ontology.ja-JP.v0
language:
code: ja
locale: ja-JP
script: Jpan
scope: >
Bounded Japanese dialogue lowering profile for Weksa fixtures. This profile
records realization distinctions that must be inspected; it is not a total
description of Japanese culture.
authority:
owns:
- politeness and honorific pressure
- in-group/out-group stance when context supplies it
- subject and object omission choices
- script mix and technical register
- sentence-final force
does_not_own:
- source meaning
- character identity
- exhaustive Japanese grammar
salience_axes:
politeness:
relevant_distinctions:
- plain
- polite
- honorific
- humble
- rough
lowering_questions:
- Does politeness preserve the relationship, or does it lie about it?
- Is roughness character-specific or generic stylization?
social_position:
relevant_distinctions:
- uchi_soto_pressure
- hierarchy
- familiarity
- emergency_override
lowering_questions:
- Does urgency override ordinary deference?
- Does the line imply a relationship the scene has not earned?
ellipsis:
relevant_distinctions:
- subject omission
- object omission
- explicit pronoun for emphasis or contrast
lowering_questions:
- Is the addressee recoverable without an explicit pronoun?
- Would explicit pronouns sound unnatural or too pointed?
script_and_register:
relevant_distinctions:
- kanji for technical compounds
- kana for softness or readability
- katakana for foreignness, machine texture, or emphasis
lowering_questions:
- Does the script choice help the speaker voice?
- Does a technical compound preserve precision without becoming stiff?
sentence_final_force:
relevant_distinctions:
- direct request
- warning consequence
- command
- threat-like phrasing
lowering_questions:
- Does the ending carry warning force without cartoon aggression?
- Does the line preserve the hazard predicate?
forbidden_flattenings:
- Do not treat politeness as decoration.
- Do not use explicit pronouns just because English has them.
- Do not make every sharp line rough or anime-coded.
- Do not erase the difference between technical precision and formal politeness.

View file

@ -1,76 +0,0 @@
catalog_id: weksa.target_cultural_ontology.pt-BR.overlays.v0
base_profile: data/target-language-ontology/pt-BR.yaml
scope: >
Catalog of optional Brazilian Portuguese regional and cultural overlay slots.
An overlay slot is not permission to imitate a community. It is a named place
where reviewed, source-grounded distinctions can live.
activation_rule: >
Use the broad pt-BR profile by default. Add an overlay only when source
context, speaker state, setting documentation, or authoring metadata names the
relevant region, community, institution, religion, or register.
overlay_slots:
- overlay_id: broad_brazilian_default
status: active_base_mode
profile_ref: data/target-language-ontology/pt-BR.yaml
owns:
- broadly legible Brazilian Portuguese dialogue
does_not_own:
- regional specificity
- religious-cultural specificity
- overlay_id: rio_urban
status: planned_profile
profile_ref:
owns_when_defined:
- Rio de Janeiro urban speech/register pressures for specific characters or settings
blocked_until:
- reviewed source context
- human-approved examples
- overlay_id: sao_paulo_urban
status: planned_profile
profile_ref:
owns_when_defined:
- Sao Paulo urban speech/register pressures for specific characters or settings
blocked_until:
- reviewed source context
- human-approved examples
- overlay_id: northeast_regional
status: planned_profile
profile_ref:
owns_when_defined:
- Northeast Brazilian regional speech/register pressures for specific characters or settings
blocked_until:
- specific region named
- reviewed examples
- human approval
- overlay_id: south_regional
status: planned_profile
profile_ref:
owns_when_defined:
- South Brazilian regional speech/register pressures for specific characters or settings
blocked_until:
- specific region named
- reviewed examples
- human approval
- overlay_id: amazonian_regional
status: planned_profile
profile_ref:
owns_when_defined:
- Amazonian regional speech/register pressures for specific characters or settings
blocked_until:
- specific region or community named
- reviewed examples
- human approval
- overlay_id: umbanda
status: active_guarded_overlay
profile_ref: data/target-language-ontology/pt-BR-umbanda.yaml
owns:
- Umbanda-related register gating
- sacred address caution
- anti-caricature constraints
blocked_until:
- source context or authoring metadata explicitly activates Umbanda context
forbidden_flattenings:
- Do not use a planned overlay as if it were defined.
- Do not treat regional slots as accent generators.
- Do not use religious-cultural overlays for ambience.
- Do not collapse race, region, religion, class, and slang into one Brazilian flavor.

View file

@ -1,72 +0,0 @@
profile_id: weksa.target_cultural_ontology.pt-BR.umbanda.v0
language:
code: pt
locale: pt-BR
script: Latn
overlay:
base_profile: data/target-language-ontology/pt-BR.yaml
kind: religious_cultural_register
scope: >
Optional Brazilian Portuguese cultural ontology overlay for Umbanda-related
scenes, speakers, ritual contexts, or referents. This profile is a consent and
context gate, not a decorative vocabulary pack.
authority:
owns:
- whether Umbanda-specific register is allowed for a realization
- sacred or ritual address caution
- house/tradition specificity warnings
- syncretic and entity-reference sensitivity
- anti-caricature constraints
does_not_own:
- Umbanda doctrine as a whole
- authority to invent ritual speech
- generic Brazilian Portuguese
- speaker identity unless the speaker context explicitly supplies it
activation_requirements:
any_required:
- source context names an Umbanda scene, terreiro, practitioner, entity, ritual, or discourse community
- speaker profile explicitly owns an Umbanda-informed voice or memory
- authoring metadata requests this overlay for reviewed cultural grounding
never_activate_for:
- generic Brazilian flavor
- jokes, insults, mystic ambience, or unexplained exotic texture
- non-Umbanda religious scenes unless the source context makes a syncretic relation explicit
salience_axes:
sacred_address:
relevant_distinctions:
- ordinary dialogue
- respectful reference
- ritual address
- entity_or_guide_reference
lowering_questions:
- Is the line ordinary speech or ritualized speech?
- Does the speaker have standing to use sacred address?
- Should a term be left general until a human reviewer approves specificity?
house_specificity:
relevant_distinctions:
- practices and terms can vary by house, region, and lineage
- generic flattening can become false authority
lowering_questions:
- Is the output pretending one practice represents all Umbanda?
- Should the trace mark the choice as house-specific or uncertain?
syncretic_reference:
relevant_distinctions:
- Catholic, African, Indigenous, Spiritist, and local references may coexist differently by context
- entity names and roles are not interchangeable decoration
lowering_questions:
- Does the source actually contain the syncretic relation?
- Does the line preserve respect without overexplaining?
anti_caricature:
relevant_distinctions:
- religious register
- folkloric stereotype
- occult ambience
lowering_questions:
- Is the output using Umbanda as culture, faith, and practice rather than spooky texture?
- Would a practitioner recognize this as respectful enough for review?
forbidden_flattenings:
- Do not use Umbanda terms as generic magic flavor.
- Do not invent ritual formulas.
- Do not collapse Umbanda into Candomblé, Spiritism, Catholicism, or generic Afro-Brazilian religion.
- Do not imply all Brazilian Portuguese religious language is Umbanda-coded.
- Do not activate this overlay unless source context or authoring metadata explicitly asks for it.

View file

@ -1,74 +0,0 @@
profile_id: weksa.target_cultural_ontology.pt-BR.v0
language:
code: pt
locale: pt-BR
script: Latn
scope: >
Bounded Brazilian Portuguese dialogue lowering profile. This profile is the
base Brazilian Portuguese target; regional, class, religious, and community
registers should be added as explicit overlays rather than silently folded
into generic pt-BR.
authority:
owns:
- Brazilian Portuguese lexical preference
- treatment and address choices
- directness versus mitigation
- regional_or_cultural_overlay_selection
- idiom naturalness for reviewed fixture prose
does_not_own:
- source meaning
- Brazilian culture as a whole
- regional or religious-community authority without an explicit overlay
- target speaker identity
salience_axes:
treatment:
relevant_distinctions:
- voce
- tu_regionally_marked
- o_senhor_a_senhora
- name_or_title_address
lowering_questions:
- Is the relationship close, hostile, hierarchical, unknown, or sacred?
- Does `voce` preserve broad Brazilian naturalness better than `tu`?
- Is `tu` regionally grounded or just imported flavor?
directness:
relevant_distinctions:
- bare imperative
- softened imperative
- warning framed as consequence
- formal warning
lowering_questions:
- Does urgency justify blunt imperative force?
- Would mitigation make the warning dishonest?
lexical_locale:
relevant_distinctions:
- Brazilian Portuguese terms should be preferred in reviewed pt-BR fixtures
- European Portuguese defaults must be marked if intentionally used
lowering_questions:
- Is a term recognizably Brazilian Portuguese in this context?
- Is a literal technical word natural enough for dialogue?
regional_and_cultural_overlay:
relevant_distinctions:
- broad_brazilian_default
- regional_speech_pattern
- class_or_institutional_register
- religious_or_ritual_register
- community_specific_lexicon
lowering_questions:
- Does the source context justify an overlay?
- Is the overlay owned by a named profile?
- Would applying the overlay stereotype the speaker or setting?
metaphor:
relevant_distinctions:
- technical metaphors can preserve character ontology
- over-literal metaphors may sound translated rather than spoken
lowering_questions:
- Does the metaphor still sound like the speaker?
- Does it preserve the warning instead of becoming decorative?
forbidden_flattenings:
- Do not label output as Portuguese without a locale in reviewed fixtures.
- Do not default to European Portuguese wording when the target is pt-BR.
- Do not treat Brazilian Portuguese as one culture, region, class, or religion.
- Do not add regional or religious markers without a cited overlay profile and source-context reason.
- Do not soften a warning merely because directness feels impolite in English review.
overlay_catalog: data/target-language-ontology/pt-BR-overlays.yaml

View file

@ -369,6 +369,12 @@ target. A Qdrant nearest neighbor is a witness candidate, not a cultural fact.
\section{Proposed CultCache State Shape}
No profile store exists. The per-language lowering choices live in
\texttt{data/ontology/ontology.cc}; the typed profiles once stored under
\texttt{.weksa/cultural-ontology/} and the \texttt{weksa.target\_cultural\_ontology.*}
base profiles named in the listing and sketches below are deleted. Community and dialect
profiles belong to follow-up \texttt{language-ontology-communities}.
The following shape should become a typed CultCache document family:
\texttt{weksa.cultural\_ontology\_profile.v0}. It can represent base languages,
dialects, sociolects, regional overlays, ritual registers, and communities of
@ -612,15 +618,6 @@ 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]
.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
\end{lstlisting}
\section{Dialect Profile Sketches}
\subsection{AAVE/AAL}

View file

@ -58,7 +58,7 @@ The utterance lowerer does not own:
- rendered audio
- phoneme parity or synth-control truth
The target-language cultural ontology profile owns:
The target-language cultural ontology profile was drafted to own the following; no such profile store exists now (address, politeness and register belong to speaker and scene state, and `data/ontology/ontology.cc` holds per-language lexicon, grammar and discourse choices):
- address, politeness, register, and social stance distinctions
- idiom and metaphor risks
@ -76,8 +76,8 @@ English remains a lowering target, not the pivot language. Existing flavored
English fixtures continue to be useful, but new multilingual fixtures should
show English as one realization in a set.
The initial cultural ontology profile is
`data/target-language-ontology/en-US.yaml`.
The en-US choices are the `en-US` entries of `data/ontology/ontology.cc`
(model-drafted seeds; read with `weksa ontology dump`).
### Brazilian Portuguese
@ -94,16 +94,10 @@ The target lowerer should record:
defaults
- optional regional or cultural overlays when the source context earns them
The initial cultural ontology profile is
`data/target-language-ontology/pt-BR.yaml`.
Umbanda-related scenes, speakers, ritual contexts, or referents may add the
`data/target-language-ontology/pt-BR-umbanda.yaml` overlay. That overlay must
not activate for generic Brazilian flavor.
Regional or cultural variants should be selected through the overlay catalog at
`data/target-language-ontology/pt-BR-overlays.yaml`. Planned overlay slots are
not active profiles until reviewed examples and source context exist.
No pt-BR ontology entry exists yet; the cut that adds pt-BR writes them to
`data/ontology/ontology.cc`. Umbanda-related scenes, speakers, ritual contexts,
or referents may later earn a regional or cultural variant, which must not
activate for generic Brazilian flavor.
### Japanese
@ -119,8 +113,8 @@ The target lowerer should record:
- whether subject omission preserves or harms clarity
- whether katakana, kanji, kana, or mixed script choices carry useful pressure
The initial cultural ontology profile is
`data/target-language-ontology/ja-JP.yaml`.
The ja-JP choices are the `ja-JP` entries of `data/ontology/ontology.cc`
(model-drafted seeds; read with `weksa ontology dump`).
## Packet Shape

View file

@ -25,8 +25,8 @@ ground truth is Discord text, which can never feed this loop
An agent's outward speech today is English text the model chose, so meaning,
register and voice are fused in one string nobody can inspect or re-target.
Weksa's design already separates them: the packet owns meaning, the target
profile owns address, politeness and forbidden flattenings, the lowerer owns
Weksa's design already separates them: the packet owns meaning, speaker and scene state own address and politeness
(the language ontology holds only per-language lexicon, grammar and discourse choices), the lowerer owns
surface text and a trace. The campaign makes that design real for a live
reader, and gives Weksa's Persona a working body when her mind
(`eureka-body:follow_up:weksa-mind`) wakes.

View file

@ -1,11 +1,8 @@
# CultCache Lowering Examples
These examples lower interlingua packets through CultCache cultural ontology
profiles rather than the older YAML-only target-language profiles.
The starter database is:
- `.weksa/cultural-ontology/starter-targets.cc`
These examples lower interlingua packets for separate target languages. The
language ontology that owns en-US and ja-JP choices is `data/ontology/ontology.cc`
(`weksa ontology dump`); its entries are model-drafted seeds.
Each target file is produced as a separate agent run so differences in target
ontology remain inspectable instead of being smoothed into one multilingual

View file

@ -8,10 +8,6 @@ Prompt:
- `prompts/nibu-cultcache-target-lowering.md`
CultCache profile store:
- `.weksa/cultural-ontology/starter-targets.cc`
Expected target outputs:
- `pt-BR-vanilla-brazilian.yaml`

View file

@ -1,7 +1,6 @@
schema_version: weksa.utterance_lowering.agent_run.v0
source_packet_id: nibu-proof-001
source_packet_ref: examples/english-lowering/nibu-proof-001/interlingua.yaml
target_profile_ref: .weksa/cultural-ontology/starter-targets.cc
target_profile_id: weksa.cultural_ontology.en.transatlantic.v0
target_agent_id: nibu
realization:
@ -11,8 +10,6 @@ realization:
locale: en-001
script: Latn
register: cultivated transatlantic English; cross-Atlantic intelligibility; measured technical warning
cultural_ontology_refs:
- .weksa/cultural-ontology/starter-targets.cc
cultural_ontology_profile_ids:
- weksa.cultural_ontology.en.transatlantic.v0
outputs:

View file

@ -1,7 +1,6 @@
schema_version: weksa.utterance_lowering.agent_run.v0
source_packet_id: nibu-proof-001
source_packet_ref: examples/english-lowering/nibu-proof-001/interlingua.yaml
target_profile_ref: .weksa/cultural-ontology/starter-targets.cc
target_profile_id: weksa.cultural_ontology.ja-JP.kanto.contemporary.v0
target_agent_id: nibu
realization:
@ -11,8 +10,6 @@ realization:
locale: ja-JP
script: Jpan
register: contemporary Kanto metropolitan clipped hazard warning
cultural_ontology_refs:
- .weksa/cultural-ontology/starter-targets.cc
cultural_ontology_profile_ids:
- weksa.cultural_ontology.ja-JP.kanto.contemporary.v0
outputs:

View file

@ -1,7 +1,6 @@
schema_version: weksa.utterance_lowering.agent_run.v0
source_packet_id: nibu-proof-001
source_packet_ref: examples/english-lowering/nibu-proof-001/interlingua.yaml
target_profile_ref: .weksa/cultural-ontology/starter-targets.cc
target_profile_id: weksa.cultural_ontology.pt-BR.vanilla_brazilian.v0
target_agent_id: nibu
realization:
@ -11,8 +10,6 @@ realization:
locale: pt-BR
script: Latn
register: casual_clear
cultural_ontology_refs:
- .weksa/cultural-ontology/starter-targets.cc
cultural_ontology_profile_ids:
- weksa.cultural_ontology.pt-BR.vanilla_brazilian.v0
outputs:

View file

@ -22,7 +22,7 @@ realizations:
script: Latn
register: sharp technical casual
cultural_ontology_refs:
- data/target-language-ontology/en-US.yaml
- data/ontology/ontology.cc
outputs:
visible_action: The cockpit lights snap from amber to surgical white around the damaged control.
spoken_text: "Take your hand off that control unless you want your nervous system to become my least useful circuit diagram."
@ -52,8 +52,6 @@ realizations:
locale: pt-BR
script: Latn
register: direct technical casual
cultural_ontology_refs:
- data/target-language-ontology/pt-BR.yaml
outputs:
visible_action: As luzes do cockpit passam de âmbar para branco cirúrgico ao redor do controle danificado.
spoken_text: "Tira a mão desse controle, a não ser que você queira transformar o seu sistema nervoso no meu diagrama de circuitos menos útil."
@ -90,7 +88,7 @@ realizations:
script: Jpan
register: sharp technical plain
cultural_ontology_refs:
- data/target-language-ontology/ja-JP.yaml
- data/ontology/ontology.cc
outputs:
visible_action: 損傷した制御盤の周囲で、操縦室の灯りが琥珀色から外科灯のような白へ切り替わる。
spoken_text: "その制御盤から手を離して。神経系を、私のいちばん役に立たない回路図にしたくないなら。"

View file

@ -10,8 +10,6 @@ You are reviewing one target lowering produced from the Nibu interlingua packet.
`examples/english-lowering/nibu-proof-001/projected-context.yaml`
- Lowering prompt:
`prompts/nibu-cultcache-target-lowering.md`
- CultCache profile store:
`.weksa/cultural-ontology/starter-targets.cc`
The source meaning is:

View file

@ -24,20 +24,10 @@ text. Lower from the interlingua packet and projected context.
## Cultural Ontology Authority
Use the CultCache store:
- `.weksa/cultural-ontology/starter-targets.cc`
It contains:
- `weksa.cultural_ontology.pt-BR.vanilla_brazilian.v0`
- `weksa.cultural_ontology.en.transatlantic.v0`
- `weksa.cultural_ontology.ja-JP.kanto.contemporary.v0`
Qdrant-style retrieval and old YAML profiles may be useful context, but the
CultCache profile named in your task is the target authority. Treat the target
profile as draft guarded typed state: preserve its activation gates, forbidden
flattenings, and nested linguistic affordance feature IDs in your trace.
The language ontology is `data/ontology/ontology.cc` (`weksa ontology dump`).
It holds model-drafted seed entries for en-US and ja-JP only; there is no
pt-BR entry yet. Treat an entry as a draft: say in your trace which entries you
used, and when no entry covers the target, say so rather than inventing one.
## Output Contract
@ -50,8 +40,6 @@ The file must use this shape:
schema_version: weksa.utterance_lowering.agent_run.v0
source_packet_id: nibu-proof-001
source_packet_ref: examples/english-lowering/nibu-proof-001/interlingua.yaml
target_profile_ref: .weksa/cultural-ontology/starter-targets.cc
target_profile_id:
target_agent_id: nibu
realization:
realization_id:
@ -60,10 +48,6 @@ realization:
locale:
script:
register:
cultural_ontology_refs:
- .weksa/cultural-ontology/starter-targets.cc
cultural_ontology_profile_ids:
-
outputs:
visible_action:
spoken_text:

View file

@ -23,9 +23,6 @@ them.
- [utterance-lowering-packet.md](./utterance-lowering-packet.md): shared packet
contract for lowering interlingua and projected speaker context into one or
more target-language utterance realizations.
- [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

View file

@ -5,8 +5,8 @@ This is the human-facing schema receipt for
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/`.
this receipt, the meta-analysis paper, and the language ontology in
`data/ontology/ontology.cc`.
## Authority
@ -265,14 +265,11 @@ cultural_ontology_trace:
## 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
```
No profile store exists. The per-language lowering choices live in
`data/ontology/ontology.cc` (`weksa ontology dump`); the typed profiles that
once sat under `.weksa/cultural-ontology/`, and the `weksa.target_cultural_ontology.*`
base profiles are deleted. Community and dialect
profiles are owned by follow-up `language-ontology-communities`.
Qdrant may store chunks, vectors, and payload filters for retrieval. It does
not own profile acceptance, feature activation, or renderer authority.

View file

@ -1,81 +0,0 @@
# Target-Language Cultural Ontology Contract
This is the human-facing schema receipt for target-language cultural ontology
profiles consumed by Weksa utterance lowering.
Executable schema code does not exist yet. When it does, it must reconcile with
this document and the profiles under `data/target-language-ontology/`.
## Authority
A target-language cultural ontology profile owns the realization distinctions
that must be inspected for a human target language before surface text is
chosen.
It owns:
- address and treatment distinctions
- politeness and register pressure
- social stance and directness defaults
- idiom, metaphor, and lexical-locale risks
- script or orthographic choices that carry meaning
- forbidden flattenings for reviewed output
It does not own:
- source meaning
- speaker identity
- private state
- exhaustive grammar
- whole-culture description
- final wording without an interlingua packet
## Required Fields
- `profile_id`: stable profile identifier.
- `language`: target code, locale, and script.
- `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
Each salience axis should name:
- `relevant_distinctions`: choices the target language or locale makes visible.
- `lowering_questions`: questions reviewers and lowerers should answer before
accepting an output.
Examples:
- English directness and sarcasm.
- Brazilian Portuguese treatment choice, lexical locale, and regional or
religious-cultural overlays.
- Japanese politeness, ellipsis, and sentence-final force.
## Fixture Contract
Reviewed multilingual fixtures should cite the profile used by each
realization:
```yaml
target_language:
code: pt
locale: pt-BR
script: Latn
register: direct technical casual
cultural_ontology_refs:
- data/target-language-ontology/pt-BR.yaml
```
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.