diff --git a/README.md b/README.md index 57b3916..b5d69e7 100644 --- a/README.md +++ b/README.md @@ -27,13 +27,21 @@ clipboard and delusions of nationhood. - `state/scratch.md`: disposable workbench. - `schemas/`: human-facing state contract receipts. - `docs/`: architecture, language model, and roadmap. +- `settings/`: setting-specific proving grounds for language projects. Start with [Best Modern Approach](./docs/best-modern-approach.md) for the core design doctrine: ontology, roots, morphology, syntax, semantics, interlingua, diachrony, and model-assisted consistency. +See [Project Model](./docs/project-model.md) for the engine / language project / +setting split, and [Runtime and Authoring Split](./docs/runtime-authoring-split.md) +for the LLM-free hot path. + ## Implementation Status No runtime language has been selected yet. The first committed artifact is the persistent state spine: map, scratch, schemas, docs, and examples. The engine implementation should be chosen after the pipeline and data ownership are clear. + +[Rust to Dust](./settings/rust-to-dust/README.md) is the first proving ground, +not engine doctrine. diff --git a/docs/architecture.md b/docs/architecture.md index 201fa32..e1bdc2d 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -30,7 +30,14 @@ inspectable machine. The first executable slice should probably read a tiny language project definition, render a handful of structured meaning packets, and produce traceable glossed output. +Runtime should be fast and deterministic. Model-assisted English decomposition +belongs in authoring tools or offline import flows, not in the required hot path. +See [Runtime and Authoring Split](./runtime-authoring-split.md). + ## Cut Line Do not add a runtime language, service, database, queue, plugin system, prompt framework, or adapter until the pipeline stage needing it is known. + +Do not hard-code Rust to Dust, its aliens, or its aesthetic-honor ontology into +the generic engine. diff --git a/docs/project-model.md b/docs/project-model.md new file mode 100644 index 0000000..2cc2cc6 --- /dev/null +++ b/docs/project-model.md @@ -0,0 +1,70 @@ +# Project Model + +Weksa is the conlang engine, not the setting and not any one alien language. + +The engine must stay language-neutral. It should support many language projects +with different ontologies, grammars, phonologies, morphologies, histories, and +rendering needs. + +## Layers + +```text +Weksa engine + -> language project + -> setting surface +``` + +## Weksa Engine + +The engine owns generic pipeline contracts: + +- structured meaning input +- ontology projection +- grammar planning +- morphology +- phonology +- diachrony +- deterministic rendering +- trace and gloss output + +The engine must not assume that every language has aesthetic honor, empire +politics, reptilian speakers, battle broadcasts, or any other setting-specific +truth. + +## Language Project + +A language project owns one constructed language's live state: + +- ontology +- phonetics and phonology +- grammar +- morphology +- lexicon +- diachrony +- registers +- renderer configuration +- accepted examples and tests + +Names, exonyms, endonyms, and surface forms should fall out of this layer when +possible. Early naming is allowed only as a scratch convenience, not as durable +truth. + +## Setting Surface + +A setting owns story, species, politics, scenes, cultural pressure, and the +contexts where a language is used. + +Setting material can motivate a language project, but it does not become engine +doctrine. The engine should learn from the pressure without inheriting the +setting's bones. + +## Rust to Dust + +Rust to Dust is Weksa's first proving ground. It needs a language project whose +speakers treat aesthetic devotion as moral honor and whose empire absorbs human +culture through commerce, prestige, and media rather than ordinary military +conquest. + +That pressure is useful because it forces Weksa to handle ontology before words. +It is not a license to hard-code Rust to Dust into Weksa. + diff --git a/docs/roadmap.md b/docs/roadmap.md index 5466a4d..049aa95 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -5,6 +5,8 @@ - Keep the persistent state spine small and readable. - Decide the first language-project state format. - Build a hand-authored toy language project before automating generation. +- Use Rust to Dust as the first proving ground while keeping Weksa + setting-neutral. ## First Prototype @@ -12,6 +14,7 @@ - Accept a structured meaning packet. - Render glossed output through grammar, morphology, phonology, and diachrony. - Emit a trace explaining which stage made each decision. +- Keep runtime LLM-free; model use belongs in authoring and critique. ## Later diff --git a/docs/runtime-authoring-split.md b/docs/runtime-authoring-split.md new file mode 100644 index 0000000..043f8ea --- /dev/null +++ b/docs/runtime-authoring-split.md @@ -0,0 +1,61 @@ +# Runtime and Authoring Split + +Weksa must be able to run in time-sensitive contexts such as games. The hot path +should be fast, deterministic, local, and free of required LLM calls. + +## Runtime + +Runtime consumes structured meaning and compiled language-project data. + +```text +structured intent + -> ontology projection + -> grammar plan + -> morphology + -> phonology + -> diachrony + -> surface render +``` + +Runtime invariants: + +- no network dependency +- no required LLM call +- no arbitrary English interpretation in the hot path +- compiled data is immutable during a render pass +- renderer does not invent meaning +- traces can explain which stage made each decision + +The game, tool, or host application should send structured intent, not prose +that Weksa must guess at under pressure. + +## Authoring + +Authoring tools may use neural models for slow, inspectable work: + +- semantic decomposition from example English +- candidate ontology entries +- typological inspiration +- register and lexicon proposals +- consistency critique +- test case generation + +Model output becomes durable only when normalized into explicit project state. +The model is a workshop tool, not a runtime authority. + +## Parallel Renderers + +One structured intent may render into multiple surfaces: + +```text +structured intent + -> projected meaning + -> alien-language renderer + -> subtitle or gloss renderer + -> debug/plain renderer +``` + +For flavor-first settings, subtitles may render from projected meaning instead +of neutral facts. The neutral facts still exist underneath for correctness and +debugging. + diff --git a/settings/rust-to-dust/README.md b/settings/rust-to-dust/README.md new file mode 100644 index 0000000..68979dd --- /dev/null +++ b/settings/rust-to-dust/README.md @@ -0,0 +1,23 @@ +# Rust to Dust + +Rust to Dust is Weksa's first proving ground. + +It is a setting about neo-colonial culture shock under a galaxy-spanning empire +that does not need to conquer humanity in the old military sense. The empire +arrives, plugs Earth into its cultural and economic network, and lets prestige, +market access, media, and alien ultratech do the work. + +Within a generation, human children speak in alien memes, adopt alien body +decoration norms, and treat human cultural inheritance as something to trade for +access. Resistance itself becomes content. + +## Documentation + +- [Setting](./setting.md): premise, empire, cultural contamination. +- [Aliens](./aliens.md): species and values. Names remain unresolved. +- [Story](./story.md): single-player father arc. +- [Battle Royale](./battle-royale.md): controlled combat spectacle and broadcast + surface. +- [Language Design](./language-design.md): ontology, register, and renderer + pressure for the first language project. + diff --git a/settings/rust-to-dust/aliens.md b/settings/rust-to-dust/aliens.md new file mode 100644 index 0000000..ad7c3f2 --- /dev/null +++ b/settings/rust-to-dust/aliens.md @@ -0,0 +1,67 @@ +# Aliens + +The aliens are reptilian and culturally organized around aesthetics as moral +truth. + +They value honor, but their honor is not primarily obedience, courage, purity, +or conquest. Honor is devotion to aesthetic perfection in a chosen field. A +warrior is prized for fighting beautifully. A speaker, host, artist, trader, or +politician is judged by the elegance and discipline of their performance. + +Surface is not superficial to them. Decoration, posture, voice, movement, and +presentation are evidence of inner order. + +## Scale Decoration + +They decorate their scales in elaborate ways. Human nail art is a loose analogy, +but too small and casual for the full cultural weight. + +Scale decoration can signal: + +- profession +- class +- rank +- grief +- celebrity +- courtship +- school or lineage +- combat discipline +- public obligations +- aesthetic commitments + +The more elaborate the decoration, the more visible the claim of cultivated +virtue. + +## Unpainted + +Going out unpainted is an idiom of profound shamelessness and lack of aesthetic +virtue. + +This is not mere nudity. It can signal refusal, collapse, contempt, rawness, or +terrifying unconcern with being socially seen. + +The setting distinction: + +- an alien in battle armor may be a famous warrior tourist +- an alien with a knife and no paint is the dangerous one + +The unpainted warrior has abandoned the social theater that normally turns +violence into beautiful performance. That absence can read as obscene, +disturbing, or frighteningly pure. + +## Cultural Lens + +The aliens tend to interpret action through aesthetic status: + +- Was it elegant? +- Was it disciplined? +- Was it sincere? +- Was it vulgar? +- Was it memorable? +- Was it marketable? +- Did it reveal mastery? +- Did it collapse into mere function? + +This lens should shape their language project. It should not become generic +Weksa doctrine. + diff --git a/settings/rust-to-dust/battle-royale.md b/settings/rust-to-dust/battle-royale.md new file mode 100644 index 0000000..501741e --- /dev/null +++ b/settings/rust-to-dust/battle-royale.md @@ -0,0 +1,69 @@ +# Battle Royale + +The battle royale is one public view into Rust to Dust, not the whole setting. + +It is a controlled imperial event designed to discover, display, and promote +human combat prowess. The aliens do not treat it as the real war for humanity's +future. They treat it as spectacle, talent development, cultural tourism, and +market research. + +## Broadcast + +An in-universe alien TV channel commentates on what players are doing. The +player hears or sees the alien-language broadcast with English subtitles. + +The correct runtime model is not English-to-alien translation. The game should +emit structured commentary intent. Weksa should render alien broadcast output, +and a subtitle renderer should render English from the same structured intent or +from the alien-projected meaning. + +```text +game telemetry + -> commentary intent + -> imperial cultural projection + -> alien broadcast render + -> flavor-first English subtitle +``` + +## Flavor-First Subtitles + +Subtitles should usually reflect the imperial reading of events, not a neutral +sports-stat description. + +Neutral fact: + +```json +{ + "type": "elimination", + "actor": "human_player_17", + "target": "human_player_04", + "method": "knife", + "context": "ambush" +} +``` + +Possible imperial subtitle: + +```text +Local contender 17 performs a charming low-tool eviction. The crowd appreciates +the sincerity. +``` + +The subtitle remains legible, but it teaches the player that the empire's frame +has already touched the facts. + +## Commentary Ontology + +The broadcast surface should care about: + +- spectacle value +- aesthetic form +- combat elegance +- vulgarity +- sincerity +- marketability +- tourist appeal +- human authenticity +- imperial amusement +- whether resistance reads as threat, folk art, or breakout talent + diff --git a/settings/rust-to-dust/language-design.md b/settings/rust-to-dust/language-design.md new file mode 100644 index 0000000..6090e7f --- /dev/null +++ b/settings/rust-to-dust/language-design.md @@ -0,0 +1,77 @@ +# Language Design Pressure + +Rust to Dust needs a language project whose speakers treat aesthetic devotion as +moral honor and cultural absorption as refinement rather than conquest. + +The language is not named yet. The speakers are not named yet. Naming should +preferably emerge from ontology, phonetics, and register rather than from an +English label chosen too early because the blank was annoying. + +## Engine Boundary + +This file describes pressure on the first language project. It must not become +generic Weksa architecture. + +Weksa should support many ontologies. Rust to Dust happens to need one where +aesthetic virtue is central. + +## Ontology Pillars + +- aesthetic virtue +- performed mastery +- surface as evidence of inner order +- decorated versus unpainted social status +- violence as beautiful craft +- vulgar violence as failed form +- commerce as curation +- conquest as access and integration +- resistance as both disobedience and potential performance +- human authenticity as marketable rawness +- cultural inheritance as asset, fashion, and collectible material + +## Registers + +Likely language-project registers: + +- broadcast commentary +- high honor speech +- warrior discourse +- commercial acquisition language +- panel-show media language +- tourist/colonial admiration +- human resistance borrowing and misuse +- contaminated human English + +## Runtime Data Needs + +Structured intent should carry neutral facts plus cultural annotations. + +Example: + +```json +{ + "domain": "combat", + "act": "ambush", + "actor": "father", + "target": "imperial_guard", + "aesthetic_reading": { + "form": "raw", + "discipline": "improvised", + "spectacle_value": "high", + "honor_status": "ambiguous", + "marketability": "rising" + }, + "imperial_frame": "authentic_local_defiance" +} +``` + +## Open Questions + +- What phonetic profile naturally fits this species and culture? +- Which distinctions does the language make obligatory? +- Which human distinctions does it collapse? +- How does scale decoration appear in metaphor, grammar, address, and insult? +- How does unpaintedness split across shame, danger, contempt, and purity? +- What alien terms leak into human English first? +- How do subtitles balance player comprehension with imperial contamination? + diff --git a/settings/rust-to-dust/setting.md b/settings/rust-to-dust/setting.md new file mode 100644 index 0000000..5bf407e --- /dev/null +++ b/settings/rust-to-dust/setting.md @@ -0,0 +1,40 @@ +# Rust to Dust Setting + +Rust to Dust is about cultural absorption by a more powerful empire. + +The aliens control a galaxy-spanning network. They do not need to defeat +humanity through ordinary conquest. They set up shop, connect Earth to imperial +markets and media, and make alien status, technology, style, and opportunity too +valuable to ignore. + +The result is not instant occupation. It is generational replacement. + +Human children grow up fluent in alien memes and prestige codes. Alien aesthetic +norms enter daily life. Human cultural inheritance becomes an asset class, +fashion feedstock, collectible nostalgia, and diplomatic currency. The old world +does not vanish in one dramatic fire. It gets priced, packaged, licensed, and +drained. + +## Core Tension + +The setting should make dominant-culture audiences feel the asymmetry they often +export elsewhere: the humiliation of watching their heritage become local color +inside somebody else's market. + +## Empire Pattern + +- The empire frames absorption as access, uplift, taste, and opportunity. +- Military conquest is unnecessary when economic and cultural gravity can do the + work. +- Human resistance can be dangerous locally and still become amusing imperial + content. +- Human authenticity is valuable because it is raw, provincial, and marketable. +- The empire does not need humans to love it. It needs human life to route + through imperial systems. + +## Open Naming + +The aliens and their language are not named yet. Names should preferably emerge +from the first language project's ontology and phonetics rather than from +English-facing branding. + diff --git a/settings/rust-to-dust/story.md b/settings/rust-to-dust/story.md new file mode 100644 index 0000000..be3af21 --- /dev/null +++ b/settings/rust-to-dust/story.md @@ -0,0 +1,50 @@ +# Story + +The single-player story follows an ex-military unemployed father made obsolete +by alien technology. + +## Opening + +The story opens with him catching up with old war buddies in a pub. He complains +that he does not understand his son anymore. + +At first, the scene plays like a familiar "kids nowadays" complaint. The twist +is that the generational fracture is not ordinary fashion churn. It is cultural +contamination from a vastly more powerful empire. + +A Rust to Dust battle royale broadcast plays on a TV. + +The father bitterly complains about the aliens and about humanity giving up on +fighting them. Another customer argues that life has never been better. The +argument resolves, and one of the old war buddies points to the TV and says that +the real fight is not happening there. + +He knows a guy. + +## Resistance Cell + +That contact leads to a global resistance cell. The cell steals important human +cultural artifacts before they can be sold off, licensed, collected, or otherwise +absorbed by the aliens. + +The work involves a lot of fighting. The father gets into it and becomes good at +it. + +## Celebrity Trap + +The father becomes a minor celebrity on the alien internet. + +He is invited to speak on a panel show. He rants at the audience and hosts, +rejecting their imperialism, values, and culture. + +They love it. + +His rejection becomes a marketable performance. He becomes a meme. That is how +his son finds out. + +## Structural Irony + +The father thinks the fight is about refusing alien culture. The empire turns +his refusal into content. His son encounters him not as a rebel, but as an +imperial media object. + diff --git a/state/map.yaml b/state/map.yaml index 50e51e7..190fe1c 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -22,6 +22,11 @@ constraints: architecture earns it. - Neural models may decompose, suggest, generate, and critique; they do not own the canonical language state. + - Runtime should accept structured meaning and compiled project data; required + hot-path rendering must not depend on arbitrary English interpretation or + live LLM calls. + - Setting-specific projects may pressure the engine, but their ontology must + not become generic Weksa doctrine. - Explicit project state must distinguish durable decisions from scratch. - Avoid direct English-to-alien word replacement as the core design. @@ -129,6 +134,12 @@ accepted_design: - The first model is concept-first translation through an explicit interlingua, ontology, grammar, morphology, phonology, diachrony, and renderer pipeline. + - Weksa is the engine. A language project owns one constructed language. + Setting docs own story, species, culture, and use cases. + - Rust to Dust is the first proving ground, not engine doctrine. + - Time-sensitive runtime paths should be deterministic and LLM-free. + Model-assisted decomposition, generation, and critique belong in authoring + or offline workflows. - `docs/best-modern-approach.md` is the current doctrine for conceptual ontology, root generation, morphology, syntax, lexical semantics, interlingua, diachrony, and model-assisted consistency. @@ -137,12 +148,17 @@ open_questions: - Which implementation language best serves the first usable engine? - What format should language projects use for ontology, grammar, phonology, morphology, and diachrony definitions? - - Which model provider and embedding strategy should be used for semantic - decomposition and critique? + - What compiled runtime bundle format keeps game-time rendering fast and + inspectable? + - Which model provider and embedding strategy should be used for offline + semantic decomposition and critique? - How much deterministic validation belongs in v0? + - What is the minimal Rust to Dust language-project slice that proves the + engine without hard-coding the setting into it? landed_baseline: - Language-neutral state spine. - Canonical pipeline map. - Scratch surface. - Schema receipt docs. + - Rust to Dust setting documentation skeleton.