build: pin Aster VM as a source submodule

This commit is contained in:
2026-10-20 00:48:50 +08:00
parent 2f4c8f0fe2
commit 30c5fd5774
6 changed files with 165 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "vendor/aster"]
path = vendor/aster
url = ssh://git@gitea.entroia.com:22222/Zayden-Jung/endorphin-aster-vm.git
Generated
+58
View File
@@ -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",
+4
View File
@@ -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"
+30
View File
@@ -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
```
+69
View File
@@ -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 <aster-commit>
```
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.
Vendored Submodule
+1
Submodule vendor/aster added at 51cd64e688