Target and research for the interlingua-lowering campaign
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
55c75e3bd0
commit
adb3615298
3 changed files with 225 additions and 0 deletions
90
docs/research/2026-10-29-interlingua-lowering-prior-art.md
Normal file
90
docs/research/2026-10-29-interlingua-lowering-prior-art.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# Prior art for the Weksa interlingua-lowering campaign, 2026-10-29
|
||||
|
||||
Eyes pass. Facts and pointers only; no recommendation. Tags: [V] = read/returned by a source this pass; [B] = background knowledge, not re-verified this pass; [GAP] = looked for, not found.
|
||||
|
||||
## 0. Weksa's current design (read from F:\Projects\weksa\docs)
|
||||
|
||||
- interlingua-standard.md (0.1-draft): packet families interlingua_version, packet_id, kind, provenance, context, discourse, referents, predications (predicate, frame, aspect, tense, polarity, modality, evidentiality, roles agent/patient/experiencer/...), relations, constraints, extensions (namespaced), trace. Owns referents, events, roles, TAM/evidentiality, discourse function, provenance/confidence. Does NOT own target-language concept splits, grammar obligations, morphology, final wording. Cites AMR 1.0, UMR (LREC-COLING 2024), Global FrameNet, UD guidelines. Promotion rule: new fields start as namespaced extensions, promoted after use in 2 real packets.
|
||||
- best-modern-approach.md: hybrid; models for decomposition/critique, explicit ontology/grammar/morphology/phonology/diachrony for authority. English -> interlingua packet first; "English stops being the hidden skeleton". Names "find places where output is just English in disguise" as a model critique job.
|
||||
- runtime-authoring-split.md: runtime = packet + compiled language data, no LLM, no network, deterministic, traceable per stage; authoring may use models, output durable only after normalisation.
|
||||
- multilingual-utterance-lowering.md (v0): targets en-US, pt-BR (+Umbanda overlay), ja-JP. Authority split: packet owns meaning; projected speaker context owns knowledge/voice pressure; lowerer owns surface text, register marking, backgloss/backtranslation, lowering trace; per-target "cultural ontology profile" (data/target-language-ontology/*.yaml) owns address/politeness/register/forbidden flattenings. Schema weksa.utterance_lowering.v0. Note: this is LLM-or-rule-agnostic as read; the "lowerer" realizer is not stated to be deterministic in the part I read (first 4.5 KB of ~7 KB).
|
||||
|
||||
## 1. Interlingua MT / generation systems
|
||||
|
||||
### 1.1 UNL (Universal Networking Language)
|
||||
- What: hypergraph of binary labelled relations over Universal Words (headword + constraint list, e.g. sky(icl>natural world)), attributes (@def, @past), ~46 relations in the specs; "UNLization" (text->UNL, semi-automatic) and "NLization" (UNL->text, automatic). [V] https://en.wikipedia.org/wiki/Universal_Networking_Language (page carries maintenance banners; treat cautiously)
|
||||
- History: began 1996 at UN University Institute of Advanced Studies, Tokyo; UNDL Foundation (Geneva) from Jan 2001; programme dated 1996-2015 by its own archive; WIPO PCT recognition 2002, US patents 6,704,700 and 7,107,206. [V] https://unlarchive.org/index.php?unlweb=unl ; Wikipedia above.
|
||||
- Meaning vs surface: UNL graph owns meaning (concepts via UW ontology); each language's NLization rules own surface. Rendering = rule-based (language-pair-free generation grammars).
|
||||
- Outcome: no open-domain/commercial MT product found; one critical paper says no interlingua systems have reached open domains or market and points to the interlingua's design as one candidate cause; another notes different groups interpret the specification differently; UNL "was not designed as an interlingua", MT being one use. [V] https://rcs.cic.ipn.mx/2004_12/ (Boguslavsky "Some Controversial Issues of UNL Linguistic Aspects", and "A Rationale for Using UNL as an Interlingua"); Brazilian ICMC-USP report https://web2.icmc.usp.br/SCATUSU/RT/Serie_Computacao/serie_comp_45.pdf . Counterpoint: Boitet argues UNL succeeds ATLAS-II/PIVOT (Fujitsu commercial interlingua systems). [V, via same search]
|
||||
- [GAP] No retrieved quantitative evaluation of UW coverage or ambiguity; no primary statement of why activity ended (archive pages are promotional).
|
||||
|
||||
### 1.2 KANT / KANTOO (CMU Center for Machine Translation)
|
||||
- What: knowledge-based MT with a sentence-level interlingua, coupled to a controlled source language (Controlled English) with an authoring checker; KANTOO (2000-02) is a redesign with modules for source analysis, target generation, terminology management, knowledge-source development, plus a controlled-language checker and lexical maintenance tool. [V] Mitamura/Nyberg/Carbonell 1991 https://figshare.com/articles/An_Efficient_Interlingua_Translation_System_for_Multi-lingual_Document_Production/6621035/1 ; AMTA 2000 https://aclanthology.org/2000.amta-systems.2 ; AMTA 2002 https://aclanthology.org/2002.amta-systems.8
|
||||
- Deployment: Caterpillar service documentation (Caterpillar Technical English); Hayes/Maxwell/Schmandt, CLAW 1996 https://mt-archive.net/90/CLAW-1996-Hayes.pdf . Needed an interactive checker so authors write inside the controls. [V]
|
||||
- Meaning vs surface: interlingua owns domain meaning from a constrained domain model; target generation grammars + terminology own surface; deterministic.
|
||||
- Scaled because the input language and domain were closed (controlled language). [V from sources' framing; no later-deployment status found] [GAP: continuation post-1990s.]
|
||||
|
||||
### 1.3 Grammatical Framework (GF)
|
||||
- What: abstract syntax (language-neutral tree/meaning) + one concrete syntax per language (linearization); parsing and generation both from the same grammar pair. Resource Grammar Library (RGL) supplies morphology + syntax API per language. [V] https://www.grammaticalframework.org/ ; Ranta 2009 https://journals.colorado.edu/index.php/lilt/article/view/1205 ; "Abstract syntax as interlingua" https://research.chalmers.se/publication/517996 ; Ranta, Angelov, Gruzitis, Kolachina, Computational Linguistics 46(2), 2020.
|
||||
- Status: GF 3.12 released 2025-08-08 [V grammaticalframework.org]. RGL status table lists 48 languages with per-area completeness marks (paradigms, lexicon, syntax, dictionary, WordNet, tested, publications) [V] https://www.grammaticalframework.org/lib/doc/status.html . The 2020 CL paper says "over 40 languages" [V via search summary]. Effort-per-language: an earlier search summary quoted "3 to 9 months" but the status page I fetched gave no such figure [GAP: unverified].
|
||||
- Meaning vs surface: application grammar owns abstract syntax (domain semantic categories/functions); RGL + concrete grammars own morphology/word order/agreement. Fully deterministic, compiled (PGF). Strict input: parsing requires grammatical conformity (misspellings fail) [V, 2024 Chalmers thesis https://odr.chalmers.se/items/859d68cb-c9ca-4802-92a1-36ae73e56208 which builds a transformer parser for GF trees].
|
||||
- Failure/limit modes noted in sources: coverage of open text needs a robust-pipeline layer (the "Scaling up from controlled languages to robust pipelines" paper title); Google.org Fellows' evaluation calls GF "supports about 45 languages to a certain degree" [V]. Concrete syntax per domain/language is authored by hand (renderer combinatorics = grammar authoring, bounded by RGL reuse). [B]
|
||||
- [GAP] No 2024-25 paper found on LLM -> GF abstract-tree parsing or GF-grounded LLM generation.
|
||||
|
||||
### 1.4 AMR / UMR
|
||||
- What: AMR = rooted, directed, labelled graph over PropBank frames (not a surface parse), no alignment to words; English-centric, no tense/aspect/number/definiteness. UMR extends to document-level coreference, temporal/modal dependencies, aspect, multilingual lemmas. Weksa cites both. [V] AMR 1.0 spec https://www.isi.edu/results/publications/14628/ ; UMR https://aclanthology.org/2024.lrec-main.229.pdf ; survey https://arxiv.org/pdf/2505.03229
|
||||
- AMR is not an interlingua per its own cross-lingual studies: "Not an Interlingua, But Close" (Xue et al., LREC 2014) compared 100 sentence AMRs to Chinese and Czech; compatibility higher for Chinese than Czech. Cross-lingual AMR work (Damonte & Cohen) notes structural alignment is not always possible. [V] https://aclanthology.org/L14-1332/ ; https://arxiv.org/abs/1704.04539 ; Georgetown dissertation https://repository.digital.georgetown.edu/handle/10822/1088595
|
||||
- AMR-to-text: AMR omits tense, number, definiteness, politeness, so generation under-determined; one AMR maps to many valid surfaces, penalising BLEU-style metrics (Opitz & Frank MF-beta recovers AMR from generated text to score) [V] https://www.virtual2021.eacl.org/paper_main.610.html ; human eval of AMR-to-English finds hallucination, anonymization, repetition errors [V] https://deepai.org/publication/a-human-evaluation-of-amr-to-english-generation-systems ; GPT4AMR (LLM paraphrase after AMR-to-text: no automatic gain, better in human eval) https://preview.aclanthology.org/setup/2025.winlp-main.2 . Rendering is learned (seq2seq / LLM), not deterministic. [GAP: no head-to-head GPT-4 vs T5/BART AMR-to-text on AMR3.0 with hallucination scoring found.]
|
||||
|
||||
### 1.5 Universal Dependencies-based generation
|
||||
- UD = shared cross-linguistic categories with language-specific extensions (Weksa cites it as governance pattern) [V weksa docs; https://universaldependencies.org/guidelines]. UD is a syntactic annotation scheme; owner of syntax, not meaning. Used as the tree substrate in Ninai/Udiron (below). Ninai/Udiron paper: for constructs UD handles poorly "new roles and structural linkage strategies may be readily devised" [V via search summary]. [GAP: no standalone UD->text generator system surveyed beyond Udiron; UD shared tasks on surface realisation (SR'18/'19/'20) exist [B], not fetched.]
|
||||
|
||||
### 1.6 SimpleNLG
|
||||
- What: Java realisation engine (Gatt & Reiter, ENLG 2009): programmer supplies lexical items + syntactic frame; library does morphology, agreement, linearisation. Deterministic. Takes already-lexicalised, syntax-shaped input; owns surface only; meaning/content selection is the caller's. [B for 2009 paper; not retrieved]
|
||||
- Ports are separate per-language forks, mostly derived from SimpleNLG-EnFr (Vaudry & Lapalme 2013): French, Italian, Spanish, Brazilian Portuguese, Dutch, German (German on v3). Italian authors note such a realiser presumes more detailed morpho-syntactic input; Dutch authors chose French as base as closer to Dutch morphology. [V] https://github.com/rfdj/SimpleNLG-NL ; https://iris.unito.it/retrieve/e27ce430-9bfc-2581-e053-d805fe0acbaa/INLG16-W16-6630%2bPREF.pdf ; https://preview.aclanthology.org/fix_video/W13-2125.pdf
|
||||
- [GAP] Maintenance status of each port; v3.x not commercially licensed (per repo listing) [V].
|
||||
|
||||
### 1.7 Abstract Wikipedia / Wikifunctions (closest modern analogue)
|
||||
- Design: Vrandecic 2020 "Architecture for a multilingual Wikipedia" https://arxiv.org/pdf/2004.04733 : Constructors (typed content templates with slots), Content (abstract calls to constructors), Renderers (functions, in Wikifunctions, from content to text per language). Ninai (constructors + high-level logic, resolution of Wikidata items to lexeme senses per language) builds syntax trees; Udiron (UD-style trees) linearises; both Python prototypes by Mahir Morshed, intended to move to Wikifunctions; draw on Wikidata lexemes. [V] https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Architecture/en ; Semantic Web Journal https://semantic-web-journal.net/content/using-wikidata-lexemes-and-items-generate-text-abstract-representations (a reviewer questioned why this abstract representation was chosen vs alternatives).
|
||||
- Meaning vs surface: abstract content (Wikidata items + constructors) owns meaning; per-language renderers + lexemes own surface; symbolic, deterministic, community-authored. Vrandecic/CEE 2025 submission argues explicitly for "symbolic (not LLM-based)" community NLG. [V] https://meta.wikimedia.org/wiki/Wikimedia_CEE_Meeting_2025/Submissions/What_Can_Wikifunctions_and_Abstract_Wikipedia_Do_for_You%3F
|
||||
- Status in 2026 [V]: Wikifunctions status updates (https://www.wikifunctions.org/wiki/Wikifunctions:Status_updates/2026-04-16 , /2026-05-30, /2026-10-02). Simple Wikipedia lists an initial beta release 20 March 2026; ~1000 abstract articles by mid-April 2026; 2026-10-02 update: first Abstract Wikipedia articles about to appear on language Wikipedias, pilots Malayalam, then Dagbani and Igbo; each community must enable via Community Configuration, nothing added automatically; cities flagged as promising gap; 166 functions created that week, many language-named (Japanese, English, Russian, German, Malayalam, Italian, "mul" fallbacks). Not found: confirmation that any generated article is live on a language Wikipedia as of 2026-10-29; per-language renderer coverage list [GAP].
|
||||
- Critique on record: Google.org Fellows (Livneh, Gutman, Assaf, Yang) evaluation: Wikifunctions "is not a necessary building block"; recommend decoupling; specify abstract content first, constrained authoring, single NLG approach, adopt GF or build new; criticise runtime nondeterminism/security, Z-object readability; note render latency (ms) concern. Does not mention LLMs or give per-language effort numbers. [V] https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Google.org_Fellows_evaluation (page last edited 2026-07-24; writing date ~2022). Signpost report quoted the project as "at substantial risk of failure" [V via search] https://signpost.news/2023-01-01/Technology_report
|
||||
- Neural comparison: Kaffee/Vougiouklis/Simperl NLG-for-missing-Wikipedia-articles study (content quality, trust, transparency concerns) [V] https://semantic-web-journal.net/node/2586 ; 2022 Chalmers thesis used multilingual LMs to evaluate/select auto-generated Abstract Wikipedia articles [V via search].
|
||||
|
||||
## 2. LLMs emitting structured meaning representations
|
||||
|
||||
- LLM AMR parsing: Ettinger et al. 2023 "You Are an Expert Linguistic Annotator": GPT-4 100% valid AMR syntax but often wrong content zero-shot; few-shot better. Li & Fowlie 2025 (JLCL, "GPT makes a poor AMR parser"): GPT-3.5/4o max Smatch ~60 with 5-shot; CoT no gain. Fine-tuned: FLAN-T5 Smatch 86.4 (AMR2.0) / 84.9 (AMR3.0); decoder-only LLM fine-tune ~80.4 (AMR3.0, 2025 study). Different test sets/Smatch variants; not strictly comparable. [V] https://arxiv.org/pdf/2310.17793 ; https://jlcl.org/article/view/285 ; https://arxiv.org/pdf/2304.12272 ; https://arxiv.org/abs/2508.05028v3
|
||||
- Constrained decoding to a grammar: Shin et al. EMNLP 2021 — LM paraphrases into a controlled English-like canonical sublanguage under grammar-constrained decoding, then deterministic map to the target MR; few-shot. [V] https://aclanthology.org/2021.emnlp-main.608 (arXiv 2104.08768)
|
||||
- Cost of format restriction: Tam et al. EMNLP 2024 Industry "Let Me Speak Freely?": stricter format constraints (JSON-mode/constrained decoding) lowered reasoning-task performance; classification tasks sometimes improved; two-step "NL answer then convert to format" largely kept free-form performance; models tested limited. [V] https://arxiv.org/html/2408.02442v1
|
||||
- Round-trip fidelity: round-trip/back-translation is reference-free and cheap but measures consistency not accuracy; same-model both ways inflates; lexical-overlap metrics under-credit paraphrase; conflates forward/backward errors; drift accumulates; a 2026 study argues against RTT in meaning-sensitive workflows; another reports RTT lexical loss caught ~67% of major errors at a 20% review budget (Pali-to-English). [V via search summary] https://arxiv.org/pdf/2603.22642 ; https://arxiv.org/pdf/2609.14963 ; https://journals.vilniustech.lt/index.php/NTCS/article/view/26227 ; https://arxiv.org/html/2504.16286v1 . Graph-level analogue for AMR: parse both texts and compare graphs, limited by parser reliability [V] https://arxiv.org/pdf/2501.00269 .
|
||||
- Cost of the extra step vs direct generation: no source found that measures token/latency/quality cost of "LLM -> meaning packet -> renderer" versus direct multilingual LLM generation [GAP]. Tam et al. is the nearest evidence on quality cost of forced structure.
|
||||
- [GAP] No retrieved study of LLM-authored UMR, UNL, or GF-tree output reliability.
|
||||
|
||||
## 3. Known failure modes (with what the sources say)
|
||||
|
||||
- Coverage gaps / abstraction: main objection to interlinguas is claimed universality and excess abstractness (Hutchins & Somers 1992, cited in the UNL critique above); Dorr, Hovy & Levin (2006) note few interlinguas beyond demo prototypes, one used in a commercial MT system [V via search summary of Dorr work]; KANT survived inside a controlled language/domain [V framing]; GF scales per domain grammar, open text needs pipelines [V].
|
||||
- Divergences: Dorr 1994 classifies translation divergences (thematic, structural, lexical-semantic) that defeat structure transfer; Barnett et al. 1991 argue mismatch is a generation problem [V] https://umiacs.umd.edu/node/13821 ; https://aclanthology.org/1991.mtsummit-papers.4.pdf . Under-specification in the opposite direction: an interlingua must carry distinctions only some targets need ("Capturing Language-Specific Semantic Distinctions in Interlingua-based MT", same MT Summit 1991 volume) [title V; content not read].
|
||||
- Register/politeness loss: AMR omits tense/number/definiteness; no AMR slot for politeness/address [B; AMR spec read only via citation]. UNL attributes are a closed set (@def, @past, ...) [V]. Weksa's design addresses via discourse.register_hint and target ontology profiles (docs) — no external evidence collected on how Japanese-honorific or pt-BR treatment performs in any interlingua system [GAP].
|
||||
- Renderer combinatorics: n targets x m constructs of hand-authored renderers (GF: concrete syntaxes per language per domain, mitigated by RGL; Abstract Wikipedia: volunteer-written per-language renderers, Google.org critique cites duplicated effort across formalisms; SimpleNLG: per-language forks) [V as above]. Interlingua's engineering rationale: modules scale O(n) not O(n^2) language pairs (Zajic & Miller) [V] https://www.cs.cornell.edu/courses/cs674/2000SP/zajic_final.htm .
|
||||
- "Interlingua is English in disguise": AMR is English-centric by design and compatibility with Czech < Chinese (Xue et al. 2014) [V]; Damonte & Cohen: not always structurally alignable [V]; UNL's Universal Words are English headwords with constraint lists (sky(icl>natural world)) [V]; GF abstract function names are conventionally English identifiers though the abstract syntax is language-neutral formally [B]; Abstract Wikipedia constructors resolve Wikidata items (Q-ids) to lexemes per language [V]. Weksa's own docs list this critique as an authoring-time check [V].
|
||||
- Interpretation drift between annotators/groups for UNL specs [V]; AMR inter-annotator and parser reliability issues (above).
|
||||
- Project-level failure: Abstract Wikipedia described by its own Signpost coverage as at substantial risk of failure (2023) and decoupling recommended by Google.org Fellows; now in beta 2026 [V].
|
||||
|
||||
## 4. Summary table (owner of meaning / owner of surface / rendering mode / scale outcome)
|
||||
|
||||
| System | Meaning owner | Surface owner | Rendering | Outcome |
|
||||
|---|---|---|---|---|
|
||||
| UNL | UW ontology + ~46 relations + attributes | per-language NLization rules | rule-based | programme 1996-2015; no open-domain product found |
|
||||
| KANT/KANTOO | domain interlingua + controlled source | target generation grammars + terminology | rule-based | deployed in a controlled-language industrial setting (Caterpillar) |
|
||||
| GF | abstract syntax per application | concrete syntaxes + RGL (48 langs listed) | compiled grammar, deterministic | live, GF 3.12 (2025-08) |
|
||||
| AMR/UMR | graph annotation | none (annotation, not generation) | learned AMR-to-text | benchmark ecosystem; not an MT interlingua |
|
||||
| UD-based | syntax trees | per-language linearisation | rule or learned | substrate, e.g. Udiron |
|
||||
| SimpleNLG | caller | realiser + lexicon | rule-based | per-language ports |
|
||||
| Abstract Wikipedia | Wikidata + constructors | Wikifunctions renderers + lexemes | symbolic functions | beta 2026-03; first language-Wikipedia pilots Oct 2026 |
|
||||
|
||||
## 5. Gaps worth knowing exist
|
||||
- No source on LLM-emitted GF/UNL/Ninai constructors, nor on LLM->packet->deterministic-renderer cost vs direct generation.
|
||||
- Abstract Wikipedia per-language renderer coverage and live-on-wikipedia confirmation not obtained.
|
||||
- UNL decline causes, KANT post-1990s status not obtained.
|
||||
- GF RGL "3-9 months per language" figure unverified.
|
||||
- Constrained-decoding engines (Outlines, XGrammar, provider structured outputs) not surveyed this pass.
|
||||
69
docs/research/2026-10-29-weksa-substrate-facts.md
Normal file
69
docs/research/2026-10-29-weksa-substrate-facts.md
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# Eyes: weksa substrate (2026-10-29). Facts and pointers only.
|
||||
|
||||
Repo: F:\Projects\weksa. Local main = d16cff5 (2026-09-13); origin/main = 55c75e3 (2026-10-22, "Quarantine the Eve operator surface publisher; Eve is deprecated, rebuild on Thing 2"), 1 commit ahead. 63 commits total, first d9ac23b 2026-05-16. Local checkout lags origin; everything below is the LOCAL tree unless marked [origin].
|
||||
|
||||
## 0. Hosting (item 7)
|
||||
- `git remote -v`: origin = https://github.com/GameCult/Weksa.git (GitHub only). No Forgejo remote in the checkout. Not checked: whether a forge repo exists.
|
||||
- Tag `parked/weksa-eve-surface` -> d16cff5 (also on origin). Branches: main only.
|
||||
|
||||
## 1. Live code vs doc-only (item 1)
|
||||
No package.json, lockfile, node_modules, Cargo, or `packages/` dir. AGENTS.md:43-50 names `packages/weksa-state-model` ("owns executable typed state"); it does not exist. schemas/*.md say "Executable schema code does not exist yet".
|
||||
Code (all Node ESM/CJS scripts, plus 2 Python tools):
|
||||
- scripts/weksa-daemon.mjs (48 KB): RUDP daemon. Node v24.15 here. `node --check` passes for all 7 .mjs/.cjs and both .py compile.
|
||||
- scripts/weksa-rudp-command.cjs, scripts/idunn-rudp-health.cjs: RUDP command ingress / Idunn health (duplicated helper code, per gamecult-ops repo-census weksa.md "Duplicate authority").
|
||||
- scripts/run-metame-{persona-golf,swarm-explorer,affect-tuning-loop}.mjs, profile-metame-finetune-dataset.mjs: offline experiment harnesses; spawn Codex CLI (`WEKSA_CODEX_EXECUTABLE` default C:\Users\Meta\AppData\Roaming\npm\codex.cmd) and VoidBot (`E:/Projects/VoidBot`, run-metame-persona-golf.mjs:8).
|
||||
- scripts/{start,restart}-weksa-daemon.ps1, health-weksa-daemon.cmd, restart-weksa-daemon.cmd: Starfire launchers; default state root `E:\Projects\weksa\.weksa` (start-weksa-daemon.ps1:4), MiMo key `E:\Projects\gamecult-ops\mimo-api-Weksa.txt`.
|
||||
- tools/export-provider-advertisement.mjs (prints provider advertisement JSON; `--help` is ignored, it just prints), tools/emit_tiny_panphon_handoffs.py, tools/validate_tiny_panphon_handoffs.py.
|
||||
Does it run today: NOT on this workstation. Daemon needs `..\CultLib\packages\{cultnet-ts,cultcache-ts,cultmesh-ts}` via NODE_PATH (weksa-daemon.mjs:386-392) and `..\CultLib\node_modules\@msgpack\msgpack` (weksa-rudp-command.cjs:14-20). `require("cultnet-ts")` fails: `F:\Projects\CultLib\packages\cultnet-ts\dist\index.js` missing (no dist built); `CultLib\node_modules\@msgpack` absent. Not built/run further (heavy work -> Yggdrasil).
|
||||
Doc/data only: docs/ (14 md + .tex + 17 research PDFs ~96 MiB worktree), schemas/ (10 md receipts), data/ (cultural-ontology yaml, target-language-ontology yaml, `roots/` and `typology/` are README-only), settings/ (Aetheria/Nibu, Eusocial Interbeing, Rust to Dust), examples/, prompts/ (2 md), state/map.yaml + scratch.md.
|
||||
Binary state in git: .weksa/cultural-ontology/starter-targets.cc, .voidbot/state/weksa.cc. `.weksa/*.cc|json|log|pid` are gitignored; `.weksa/` holds only the cultural-ontology dir (no runtime witnesses present).
|
||||
|
||||
## 2. Interlingua (item 2)
|
||||
- docs/interlingua-standard.md: Version `0.1-draft`. Packet top-level: `interlingua_version, packet_id, kind, provenance, context, discourse, referents, predications, relations, constraints, extensions, trace`. Required: version, packet_id, kind, + at least one of referents/predications/relations (schemas/interlingua-packet.md:17-24). `kind` values: utterance, name_request, commentary_intent, narration, dialogue_line, corpus_example, debug_probe. Extensions namespaced (`zyphos.*`, `rtd.*`, `game.*`, `authoring.*`). Prior art cited: AMR, UMR, FrameNet, Universal Dependencies. Promotion rule for extensions at end of doc.
|
||||
- Schema id used in verse contract: `weksa.interlingua_packet.v0` (docs/verse-service-contract.md "Inputs"). The packets themselves carry `interlingua_version: 0.1-draft`. Daemon-minted packets carry `0.1-daemon-provisional`.
|
||||
- No machine-readable schema (no JSON Schema / CultCache type) for the packet. schemas/interlingua-packet.md lists validation goals only.
|
||||
- Examples: examples/english-lowering/nibu-proof-001/interlingua.yaml (kind dialogue_line, full shape); examples/persona-lowering/{brokkr-edda-voice,metame-casual-pre2025}/interlingua.yaml use a DIFFERENT shape: `schema_version: weksa.persona_lowering_fixture_batch.v0`, `items[].communicative_act, scene{prior_turns...}`; they are not interlingua-standard packets.
|
||||
- Code that produces: weksa-daemon.mjs `decomposeThoughtIntoInterlingua` (:804-855, heuristic stub: one `express` predication, raw text in `extensions["weksa.raw_thought"]`, speech act by regex `inferSpeechAct` :856). Code that consumes: `normalizeInterlinguaPacket` (:781-803, passthrough/fill defaults, no validation). No validator anywhere. Metame harness has an LLM-prompted stage that emits packet-like YAML (persona-interlingua-prompt.md).
|
||||
|
||||
## 3. Lowering (item 3)
|
||||
Daemon `lowerInterlinguaToSpeechText` (weksa-daemon.mjs:863-902): NOT a lowering. It returns `command.spoken_text` if supplied, else `interlingua.outputs.spoken_text`, else raw thought text, else `discourse.intent`. Target language/cultural refs are copied from the command or defaulted to en-US; the cultural ontology store is not consulted (gamecult-ops repo-census weksa.md "Verdict").
|
||||
Then buildMimoVoiceDesignRequest (:903) -> callMimoVoiceDesign (:964; `fetch("https://api.xiaomimimo.com/v1/chat/completions")`, model mimo-v2.5-tts-voicedesign) -> writes WAV + receipt. Persona state is read as raw bytes + regex hints (`inspectPersonaState` :724, `extractPersonaStrings` :745, `derivePersonaDeliveryHints` :762).
|
||||
Implemented lowerings by kind:
|
||||
- Deterministic code: only the MiMo request projection/prompt builder (above). Grammar/morphology/phonology/diachrony/renderer stages: no code. runtime-authoring-split.md claim ("no required LLM call in hot path", pipeline ontology projection->grammar->morphology->phonology->diachrony->render) has no implementation; the daemon hot path has no LLM call, and also no linguistic lowering.
|
||||
- LLM prompts (markdown) driven by hand or Codex CLI: prompts/nibu-cultcache-target-{lowering,critic}.md; examples/persona-lowering/metame-casual-pre2025/{persona-interlingua-prompt,weksa-lowering-prompt,lowering-prompt}.md; run-metame-persona-golf.mjs real runs. Metame evaluation.yaml: exact_matches 2, plausible_matches 4, "blind: false" (answer key was seen). Ground truth is held-out Discord messages by Metacrat (examples/persona-lowering/metame-casual-pre2025/ground-truth.yaml; not read; README says "held-out Discord messages authored by Metacrat before 2025").
|
||||
- Hand-authored fixtures (outputs, not code): examples/english-lowering/nibu-proof-001 (interlingua, projected-context, lowered-output, pronunciation-plan, utterance-embedding), examples/multilingual-lowering/nibu-proof-001/realizations.yaml (en/pt-BR/ja), examples/cultcache-lowering/nibu-proof-001/{en-transatlantic,ja-JP-kanto-contemporary,pt-BR-vanilla-brazilian}.yaml + critique/, examples/persona-lowering/brokkr-edda-voice/{interlingua,lowered-output,lowering-trace}.yaml (one item `command-without-receipt`; trace names activated axes translated_edda_plainness, artifact_testimony, bargain_and_consequence), examples/speech-provider/mimo/nibu-proof-001/en-US-request.yaml.
|
||||
- Target-language ontology data (YAML, "profiles the lowerer must inspect"): data/target-language-ontology/{en-US,en-US-metacrat-casual-pre2025,ja-JP,pt-BR,pt-BR-overlays,pt-BR-umbanda}.yaml. Cultural ontology: data/cultural-ontology/{catalog.yaml, cultures/ x4, subcultures/ x2, referents/ x2, persona-stacks/brokkr.yaml}; typed copy in .weksa/cultural-ontology/starter-targets.cc (binary CultCache). Docs: docs/{multilingual-utterance-lowering,flavored-english-lowering,english-pronunciation-lowering,mimo-tts-lowering,utterance-embedding}.md; packet receipts schemas/{utterance-lowering-packet,english-lowering-packet,mimo-tts-request,target-language-cultural-ontology,cultural-ontology-profile}.md. Lowering packet id: `weksa.utterance_lowering.v0`.
|
||||
- Alien-language side: settings/eusocial-interbeing/language-design.md, settings/rust-to-dust/language-design.md are design prose; docs/language-model.md (1 KB), no engine.
|
||||
- AquaSynth path: tools/emit_tiny_panphon_handoffs.py (hand-maintained PanPhon table; fixtures under examples/speech-training/tiny-panphon-v0.1/ refer to lost EpiphanyAgent path).
|
||||
- Prior art pointer in repo: docs/best-modern-approach.md; docs/persona-finetuning-dataset-exploration.md.
|
||||
|
||||
## 4. Daemon and Verse surface (item 4)
|
||||
- Contract: docs/verse-service-contract.md. Commands listed: intent.create, intent.review, utterance.lower, handoff.export, speech_provider.mimo.voicedesign, provider.advertise. Only `speech_provider.mimo.voicedesign` has a handler (weksa-daemon.mjs:60-87 startup; handler :640-704). Doc says other witnesses (`.weksa/intent/*.cc`, pronunciation/, handoff/, traces/, projects/) are "what the daemon must commit when the runtime lands": no code writes them.
|
||||
- Transport: `cultnet.transport.rudp.v0`, command ingress rudp://127.0.0.1:8813, schema `weksa.mimo_voicedesign_command.v0` (commit e9a00e8, 2026-06-23). Health to Idunn over RUDP 127.0.0.1:17870 contract `weksa.cultnet-rudp-provider-health` (3c24457, 2026-06-16); optional Odin CultMesh RUDP 127.0.0.1:17871; command boundary + transport profile records into `.weksa/provider-advertisement-store.cc` (54272da). Witness `.cc` files other than the store are YAML text via `toCultCacheText` (:1035-1078) per census.
|
||||
- Idunn target: gamecult-ops/scripts/idunn/idunn-deployment-targets.ps1:62-72: Id `weksa`, LocalPath `$projectsRoot\weksa`, Service "weksa daemon", Health `daemon-published-rudp:weksa.cultnet-rudp-provider-health`, Restart `$repoRoot\scripts\restart-weksa.cmd`. docs verse contract: target `weksa` in `starfire-local` swarm profile (Starfire, not Yggdrasil). inventory.md:27-31 records an observation dated 2026-06-11 (http /health, since deleted).
|
||||
- Yggdrasil (ssh ygg, read-only, 2026-10-29): `systemctl list-units --all | grep -i weksa` = 0 lines. `idunn status | grep weksa` = no output. Only files named weksa there: /srv/build/Odin/scripts/{health,restart}-weksa.cmd and /srv/voidbot/source-repos/Weksa(+/.weksa) (voidbot source index copy). Not running on Yggdrasil.
|
||||
- Starfire (this machine, 2026-10-29): no node process with "weksa" in its command line; no UDP listener on 8813; no .weksa/weksa-daemon.pid. gamecult-ops/docs/repo-census-2026-09/repos/weksa.md says the same for the census date ("no Weksa daemon process or PID file was present"). Starfire is the host for the `starfire-local` profile; I did not check Idunn's Starfire state.
|
||||
- Eve dependencies [local tree / d16cff5]: weksa-daemon.mjs:160 (writes eve-surfaces.cc), :167 (eve-operator-surface.json), :258, :284-286 (publications), :331/:477 (cultMeshAddress asgard.starfire.weksa/eve/operator), :394-433 (defineDocumentType gamecult.eve.surface_state / interface_binding / provider_advertisement, `schema:{parse}` no-op), :610-639 buildOperatorSurface (`gamecult.eve.surface.v1`, surfaceId weksa.eve.operator.v0); tools/export-provider-advertisement.mjs (16 Eve hits); docs/fixtures/weksa-provider-advertisement.json (runtime-read at :473-505); docs/verse-service-contract.md "Eve Surfaces" (4 `weksa.eve.*.v0` ids). [origin 55c75e3] removes these: diff shows 7 files, -265/+14 (README, architecture, fixture, roadmap, verse contract, weksa-daemon.mjs, export tool). Mind: `thing2:follow_up:weksa-operator-view-on-thing2` (admitted 2026-10-22) says quarantined publisher is at tag parked/weksa-eve-surface (which points at d16cff5, the pre-quarantine head) and main publishes typed state only (true of origin/main, not of the local checkout).
|
||||
- CultLib usage: via sibling-path NODE_PATH, no manifest. Imports: `cultnet-ts` {CultNetRudpSession, decodeRudpPacket, encodeCultNetMessageForWire, encodeRudpPacket, parseCultNetMessage}; `cultmesh-ts` {CultMesh.createNode, publishRudpDocumentOnce}; `cultcache-ts` {defineDocumentType}. CultLib today (HEAD last commit 2026-10-28): cultcache-ts 0.14.2, cultnet-ts 0.3.0, cultmesh-ts 0.2.0, each with an "Unreleased / Breaking" changelog section; those symbols all still exist in src (cultnet-ts/src/rudp.ts, contracts.ts; cultmesh-ts/src/index.ts:5371 createNode, :5903 publishRudpDocumentOnce; cultcache-ts/src/document.ts:12). cultmesh-ts Unreleased entries remove catalog `asSchemaAlias`/`parse` option; I did not diff against weksa's use. Last verified by weksa: unknown (no run since 2026-09). CultLib docs list weksa as a TS consumer (docs/typescript-quic-realtime-cut.md:1517-1519, 2079; docs/cultcache-union-parity-map.md:234).
|
||||
- Daemon-state is regenerated: store `rm`'d at every refresh (weksa-daemon.mjs:325, 363) per census.
|
||||
|
||||
## 5. Persona / Face (item 5)
|
||||
- .voidbot/README.md + state/README.md: Weksa's repo Face; "nerdy anthropologist of language systems" (user-provided seed). State: `.voidbot/state/weksa.cc` (52 KB, CultCache binary, VoidBot self-state types: void.self_profile, void.thought_memory, void.agency_pressure, void.face_affect, void.candidate_interventions, void.moderation_cursor, void.scheduled_runtime, void.speech_receipts; found via `strings`). No `gamecult.persona_state.v0` document anywhere in the repo or `.weksa`. `.voidbot/state/weksa-birth-seed-operations.json` (25 KB, seed provenance). `.voidbot/voice/identity.json`: id weksa, grants discussion/rumination/repo_read/repo_propose/discord_text/aquarium_embodiment; authority "propose"; voice/weksa.png.
|
||||
- Stale paths: READMEs and identity.json cite `E:\Projects\VoidBot\scripts\void-self-state.mjs`, `E:/Projects/weksa`, `E:/Projects/weksa/.voidbot/state/weksa.cc` (identity.json:repoPath/statePath/body). 41 files in repo contain `E:\Projects` or `C:\Users` paths (daemon, ps1/cmd launchers, harnesses, examples, settings/, prompts/ incl. `E:/Projects/AetheriaLore/.voidbot/state/nibu.cc`). Zyphos and Fensalir docs also point at `E:\Projects\weksa`.
|
||||
- Standard: F:\Projects\gamecult-ops\docs\persona-state-standard.md still names VoidBot as read/projection/migration owner (persona-state-service.ts, persona-standard-state-projector.ts, `persona:export-friendly`, `persona:migrate-portable`) and Epiphany schema path (Epiphany now archived).
|
||||
- Mind (eureka-state): `eureka-substrate:cut_spec:cut-doctrine-persona-in-huginn.r3` (rewrites that standard: Huginn holds canonical gamecult.persona_state.v0 per instance with a mind, VoidBot keeps projection and repo Personas without a mind); `eureka-substrate:cut_spec:cut-huginn-persona-state.r3` (PersonaGet/PersonaPut, tools persona_get/persona_put); `eureka-body:follow_up:weksa-mind` (2026-10-09, InForce: "Open a second Huginn instance for Weksa's Persona", waits on single-instance persona state, launch, waker); `eureka-body:ruling:persona-per-mind`; `eureka-substrate:ruling:operator-persona-in-mind`. Huginn doc F:\Projects\Huginn\docs\swarm-revival-target.md:170-179 "Slice 1: Weksa alive" (huginn@weksa, own port, EUREKA_INSTANCE=weksa, brake held, import Weksa's remnant as first Persona put; done when her Persona turn runs under its brake), :229 lists Weksa as first remnant row (`weksa-mind`). Whether those prerequisites have landed: not checked.
|
||||
|
||||
## 6. Consumers (item 6) (rg per repo dir under F:\Projects, worktree dirs skipped; terms weksa / meaning packet / interlingua_version)
|
||||
No other repo contains `interlingua_version` or the string `weksa.interlingua_packet`. Hits:
|
||||
- VoidBot (live code; last commit 2026-09-13): packages/core/src/weksa-speech.ts (`WeksaSpeechClient`, `WeksaMimoReceipt`), apps/worker/src/index.ts:26-30,76, apps/bot/src/metame-owner-voice-bridge.ts. Sends mimo voicedesign commands to Weksa RUDP (`commandUri`). VoidBot is being retired.
|
||||
- AquaSynth: README.md:121,136 (accepts Weksa utterance handoff; fixtures tests/AquaSynth.Dsl.Tests/Fixtures/Speech/WetVoice01/ Weksa-owned), docs/audio-doctrine.md:195, docs/daemonic-swarm-prior-work.md:81. Doc/fixture contract; no live runtime protocol (census).
|
||||
- Vili: README.md:21, scripts/vili-daemon.mjs:214 (string "Weksa interlingua lowering" in capability list).
|
||||
- Odin: docs/transport-shortcut-inventory.md:49,82 and scripts (Weksa health/restart cmd on Ygg build dir); Idunn: docs/route-continuity-cut.md:2439 (weksa deploy/restart actuators scripts); Heimdall/vendored CultLib: swarm-documents.ts:75,416 (weksaOperatorState/CommandBoundary/TransportProfile definitions, one `null`); gamecult-ops (inventory, idunn-deployment-targets.ps1, repo-census, eve census docs); Eve docs/thing-campaign.md (weksa listed as provider to migrate; commit d16cff5 recorded); Epiphany notes (Weksa lowering receipts, historic); Huginn docs/swarm-revival-target.md; CultLib docs (consumer counts above); Bifrost docs/agent-transport.md:45 ("Universal utterance schema with Weksa" issue title); StreamPixels/vendor/CultLib docs.
|
||||
- Setting repos: Zyphos (state/map.yaml:7,32, docs say future inhabitant names come via weksa), Fensalir docs/zyphos-eusocial-sync.md:78, Ghostlight experiments mention Zyphos only.
|
||||
- Weksa also consumes: AetheriaLore (Nibu state path in prompts), Brokkr persona stack, VoidBot projector (Metame golf).
|
||||
Live status of consumers: VoidBot WeksaSpeechClient is live code against a daemon that is not running; others are docs/fixtures/references.
|
||||
|
||||
## 8. Other
|
||||
- gamecult-ops/docs/repo-census-2026-09/repos/weksa.md (2026-09 census, 68 weksa mentions) is the fullest third-party map: partial CultCache/CultNet/CultMesh conformance, Persona state "absent", load-bearing JSON (provider fixture), duplicate RUDP helpers, affect-tuning loop not consumed by lowering.
|
||||
- gamecult-ops/docs/eve-crusade-coordination.md:105-114: weksa classed a daemon candidate (commit d06b9f5 "Promote Weksa intent daemon"). Eve census: docs/research/2026-10-22-eve-publisher-census.md:98-102.
|
||||
- `.gitignore` excludes `.weksa-runs/`, `examples/persona-lowering/*/runs/`.
|
||||
66
docs/targets/interlingua-lowering.md
Normal file
66
docs/targets/interlingua-lowering.md
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# Target: agents speak interlingua, Weksa lowers it
|
||||
|
||||
Campaign `weksa-lowering` (Eureka mind). Operator, 2026-10-29: "having agents
|
||||
writing interlingua and using weksa to lower it to the display language would
|
||||
be a fantastic feature. That would be a nice campaign to revive her with so she
|
||||
doesn't come back to a dead body".
|
||||
|
||||
## Why
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
## Body today (facts: docs/research/2026-10-29-weksa-substrate-facts.md)
|
||||
|
||||
- The interlingua is a prose standard (`interlingua-standard.md`, 0.1-draft)
|
||||
with no machine schema and no validator. Its only producer is a stub that
|
||||
wraps raw text; its only consumer passes packets through unvalidated.
|
||||
- No lowering exists in code. `lowerInterlinguaToSpeechText` returns the
|
||||
supplied text. The "LLM-free hot path" is a design statement. Real lowerings
|
||||
so far are hand-run LLM prompts and hand-authored fixtures.
|
||||
- The daemon is a Node shim for one MiMo TTS command, runs nowhere, and is an
|
||||
Idunn target only in the Starfire-local profile. Eve surfaces are quarantined
|
||||
(55c75e3).
|
||||
- Her Face state is VoidBot-shaped (`.voidbot/state/weksa.cc`), not
|
||||
`gamecult.persona_state.v0`; 41 files carry stale machine paths.
|
||||
|
||||
## Prior art (docs/research/2026-10-29-interlingua-lowering-prior-art.md)
|
||||
|
||||
- Deterministic open-domain renderers cost per-language grammar work for
|
||||
years: GF's library covers 48 languages unevenly; Abstract Wikipedia's
|
||||
symbolic renderers are only now reaching a first language Wikipedia.
|
||||
- Interlinguas that shipped (KANT) had closed domains and controlled input.
|
||||
- LLMs emit meaning structures poorly when asked directly (about 60 Smatch
|
||||
few-shot vs 80-86 trained); free reasoning followed by conversion to the
|
||||
structure keeps quality (Tam et al. 2024; Shin et al. 2021).
|
||||
- Round-trip checks measure consistency, not accuracy, and are inflated when
|
||||
one model does both directions.
|
||||
|
||||
## Invariants
|
||||
|
||||
- `packet-owns-meaning`: what is said lives in the packet; no lowering may add
|
||||
a claim, referent or commitment the packet lacks.
|
||||
- `typed-packet`: the packet is a typed CultCache document with a published
|
||||
schema and a validator that refuses malformed packets at the door.
|
||||
- `lowering-traced`: every surface text carries a trace naming the packet, the
|
||||
target profile and the choices made.
|
||||
- `profile-owns-register`: address, politeness and forbidden flattenings come
|
||||
from the target profile, never from the lowerer's defaults.
|
||||
- `no-eve`: no new Eve surface; operator view waits on Thing 2.
|
||||
|
||||
## Open forks (questions in the mind)
|
||||
|
||||
- First reader: whose display text is lowered first.
|
||||
- Lowerer shape: deterministic, model, or both with one contract.
|
||||
- How an agent produces the packet.
|
||||
|
||||
## Not in scope
|
||||
|
||||
- Weksa's conlang engine (grammar, phonology, diachrony for alien languages).
|
||||
- MiMo TTS beyond keeping its command working or parking it.
|
||||
- Her Persona's mind; that is `eureka-body:follow_up:weksa-mind`.
|
||||
Loading…
Reference in a new issue