diff --git a/.gitea/README.md b/.gitea/README.md deleted file mode 100644 index 10cc708..0000000 --- a/.gitea/README.md +++ /dev/null @@ -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. diff --git a/.gitea/workflows/README.md b/.gitea/workflows/README.md deleted file mode 100644 index f508f6c..0000000 --- a/.gitea/workflows/README.md +++ /dev/null @@ -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. diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml deleted file mode 100644 index bd1cf8e..0000000 --- a/.gitea/workflows/ci.yml +++ /dev/null @@ -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" diff --git a/Dockerfile.ci b/Dockerfile.ci deleted file mode 100644 index 9ec9f24..0000000 --- a/Dockerfile.ci +++ /dev/null @@ -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"] diff --git a/README.md b/README.md index daf0ff2..f40590e 100644 --- a/README.md +++ b/README.md @@ -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/部署结果。 diff --git a/crates/compiler/examples/README.md b/crates/compiler/examples/README.md index bb91784..1b79de5 100644 --- a/crates/compiler/examples/README.md +++ b/crates/compiler/examples/README.md @@ -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 检查。 diff --git a/docs/README.md b/docs/README.md index 80091b0..f7e48f4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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 状态 | diff --git a/docs/architecture/README.md b/docs/architecture/README.md index aec6faf..fdaa33a 100644 --- a/docs/architecture/README.md +++ b/docs/architecture/README.md @@ -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)。 diff --git a/docs/contributing/handoff.md b/docs/contributing/handoff.md index 3ee5349..056fac2 100644 --- a/docs/contributing/handoff.md +++ b/docs/contributing/handoff.md @@ -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/部署。 ## 已实现 diff --git a/docs/operations/validation.md b/docs/operations/validation.md index 549c473..218555a 100644 --- a/docs/operations/validation.md +++ b/docs/operations/validation.md @@ -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)。 diff --git a/docs/runtime/compiler.md b/docs/runtime/compiler.md index 3ed77f7..99b2d7f 100644 --- a/docs/runtime/compiler.md +++ b/docs/runtime/compiler.md @@ -52,4 +52,4 @@ Expression 模式返回表达式值;Interactive 模式严格编译一次声明 lyra run [--entry name] 编译模块、执行初始化、调用无参数入口(默认 main),输出返回值一行。lyra eval 编译执行一个表达式。字符串输出原始内容,数字输出无损表示,对象使用 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)。 diff --git a/scripts/README.md b/scripts/README.md index a2726a7..dd035a0 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -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)。