Make lang-rust own the complete native Rust and Bevy build surface #621

Closed
opened 2026-07-23 06:05:01 +00:00 by coilyco-ops · 2 comments
Member

Problem

PR #620 correctly detects that published full images lack Wayland/XKB development support, but it preserves the wrong tier boundary by adding the build and publication contract exclusively to full.

This is historical residue:

  • #610 originally placed wasm, Trunk, and Bevy native dependencies in full because Factory Game consumed the compatibility image.
  • Rust was subsequently moved into lang-rust (524e576), but only the self-contained /usr/local/cargo and /usr/local/rustup prefixes could be grafted into full.
  • Debian packages remained installed directly in full, and the tier documentation later codified that implementation constraint as product architecture.

A Rust specialist image that cannot compile a normal native Bevy/Winit workspace is incomplete. The complete Rust consumer contract belongs to lang-rust, not full.

Scope

Correct PR #620 on its existing issue-619 branch rather than opening a competing PR.

  • Move ownership of libasound2-dev, libudev-dev, libwayland-dev, libxkbcommon-dev, pkg-config, and the native header/link smoke check to docker/dev-base/lang-rust.
  • Make the published lang-rust manifest verification exercise that contract on linux/amd64 and linux/arm64.
  • Avoid duplicating the apt package list or native smoke implementation in full.
  • Prefer making full use the published lang-rust image as its base, then graft Go, .NET, and Python, instead of building full from core and copying only Rust prefixes. Remove the Rust graft when inheritance makes it redundant.
  • Update the tier DAG, build/publish planning, workflow dependencies, tests, and documentation consistently.
  • Keep full as the compatibility superset and retain a composition sanity check that Rust tooling is present, while lang-rust owns the detailed Rust/native contract.
  • Ensure targeted/resumed publishing of full still brings in the exact same-release lang-rust image.

Acceptance

  • agentic-os:lang-rust-<tag> can compile a representative native Bevy/Winit program on amd64 and arm64 and contains the wasm target plus Trunk.
  • agentic-os:<tag> inherits that same Rust surface without a duplicate native-package installation block.
  • The declared tier graph and docs describe the actual inheritance.
  • Focused tier/build-plan tests and the full repository validation pass.
  • PR #620 contains the correction and closes both #619 and this issue.
## Problem PR #620 correctly detects that published `full` images lack Wayland/XKB development support, but it preserves the wrong tier boundary by adding the build and publication contract exclusively to `full`. This is historical residue: - #610 originally placed wasm, Trunk, and Bevy native dependencies in `full` because Factory Game consumed the compatibility image. - Rust was subsequently moved into `lang-rust` (`524e576`), but only the self-contained `/usr/local/cargo` and `/usr/local/rustup` prefixes could be grafted into `full`. - Debian packages remained installed directly in `full`, and the tier documentation later codified that implementation constraint as product architecture. A Rust specialist image that cannot compile a normal native Bevy/Winit workspace is incomplete. The complete Rust consumer contract belongs to `lang-rust`, not `full`. ## Scope Correct PR #620 on its existing `issue-619` branch rather than opening a competing PR. - Move ownership of `libasound2-dev`, `libudev-dev`, `libwayland-dev`, `libxkbcommon-dev`, `pkg-config`, and the native header/link smoke check to `docker/dev-base/lang-rust`. - Make the published `lang-rust` manifest verification exercise that contract on linux/amd64 and linux/arm64. - Avoid duplicating the apt package list or native smoke implementation in `full`. - Prefer making `full` use the published `lang-rust` image as its base, then graft Go, .NET, and Python, instead of building `full` from `core` and copying only Rust prefixes. Remove the Rust graft when inheritance makes it redundant. - Update the tier DAG, build/publish planning, workflow dependencies, tests, and documentation consistently. - Keep `full` as the compatibility superset and retain a composition sanity check that Rust tooling is present, while `lang-rust` owns the detailed Rust/native contract. - Ensure targeted/resumed publishing of `full` still brings in the exact same-release `lang-rust` image. ## Acceptance - `agentic-os:lang-rust-<tag>` can compile a representative native Bevy/Winit program on amd64 and arm64 and contains the wasm target plus Trunk. - `agentic-os:<tag>` inherits that same Rust surface without a duplicate native-package installation block. - The declared tier graph and docs describe the actual inheritance. - Focused tier/build-plan tests and the full repository validation pass. - PR #620 contains the correction and closes both #619 and this issue.
Author
Member

WARDED_WORKFLOW: #620

details

Review gate intentionally skipped because the temporary ward default is pending brokered QA.

workflow: pull-request-and-merge; review summary: intentionally skipped because the temporary ward default is pending brokered QA.

Retrospective: The implementation felt like a coherent ownership correction once the tier DAG made inheritance explicit.
Confidence: High.
Surprises: The documentation cap required a small wording trim.
Follow-up: The director merge lane can merge the green PR.

WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/620 <details><summary>details</summary> Review gate intentionally skipped because the temporary ward default is pending brokered QA. workflow: pull-request-and-merge; review summary: intentionally skipped because the temporary ward default is pending brokered QA. Retrospective: The implementation felt like a coherent ownership correction once the tier DAG made inheritance explicit. Confidence: High. Surprises: The documentation cap required a small wording trim. Follow-up: The director merge lane can merge the green PR. </details>
Author
Member

WARDED_WORKFLOW: reservation-released

release details

Run finished with WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/620.

ward container reap released container engineer-codex-agentic-os-621 (--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs --override-reservation.

Outcome summary: #620

— Codex, via ward agent

<!-- ward-agent-reservation-released --> WARDED_WORKFLOW: reservation-released <details><summary>release details</summary> Run finished with `WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/620`. `ward container reap` released container `engineer-codex-agentic-os-621` (`--harness codex`): the terminal outcome supersedes the reservation, so a later redispatch no longer needs `--override-reservation`. **Outcome summary:** https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/pulls/620 </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#621
No description provided.