From 30c5fd577470cf56727891f9b5cc1536c6ce3c2c Mon Sep 17 00:00:00 2001 From: Codex Bot Date: Tue, 20 Oct 2026 00:48:50 +0800 Subject: [PATCH] build: pin Aster VM as a source submodule --- .gitmodules | 3 +++ Cargo.lock | 58 ++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 +++ README.md | 30 +++++++++++++++++++++ vendor/README.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ vendor/aster | 1 + 6 files changed, 165 insertions(+) create mode 100644 .gitmodules create mode 100644 vendor/README.md create mode 160000 vendor/aster diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..aa04b20 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vendor/aster"] + path = vendor/aster + url = ssh://git@gitea.entroia.com:22222/Zayden-Jung/endorphin-aster-vm.git diff --git a/Cargo.lock b/Cargo.lock index f38feb4..bf4fd20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -211,6 +211,14 @@ dependencies = [ "memchr", ] +[[package]] +name = "compiler" +version = "0.1.0" +dependencies = [ + "core", + "frontend", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -220,6 +228,13 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "core" +version = "0.1.0" +dependencies = [ + "objects", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -425,6 +440,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +[[package]] +name = "frontend" +version = "0.1.0" +dependencies = [ + "peg", + "serde", + "serde_json", +] + [[package]] name = "futures-core" version = "0.3.34" @@ -984,6 +1008,10 @@ dependencies = [ "objc2-foundation 0.2.2", ] +[[package]] +name = "objects" +version = "0.1.0" + [[package]] name = "once_cell" version = "1.21.4" @@ -1009,6 +1037,33 @@ dependencies = [ "ttf-parser", ] +[[package]] +name = "peg" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aad070be5b63aa72103f2fcdd70a83adbd5e90112ce5b574171ff1c65501773" +dependencies = [ + "peg-macros", + "peg-runtime", +] + +[[package]] +name = "peg-macros" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd8ef6825cae95355031ae26a99b616a2a21f22ba2de0197c43dfb05acbe7ee" +dependencies = [ + "peg-runtime", + "proc-macro2", + "quote", +] + +[[package]] +name = "peg-runtime" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7011d97b484a5ebdc4b1fdb3b12d5e4bbbea56e9d22b688f2e79e04b65a7d8a6" + [[package]] name = "percent-encoding" version = "2.3.2" @@ -1399,7 +1454,10 @@ name = "tessera" version = "0.1.0" dependencies = [ "anyhow", + "compiler", + "core", "font8x8", + "frontend", "serde", "serde_json", "softbuffer", diff --git a/Cargo.toml b/Cargo.toml index 0304719..c215854 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,12 +2,16 @@ name = "tessera" version = "0.1.0" edition = "2024" +rust-version = "1.91" description = "Cross-platform desktop rendering client" license = "MIT OR Apache-2.0" [dependencies] anyhow = "1.0" +compiler = { path = "vendor/aster/crates/compiler" } +endor_core = { package = "core", path = "vendor/aster/crates/core" } font8x8 = "0.3" +frontend = { path = "vendor/aster/crates/frontend" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" softbuffer = "0.4.8" diff --git a/README.md b/README.md index 2740d32..c07fb4e 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,38 @@ Tessera is a clean desktop rendering host. It starts with an empty page. Coding agents submit source code to a namespace through a local CRUD API; Tessera parses that code, builds its architecture tree, compiles it to drawing commands, and renders the result. +## Aster source dependency + +[Aster](vendor/aster/README.md) is an independent Git repository checked out as a +submodule at `vendor/aster`. Tessera records its exact commit in the Git submodule +entry; `.gitmodules` records its source URL. See [vendor](vendor/README.md) for +initialization, version updates, and the checkout layout. + +Cargo directly depends on Aster's `frontend`, `compiler`, and `core` library +packages through paths inside that submodule. The `core` dependency is named +`endor_core` in Tessera's manifest. These packages also bring in Aster's `objects` +package. Aster retains its own Cargo workspace and source history. + +Rust 1.91 or newer is required. Building Tessera compiles the required Aster +libraries automatically; no separate Aster build or CLI/server process is +required. Tessera does not depend on Aster's storage, host, CLI, or server packages. + +This change establishes the source and library dependency only. The namespace +API still uses the experimental Tessera parser described below. Executing Endor +through Aster and replacing that parser is the next implementation step; no +Aster source changes are part of this integration. + ## Start +Initialize the Aster submodule first, following the SSH identity instructions in +[vendor](vendor/README.md): + +```bash +git submodule update --init --recursive +``` + +In the designated build or validation environment: + ```bash cargo run --release ``` diff --git a/vendor/README.md b/vendor/README.md new file mode 100644 index 0000000..49a25a3 --- /dev/null +++ b/vendor/README.md @@ -0,0 +1,69 @@ +# Source dependencies + +| Entry | Purpose | +| --- | --- | +| `README.md` | Source checkout, version selection, and update instructions | +| [aster](aster/README.md) | Unmodified `endorphin-aster-vm` Git submodule; provides the Endor frontend, compiler, objects, and VM | + +## Checkout + +The Aster submodule URL is +`ssh://git@gitea.entroia.com:22222/Zayden-Jung/endorphin-aster-vm.git`. +The repository owner in this URL is separate from the authentication identity. +For this host, use only the dedicated `codex-bot` SSH identity. Set +`GIT_SSH_COMMAND` to the environment's isolated SSH command before network +operations: it must disable inherited SSH configuration (`-F /dev/null`), use +`IdentitiesOnly=yes`, select the dedicated bot key with `-i`, and use port 22222. +Do not fall back to the repository owner's credentials. The key path belongs in +the checkout environment, not in tracked project files. + +From the Tessera repository root, after cloning or checking out another Tessera +revision: + +```bash +git submodule update --init --recursive +git submodule status +``` + +Initialization fetches Aster source at the commit recorded by Tessera. It does +not build Aster or download Cargo packages. A normal clone without submodule +initialization does not populate `vendor/aster`. + +## Cargo integration + +Tessera's root `Cargo.toml` references the submodule's `crates/frontend`, +`crates/compiler`, and `crates/core` directories. Aster's workspace supplies +their inherited package settings and internal dependencies. Keep the submodule's +workspace intact; do not copy its crates into Tessera's workspace. + +The Git submodule entry selects Aster's source revision. Tessera's root +`Cargo.lock` records the combined application dependency graph; the lockfile +inside Aster belongs to its standalone workspace. Updating Aster's lockfile does +not replace Tessera's lockfile. + +In the designated build environment, building Tessera also builds the required +Aster libraries. A separate Aster executable or service is unnecessary. Runtime +validation follows the designated remote validation workflow; initializing the +submodule alone does not validate compilation or Endor execution. + +## Updating Aster + +Select an explicit, published Aster commit. From the Tessera root, with the bot +SSH command configured for network operations: + +```bash +git -C vendor/aster fetch origin +git -C vendor/aster checkout --detach +``` + +Review the Aster changes and reconcile Tessera's dependencies and lockfile in the +designated validation environment as needed. Commit `vendor/aster` in Tessera +along with any integration changes; that records the new Aster commit. Aster +updates do not automatically advance Tessera's recorded revision. + +If Aster itself needs development, make and publish those commits in its own +repository first. Configure the repository-local author as `Codex Bot` / +`codex-bot@gitea.entroia.local` before committing on this host. Then select the +published commit in Tessera. Do not point a shared Tessera revision at an +unpublished Aster commit, and do not add Tessera-specific patches to Aster as +part of this embedding work. diff --git a/vendor/aster b/vendor/aster new file mode 160000 index 0000000..51cd64e --- /dev/null +++ b/vendor/aster @@ -0,0 +1 @@ +Subproject commit 51cd64e6884c1036564c22e5de582c083d6db142