Draft Weksa interlingua standard
This commit is contained in:
parent
d9fffb40b5
commit
4ba46dfb0f
12 changed files with 530 additions and 42 deletions
|
|
@ -37,6 +37,9 @@ See [Project Model](./docs/project-model.md) for the engine / language project /
|
||||||
setting split, and [Runtime and Authoring Split](./docs/runtime-authoring-split.md)
|
setting split, and [Runtime and Authoring Split](./docs/runtime-authoring-split.md)
|
||||||
for the LLM-free hot path.
|
for the LLM-free hot path.
|
||||||
|
|
||||||
|
See [Interlingua Standard](./docs/interlingua-standard.md) for the shared
|
||||||
|
meaning-packet contract Weksa clients should target.
|
||||||
|
|
||||||
## Implementation Status
|
## Implementation Status
|
||||||
|
|
||||||
No runtime language has been selected yet. The first committed artifact is the
|
No runtime language has been selected yet. The first committed artifact is the
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,10 @@ There is no runtime mechanism yet. The repo contains persistent state surfaces
|
||||||
that define the intended data flow and the ownership boundaries future code must
|
that define the intended data flow and the ownership boundaries future code must
|
||||||
respect.
|
respect.
|
||||||
|
|
||||||
|
The first shared contract is the [Interlingua Standard](./interlingua-standard.md):
|
||||||
|
clients submit interlingua packets before any language project projects them
|
||||||
|
through its ontology.
|
||||||
|
|
||||||
## Invariants
|
## Invariants
|
||||||
|
|
||||||
- Meaning precedes words.
|
- Meaning precedes words.
|
||||||
|
|
@ -26,9 +30,9 @@ respect.
|
||||||
## Intended Change
|
## Intended Change
|
||||||
|
|
||||||
Future implementation should turn the pipeline in `state/map.yaml` into a small,
|
Future implementation should turn the pipeline in `state/map.yaml` into a small,
|
||||||
inspectable machine. The first executable slice should probably read a tiny
|
inspectable machine. The first executable slice should probably validate a tiny
|
||||||
language project definition, render a handful of structured meaning packets, and
|
interlingua packet, read a tiny language project definition, render glossed
|
||||||
produce traceable glossed output.
|
output, and produce a trace explaining which stage made each decision.
|
||||||
|
|
||||||
Runtime should be fast and deterministic. Model-assisted English decomposition
|
Runtime should be fast and deterministic. Model-assisted English decomposition
|
||||||
belongs in authoring tools or offline import flows, not in the required hot path.
|
belongs in authoring tools or offline import flows, not in the required hot path.
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,7 @@ This is how Weksa avoids making a dictionary of costumes.
|
||||||
## Interlingua
|
## Interlingua
|
||||||
|
|
||||||
Do not translate English directly into alien words. Translate English into a
|
Do not translate English directly into alien words. Translate English into a
|
||||||
structured meaning representation first.
|
Weksa interlingua packet first.
|
||||||
|
|
||||||
Example source:
|
Example source:
|
||||||
|
|
||||||
|
|
@ -212,24 +212,36 @@ Example source:
|
||||||
I saw the stranger steal water.
|
I saw the stranger steal water.
|
||||||
```
|
```
|
||||||
|
|
||||||
Example interlingua:
|
Example interlingua packet:
|
||||||
|
|
||||||
```json
|
```yaml
|
||||||
{
|
interlingua_version: 0.1-draft
|
||||||
"event": "steal",
|
packet_id: example-theft-001
|
||||||
"agent": {
|
kind: utterance
|
||||||
"role": "stranger",
|
provenance:
|
||||||
"social_status": "outside_oath"
|
source_type: authored
|
||||||
},
|
referents:
|
||||||
"patient": {
|
- id: speaker
|
||||||
"concept": "water",
|
kind: person
|
||||||
"ecological_status": "shared_life_resource"
|
- id: stranger
|
||||||
},
|
kind: person
|
||||||
"witness": "speaker",
|
attributes:
|
||||||
"evidence": "direct_visual",
|
social_status: outside_oath
|
||||||
"moral_frame": "obligation_to_report",
|
- id: water
|
||||||
"tense_aspect": "completed"
|
kind: abstract
|
||||||
}
|
attributes:
|
||||||
|
ecological_status: shared_life_resource
|
||||||
|
predications:
|
||||||
|
- id: theft
|
||||||
|
predicate: steal
|
||||||
|
aspect: completed
|
||||||
|
evidentiality: direct_visual
|
||||||
|
roles:
|
||||||
|
agent: stranger
|
||||||
|
patient: water
|
||||||
|
experiencer: speaker
|
||||||
|
extensions:
|
||||||
|
example.moral_frame: obligation_to_report
|
||||||
```
|
```
|
||||||
|
|
||||||
Then render that through the alien ontology and grammar. The interlingua is the
|
Then render that through the alien ontology and grammar. The interlingua is the
|
||||||
|
|
|
||||||
388
docs/interlingua-standard.md
Normal file
388
docs/interlingua-standard.md
Normal file
|
|
@ -0,0 +1,388 @@
|
||||||
|
# Interlingua Standard
|
||||||
|
|
||||||
|
Version: `0.1-draft`
|
||||||
|
|
||||||
|
The Weksa interlingua is the language-neutral meaning contract between clients,
|
||||||
|
setting surfaces, authoring tools, language projects, ontology projection, and
|
||||||
|
renderers.
|
||||||
|
|
||||||
|
It is not English. It is not a grammar tree. It is not a target-language
|
||||||
|
ontology. It is the smallest structured packet that says what is meant, who is
|
||||||
|
involved, what the context is, and which facts are stable enough for a language
|
||||||
|
project to reinterpret.
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Give every Weksa client one shared way to submit meaning without forcing all
|
||||||
|
settings through one worldview.
|
||||||
|
|
||||||
|
The interlingua should support:
|
||||||
|
|
||||||
|
- game telemetry and commentary intents
|
||||||
|
- naming briefs for places, species, institutions, artifacts, and ecological
|
||||||
|
structures
|
||||||
|
- dialogue and narration authoring
|
||||||
|
- corpus examples
|
||||||
|
- model-assisted semantic decomposition
|
||||||
|
- deterministic runtime rendering
|
||||||
|
- traceable ontology projection
|
||||||
|
|
||||||
|
## Prior Art
|
||||||
|
|
||||||
|
Weksa should learn from existing semantic annotation work without becoming a
|
||||||
|
research format clone.
|
||||||
|
|
||||||
|
- AMR gives a useful model for abstract graph meaning that is not a surface parse.
|
||||||
|
- UMR extends that direction with cross-linguistic and document-level concerns
|
||||||
|
such as coreference, temporal relations, modal dependencies, aspect, and
|
||||||
|
multilingual diversity.
|
||||||
|
- FrameNet keeps scenes and roles central.
|
||||||
|
- Universal Dependencies shows a useful governance pattern: common categories
|
||||||
|
with language-specific extensions when needed.
|
||||||
|
|
||||||
|
Weksa's difference is purpose. It is a rendering contract for constructed
|
||||||
|
languages and alien ontologies, not a general-purpose annotation benchmark.
|
||||||
|
|
||||||
|
## Ownership
|
||||||
|
|
||||||
|
The interlingua owns:
|
||||||
|
|
||||||
|
- referents
|
||||||
|
- events, states, and relations
|
||||||
|
- roles between referents and predicates
|
||||||
|
- time, aspect, modality, evidence, and polarity when known
|
||||||
|
- discourse function and speaker intent
|
||||||
|
- context needed for rendering
|
||||||
|
- provenance and confidence
|
||||||
|
- extension slots with explicit namespaces
|
||||||
|
|
||||||
|
The interlingua does not own:
|
||||||
|
|
||||||
|
- target-language concept splits or collapses
|
||||||
|
- grammar obligations
|
||||||
|
- morphology
|
||||||
|
- phonology
|
||||||
|
- diachronic history
|
||||||
|
- final wording
|
||||||
|
- culture-specific metaphors unless the source meaning explicitly contains them
|
||||||
|
|
||||||
|
Those belong downstream.
|
||||||
|
|
||||||
|
## Design Principles
|
||||||
|
|
||||||
|
- Meaning before words.
|
||||||
|
- Graph before sentence.
|
||||||
|
- Explicit uncertainty beats fake precision.
|
||||||
|
- Use common fields for common meaning.
|
||||||
|
- Use namespaced extensions for client or setting pressure.
|
||||||
|
- Extensions are evidence, not authority, until a language project consumes them.
|
||||||
|
- Runtime packets must be deterministic and serializable.
|
||||||
|
- The renderer must be able to trace every target-language decision back to a
|
||||||
|
packet field, ontology rule, or language-project rule.
|
||||||
|
|
||||||
|
## Packet Shape
|
||||||
|
|
||||||
|
The canonical packet is an object with these top-level families:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
interlingua_version:
|
||||||
|
packet_id:
|
||||||
|
kind:
|
||||||
|
provenance:
|
||||||
|
context:
|
||||||
|
discourse:
|
||||||
|
referents:
|
||||||
|
predications:
|
||||||
|
relations:
|
||||||
|
constraints:
|
||||||
|
extensions:
|
||||||
|
trace:
|
||||||
|
```
|
||||||
|
|
||||||
|
Only `interlingua_version`, `packet_id`, `kind`, and at least one semantic
|
||||||
|
payload family are required. The rest should be present when known.
|
||||||
|
|
||||||
|
## Top-Level Fields
|
||||||
|
|
||||||
|
### `kind`
|
||||||
|
|
||||||
|
The packet's broad use case.
|
||||||
|
|
||||||
|
Initial values:
|
||||||
|
|
||||||
|
- `utterance`
|
||||||
|
- `name_request`
|
||||||
|
- `commentary_intent`
|
||||||
|
- `narration`
|
||||||
|
- `dialogue_line`
|
||||||
|
- `corpus_example`
|
||||||
|
- `debug_probe`
|
||||||
|
|
||||||
|
### `provenance`
|
||||||
|
|
||||||
|
Where the packet came from.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
provenance:
|
||||||
|
source_type: authored | model_decomposition | game_telemetry | imported_corpus
|
||||||
|
source_ref:
|
||||||
|
author:
|
||||||
|
created_at:
|
||||||
|
confidence:
|
||||||
|
```
|
||||||
|
|
||||||
|
### `context`
|
||||||
|
|
||||||
|
World and situation information that is not itself the main semantic claim.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
context:
|
||||||
|
setting:
|
||||||
|
scene:
|
||||||
|
time:
|
||||||
|
location:
|
||||||
|
participants:
|
||||||
|
audience:
|
||||||
|
medium:
|
||||||
|
```
|
||||||
|
|
||||||
|
### `discourse`
|
||||||
|
|
||||||
|
Why this packet is being said, rendered, or named.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
discourse:
|
||||||
|
speech_act:
|
||||||
|
intent:
|
||||||
|
tone:
|
||||||
|
register_hint:
|
||||||
|
addressee:
|
||||||
|
audience_function:
|
||||||
|
```
|
||||||
|
|
||||||
|
This is not target-language register. It is source-side communicative pressure.
|
||||||
|
|
||||||
|
### `referents`
|
||||||
|
|
||||||
|
Entities, groups, locations, abstract objects, institutions, ecological actors,
|
||||||
|
routes, memories, artifacts, and other nodes that can participate in meaning.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
referents:
|
||||||
|
- id:
|
||||||
|
kind:
|
||||||
|
label:
|
||||||
|
ontology_hint:
|
||||||
|
animacy:
|
||||||
|
agency:
|
||||||
|
number:
|
||||||
|
definiteness:
|
||||||
|
salience:
|
||||||
|
attributes:
|
||||||
|
extensions:
|
||||||
|
```
|
||||||
|
|
||||||
|
Initial broad kinds:
|
||||||
|
|
||||||
|
- `person`
|
||||||
|
- `group`
|
||||||
|
- `organism`
|
||||||
|
- `place`
|
||||||
|
- `artifact`
|
||||||
|
- `institution`
|
||||||
|
- `ecology`
|
||||||
|
- `route`
|
||||||
|
- `memory`
|
||||||
|
- `event`
|
||||||
|
- `abstract`
|
||||||
|
|
||||||
|
### `predications`
|
||||||
|
|
||||||
|
Events, states, processes, properties, and frame-like scenes.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
predications:
|
||||||
|
- id:
|
||||||
|
predicate:
|
||||||
|
frame:
|
||||||
|
aspect:
|
||||||
|
tense:
|
||||||
|
polarity:
|
||||||
|
modality:
|
||||||
|
evidentiality:
|
||||||
|
roles:
|
||||||
|
agent:
|
||||||
|
patient:
|
||||||
|
experiencer:
|
||||||
|
instrument:
|
||||||
|
source:
|
||||||
|
goal:
|
||||||
|
location:
|
||||||
|
beneficiary:
|
||||||
|
attributes:
|
||||||
|
extensions:
|
||||||
|
```
|
||||||
|
|
||||||
|
`predicate` is a broad source-side claim. `frame` is optional but recommended
|
||||||
|
when a scene model is known. Roles may use common names or namespaced frame
|
||||||
|
roles.
|
||||||
|
|
||||||
|
### `relations`
|
||||||
|
|
||||||
|
Edges that are not naturally owned by one predication.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
relations:
|
||||||
|
- type:
|
||||||
|
from:
|
||||||
|
to:
|
||||||
|
attributes:
|
||||||
|
extensions:
|
||||||
|
```
|
||||||
|
|
||||||
|
Initial relation families:
|
||||||
|
|
||||||
|
- `coreference`
|
||||||
|
- `part_of`
|
||||||
|
- `member_of`
|
||||||
|
- `located_at`
|
||||||
|
- `near`
|
||||||
|
- `before`
|
||||||
|
- `after`
|
||||||
|
- `causes`
|
||||||
|
- `enables`
|
||||||
|
- `prevents`
|
||||||
|
- `owns`
|
||||||
|
- `owes`
|
||||||
|
- `knows`
|
||||||
|
- `names`
|
||||||
|
- `represents`
|
||||||
|
- `contrasts_with`
|
||||||
|
|
||||||
|
### `constraints`
|
||||||
|
|
||||||
|
Hard requirements the downstream renderer must respect.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
constraints:
|
||||||
|
preserve_referents:
|
||||||
|
preserve_relations:
|
||||||
|
required_outputs:
|
||||||
|
forbidden_outputs:
|
||||||
|
max_latency_ms:
|
||||||
|
deterministic:
|
||||||
|
```
|
||||||
|
|
||||||
|
These are engineering and content constraints, not ontology rules.
|
||||||
|
|
||||||
|
### `extensions`
|
||||||
|
|
||||||
|
Namespaced setting or client data.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
extensions:
|
||||||
|
zyphos.memory_relation:
|
||||||
|
zyphos.boundary_permeability:
|
||||||
|
rtd.aesthetic_reading:
|
||||||
|
game.priority:
|
||||||
|
```
|
||||||
|
|
||||||
|
Extension rules:
|
||||||
|
|
||||||
|
- Namespaces must be explicit.
|
||||||
|
- Extensions must not replace common fields when common fields are sufficient.
|
||||||
|
- A downstream language project may choose to ignore an extension.
|
||||||
|
- If an extension becomes broadly required across clients, promote it into the
|
||||||
|
standard in a later version.
|
||||||
|
|
||||||
|
### `trace`
|
||||||
|
|
||||||
|
Optional authoring/debug data.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
trace:
|
||||||
|
notes:
|
||||||
|
decomposition_steps:
|
||||||
|
uncertainty:
|
||||||
|
rejected_readings:
|
||||||
|
```
|
||||||
|
|
||||||
|
Runtime may strip `trace` from compiled packets when latency or size matters.
|
||||||
|
|
||||||
|
## Minimal Examples
|
||||||
|
|
||||||
|
### Name Request
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
interlingua_version: 0.1-draft
|
||||||
|
packet_id: zyphos-name-001
|
||||||
|
kind: name_request
|
||||||
|
provenance:
|
||||||
|
source_type: authored
|
||||||
|
context:
|
||||||
|
setting: Eusocial Interbeing
|
||||||
|
referents:
|
||||||
|
- id: target
|
||||||
|
kind: ecology
|
||||||
|
label: disconnected tree network
|
||||||
|
- id: namer
|
||||||
|
kind: group
|
||||||
|
label: Airawa imperial surveyor
|
||||||
|
relations:
|
||||||
|
- type: names
|
||||||
|
from: namer
|
||||||
|
to: target
|
||||||
|
extensions:
|
||||||
|
zyphos.memory_relation: severed_from_saturated_substrate
|
||||||
|
zyphos.boundary_permeability: hidden_refusal
|
||||||
|
```
|
||||||
|
|
||||||
|
### Commentary Intent
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
interlingua_version: 0.1-draft
|
||||||
|
packet_id: rtd-commentary-001
|
||||||
|
kind: commentary_intent
|
||||||
|
context:
|
||||||
|
setting: Rust to Dust
|
||||||
|
medium: broadcast
|
||||||
|
discourse:
|
||||||
|
speech_act: commentary
|
||||||
|
audience_function: spectacle
|
||||||
|
referents:
|
||||||
|
- id: actor
|
||||||
|
kind: person
|
||||||
|
- id: target
|
||||||
|
kind: person
|
||||||
|
predications:
|
||||||
|
- id: event
|
||||||
|
predicate: eliminate
|
||||||
|
frame: combat
|
||||||
|
roles:
|
||||||
|
agent: actor
|
||||||
|
patient: target
|
||||||
|
extensions:
|
||||||
|
rtd.aesthetic_reading:
|
||||||
|
form: raw
|
||||||
|
spectacle_value: high
|
||||||
|
```
|
||||||
|
|
||||||
|
## Promotion Rule
|
||||||
|
|
||||||
|
The interlingua should stay boring. When a new requirement appears:
|
||||||
|
|
||||||
|
1. Put it in a namespaced extension.
|
||||||
|
2. Use it in at least two real packets.
|
||||||
|
3. Ask which invariant it protects.
|
||||||
|
4. Promote it only if multiple clients or language projects need it.
|
||||||
|
|
||||||
|
No generic bucket earns permanence by sounding useful. That is how a schema
|
||||||
|
becomes a junk drawer with a hat.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [Abstract Meaning Representation 1.0 Specification](https://www.isi.edu/results/publications/14628/abstract-meaning-representation-amr-1-0-specification/)
|
||||||
|
- [Uniform Meaning Representation release paper](https://aclanthology.org/2024.lrec-main.229.pdf)
|
||||||
|
- [Global FrameNet](https://www.globalframenet.org/)
|
||||||
|
- [Universal Dependencies Guidelines](https://universaldependencies.org/guidelines)
|
||||||
|
|
||||||
|
|
@ -8,7 +8,7 @@ doctrine and examples.
|
||||||
## Translation Path
|
## Translation Path
|
||||||
|
|
||||||
1. Preserve the source utterance.
|
1. Preserve the source utterance.
|
||||||
2. Decompose it into structured meaning.
|
2. Decompose it into a Weksa interlingua packet.
|
||||||
3. Apply an alien ontology that may split, collapse, or reweight concepts.
|
3. Apply an alien ontology that may split, collapse, or reweight concepts.
|
||||||
4. Select grammatical commitments required by the target language.
|
4. Select grammatical commitments required by the target language.
|
||||||
5. Build morpheme plans from roots, derivation, inflection, and compounds.
|
5. Build morpheme plans from roots, derivation, inflection, and compounds.
|
||||||
|
|
@ -16,6 +16,9 @@ doctrine and examples.
|
||||||
7. Apply diachronic history.
|
7. Apply diachronic history.
|
||||||
8. Render surface text, glosses, and explanation.
|
8. Render surface text, glosses, and explanation.
|
||||||
|
|
||||||
|
See [Interlingua Standard](./interlingua-standard.md) for the shared meaning
|
||||||
|
contract.
|
||||||
|
|
||||||
## Model Use
|
## Model Use
|
||||||
|
|
||||||
LLMs and embedding models are useful for:
|
LLMs and embedding models are useful for:
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ Weksa engine
|
||||||
|
|
||||||
The engine owns generic pipeline contracts:
|
The engine owns generic pipeline contracts:
|
||||||
|
|
||||||
- structured meaning input
|
- interlingua packet input
|
||||||
- ontology projection
|
- ontology projection
|
||||||
- grammar planning
|
- grammar planning
|
||||||
- morphology
|
- morphology
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,18 @@
|
||||||
## Now
|
## Now
|
||||||
|
|
||||||
- Keep the persistent state spine small and readable.
|
- Keep the persistent state spine small and readable.
|
||||||
- Decide the first language-project state format.
|
- Stabilize the interlingua packet standard before runtime code.
|
||||||
|
- Decide the first language-project state format after the interlingua boundary
|
||||||
|
is clear.
|
||||||
- Build a hand-authored toy language project before automating generation.
|
- Build a hand-authored toy language project before automating generation.
|
||||||
- Use Rust to Dust as the first proving ground while keeping Weksa
|
- Use Rust to Dust as the first proving ground while keeping Weksa
|
||||||
setting-neutral.
|
setting-neutral.
|
||||||
|
|
||||||
## First Prototype
|
## First Prototype
|
||||||
|
|
||||||
|
- Validate one minimal interlingua packet.
|
||||||
- Parse or load one language project definition.
|
- Parse or load one language project definition.
|
||||||
- Accept a structured meaning packet.
|
- Accept a Weksa interlingua packet.
|
||||||
- Render glossed output through grammar, morphology, phonology, and diachrony.
|
- Render glossed output through grammar, morphology, phonology, and diachrony.
|
||||||
- Emit a trace explaining which stage made each decision.
|
- Emit a trace explaining which stage made each decision.
|
||||||
- Keep runtime LLM-free; model use belongs in authoring and critique.
|
- Keep runtime LLM-free; model use belongs in authoring and critique.
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ should be fast, deterministic, local, and free of required LLM calls.
|
||||||
|
|
||||||
## Runtime
|
## Runtime
|
||||||
|
|
||||||
Runtime consumes structured meaning and compiled language-project data.
|
Runtime consumes Weksa interlingua packets and compiled language-project data.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
structured intent
|
interlingua packet
|
||||||
-> ontology projection
|
-> ontology projection
|
||||||
-> grammar plan
|
-> grammar plan
|
||||||
-> morphology
|
-> morphology
|
||||||
|
|
@ -26,8 +26,9 @@ Runtime invariants:
|
||||||
- renderer does not invent meaning
|
- renderer does not invent meaning
|
||||||
- traces can explain which stage made each decision
|
- traces can explain which stage made each decision
|
||||||
|
|
||||||
The game, tool, or host application should send structured intent, not prose
|
The game, tool, or host application should send an interlingua packet, not prose
|
||||||
that Weksa must guess at under pressure.
|
that Weksa must guess at under pressure. See
|
||||||
|
[Interlingua Standard](./interlingua-standard.md).
|
||||||
|
|
||||||
## Authoring
|
## Authoring
|
||||||
|
|
||||||
|
|
@ -45,10 +46,10 @@ The model is a workshop tool, not a runtime authority.
|
||||||
|
|
||||||
## Parallel Renderers
|
## Parallel Renderers
|
||||||
|
|
||||||
One structured intent may render into multiple surfaces:
|
One interlingua packet may render into multiple surfaces:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
structured intent
|
interlingua packet
|
||||||
-> projected meaning
|
-> projected meaning
|
||||||
-> alien-language renderer
|
-> alien-language renderer
|
||||||
-> subtitle or gloss renderer
|
-> subtitle or gloss renderer
|
||||||
|
|
@ -58,4 +59,3 @@ structured intent
|
||||||
For flavor-first settings, subtitles may render from projected meaning instead
|
For flavor-first settings, subtitles may render from projected meaning instead
|
||||||
of neutral facts. The neutral facts still exist underneath for correctness and
|
of neutral facts. The neutral facts still exist underneath for correctness and
|
||||||
debugging.
|
debugging.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ steer the machine, describe its authority here.
|
||||||
- [language-project-state.md](./language-project-state.md): future per-language
|
- [language-project-state.md](./language-project-state.md): future per-language
|
||||||
state for ontology, grammar, morphology, phonology, diachrony, and renderer
|
state for ontology, grammar, morphology, phonology, diachrony, and renderer
|
||||||
configuration.
|
configuration.
|
||||||
|
- [interlingua-packet.md](./interlingua-packet.md): shared meaning packet
|
||||||
|
contract between clients, authoring tools, and language projects.
|
||||||
|
|
||||||
## Source Of Truth
|
## Source Of Truth
|
||||||
|
|
||||||
|
|
|
||||||
63
schemas/interlingua-packet.md
Normal file
63
schemas/interlingua-packet.md
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
# Interlingua Packet Contract
|
||||||
|
|
||||||
|
This is the human-facing schema receipt for Weksa interlingua packets.
|
||||||
|
|
||||||
|
Executable schema code does not exist yet. When it does, it must reconcile with
|
||||||
|
this document and [Interlingua Standard](../docs/interlingua-standard.md) in the
|
||||||
|
same pass.
|
||||||
|
|
||||||
|
## Authority
|
||||||
|
|
||||||
|
The interlingua packet is the boundary between clients and language projects.
|
||||||
|
|
||||||
|
Clients submit structured meaning. Language projects consume that meaning,
|
||||||
|
project it through ontology, and render it through grammar, morphology,
|
||||||
|
phonology, diachrony, and renderer rules.
|
||||||
|
|
||||||
|
## Required Fields
|
||||||
|
|
||||||
|
- `interlingua_version`: version string.
|
||||||
|
- `packet_id`: stable local identifier.
|
||||||
|
- `kind`: broad use case.
|
||||||
|
- at least one semantic payload family:
|
||||||
|
- `referents`
|
||||||
|
- `predications`
|
||||||
|
- `relations`
|
||||||
|
|
||||||
|
## Optional Families
|
||||||
|
|
||||||
|
- `provenance`: source and confidence.
|
||||||
|
- `context`: world, scene, medium, participants, audience.
|
||||||
|
- `discourse`: speech act, intent, tone, source-side register hint.
|
||||||
|
- `constraints`: downstream requirements.
|
||||||
|
- `extensions`: namespaced client or setting pressure.
|
||||||
|
- `trace`: debug and authoring notes.
|
||||||
|
|
||||||
|
## Extension Contract
|
||||||
|
|
||||||
|
Extensions use explicit namespaces such as:
|
||||||
|
|
||||||
|
- `zyphos.*`
|
||||||
|
- `rtd.*`
|
||||||
|
- `game.*`
|
||||||
|
- `authoring.*`
|
||||||
|
|
||||||
|
Extensions are not a junk drawer. They are provisional fields awaiting evidence.
|
||||||
|
If a field becomes common across clients, promote it into the standard with a
|
||||||
|
version bump.
|
||||||
|
|
||||||
|
## Validation Goals
|
||||||
|
|
||||||
|
The eventual executable schema should validate:
|
||||||
|
|
||||||
|
- required top-level fields
|
||||||
|
- referential integrity between roles and referents
|
||||||
|
- known `kind` values
|
||||||
|
- namespace syntax for extensions
|
||||||
|
- deterministic JSON/YAML serialization
|
||||||
|
- stable packet IDs inside a corpus or run
|
||||||
|
- absence of target-language surface forms in source meaning fields
|
||||||
|
|
||||||
|
It should warn, not fail, on unknown extension namespaces unless a runtime bundle
|
||||||
|
declares a stricter policy.
|
||||||
|
|
||||||
|
|
@ -19,9 +19,9 @@ An in-universe alien TV channel commentates on what players are doing. The
|
||||||
player hears or sees the alien-language broadcast with English subtitles.
|
player hears or sees the alien-language broadcast with English subtitles.
|
||||||
|
|
||||||
The correct runtime model is not English-to-alien translation. The game should
|
The correct runtime model is not English-to-alien translation. The game should
|
||||||
emit structured commentary intent. Weksa should render alien broadcast output,
|
emit a Weksa interlingua packet for commentary intent. Weksa should render alien
|
||||||
and a subtitle renderer should render English from the same structured intent or
|
broadcast output, and a subtitle renderer should render English from the same
|
||||||
from the alien-projected meaning.
|
packet or from the alien-projected meaning.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
game telemetry
|
game telemetry
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ objective:
|
||||||
Create a durable workspace where Weksa can develop from a persistent map
|
Create a durable workspace where Weksa can develop from a persistent map
|
||||||
before runtime architecture decisions are made.
|
before runtime architecture decisions are made.
|
||||||
current: >
|
current: >
|
||||||
Reorient the first active language-design target toward Zyphos / Eusocial
|
Define the Weksa interlingua standard as the shared meaning contract across
|
||||||
Interbeing while preserving Weksa's language-neutral engine boundaries.
|
current and future setting clients.
|
||||||
|
|
||||||
constraints:
|
constraints:
|
||||||
- Runtime implementation language is undecided.
|
- Runtime implementation language is undecided.
|
||||||
|
|
@ -21,15 +21,18 @@ constraints:
|
||||||
architecture earns it.
|
architecture earns it.
|
||||||
- Neural models may decompose, suggest, generate, and critique; they do not
|
- Neural models may decompose, suggest, generate, and critique; they do not
|
||||||
own the canonical language state.
|
own the canonical language state.
|
||||||
- Runtime should accept structured meaning and compiled project data; required
|
- Runtime should accept interlingua packets and compiled project data;
|
||||||
hot-path rendering must not depend on arbitrary English interpretation or
|
required hot-path rendering must not depend on arbitrary English
|
||||||
live LLM calls.
|
interpretation or live LLM calls.
|
||||||
- Setting-specific projects may pressure the engine, but their ontology must
|
- Setting-specific projects may pressure the engine, but their ontology must
|
||||||
not become generic Weksa doctrine.
|
not become generic Weksa doctrine.
|
||||||
- Zyphos / Eusocial Interbeing canon belongs to the Eusocial Interbeing vault;
|
- Zyphos / Eusocial Interbeing canon belongs to the Eusocial Interbeing vault;
|
||||||
Weksa should consume it through explicit naming and language-design briefs.
|
Weksa should consume it through explicit naming and language-design briefs.
|
||||||
- Explicit project state must distinguish durable decisions from scratch.
|
- Explicit project state must distinguish durable decisions from scratch.
|
||||||
- Avoid direct English-to-alien word replacement as the core design.
|
- Avoid direct English-to-alien word replacement as the core design.
|
||||||
|
- 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.
|
||||||
|
|
||||||
invariants:
|
invariants:
|
||||||
- Ontology owns meaning.
|
- Ontology owns meaning.
|
||||||
|
|
@ -46,11 +49,12 @@ invariants:
|
||||||
data_flow:
|
data_flow:
|
||||||
observe:
|
observe:
|
||||||
- source utterance
|
- source utterance
|
||||||
|
- interlingua packet
|
||||||
- translation context
|
- translation context
|
||||||
- world model
|
- world model
|
||||||
- existing language project state
|
- existing language project state
|
||||||
process:
|
process:
|
||||||
- decompose source into structured interlingua
|
- accept or decompose source into a Weksa interlingua packet
|
||||||
- apply alien ontology and cultural salience
|
- apply alien ontology and cultural salience
|
||||||
- select grammatical commitments
|
- select grammatical commitments
|
||||||
- derive morphology and lexical families
|
- derive morphology and lexical families
|
||||||
|
|
@ -135,6 +139,9 @@ accepted_design:
|
||||||
- The first model is concept-first translation through an explicit
|
- The first model is concept-first translation through an explicit
|
||||||
interlingua, ontology, grammar, morphology, phonology, diachrony, and
|
interlingua, ontology, grammar, morphology, phonology, diachrony, and
|
||||||
renderer pipeline.
|
renderer pipeline.
|
||||||
|
- 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.
|
||||||
- Weksa is the engine. A language project owns one constructed language.
|
- Weksa is the engine. A language project owns one constructed language.
|
||||||
Setting docs own story, species, culture, and use cases.
|
Setting docs own story, species, culture, and use cases.
|
||||||
- Rust to Dust is an earlier proving ground, not engine doctrine.
|
- Rust to Dust is an earlier proving ground, not engine doctrine.
|
||||||
|
|
@ -169,6 +176,8 @@ open_questions:
|
||||||
Sa'auei'a, or a narrow naming-brief interlingua?
|
Sa'auei'a, or a narrow naming-brief interlingua?
|
||||||
- What Weksa naming brief schema best serves nation-scale interbeings,
|
- What Weksa naming brief schema best serves nation-scale interbeings,
|
||||||
ecological memory networks, and mobile family-unit civilizations?
|
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?
|
||||||
|
|
||||||
landed_baseline:
|
landed_baseline:
|
||||||
- Language-neutral state spine.
|
- Language-neutral state spine.
|
||||||
|
|
@ -178,3 +187,4 @@ landed_baseline:
|
||||||
- Rust to Dust setting documentation skeleton.
|
- Rust to Dust setting documentation skeleton.
|
||||||
- Eusocial Interbeing naming surface at settings/eusocial-interbeing.
|
- Eusocial Interbeing naming surface at settings/eusocial-interbeing.
|
||||||
- Zyphos language-design pressure note.
|
- Zyphos language-design pressure note.
|
||||||
|
- Draft Weksa interlingua standard and packet schema receipt.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue