build: keep Aster as an engine package without CI or deployment

This commit is contained in:
2026-10-20 02:39:20 +08:00
parent 55475a9d4b
commit 6281e58647
12 changed files with 14 additions and 102 deletions
-22
View File
@@ -1,22 +0,0 @@
# Aster engine automation
[workflows](workflows/README.md) contains repository workflows.
## CI checkout prerequisites
All workflows use `runs-on: ces-control`; no shared Runner configuration is changed.
Configure repository or organization secrets `CODEX_BOT_SSH_KEY` (the dedicated
codex-bot private SSH key) and `GITEA_SSH_KNOWN_HOSTS` (the independently verified
known_hosts entry for `[gitea.entroia.com]:22222`). The bot needs read access to the
repository and its Aster submodule. Workflows use an isolated SSH command with
`-F /dev/null`, `IdentitiesOnly=yes`, an explicit key and port, strict host-key
checking, and temporary credential files removed after checkout. Keys are never
written into tracked files. Missing secrets fail checkout explicitly.
The SSH submodule URL's repository owner is separate from the authenticated bot.
Local Git operations must use the same dedicated bot identity; configure the
checkout's isolated command in `GIT_SSH_COMMAND` for submodule initialization.
Workflow definitions do not prove CI passed. CI/deployment state is not queried
automatically. Local runtime checks are not performed for Aster, Lyra or Hestia;
Tessera permits local native builds/window runs, with automated tests in CI.
-5
View File
@@ -1,5 +0,0 @@
# Aster engine workflows
[ci.yml](ci.yml) verifies this project on main pushes, pull requests and manual dispatch. It runs on ces-control, with a 60-minute timeout. Checkout and secret requirements are in [the parent README](../README.md).
There is no production service deployment in this workflow.
-49
View File
@@ -1,49 +0,0 @@
name: Verify Aster engine
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
verify:
runs-on: ces-control
timeout-minutes: 60
env:
DOCKER_BUILDKIT: "0"
steps:
- name: Checkout with codex-bot
env:
CODEX_BOT_SSH_KEY: ${{ secrets.CODEX_BOT_SSH_KEY }}
GITEA_SSH_KNOWN_HOSTS: ${{ secrets.GITEA_SSH_KNOWN_HOSTS }}
SOURCE_SHA: ${{ gitea.sha }}
SOURCE_REPOSITORY: ${{ gitea.repository }}
run: |
set -eu
test -n "$CODEX_BOT_SSH_KEY"
test -n "$GITEA_SSH_KNOWN_HOSTS"
case "$SOURCE_SHA" in *[!0-9a-f]*|'') exit 1;; esac
test "${#SOURCE_SHA}" -eq 40
umask 077
checkout_keys=$(mktemp -d)
trap 'rm -rf "$checkout_keys"' EXIT
printf '%s\n' "$CODEX_BOT_SSH_KEY" > "$checkout_keys/key"
printf '%s\n' "$GITEA_SSH_KNOWN_HOSTS" > "$checkout_keys/known_hosts"
unset CODEX_BOT_SSH_KEY GITEA_SSH_KNOWN_HOSTS
export GIT_SSH_COMMAND="ssh -F /dev/null -o IdentitiesOnly=yes -i $checkout_keys/key -p 22222 -o StrictHostKeyChecking=yes -o UserKnownHostsFile=$checkout_keys/known_hosts"
git init .
source_url="ssh://git@gitea.entroia.com:22222/$SOURCE_REPOSITORY.git"
if git remote get-url origin >/dev/null 2>&1; then
git remote set-url origin "$source_url"
else
git remote add origin "$source_url"
fi
git fetch --no-tags --depth=1 origin "$SOURCE_SHA"
git checkout --detach --force FETCH_HEAD
git submodule update --init --recursive
- name: Verify engine only
run: |
image="endorphin-aster-vm-ci:${{ gitea.sha }}"
docker build -f Dockerfile.ci -t "$image" .
docker run --rm --init "$image"
-10
View File
@@ -1,10 +0,0 @@
FROM rust:1.91.1-bookworm
WORKDIR /build
RUN apt-get update && apt-get install -y --no-install-recommends python3 \
&& rm -rf /var/lib/apt/lists/* \
&& rustup component add rustfmt clippy
ENV CARGO_BUILD_JOBS=1 CARGO_PROFILE_DEV_DEBUG=0 CARGO_PROFILE_TEST_DEBUG=0
COPY Cargo.toml Cargo.lock ./
COPY crates ./crates
COPY scripts ./scripts
CMD ["sh", "scripts/check.sh"]
+1 -3
View File
@@ -7,8 +7,6 @@ Aster 是可嵌入的 Endor 语言引擎,提供源码阅读、解析、AST、
| [crates](crates/README.md) | objects、core、frontend、compiler 四个库 |
| [docs](docs/README.md) | 架构、语言运行时、嵌入契约与维护说明 |
| [scripts](scripts/README.md) | AST 生成与远端引擎验证 |
| [.gitea](.gitea/README.md) | ces-control 上的引擎 CI,无应用部署 |
| Dockerfile.ci | 远端验证镜像,不是运行时部署镜像 |
| Cargo.toml / Cargo.lock | 库工作区及锁定依赖;Rust 1.91+ |
| LICENSE / .gitignore / .dockerignore | 许可和产物排除规则 |
@@ -16,4 +14,4 @@ Aster 是可嵌入的 Endor 语言引擎,提供源码阅读、解析、AST、
当前已接通 reader → lexer/parser → ASDL AST → 名称分析 → wordcode → VM。EndorObject、无损 Number 表示、函数与显式引用管理已实现;数值算术、完整异常传播、可靠取消、内存配额和不可信代码沙箱仍未实现。实际入口及边界见 [文档索引](docs/README.md)。
本地不构建或测试 Aster,不下载依赖;运行验证在 ces-control。仅保留 CI,移除旧宿主部署定义不会停止或删除现有服务、数据库、卷及生产目录。生产运维已归 Hestia;按约定不主动查询 CI/部署结果。
Aster 是纯引擎包仓库,不设置独立 CI/CD;库测试和生成器检查由 Lyra 在 ces-control 验证其固定引擎版本。本地不构建或测试 Aster,不下载依赖。移除自动化定义不会停止或删除现有服务、数据库、卷及生产目录。生产运维已归 Hestia;按约定不主动查询 CI/部署结果。
+1 -1
View File
@@ -21,4 +21,4 @@ lyra eval crates/compiler/examples/literal.endor
run 默认调用无参数 main,可用 --entry name 选择另一个无参数入口;eval 解析一个完整表达式,二者都支持 - 读取 stdin 到 EOF。类型名称暂只保留语法,Callable 不要求预先注册语言类。例子不依赖 print 或其他默认标准库。编译器尚无算术运行语义;前端 basic.endor 含算术,只是解析示例,不能混作可执行示例。规则见 [编译契约](../../../docs/runtime/compiler.md),返回 [compiler](../README.md)。
本目录与 cases.json 继续作为引擎测试资料。独立 Lyra CLI 的 CI 使用固定 Aster 子模块中的同一份样例,实际执行 lyra run/eval 并保存 stdout/stderr、退出码及报告 artifact;报告脚本和进程入口检查位于 Lyra 仓库。Aster CI 只验证引擎,不构建 CLI。
本目录与 cases.json 继续作为引擎测试资料。独立 Lyra CLI 的 CI 使用固定 Aster 子模块中的同一份样例,实际执行 lyra run/eval 并保存 stdout/stderr、退出码及报告 artifact;报告脚本和进程入口检查位于 Lyra 仓库。Aster 不设置独立 CI/CD;Lyra CI 同时显式执行 Aster 引擎检查和 CLI 检查。
+1 -1
View File
@@ -15,7 +15,7 @@
| UTF-8 与地区 | [文本编码](runtime/text-encoding.md) | frontend、objects |
| 嵌入及宿主入口 | [使用引擎](operations/README.md) | 独立宿主仓库 |
| 引擎配置边界 | [配置](operations/configuration.md) | core/src/frame.rs |
| CI 和验证边界 | [验证](operations/validation.md) | scripts、.gitea |
| 宿主 CI 与引擎验证边界 | [验证](operations/validation.md) | scripts、Lyra CI |
| 文档维护 | [维护规则](contributing/README.md) | 各目录 README |
| 后续开发交接 | [交接](contributing/handoff.md) | 实时源码和 Git 状态 |
+1 -1
View File
@@ -21,4 +21,4 @@ Objects 拥有对象、稳定 Box、代际句柄、引用事务、私有堆和
引擎从空堆启动,不预设 Python type/元类或语言根类。代码共享不可变对象,函数用显式帧向量执行;对象返回值拥有根引用,借用读取不自动 retain。Number 保留无损表示,数学运算语义尚未实现。现有帧数/指令数限制不构成内存配额或沙箱。
宿主文件信息和数据库适配现归 [Hestia](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server),不保存 VM 堆。原生产服务、ASTER_* 配置、数据库、卷和路径由 Hestia 保持兼容;拆仓本身不迁移或删除这些资源。Aster CI 只验证引擎,数据库/HTTP/CLI 检查分别由宿主 CI 承担。返回 [文档索引](../README.md)。
宿主文件信息和数据库适配现归 [Hestia](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server),不保存 VM 堆。原生产服务、ASTER_* 配置、数据库、卷和路径由 Hestia 保持兼容;拆仓本身不迁移或删除这些资源。Aster 不设置 CI/CD;Lyra CI 显式验证固定引擎版本及 CLI,数据库和 HTTP 检查由 Hestia CI 承担。返回 [文档索引](../README.md)。
+1 -1
View File
@@ -6,7 +6,7 @@
Aster 是可嵌入引擎,只保留 objects、core、frontend、compiler。Objects 零外部依赖,Core 仅依赖 Objects;不开放私有句柄构造,不把对象引用事务搬回 Core。Reader、PEG 与 ASDL 源码链路属于引擎;网络、文件基础信息、数据库和 GUI 属于宿主。
[Lyra](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli) 接收 CLI 和示例实际输出报告;[Hestia](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server) 接收 HTTP、兼容管理命令、Host、Storage 与既有 Docker 部署。宿主使用固定提交的 Aster 子模块。Aster 保留 ces-control 引擎 CI,移除 CD;不删除远端服务、数据库、卷或旧部署目录。Tessera 可本地编译运行但不本地测试,其 CI 同样使用 ces-control。Aster/Lyra/Hestia 不在本地构建测试,不主动查询 CI/部署。
[Lyra](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli) 接收 CLI 和示例实际输出报告;[Hestia](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server) 接收 HTTP、兼容管理命令、Host、Storage 与既有 Docker 部署。宿主使用固定提交的 Aster 子模块。Aster 是纯引擎包仓库,不设置独立 CI/CD;引擎检查由 Lyra CI 在 ces-control 执行;不删除远端服务、数据库、卷或旧部署目录。Tessera 可本地编译运行但不本地测试,其 CI 同样使用 ces-control。Aster/Lyra/Hestia 不在本地构建测试,不主动查询 CI/部署。
## 已实现
+6 -6
View File
@@ -1,13 +1,13 @@
# 引擎验证
# 引擎验证边界
本地不运行 Cargo 构建、测试、Clippy、冒烟、Docker 或依赖下载。允许静态阅读、格式化、ASDL 生成/同步检查及文档链接检查;运行验证交给 ces-control。不主动查询 CI/部署结果。
Aster 是纯引擎包仓库,不设置独立 CI/CD。库测试、ASDL 生成器检查和 scripts/check.sh 保留在引擎源码中,供依赖它的宿主显式调用;没有工作流、部署镜像或自动发布。
[ci.yml](../../.gitea/workflows/ci.yml) 在 main push、pull request 和手动触发时运行引擎 CI,标签为 ces-control。Dockerfile.ci 只提供远端 Rust 1.91.1 验证环境,不生成生产服务镜像或执行部署。
[Lyra CI](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli) 在 ces-control 上取得父仓库 gitlink 指定的 Aster 版本,再进入 vendor/aster 执行 scripts/check.sh。该脚本检查 ASDL 产物、生成器回归、Cargo 格式、独立 PEG 文件格式、cargo test --workspace --locked 和 Clippy,包括 objects/core、frontend、compiler 及 rustdoc。消费方的一般 cargo test 不会自动运行依赖库的全部自身测试,因此 Lyra CI 显式运行引擎检查。
远端的 scripts/check.sh 验证 ASDL 产物、生成器回归、Cargo 格式、独立 PEG 文件格式、cargo test --workspace --locked 和 Clippy;包括 objects/core 的对象与执行测试、frontend 的读取/AST/语法测试、compiler 的名称分析/源码执行测试及 rustdoc。Compiler 的五个源码样例继续位于 crates/compiler/examples。
Compiler 的五个源码样例继续位于 crates/compiler/examples;Lyra 另外调用真实 lyra 可执行文件执行 run/eval,并保存实际 stdout、stderr、退出码及 Markdown/JSON 报告。引擎测试和命令行实际输出是两个验证层次。
五个样例的真实命令行输出报告改由 [Lyra CI](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli) 调用真实 lyra 可执行文件生成,保存源码、预期/实际 stdout、stderr 和退出码;失败也保留 artifact。Aster 的编译器测试与 Lyra 的可执行程序测试是不同层次,消费者的 cargo test 不会自动运行依赖库的全部自身测试。
HTTP、宿主 JSON、SQLite 与真实 PostgreSQL 检查归 [Hestia CI](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server)。Tessera 允许本地原生编译和窗口运行,自动化测试归其远端 CI。
HTTP、宿主 JSON、SQLite 与真实 PostgreSQL 测试归 [Hestia CI](https://gitea.entroia.com/Zayden-Jung/endorphin-hestia-server)。Aster 无 CD;现有服务和数据由 Hestia 的独立部署定义保留。CI 的 bot SSH 凭据要求见 [.gitea](../../.gitea/README.md)。源码和工作流定义不证明运行通过;未查询时结果记为未核实。
本地不运行 Aster 构建、测试、Clippy、冒烟、Docker 或依赖下载。允许静态阅读、格式化、ASDL 生成/同步检查和文档链接检查。不主动查询 CI/部署结果;用户反馈具体失败后可定向排查。测试源码或静态检查不能证明运行通过。
返回 [使用引擎](README.md)。
+1 -1
View File
@@ -52,4 +52,4 @@ Expression 模式返回表达式值;Interactive 模式严格编译一次声明
lyra run [--entry name] <file|-> 编译模块、执行初始化、调用无参数入口(默认 main),输出返回值一行。lyra eval <file|-> 编译执行一个表达式。字符串输出原始内容,数字输出无损表示,对象使用 VM str;失败仅输出 stderr 并返回非零退出码。文件和 stdin 严格 UTF-8,stdin 到 EOF 后才处理。Lyra 在成功或失败后释放代码/结果并清空自己创建的命名空间。
可执行文件见 [示例目录](../../crates/compiler/examples/README.md),API/所有权与错误路径见 [pipeline.rs](../../crates/compiler/tests/pipeline.rs),进程入口见 [CLI 检查](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli/src/branch/main/crates/cli/tests/README.md)。引擎检查由 Aster CI 覆盖,进程入口检查由独立 Lyra CI 覆盖;本地只做静态检查,不据此宣称实际执行通过,见 [验证约定](../operations/validation.md)。返回 [运行时索引](README.md)。
可执行文件见 [示例目录](../../crates/compiler/examples/README.md),API/所有权与错误路径见 [pipeline.rs](../../crates/compiler/tests/pipeline.rs),进程入口见 [CLI 检查](https://gitea.entroia.com/Zayden-Jung/endorphin-lyra-cli/src/branch/main/crates/cli/tests/README.md)。引擎和进程入口检查由独立 Lyra CI 分别显式执行;本地只做静态检查,不据此宣称实际执行通过,见 [验证约定](../operations/validation.md)。返回 [运行时索引](README.md)。
+2 -2
View File
@@ -5,6 +5,6 @@
| README.md | 本目录入口 |
| generate_ast.py | 从 Endor.asdl 生成 Rust/TypeScript/JSON Schema;--check 静态核对 |
| test_generate_ast.py | 生成器回归,仅远端运行 |
| check.sh | 远端格式、生成器、引擎测试和 Clippy |
| check.sh | 由 Lyra CI 调用的远端格式、生成器、引擎测试和 Clippy |
CLI 示例实际输出脚本已归 Lyra;数据库、HTTP 冒烟与部署脚本已归 Hestia。Aster 无生产部署。返回 [项目入口](../README.md)。
CLI 示例实际输出脚本已归 Lyra;数据库、HTTP 冒烟与部署脚本已归 Hestia。Aster 不设置独立 CI/CD。返回 [项目入口](../README.md)。