diff --git a/docs/eve-migration-roadmap.md b/docs/eve-migration-roadmap.md index 6511796..f6c569a 100644 --- a/docs/eve-migration-roadmap.md +++ b/docs/eve-migration-roadmap.md @@ -297,6 +297,13 @@ Recently cut: client, and the split-target consumer smoke keeps the missing shell, provider-advertisement consumption, command transport, and capture proofs visible as blockers. +- EveTui now has a pending split target and handoff at + `runtimes/incubating/eve-tui/evetui-split-handoff.json`. It does not claim + the advertised `tui` world-surface lowering target yet. The handoff draws the + line between a future provider-agnostic terminal/grid lowerer and + provider-owned TUI surfaces, and the split-target consumer smoke keeps the + missing runtime body, provider-advertisement consumption, command transport, + transcript/cell-grid capture, and `tui` lowering proof visible as blockers. - Aetheria interactive world surfaces now carry a structured provider-owned `worldInteraction` contract. The provider advertisement names projection kind, provider state schemas, daemon command boundary, receipt schema, diff --git a/docs/parity-testing-harness.md b/docs/parity-testing-harness.md index ed4a220..cc3b934 100644 --- a/docs/parity-testing-harness.md +++ b/docs/parity-testing-harness.md @@ -199,14 +199,16 @@ Split-target consumer smoke: powershell -ExecutionPolicy Bypass -File .\scripts\run-split-target-conformance-consumer-smoke.ps1 ``` -That script asserts that EveFlutter, EveUnity, and EveElectron are exported as -incubating split targets, that their current split-readiness proofs are passed, -and that their graduation blockers remain visible to consumers. A target being -present is not enough; future owner repos must be able to consume why it is or -is not ready to leave Eve incubation. EveElectron is intentionally pending: its -handoff names the generic Electron shell boundary, while the Starbridge RTS -client remains Aetheria-owned product code until a provider-agnostic shell -exists. +That script asserts that EveFlutter, EveUnity, EveElectron, and EveTui are +exported as incubating split targets, that their current split-readiness proofs +are passed, and that their graduation blockers remain visible to consumers. A +target being present is not enough; future owner repos must be able to consume +why it is or is not ready to leave Eve incubation. EveElectron is intentionally +pending: its handoff names the generic Electron shell boundary, while the +Starbridge RTS client remains Aetheria-owned product code until a +provider-agnostic shell exists. EveTui is also intentionally pending: Aetheria +advertises `tui` as an agent-facing lowering target, but Eve should not claim +that target until a real terminal/grid lowerer and transcript capture exist. The Flutter widget smoke also exercises `EveProviderCatalog` and `EveProviderPicker` against a conformance-export-shaped provider list. That is diff --git a/runtimes/incubating/eve-tui/evetui-split-handoff.json b/runtimes/incubating/eve-tui/evetui-split-handoff.json new file mode 100644 index 0000000..5e9f8e8 --- /dev/null +++ b/runtimes/incubating/eve-tui/evetui-split-handoff.json @@ -0,0 +1,64 @@ +{ + "schema": "gamecult.eve.runtime_split_handoff.v1", + "splitTarget": "EveTui", + "ownerRepo": "EveTui", + "currentHostRepo": "Eve", + "runtimeId": "tui", + "packageName": "eve-tui", + "sourcePackageRoot": "runtimes/incubating/eve-tui", + "destinationPackageRoot": "packages/eve-tui", + "authorityBoundary": "EveTui owns compact terminal/grid projection, keyboard command input, dense state inspection, terminal capability manifests, capture transcripts, and TUI-specific style/token lowering. Providers such as Aetheria own live state, authored TUI surfaces, command authorization, receipts, and product-specific flows. Eve keeps the GUI/TUI surface contracts, command descriptors, provider advertisements, plugin advertisements, and conformance export contracts.", + "moveSets": [ + { + "id": "tui-runtime-body", + "stage": "runtime-body", + "currentPaths": [], + "destinationOwner": "EveTui", + "replacementProof": "EveTui hosts a provider-agnostic TUI lowerer that consumes provider advertisements and Eve surface documents without importing provider internals." + }, + { + "id": "tui-world-surface-lowering", + "stage": "world-surface-lowering", + "currentPaths": [], + "destinationOwner": "EveTui", + "replacementProof": "EveTui claims the provider-advertised tui world-surface lowering target with explicit support level, lossiness, command boundary, and transcript evidence." + }, + { + "id": "tui-command-transport", + "stage": "command", + "currentPaths": [], + "destinationOwner": "EveTui", + "replacementProof": "TUI actions emit gamecult.eve.command.v1 intents through provider-advertised command boundaries and render provider receipts instead of mutating local state." + }, + { + "id": "tui-capture-lifecycle", + "stage": "capture", + "currentPaths": [], + "destinationOwner": "EveTui", + "replacementProof": "EveTui attaches deterministic terminal transcript or cell-grid capture artifacts to conformance output." + } + ], + "contractInputs": [ + "gamecult.eve.surface.v1", + "gamecult.eve.command.v1", + "gamecult.eve.provider_advertisement.v1", + "gamecult.eve.plugin_advertisement.v1", + "gamecult.eve.plugin.v1", + "gamecult.eve.conformance_export.v1" + ], + "forbiddenImports": [ + "provider internals as TUI runtime authority", + "renderer-local product state as provider truth", + "terminal-only command routes that bypass gamecult.eve.command.v1", + "plugin semantic internals", + "lossy text summaries pretending to be provider state" + ], + "requiredExternalProofs": [ + "EveTui publishes a runtime capability manifest with terminal/grid capabilities.", + "EveTui claims the tui world-surface lowering target only after a real provider-agnostic lowerer exists.", + "EveTui consumes at least one non-Aetheria provider advertisement.", + "EveTui consumes Aetheria's agent-facing TUI surface through provider advertisements without importing Aetheria internals.", + "EveTui emits gamecult.eve.command.v1 intents and renders provider receipts.", + "EveTui attaches terminal transcript or cell-grid capture artifacts to conformance output." + ] +} diff --git a/scripts/run-split-target-conformance-consumer-smoke.ps1 b/scripts/run-split-target-conformance-consumer-smoke.ps1 index c397dce..be0e4f7 100644 --- a/scripts/run-split-target-conformance-consumer-smoke.ps1 +++ b/scripts/run-split-target-conformance-consumer-smoke.ps1 @@ -48,7 +48,12 @@ try { --expect-split-target-status EveElectron:incubating ` --expect-split-target-proof "EveElectron:EveElectron split handoff is machine-readable" ` --expect-split-target-blocker "EveElectron:runtime:electron-shell:status:pending" ` - --expect-split-target-blocker "EveElectron:Electron shell runtime body exists outside Aetheria product code" + --expect-split-target-blocker "EveElectron:Electron shell runtime body exists outside Aetheria product code" ` + --expect-split-target EveTui ` + --expect-split-target-status EveTui:incubating ` + --expect-split-target-proof "EveTui:EveTui split handoff is machine-readable" ` + --expect-split-target-blocker "EveTui:runtime:tui:status:pending" ` + --expect-split-target-blocker "EveTui:TUI runtime body exists outside provider product code" if ($LASTEXITCODE -ne 0) { throw "Split target conformance consumer smoke failed with exit code $LASTEXITCODE" } diff --git a/tools/parity/parity-manifest.json b/tools/parity/parity-manifest.json index cb0c308..a6fdd9b 100644 --- a/tools/parity/parity-manifest.json +++ b/tools/parity/parity-manifest.json @@ -607,6 +607,34 @@ "Electron emits gamecult.eve.command.v1 through provider command boundaries.", "Electron capture artifacts are attached to conformance output." ] + }, + { + "id": "EveTui", + "ownerRepo": "EveTui", + "repoRole": "runtime-target", + "status": "pending", + "runtimes": ["tui"], + "requiredRuntimeStatuses": ["active"], + "requiredFeatures": ["providerAdvertisements", "embeddedDocuments", "commandTransport"], + "requiredPlugins": [], + "proofs": [ + { + "description": "EveTui split handoff is machine-readable.", + "status": "passed", + "evidencePaths": [ + "runtimes/incubating/eve-tui/evetui-split-handoff.json", + "docs/eve-migration-roadmap.md", + "docs/parity-testing-harness.md" + ] + } + ], + "pendingProofs": [ + "TUI runtime body exists outside provider product code.", + "TUI consumes provider advertisements without provider source-layout knowledge.", + "TUI claims provider-advertised tui world-surface lowering with real transcript evidence.", + "TUI emits gamecult.eve.command.v1 through provider command boundaries.", + "TUI terminal transcript or cell-grid captures are attached to conformance output." + ] } ], "runtimes": [ @@ -645,6 +673,41 @@ "note": "Electron capture is a split blocker until EveElectron owns a provider-agnostic shell." } }, + { + "id": "tui", + "title": "Compact TUI", + "kind": "pending", + "ownerRepo": "EveTui", + "repoRole": "runtime-target", + "splitTarget": "EveTui", + "graduationTrigger": "Split when TUI has a provider-agnostic terminal/grid lowerer, provider advertisement consumption, command transport, terminal capability manifest, and transcript/cell-grid capture evidence.", + "splitHandoffPath": "runtimes/incubating/eve-tui/evetui-split-handoff.json", + "requiredFixtures": ["embedded-surface", "aetheria-world"], + "pluginFixtures": [], + "supportedFeatures": [], + "supportedPlugins": [], + "unsupportedPlugins": [ + { + "pluginId": "sai.vn", + "reason": "TUI has no generic runtime body yet; Sai projection must be a declared lossy terminal projection once EveTui exists." + }, + { + "pluginId": "norn.graph", + "reason": "TUI has no generic runtime body yet; Norn graph projection needs explicit text/grid fallback semantics once EveTui exists." + }, + { + "pluginId": "tex.math", + "reason": "TUI has no generic runtime body yet; TeX projection needs explicit text/grid fallback semantics once EveTui exists." + } + ], + "expectedPaths": [ + "runtimes/incubating/eve-tui/evetui-split-handoff.json" + ], + "capture": { + "status": "missing", + "note": "TUI transcript or cell-grid capture is a split blocker until EveTui owns a provider-agnostic lowerer." + } + }, { "id": "web", "title": "Web reference",