Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e0eff7755f | |||
| 303c823eb0 | |||
| f787ff25e0 | |||
| 1fb6dc3b8f |
@@ -1,8 +0,0 @@
|
|||||||
.git
|
|
||||||
**/.git
|
|
||||||
target
|
|
||||||
**/target
|
|
||||||
**/AGENTS.md
|
|
||||||
**/work
|
|
||||||
**/ci-output
|
|
||||||
.env
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Tessera GUI automation
|
|
||||||
|
|
||||||
[workflows](workflows/README.md) contains repository workflows.
|
|
||||||
|
|
||||||
## CI source checkout
|
|
||||||
|
|
||||||
All workflows use `runs-on: ces-control`; no shared Runner configuration is changed.
|
|
||||||
`actions/checkout@v4` reads source over HTTPS using Gitea's automatically supplied
|
|
||||||
`GITEA_TOKEN`. No additional SSH key or known_hosts secrets are required, and
|
|
||||||
`persist-credentials: false` prevents credentials from being retained for later
|
|
||||||
build steps.
|
|
||||||
|
|
||||||
Consumer workflows read the exact Aster commit from the checked-out project's
|
|
||||||
`vendor/aster` gitlink, then use another standard checkout into that directory and
|
|
||||||
verify the resulting HEAD. They do not follow Aster main automatically. Aster is
|
|
||||||
currently a public repository, so reading it does not require private cross-repo
|
|
||||||
authorization. If that visibility changes, diagnose the job token's read access
|
|
||||||
instead of assuming an SSH key must be distributed.
|
|
||||||
|
|
||||||
The SSH URL in `.gitmodules` is retained for developer Git operations, which
|
|
||||||
continue to use the dedicated codex-bot identity. CI's built-in job token is
|
|
||||||
separate from local developer credentials.
|
|
||||||
|
|
||||||
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.
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# Tessera GUI workflows
|
|
||||||
|
|
||||||
[ci.yml](ci.yml) verifies this project on main pushes and manual dispatch from main. It runs on ces-control, with a 60-minute timeout. HTTPS checkout and job token details are in [the parent README](../README.md).
|
|
||||||
|
|
||||||
There is no production service deployment in this workflow.
|
|
||||||
|
|
||||||
The container includes the Endor examples used by the live guide and tests. It
|
|
||||||
validates the actual Aster-backed source-to-UI path, snapshot lifetime, layout and
|
|
||||||
execution budgets, failed-update preservation and stale-result invalidation, in
|
|
||||||
addition to the existing rendering checks and Clippy. Cargo uses official sources.
|
|
||||||
The primary example now executes top-level let statements and ui.page().render
|
|
||||||
through Aster's Interactive interface. Function-entry compatibility, original
|
|
||||||
source positions, page methods and page budgets are also checked. The workflow
|
|
||||||
checks the macOS packaging script's syntax without running it on Linux.
|
|
||||||
Docker is used only in this remote workflow; local compilation is native.
|
|
||||||
|
|
||||||
The test image installs DejaVu Sans/Mono and Noto CJK for font metrics and Chinese
|
|
||||||
fallback checks. Text regression tests inspect glyph selection, measured advances,
|
|
||||||
fractional scale, multiline bounds, Unicode truncation and antialiased opacity.
|
|
||||||
|
|
||||||
## Incremental verification
|
|
||||||
|
|
||||||
Gitea 1.26 concurrency groups cancel superseded runs on the same ref. Markdown-only
|
|
||||||
pushes to main skip verification; pull requests do not trigger this workflow; executable Endor examples and Rust
|
|
||||||
files (including embedded guide strings) still trigger checks. Manual dispatch
|
|
||||||
runs verification only when main is selected. Existing queued runs created from older workflow
|
|
||||||
revisions retain their old behavior.
|
|
||||||
|
|
||||||
The workflow invokes [verify-ci.sh](../../scripts/verify-ci.sh). Docker builds the
|
|
||||||
Rust 1.91.1/system/font toolchain from Dockerfile.ci over stdin, without sending a
|
|
||||||
source build context. The checkout is mounted read-only at /build. Named volumes
|
|
||||||
persist Cargo registry/git downloads and /cargo-target across container removal,
|
|
||||||
including failed tests and cancelled runs. Main push and manual runs use the main cache scope. Changing Rust/toolchain compatibility requires updating
|
|
||||||
the image and cache prefix in the script. Cargo lockfiles and fingerprints decide
|
|
||||||
which dependencies/artifacts are reusable; caches do not bypass checks.
|
|
||||||
|
|
||||||
A host flock serializes each scope's writable target cache. Signal handling
|
|
||||||
removes only the current run's named container; it never prunes shared Docker
|
|
||||||
resources or deletes cache volumes. The first run populates caches; later runs
|
|
||||||
still execute fmt, all tests and Clippy. Cargo compilation remains single-job to
|
|
||||||
limit memory pressure on the shared host. No CPU-time guarantee is implied.
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
name: Verify Tessera GUI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths-ignore: ["**/*.md"]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: tessera-${{ gitea.workflow }}-${{ gitea.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
verify:
|
|
||||||
if: gitea.ref == 'refs/heads/main'
|
|
||||||
runs-on: ces-control
|
|
||||||
timeout-minutes: 60
|
|
||||||
env:
|
|
||||||
DOCKER_BUILDKIT: "0"
|
|
||||||
steps:
|
|
||||||
- name: Checkout project
|
|
||||||
id: checkout_project
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
github-server-url: ${{ gitea.server_url }}
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Read pinned Aster revision
|
|
||||||
id: aster_revision
|
|
||||||
run: |
|
|
||||||
set -eu
|
|
||||||
aster_sha=$(git ls-tree HEAD -- vendor/aster | awk '$1 == "160000" && $2 == "commit" && $4 == "vendor/aster" { print $3 }')
|
|
||||||
case "$aster_sha" in *[!0-9a-f]*|'') echo "Invalid Aster gitlink" >&2; exit 1;; esac
|
|
||||||
test "${#aster_sha}" -eq 40
|
|
||||||
printf 'sha=%s\n' "$aster_sha" >> "$GITHUB_OUTPUT"
|
|
||||||
- name: Checkout pinned Aster
|
|
||||||
id: checkout_aster
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
github-server-url: ${{ gitea.server_url }}
|
|
||||||
repository: Zayden-Jung/endorphin-aster-vm
|
|
||||||
ref: ${{ steps.aster_revision.outputs.sha }}
|
|
||||||
path: vendor/aster
|
|
||||||
persist-credentials: false
|
|
||||||
- name: Verify Aster revision
|
|
||||||
env:
|
|
||||||
EXPECTED_ASTER_SHA: ${{ steps.aster_revision.outputs.sha }}
|
|
||||||
run: test "$(git -C vendor/aster rev-parse HEAD)" = "$EXPECTED_ASTER_SHA"
|
|
||||||
|
|
||||||
- name: Verify portable GUI code with persistent Cargo caches
|
|
||||||
env:
|
|
||||||
CI_CACHE_SCOPE: ${{ gitea.event_name == 'pull_request' && format('pr-{0}', gitea.event.pull_request.number) || 'main' }}
|
|
||||||
run: sh scripts/verify-ci.sh
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
FROM rust:1.91.1-bookworm
|
|
||||||
WORKDIR /build
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libx11-dev libxkbcommon-dev libwayland-dev libudev-dev libegl1-mesa-dev libgbm-dev fonts-dejavu-core fonts-noto-cjk \
|
|
||||||
&& 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
|
|
||||||
ENV CARGO_TARGET_DIR=/cargo-target
|
|
||||||
CMD ["sh", "-eu", "-c", "cargo fmt --check && cargo test --locked && cargo clippy --all-targets --locked -- -D warnings"]
|
|
||||||
@@ -37,8 +37,9 @@ Cargo compiles the required Aster libraries together with Tessera. No separate
|
|||||||
Aster build, service or deployment is required. Local builds download dependencies
|
Aster build, service or deployment is required. Local builds download dependencies
|
||||||
from official crates.io by default. A temporary dependency mirror may be used
|
from official crates.io by default. A temporary dependency mirror may be used
|
||||||
when the official source is unavailable, without changing global configuration.
|
when the official source is unavailable, without changing global configuration.
|
||||||
Docker and automated tests
|
Builds and validation run locally using the native Rust toolchain; no CI/CD
|
||||||
are not used locally. The command above produces a native executable. To create a
|
workflow or Docker toolchain is configured. The command above produces a native
|
||||||
|
executable. To create a
|
||||||
Finder-launchable development app on macOS, run:
|
Finder-launchable development app on macOS, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -127,7 +128,7 @@ is 14 logical pixels with a 20-pixel line height; size 2 is 28/40. Row/Column la
|
|||||||
uses measured text advances and multiline height. Device scale remains fractional,
|
uses measured text advances and multiline height. Device scale remains fractional,
|
||||||
and glyphs are rasterized at the actual display resolution rather than enlarged.
|
and glyphs are rasterized at the actual display resolution rather than enlarged.
|
||||||
The application does not bundle proprietary OS fonts. Linux installations need
|
The application does not bundle proprietary OS fonts. Linux installations need
|
||||||
fonts such as DejaVu Sans/Mono and Noto CJK; the remote test image installs these.
|
fonts such as DejaVu Sans/Mono and Noto CJK installed locally.
|
||||||
|
|
||||||
## Candidate execution and publication
|
## Candidate execution and publication
|
||||||
|
|
||||||
@@ -410,17 +411,24 @@ UTF-8 even when launched from Finder, and decoding errors are surfaced.
|
|||||||
|
|
||||||
## Validation
|
## Validation
|
||||||
|
|
||||||
Local native builds and window runs are allowed; do not run local automated tests
|
Run checks from the repository root after initializing the pinned Aster submodule:
|
||||||
or Docker. [Remote CI](.gitea/README.md) on ces-control runs the existing renderer
|
|
||||||
checks and the new Aster script/module execution, page rendering, UI layout, source-range, lifetime, budget,
|
```bash
|
||||||
failed-update and deletion-invalidation regressions, plus Clippy.
|
cargo fmt --check
|
||||||
The API regressions use actual HTTP requests, including DELETE while the worker
|
cargo test --locked
|
||||||
is occupied and a queued PUT is superseded.
|
cargo clippy --all-targets --locked -- -D warnings
|
||||||
Linux CI does not verify macOS window presentation. Aster has no standalone CI/CD; Lyra CI
|
sh -n scripts/build-macos-app.sh
|
||||||
explicitly validates the pinned engine itself. CI uses official Cargo sources
|
```
|
||||||
and standard HTTPS checkout without custom SSH secrets. Font checks cover
|
|
||||||
proportional/monospace advances, fractional scaling, multiline height, Chinese
|
The existing tests cover rendering, Aster execution, page layout, source ranges,
|
||||||
fallback, grapheme-safe truncation, antialiasing and alpha blending.
|
lifetime, budgets, failed-update preservation and deletion invalidation. API tests
|
||||||
|
use loopback HTTP, so allow local socket access. Font checks use installed system
|
||||||
|
fonts. Automated checks do not replace native window verification: launch Tessera
|
||||||
|
and check the start page, shared-object example, tab creation/closure and developer
|
||||||
|
tools. Build the macOS bundle separately with `sh scripts/build-macos-app.sh`.
|
||||||
|
|
||||||
|
There is no repository CI/CD workflow. Commits and pull requests do not trigger
|
||||||
|
builds or deployment; record the actual local check results with each delivery.
|
||||||
|
|
||||||
|
|
||||||
### Source function types
|
### Source function types
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Tessera/
|
|||||||
├── docs/
|
├── docs/
|
||||||
│ ├── architecture/ 本套架构说明和 UML 源文件
|
│ ├── architecture/ 本套架构说明和 UML 源文件
|
||||||
│ └── media/ 已有建模视频与字幕
|
│ └── media/ 已有建模视频与字幕
|
||||||
├── scripts/ 原生打包及已有远程检查入口
|
├── scripts/ 本地原生打包及 UML 文档渲染
|
||||||
└── vendor/aster/ 独立 Git 子模块:语言、编译器、VM
|
└── vendor/aster/ 独立 Git 子模块:语言、编译器、VM
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,15 @@
|
|||||||
4. [建模视频](../media/endor-campus-modeling.mp4) 与 [中文字幕](../media/endor-campus-modeling.zh.srt):已有实际窗口操作记录,静音、采样帧率有说明。
|
4. [建模视频](../media/endor-campus-modeling.mp4) 与 [中文字幕](../media/endor-campus-modeling.zh.srt):已有实际窗口操作记录,静音、采样帧率有说明。
|
||||||
5. `GET /agent`:运行中的实时 API 指南,优先于长期静态样例推断接口。
|
5. `GET /agent`:运行中的实时 API 指南,优先于长期静态样例推断接口。
|
||||||
|
|
||||||
## 本轮验证方式
|
## 当前本地开发方式(2026-11-10)
|
||||||
|
|
||||||
|
项目已移除 CI/CD 工作流、Docker 工具链定义及远程验证脚本。开发、构建、现有测试与原生窗口验收改在本机执行,命令见 [项目验证说明](../../README.md#validation)。以下保留 2026-10-25 整理时的验收记录,不代表本次检查结果。
|
||||||
|
|
||||||
|
本次使用 macOS / Rust 1.91.1:格式检查、150 项现有测试、all-target Clippy(拒绝 warnings)、打包脚本语法检查及 release app 构建均通过。应用已启动,`GET /agent` 与 `GET /code` 返回正常,窗口报告 1280 × 800 的逻辑 viewport;通过实际 REPL 创建/关闭临时标签页,页面数为 1 → 2 → 1。首次页面查询误用了不存在的 `ui.pages()`,返回 422;改为 `ui.window().pages().count` 后通过。原生 UI 检查工具启动失败,本次没有窗口外观、真实鼠标交互或跨屏验收证据。Aster 保持固定版本,未修改源码或 gitlink。
|
||||||
|
|
||||||
|
下一步优先补齐真实窗口的共享对象、标签拖放和退出清理验收,然后定义本地 `.endor` 文件的打开、保存及重启恢复方式。当前 Sources 的云文件 provider 默认断开,源码/设置尚不持久化。此外,在线 API 指南仍有旧的标签高度、overflow 箭头和增量布局状态说明,需要与现有实现及测试统一。
|
||||||
|
|
||||||
|
## 2026-10-25 整理验证方式
|
||||||
|
|
||||||
本轮是整理,不扩展业务功能。沿用工作约定:格式、`cargo clippy --all-targets --offline -- -D warnings`、原生 release 打包、真实窗口和少量人工 API 操作;不执行 cargo test、自动 smoke 脚本或 Docker。Clippy 会编译检查已有测试代码,但不代表测试已经执行。
|
本轮是整理,不扩展业务功能。沿用工作约定:格式、`cargo clippy --all-targets --offline -- -D warnings`、原生 release 打包、真实窗口和少量人工 API 操作;不执行 cargo test、自动 smoke 脚本或 Docker。Clippy 会编译检查已有测试代码,但不代表测试已经执行。
|
||||||
|
|
||||||
|
|||||||
+6
-9
@@ -9,19 +9,16 @@ when official crates.io is unavailable. Defaults remain the official source.
|
|||||||
|
|
||||||
The local bundle has identifier `com.entroia.tessera` and can be opened from Finder.
|
The local bundle has identifier `com.entroia.tessera` and can be opened from Finder.
|
||||||
It is a development app, without a distribution signature or notarization.
|
It is a development app, without a distribution signature or notarization.
|
||||||
The CI workflow only checks this script's shell syntax on Linux; native bundle
|
Check shell syntax with `sh -n scripts/build-macos-app.sh`; native bundle
|
||||||
construction and window presentation are verified on macOS.
|
construction and window presentation are verified locally on macOS.
|
||||||
|
|
||||||
Return to the [project guide](../README.md).
|
Return to the [project guide](../README.md).
|
||||||
|
|
||||||
## Remote verification
|
## Local verification
|
||||||
|
|
||||||
[verify-ci.sh](verify-ci.sh) runs only on the Linux ces-control host. It builds the
|
Build and validate with the native Rust toolchain. The project has no CI/CD
|
||||||
source-independent [toolchain image](../Dockerfile.ci), mounts the checkout
|
workflow or Docker build image. See the [validation commands](../README.md#validation)
|
||||||
read-only and retains Cargo downloads/build output in project-specific Docker
|
for formatting, tests and Clippy; window behavior is checked in the running app.
|
||||||
volumes. CI_CACHE_SCOPE selects main/manual or a PR cache namespace. It acquires
|
|
||||||
a host lock and removes its own container on interruption; cached volumes survive.
|
|
||||||
See [workflow details](../.gitea/workflows/README.md) for invalidation and triggers.
|
|
||||||
|
|
||||||
|
|
||||||
## UML 文档渲染
|
## UML 文档渲染
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Run only on the Linux CI host with Docker; never bake source into cache images.
|
|
||||||
set -eu
|
|
||||||
scope=${CI_CACHE_SCOPE:-manual}
|
|
||||||
case "$scope" in *[!a-zA-Z0-9_-]*|'') echo "Invalid cache scope" >&2; exit 1;; esac
|
|
||||||
root=$(pwd -P)
|
|
||||||
image=endorphin-tessera-gui-ci:rust-1.91.1
|
|
||||||
prefix=tessera-ci-rust-1-91-1-$scope
|
|
||||||
# Serialize access to each target directory, including manually started checks.
|
|
||||||
exec 9>"/tmp/$prefix.lock"
|
|
||||||
flock 9
|
|
||||||
sh -n scripts/build-macos-app.sh
|
|
||||||
# Empty context: only the toolchain and OS dependencies become image layers.
|
|
||||||
docker build -t "$image" - < Dockerfile.ci
|
|
||||||
name="$prefix-${GITHUB_RUN_ID:-$$}"
|
|
||||||
cleanup() { docker rm -f "$name" >/dev/null 2>&1 || true; }
|
|
||||||
trap cleanup EXIT
|
|
||||||
trap 'exit 130' INT
|
|
||||||
trap 'exit 143' TERM
|
|
||||||
docker run --name "$name" --rm --init \
|
|
||||||
--mount "type=bind,src=$root,dst=/build,readonly" \
|
|
||||||
--mount "type=volume,src=$prefix-target,dst=/cargo-target" \
|
|
||||||
--mount "type=volume,src=$prefix-registry,dst=/usr/local/cargo/registry" \
|
|
||||||
--mount "type=volume,src=$prefix-git,dst=/usr/local/cargo/git" \
|
|
||||||
"$image" &
|
|
||||||
run_pid=$!
|
|
||||||
wait "$run_pid"
|
|
||||||
+1
-1
@@ -83,4 +83,4 @@
|
|||||||
|
|
||||||
VM 和托管根只由执行 worker 操作。原生窗口收到已发布值,不收到 ObjectRef。完整 PUT 成功才接替活跃程序;Console 保留实际 VM;失败和清理语义见架构文档。
|
VM 和托管根只由执行 worker 操作。原生窗口收到已发布值,不收到 ObjectRef。完整 PUT 成功才接替活跃程序;Console 保留实际 VM;失败和清理语义见架构文档。
|
||||||
|
|
||||||
本机遵循既有检查约定:格式、离线 Clippy、原生 release 构建和人工运行检查;不执行 cargo test、自动 smoke 脚本或 Docker。已有远程检查脚本保留原位置,此次不运行或追逐 CI。
|
当前开发与验证在本机使用原生 Rust 工具链完成:格式、现有测试、Clippy、原生构建和人工运行检查。CI/CD 工作流与 Docker 检查入口已移除;具体命令见 [项目验证说明](../README.md#validation)。历史验收记录只代表当时实际执行的检查。
|
||||||
|
|||||||
@@ -207,8 +207,10 @@ page.render(Column(0,8,Column(0,8,paragraph,tail),Column(50,8,paragraph)))
|
|||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
assert_eq!(commands.len(), 2);
|
assert_eq!(commands.len(), 2);
|
||||||
assert_eq!(commands[0][0], 240.0);
|
// The 240px window reserves 56px for the rail and 8px for its inset.
|
||||||
assert_eq!(commands[1][0], 140.0);
|
// The second occurrence additionally has 50px padding on each side.
|
||||||
|
assert_eq!(commands[0][0], 176.0);
|
||||||
|
assert_eq!(commands[1][0], 76.0);
|
||||||
assert!(commands[1][1] > commands[0][1]);
|
assert!(commands[1][1] > commands[0][1]);
|
||||||
let tail = initial
|
let tail = initial
|
||||||
.frame
|
.frame
|
||||||
@@ -236,6 +238,20 @@ page.render(Column(0,8,Column(0,8,paragraph,tail),Column(50,8,paragraph)))
|
|||||||
.map(|m| m.id)
|
.map(|m| m.id)
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
);
|
);
|
||||||
|
let widths: Vec<_> = resized
|
||||||
|
.frame
|
||||||
|
.commands
|
||||||
|
.iter()
|
||||||
|
.filter_map(|command| match command {
|
||||||
|
RenderCommand::Text {
|
||||||
|
value,
|
||||||
|
wrap_bounds: Some(bounds),
|
||||||
|
..
|
||||||
|
} if value == &text => Some(bounds[0]),
|
||||||
|
_ => None,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
assert_eq!(widths, [336.0, 236.0]);
|
||||||
let heights: Vec<_> = resized
|
let heights: Vec<_> = resized
|
||||||
.frame
|
.frame
|
||||||
.commands
|
.commands
|
||||||
@@ -1758,6 +1774,15 @@ fn viewport_resize_changes_constraints_and_preserves_mount_identity_without_sour
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
// Page content excludes the 56px rail, 8px inset and 24px root padding
|
||||||
|
// on each side, both initially and after resizing the outer window.
|
||||||
|
assert!(
|
||||||
|
initial
|
||||||
|
.frame
|
||||||
|
.mounts
|
||||||
|
.iter()
|
||||||
|
.any(|mount| mount.width == 688.0 && mount.height == 24.0)
|
||||||
|
);
|
||||||
let ids: Vec<_> = initial.frame.mounts.iter().map(|mount| mount.id).collect();
|
let ids: Vec<_> = initial.frame.mounts.iter().map(|mount| mount.id).collect();
|
||||||
let document = session
|
let document = session
|
||||||
.resize(Some(crate::layout::Size {
|
.resize(Some(crate::layout::Size {
|
||||||
@@ -1780,7 +1805,7 @@ fn viewport_resize_changes_constraints_and_preserves_mount_identity_without_sour
|
|||||||
.frame
|
.frame
|
||||||
.mounts
|
.mounts
|
||||||
.iter()
|
.iter()
|
||||||
.any(|mount| mount.width == 312.0 && mount.height == 24.0)
|
.any(|mount| mount.width == 248.0 && mount.height == 24.0)
|
||||||
);
|
);
|
||||||
assert_eq!(session.inputs, 0);
|
assert_eq!(session.inputs, 0);
|
||||||
assert!(
|
assert!(
|
||||||
|
|||||||
Vendored
+2
-2
@@ -43,7 +43,7 @@ not replace Tessera's lockfile.
|
|||||||
|
|
||||||
In the designated build environment, building Tessera also builds the required
|
In the designated build environment, building Tessera also builds the required
|
||||||
Aster libraries. A separate Aster executable or service is unnecessary. Runtime
|
Aster libraries. A separate Aster executable or service is unnecessary. Runtime
|
||||||
validation follows the designated remote validation workflow; initializing the
|
validation runs locally using the commands in the [project guide](../README.md#validation); initializing the
|
||||||
submodule alone does not validate compilation or Endor execution.
|
submodule alone does not validate compilation or Endor execution.
|
||||||
|
|
||||||
## Updating Aster
|
## Updating Aster
|
||||||
@@ -56,7 +56,7 @@ git -C vendor/aster fetch origin
|
|||||||
git -C vendor/aster checkout --detach <aster-commit>
|
git -C vendor/aster checkout --detach <aster-commit>
|
||||||
```
|
```
|
||||||
|
|
||||||
Review the Aster changes and reconcile Tessera's dependencies and lockfile as needed; local native compilation is allowed, while automated tests run in CI. Commit `vendor/aster` in Tessera
|
Review the Aster changes and reconcile Tessera's dependencies and lockfile as needed; build and validate the integration locally. Commit `vendor/aster` in Tessera
|
||||||
along with any integration changes; that records the new Aster commit. Aster
|
along with any integration changes; that records the new Aster commit. Aster
|
||||||
updates do not automatically advance Tessera's recorded revision.
|
updates do not automatically advance Tessera's recorded revision.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user