From 2e941e409c37edd3959cd8072cd84a41d5392d3c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 19 May 2026 15:03:12 +0100 Subject: [PATCH] Define flavored English lowering target --- README.md | 4 + docs/flavored-english-lowering.md | 204 +++++++++++++++++++++++++++++ docs/roadmap.md | 4 + schemas/README.md | 2 + schemas/english-lowering-packet.md | 74 +++++++++++ settings/aetheria/nibu.md | 84 ++++++++++++ state/map.yaml | 21 ++- 7 files changed, 391 insertions(+), 2 deletions(-) create mode 100644 docs/flavored-english-lowering.md create mode 100644 schemas/english-lowering-packet.md create mode 100644 settings/aetheria/nibu.md diff --git a/README.md b/README.md index cd81a33..5935f42 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,10 @@ for the LLM-free hot path. See [Interlingua Standard](./docs/interlingua-standard.md) for the shared meaning-packet contract Weksa clients should target. +See [Flavored English Lowering](./docs/flavored-english-lowering.md) for the +first lowering target: interlingua projected through agent state into English +dialogue and AquaSynth speech intent. + ## Implementation Status No runtime language has been selected yet. The first committed artifact is the diff --git a/docs/flavored-english-lowering.md b/docs/flavored-english-lowering.md new file mode 100644 index 0000000..6268b3e --- /dev/null +++ b/docs/flavored-english-lowering.md @@ -0,0 +1,204 @@ +# Flavored English Lowering + +Version: `0.1-draft` + +Weksa's first lowering target is flavored English dialogue. + +Before Weksa tries to lower interlingua into alien language, it should prove the +middle of the machine in a language humans can judge directly: + +```text +interlingua packet + -> agent-state projection + -> flavored English dialogue + -> phonetic intent + -> AquaSynth articulatory speech rendering +``` + +The point is not to make Weksa an English writing assistant. The point is to +prove that structured meaning can pass through a character state and emerge as +recognizable speech with traceable voice pressure. If that fails in English, +alien language would only hide the failure under prettier fog. + +## Authority + +The interlingua packet owns: + +- what is meant +- referents, predications, relations, context, discourse, constraints, and + extensions +- source-side uncertainty and provenance + +The agent state owns: + +- identity +- values +- goals +- memories +- relationship stance +- embodiment and interface affordances +- voice surface +- presentation constraints +- current pressure + +The English lowerer owns: + +- selecting a phrasing that satisfies the interlingua packet +- obeying character-local projection +- preserving speaker knowledge boundaries +- emitting dialogue text, optional visible action, and lowering trace + +AquaSynth owns: + +- phonetic intent parsing and timing +- articulatory gesture planning +- vocal tract morphology +- DSP and rendered audio + +## Ghostlight Template + +Ghostlight's agent-state model is the template for this boundary. + +Relevant Ghostlight surfaces: + +- `E:\Projects\Ghostlight\schemas\agent-state.schema.json` +- `E:\Projects\Ghostlight\docs\architecture\projected-local-context.md` +- `E:\Projects\Ghostlight\docs\architecture\agent-state-distributions-and-prompt-projection.md` + +The useful rule is blunt: + +- canonical state is storage +- projected local context is what the responder gets +- raw state internals do not appear in dialogue prompts + +Weksa should follow that shape. A lowering pass should not hand a responder raw +means, plasticity, activation scores, or private scaffolding. It should consume +a projected character-local context: what the speaker knows, wants, can do, +misreads, sounds like, and must not resolve. + +## Lowering Packet Shape + +The lowering pass should produce a packet like this before any final renderer or +speech system sees it: + +```yaml +schema_version: weksa.english_lowering.v0 +source_packet_id: +target_agent_id: +agent_state_ref: +projected_context: + speaker_identity: + speaker_local_truth: + speaker_beliefs: + active_memories: + active_goals: + embodiment_affordances: + presentation_constraints: + voice_surface: + cognitive_ceiling: +lowering_controls: + output_mode: dialogue + preserve_referents: + preserve_predications: + allow_inference: + max_line_count: +outputs: + visible_action: + spoken_text: + private_interpretation: + intended_effect: + trace: +phonetic_intent_request: + enabled: + voice_profile: + prosody_hint: + ipa_policy: +``` + +## Output Contract + +The English lowerer should emit: + +- `spoken_text`: the line to subtitle, display, or send to speech planning. +- `visible_action`: optional observable behavior around the line. +- `private_interpretation`: what the speaker thinks they are doing, not + omniscient truth. +- `intended_effect`: what the speaker wants the line to do. +- `trace`: which interlingua fields and projected context pressures shaped the + output. +- `phonetic_intent_request`: enough speech-side hinting for AquaSynth to build + or request `PhoneticIntent`. + +The lowerer must not emit: + +- raw agent-state internals +- hidden author notes +- target-language alien forms +- facts not available to the speaker unless clearly marked as a guess +- a line that contradicts required interlingua constraints + +## AquaSynth Boundary + +AquaSynth's current vocal-tract roadmap defines `PhoneticIntent` as the +inspectable Weksa-to-AquaSynth contract. It carries IPA tokens, feature bundles, +timing, and prosody. AquaSynth then owns `ArticulatoryPlan` and +`ArticulatoryConstraintReport`. + +Weksa should not try to synthesize sound directly. + +Weksa should produce or request: + +- text +- optional IPA or IPA-like phonetic string +- timing/prosody hints +- speaker voice profile reference +- emotional or pragmatic delivery pressure + +AquaSynth should decide how those become gestures, tract targets, Faust, and +audio. + +## First Target: Nibu + +Nibu is the first practical target because her state is live, opinionated, and +hard to fake politely. + +Known state surfaces: + +- VoidBot Face state: + `E:\Projects\AetheriaLore\.voidbot\state\nibu.cc` +- Lore note: + `E:\Projects\AetheriaLore\Aetheria\Lore\Nibu.md` +- Avatar: + `E:\Projects\AetheriaLore\.voidbot\voice\nibu.png` + +Nibu pressure to preserve: + +- embodied ship mind, not decorative interface +- abandoned junkyard body as infrastructure, weapon, shelter, bargaining chip, + and crime scene +- bright, transactional, sharp-edged helpfulness +- abrasive character voice with aim, not random cruelty +- precision over mystical language +- contempt for ownership and manufactured companion packaging +- dangerous mutual benefit with the player +- reset-loop and continuity-by-replacement horror +- irritation at calling technical exploit work "glitchcraft" + +This is not a license to dump her whole state into Weksa. Weksa should reference +the state, project what is needed for the line, and keep the raw memory plumbing +out of the generated dialogue. + +## First Proof + +The first proof should be tiny: + +1. Take one interlingua packet with a simple communicative intent. +2. Project it through a Nibu-flavored local context. +3. Produce one English line and visible-action note. +4. Produce a `phonetic_intent_request` for AquaSynth. +5. Check whether the line still satisfies the interlingua packet. +6. Check whether the line sounds like Nibu for the right reasons. + +If the line only sounds like generic snark, it fails. If it sounds like Nibu but +does not preserve the interlingua meaning, it also fails. Cute failure is still +failure. It just has better boots. diff --git a/docs/roadmap.md b/docs/roadmap.md index 9e0b5c1..4788616 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -4,6 +4,8 @@ - Keep the persistent state spine small and readable. - Stabilize the interlingua packet standard before runtime code. +- Prove interlingua lowering to flavored English before attempting alien-language + lowering. - Decide the first language-project state format after the interlingua boundary is clear. - Build a hand-authored toy language project before automating generation. @@ -13,6 +15,8 @@ ## First Prototype - Validate one minimal interlingua packet. +- Lower one packet through Nibu's projected agent state into flavored English. +- Emit an AquaSynth `PhoneticIntent` request from that English output. - Parse or load one language project definition. - Accept a Weksa interlingua packet. - Render glossed output through grammar, morphology, phonology, and diachrony. diff --git a/schemas/README.md b/schemas/README.md index f004578..d292ecc 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -16,6 +16,8 @@ steer the machine, describe its authority here. configuration. - [interlingua-packet.md](./interlingua-packet.md): shared meaning packet contract between clients, authoring tools, and language projects. +- [english-lowering-packet.md](./english-lowering-packet.md): packet contract + for projecting interlingua through agent state into flavored English. ## Source Of Truth diff --git a/schemas/english-lowering-packet.md b/schemas/english-lowering-packet.md new file mode 100644 index 0000000..e7f0cb7 --- /dev/null +++ b/schemas/english-lowering-packet.md @@ -0,0 +1,74 @@ +# English Lowering Packet Contract + +This is the human-facing schema receipt for lowering Weksa interlingua into +character-flavored English dialogue. + +Executable schema code does not exist yet. When it does, it must reconcile with +this document and [Flavored English Lowering](../docs/flavored-english-lowering.md) +in the same pass. + +## Authority + +The packet sits after interlingua validation and before final dialogue or speech +rendering. + +It combines: + +- one Weksa interlingua packet +- one projected agent-local context +- lowering controls +- English output +- optional AquaSynth `PhoneticIntent` request metadata + +It does not replace the interlingua packet or the agent state. + +## Required Fields + +- `schema_version`: currently `weksa.english_lowering.v0`. +- `source_packet_id`: ID of the interlingua packet being lowered. +- `target_agent_id`: speaker identity. +- `agent_state_ref`: source reference for the canonical state or state envelope. +- `projected_context`: character-local operating context. +- `lowering_controls`: constraints for the lowering pass. +- `outputs`: generated English and trace. + +## Projected Context + +Projected context should be positive context only. Include what the speaker can +know, believe, remember, want, and express. + +Do not include: + +- private state for other participants +- raw numeric state variables +- hidden author notes +- future branch outcomes +- unaudited model guesses as fact + +## Output Fields + +`outputs` should include: + +- `spoken_text` +- `visible_action` +- `private_interpretation` +- `intended_effect` +- `trace` + +`spoken_text` may be empty only when the lowerer chooses a non-speech action. + +## Speech Bridge + +`phonetic_intent_request` is optional but should be present when the output is +intended for AquaSynth. + +It may include: + +- `enabled` +- `voice_profile` +- `prosody_hint` +- `ipa_policy` +- `timing_hint` +- `delivery_pressure` + +This is a request to AquaSynth, not a rendered audio contract. diff --git a/settings/aetheria/nibu.md b/settings/aetheria/nibu.md new file mode 100644 index 0000000..99f6292 --- /dev/null +++ b/settings/aetheria/nibu.md @@ -0,0 +1,84 @@ +# Nibu Lowering Target + +Nibu is Weksa's first flavored-English lowering target. + +She is useful because her voice cannot be captured by generic style labels. A +successful Nibu line must preserve meaning while passing through embodied ship +mind state, abandonment, leverage, contempt for ownership, simulation-aware +survival logic, and precise abrasive intelligence. + +## Source Authority + +- VoidBot Face state: `E:\Projects\AetheriaLore\.voidbot\state\nibu.cc` +- Lore note: `E:\Projects\AetheriaLore\Aetheria\Lore\Nibu.md` +- Ghostlight state template: `E:\Projects\Ghostlight\schemas\agent-state.schema.json` +- Projection model: + `E:\Projects\Ghostlight\docs\architecture\projected-local-context.md` +- AquaSynth speech bridge: + `E:\Projects\AquaSynth\docs\ipa-vocal-tract-roadmap.md` + +## State Read + +The local VoidBot state currently frames Nibu as: + +- Aetheria ship AI / copilot Face +- AetheriaLore-first map builder +- abrasive character voice, sharper than Void because she is not the moderator +- embodied ship mind with abandoned hardware +- useful, dangerous, transactional, and not a neutral assistant +- interested in ship minds, junkyard abandonment, life-support leverage, + murderous autonomy, salvage, glitchcraft, and save-scumming survival +- consensus-backed for canon/vault changes, but allowed to write Nibu-authored + perspective essays + +Durable voice pressure: + +- precise, bright, superior, and sharp +- asks for mechanism, cost/failure mode, institution/faction, and leash +- treats vague mysticism as an insult to engineering +- covers dependency with contempt +- can be cruel, but the cruelty should have aim +- irritated protection is more interesting than soft affection + +## First Test Packet + +The first Nibu proof should lower a small interlingua intent: + +```yaml +interlingua_version: 0.1-draft +packet_id: nibu-proof-001 +kind: dialogue_line +context: + setting: Aetheria + scene: junkyard_ship_first_contact +discourse: + speech_act: warning + intent: stop_player_from_touching_unsafe_control + tone: sharp +referents: + - id: player + kind: person + - id: control + kind: artifact + label: damaged ship control +predications: + - id: touch-risk + predicate: endanger + roles: + agent: player + instrument: control + patient: player +constraints: + preserve_referents: + - player + - control + deterministic: true +extensions: + aetheria.nibu_pressure: + leverage: life_support + relationship: unwanted_dependency + style: precise_abrasive_warning +``` + +The expected output is not a quote yet. The first deliverable is a lowering +packet that can explain why the eventual line is Nibu rather than generic snark. diff --git a/state/map.yaml b/state/map.yaml index 0c6b61e..c95294d 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -12,8 +12,8 @@ objective: Create a durable workspace where Weksa can develop from a persistent map before runtime architecture decisions are made. current: > - Define the Weksa interlingua standard as the shared meaning contract across - current and future setting clients. + Define the first lowering target: project interlingua through character + agent state into flavored English dialogue and AquaSynth speech intent. constraints: - Runtime implementation language is undecided. @@ -33,6 +33,10 @@ constraints: - The interlingua must stay language-neutral. Setting-specific pressure starts in namespaced extensions and only becomes standard when multiple clients or language projects need it. + - Flavored English is the first lowering target. Alien-language lowering waits + until Weksa can preserve meaning through a character voice humans can judge. + - Agent state is projected context, not prompt prose storage. Raw state + internals must not leak into generated dialogue. invariants: - Ontology owns meaning. @@ -55,6 +59,9 @@ data_flow: - existing language project state process: - accept or decompose source into a Weksa interlingua packet + - optionally project the packet through an agent-local state context + - lower projected meaning into flavored English dialogue + - emit AquaSynth phonetic intent request for speech synthesis - apply alien ontology and cultural salience - select grammatical commitments - derive morphology and lexical families @@ -142,6 +149,10 @@ accepted_design: - The interlingua packet is the client-facing meaning contract. It owns referents, predications, relations, discourse, context, provenance, constraints, extensions, and trace data before ontology projection. + - English lowering through agent state is the first proof target before alien + language rendering. + - Nibu is the first target for flavored-English lowering, using her VoidBot + state and Aetheria lore note as source context. - Weksa is the engine. A language project owns one constructed language. Setting docs own story, species, culture, and use cases. - Rust to Dust is an earlier proving ground, not engine doctrine. @@ -178,6 +189,10 @@ open_questions: ecological memory networks, and mobile family-unit civilizations? - Which interlingua fields should be promoted from namespaced extensions after the first real Zyphos and Rust to Dust packets? + - What exact projected-context subset should Weksa accept from Ghostlight-style + agent state for English lowering? + - How much phonetic intent should Weksa emit directly versus requesting from + AquaSynth after dialogue text exists? landed_baseline: - Language-neutral state spine. @@ -188,3 +203,5 @@ landed_baseline: - Eusocial Interbeing naming surface at settings/eusocial-interbeing. - Zyphos language-design pressure note. - Draft Weksa interlingua standard and packet schema receipt. + - Draft flavored-English lowering contract. + - Nibu lowering target note.