build: pin Aster VM as a source submodule
This commit is contained in:
@@ -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
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
Vendored
+69
@@ -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.
|
||||
+1
Submodule vendor/aster added at 51cd64e688
Reference in New Issue
Block a user