WIP: Correct standalone service linking and reject linker warnings #3

Draft
erikinkinen wants to merge 5 commits from feature/posix-compat into main
Owner

Summary and rationale

Correct the standalone service link so it uses the existing linker script and rejects linker warnings. The previous command could return Cargo success while producing an ELF with entry zero and no declared service entrypoint.

Tracking and scope

  • Defect: #2; component audit: #1; related finding: erix/e2fsd#2.
  • Signed revision: d91d3f64a7bcd343163d0037f34aa5081a1d1b06 on feature/posix-compat.
  • CI source helper: e2b1cf5995bcf6334839cda9a013e90fa97787d5.
  • Only the workflow and README, ARCHITECTURE and ROADMAP change. Cargo pins, production Rust, linker scripts and feature selection remain unchanged.

Architecture, authority and failure behavior

The final cargo rustc invocation explicitly selects linker.ld and --fatal-warnings. It adds no capability or runtime authority. The static script's deployment-capacity placeholders do not establish a deployable dynamic service or guest readiness.

The original warning-producing exit-zero command and zero-entry ELF are retained. Ordinary runtime/smoke artifacts require their defined service entry and referenced state-arena symbol. The intentional force-fail feature stops before arena initialization; its optimized artifact retains the correct entry and 4 KiB allocated writable NOBITS arena section while its unused conditional symbol may be absent. This source-grounded distinction preserves the original failed universal-symbol assertion without changing production code or forcing unused symbols into it.

Validation evidence

Coherent realm image service prerequisites — 18 September 2026: Signed 15d4d4a4e26bf6ef1db948dc6e1736d7bdeeff0a selects the original shared wire/startup dependency graph. Direct Rust implementation bytes are unchanged. All 6 default, all-feature and separate production development/release configurations pass 175 unit tests per configuration, strict host/native Clippy and freestanding linking with fatal linker warnings. Formatting, private-item rustdoc and Markdown pass, with zero warnings. Original push/PR CI is under observation. Matching catalog adoption and real consumer VMs remain requirements; complete realm and full in-guest build acceptance remain open.

Runtime consumer dependency alignment — 15 September 2026

Signed 47d54ab7a4f37a99e442bf8a7b0577c8ab6728b2 aligns the existing dependency selections with the original signed runtime graph. This checkpoint changes Cargo selections and the roadmap; this repository's Rust implementation files are unchanged. Formatting, strict Clippy, private rustdoc and canonical documentation checks pass without warnings. Default/all-feature development/release tests pass 175 default / 175 all-feature tests. Independent production configurations also pass strict host/native Clippy and native builds: fatd-runtime: 175 development / 175 release tests. There are 6 supported native builds in total. Push/review CI 90/91 passes with complete classified logs and no final warnings. The product catalog, product VM acceptance and guest build remain pending.

Explicit Rust/Cargo 1.97.1 passes formatting, strict default/all-feature host and runtime/all-feature freestanding Clippy, warning-denied host builds and rustdoc. Both host suites pass 175 tests. Six runtime/smoke/all-feature debug/release final links are warning-free and have their declared entry. Deliberately omitting the script with fatal warnings returns Cargo 101.

Original Cargo package IDs and 326 dependency source blobs were reverified, with unchanged lock bytes and no cross-repository path substitutions. Markdown, whitespace and eighteen workflow shell blocks plus embedded Python syntax pass. All authored code remains below 1,000 lines and the crate already denies missing_docs.

  • Formatting, strict Clippy, unit tests and warning-denied host/freestanding checks
  • Correct entry and configuration-appropriate arena checks
  • Preserved original failure and expected negative-link evidence
  • Original source/lock identity, canonical documentation and workflow checks
  • Current-revision push CI 88 and PR CI 89 pass; all four complete job logs contain no warning or failure diagnostics
  • Complete component audit and coordinated image/guest acceptance

No new guest feature is introduced. These host checks do not explain the separately tracked quota VM timeout or demonstrate a build inside EriX.

Review checklist

  • Signed canonical checkpoint and original full-commit selectors
  • Shared governance files preserved
  • No production capability or runtime change
  • Phase/topic metadata and linked bug report
  • Independent maintainer review and full dependent validation

Coherent dependency checkpoint — 20 September 2026: signed/pushed commit 8548fbb49acf871b7be94e16fc156369546b3b28 aligns original shared dependency pins with the explicit installer-rights contract. Only the manifest and roadmap change; local implementation, APIs and authority policy are unchanged. Four strict 175-unit configurations, four native builds with the maintained linker layout, host/native Clippy, formatting, private rustdoc and dependency checks pass without warnings. Original CI 94/95 passes with four complete hashed logs (143,882 bytes), zero warning candidates.

Full catalog equality and actual consumer-image validation remain required under Integration regression 68. The broader work remains tracked by phase completion, including native external Rust/LLVM/runtime rebuilding and both complete EriX-in-EriX generations. This dependency checkpoint does not close full lifecycle, frame or self-hosting acceptance.

Acknowledged terminal service dependencies — 21 September 2026: signed 7a211d081a5d7f0f9278785da947217bfd047e51 selects the original shared libraries for repeated terminal observation, exact acknowledgement and final CPU measurements under Kernel design 20. Four strict 175-test development/release and default/all-feature configurations, warning-denied host/native builds with the maintained linker layout, host/native Clippy, private rustdoc, applicable doctests, formatting and dependency/Markdown checks pass. All authored code remains below 1,000 lines. Original CI 96, 97 passes; complete hashed logs total 143,946 bytes with zero warning candidates. Full service CPU/profiler VM acceptance and guest builds remain open in Phase 6 completion.

## Summary and rationale Correct the standalone service link so it uses the existing linker script and rejects linker warnings. The previous command could return Cargo success while producing an ELF with entry zero and no declared service entrypoint. ## Tracking and scope - Defect: #2; component audit: #1; related finding: erix/e2fsd#2. - Signed revision: `d91d3f64a7bcd343163d0037f34aa5081a1d1b06` on `feature/posix-compat`. - CI source helper: `e2b1cf5995bcf6334839cda9a013e90fa97787d5`. - Only the workflow and README, ARCHITECTURE and ROADMAP change. Cargo pins, production Rust, linker scripts and feature selection remain unchanged. ## Architecture, authority and failure behavior The final cargo rustc invocation explicitly selects linker.ld and --fatal-warnings. It adds no capability or runtime authority. The static script's deployment-capacity placeholders do not establish a deployable dynamic service or guest readiness. The original warning-producing exit-zero command and zero-entry ELF are retained. Ordinary runtime/smoke artifacts require their defined service entry and referenced state-arena symbol. The intentional force-fail feature stops before arena initialization; its optimized artifact retains the correct entry and 4 KiB allocated writable NOBITS arena section while its unused conditional symbol may be absent. This source-grounded distinction preserves the original failed universal-symbol assertion without changing production code or forcing unused symbols into it. ## Validation evidence Coherent realm image service prerequisites — 18 September 2026: Signed `15d4d4a4e26bf6ef1db948dc6e1736d7bdeeff0a` selects the original shared wire/startup dependency graph. Direct Rust implementation bytes are unchanged. All 6 default, all-feature and separate production development/release configurations pass 175 unit tests per configuration, strict host/native Clippy and freestanding linking with fatal linker warnings. Formatting, private-item rustdoc and Markdown pass, with zero warnings. Original push/PR CI is under observation. Matching catalog adoption and real consumer VMs remain requirements; complete realm and full in-guest build acceptance remain open. ### Runtime consumer dependency alignment — 15 September 2026 Signed `47d54ab7a4f37a99e442bf8a7b0577c8ab6728b2` aligns the existing dependency selections with the original signed runtime graph. This checkpoint changes Cargo selections and the roadmap; this repository's Rust implementation files are unchanged. Formatting, strict Clippy, private rustdoc and canonical documentation checks pass without warnings. Default/all-feature development/release tests pass 175 default / 175 all-feature tests. Independent production configurations also pass strict host/native Clippy and native builds: `fatd-runtime`: 175 development / 175 release tests. There are 6 supported native builds in total. Push/review CI 90/91 passes with complete classified logs and no final warnings. The product catalog, product VM acceptance and guest build remain pending. Explicit Rust/Cargo 1.97.1 passes formatting, strict default/all-feature host and runtime/all-feature freestanding Clippy, warning-denied host builds and rustdoc. Both host suites pass 175 tests. Six runtime/smoke/all-feature debug/release final links are warning-free and have their declared entry. Deliberately omitting the script with fatal warnings returns Cargo 101. Original Cargo package IDs and 326 dependency source blobs were reverified, with unchanged lock bytes and no cross-repository path substitutions. Markdown, whitespace and eighteen workflow shell blocks plus embedded Python syntax pass. All authored code remains below 1,000 lines and the crate already denies missing_docs. - [x] Formatting, strict Clippy, unit tests and warning-denied host/freestanding checks - [x] Correct entry and configuration-appropriate arena checks - [x] Preserved original failure and expected negative-link evidence - [x] Original source/lock identity, canonical documentation and workflow checks - [x] Current-revision [push CI 88](https://git.erikinkinen.fi/erix/fatd/actions/runs/88) and [PR CI 89](https://git.erikinkinen.fi/erix/fatd/actions/runs/89) pass; all four complete job logs contain no warning or failure diagnostics - [ ] Complete component audit and coordinated image/guest acceptance No new guest feature is introduced. These host checks do not explain the separately tracked quota VM timeout or demonstrate a build inside EriX. ## Review checklist - [x] Signed canonical checkpoint and original full-commit selectors - [x] Shared governance files preserved - [x] No production capability or runtime change - [x] Phase/topic metadata and linked bug report - [ ] Independent maintainer review and full dependent validation Coherent dependency checkpoint — 20 September 2026: signed/pushed commit [8548fbb49acf871b7be94e16fc156369546b3b28](https://git.erikinkinen.fi/erix/fatd/commit/8548fbb49acf871b7be94e16fc156369546b3b28) aligns original shared dependency pins with the explicit installer-rights contract. Only the manifest and roadmap change; local implementation, APIs and authority policy are unchanged. Four strict 175-unit configurations, four native builds with the maintained linker layout, host/native Clippy, formatting, private rustdoc and dependency checks pass without warnings. Original CI 94/95 passes with four complete hashed logs (143,882 bytes), zero warning candidates. Full catalog equality and actual consumer-image validation remain required under [Integration regression 68](https://git.erikinkinen.fi/erix/integration/issues/68). The broader work remains tracked by [phase completion](https://git.erikinkinen.fi/erix/integration/issues/65), including native external Rust/LLVM/runtime rebuilding and both complete EriX-in-EriX generations. This dependency checkpoint does not close full lifecycle, frame or self-hosting acceptance. Acknowledged terminal service dependencies — 21 September 2026: signed [7a211d081a5d7f0f9278785da947217bfd047e51](https://git.erikinkinen.fi/erix/fatd/commit/7a211d081a5d7f0f9278785da947217bfd047e51) selects the original shared libraries for repeated terminal observation, exact acknowledgement and final CPU measurements under [Kernel design 20](https://git.erikinkinen.fi/erix/kernel/issues/20). Four strict 175-test development/release and default/all-feature configurations, warning-denied host/native builds with the maintained linker layout, host/native Clippy, private rustdoc, applicable doctests, formatting and dependency/Markdown checks pass. All authored code remains below 1,000 lines. Original CI [96](https://git.erikinkinen.fi/erix/fatd/actions/runs/96), [97](https://git.erikinkinen.fi/erix/fatd/actions/runs/97) passes; complete hashed logs total 143,946 bytes with zero warning candidates. Full service CPU/profiler VM acceptance and guest builds remain open in [Phase 6 completion](https://git.erikinkinen.fi/erix/integration/issues/65).
fix: Select the service linker script in standalone CI
All checks were successful
CI / markdown (push) Successful in 12s
CI / test (push) Successful in 1m24s
CI / markdown (pull_request) Successful in 14s
CI / test (pull_request) Successful in 1m46s
d91d3f64a7
Pass the existing linker script and fatal-warning policy to the standalone
service final link so a missing entry cannot pass with a zero-entry ELF.
Select the published original-source preparation helper and document the
static entry/arena contract without changing runtime code, Cargo pins or
packaged service behavior.

Strict host and freestanding checks pass with inspected runtime/smoke and
all-feature debug/release artifacts. Preserve the original false-success
ELF and the expected missing-script failure. Optimized deliberate force-fail
probes retain their arena section while their unused conditional symbol
may be absent; ordinary runtime and smoke links retain that symbol.
build: Align dependencies for coherent runtime adoption
All checks were successful
CI / markdown (push) Successful in 20s
CI / markdown (pull_request) Successful in 19s
CI / test (push) Successful in 1m32s
CI / test (pull_request) Successful in 1m34s
47d54ab7a4
Select the current original signed foundation commits in the existing Git
dependencies. Keep Rust implementation files unchanged and record the
separate product-image acceptance requirement in the roadmap.

The complete supported feature/profile matrix passes with formatting,
strict Clippy, unit tests, builds and private rustdoc. Product runtime
adoption remains pending the complete dependency graph.
build: Adopt coherent realm contract dependencies
All checks were successful
CI / markdown (push) Successful in 14s
CI / markdown (pull_request) Successful in 14s
CI / test (pull_request) Successful in 1m50s
CI / test (push) Successful in 1m52s
15d4d4a4e2
Select original signed shared revisions so coordinated runtime images can
resolve one source identity for every dependency. Preserve the component
implementation and update the roadmap to keep consumer VM acceptance explicit.

Validate default and all-feature development/release tests, strict host/native
Clippy, freestanding builds, formatting and private-item rustdoc with warnings
denied. Full image and in-guest build acceptance remain separate requirements.
build: Align the original installer authority graph
All checks were successful
CI / markdown (pull_request) Successful in 3s
CI / markdown (push) Successful in 3s
CI / test (push) Successful in 43s
CI / test (pull_request) Successful in 44s
8548fbb49a
Select the signed shared dependency revisions required by the component
catalog. Preserve local runtime behavior and capability policy while removing
mixed wire and capability sources. Track complete graph validation in
Integration issue 68; full consumer VM acceptance remains open.

Four strict host test matrices and native builds, host/native Clippy,
private rustdoc, formatting and policy checks pass without warnings.
build: Adopt acknowledged terminal accounting dependencies
All checks were successful
CI / markdown (push) Successful in 7s
CI / markdown (pull_request) Successful in 6s
CI / test (push) Successful in 1m33s
CI / test (pull_request) Successful in 1m34s
7a211d081a
Select the original signed shared revisions for repeated terminal observation,
exact acknowledgement and retained final CPU measurements. Preserve the local
component implementation while keeping the complete transitive wire graph
consistent with Kernel design 20. Full service CPU/profiler VM acceptance and
Phase 6 self-hosting remain open in Integration issue 65.

Four strict host test matrices, host/native Clippy, warning-denied host/native
builds, private rustdoc, formatting and dependency/Markdown policies pass.
All checks were successful
CI / markdown (push) Successful in 7s
CI / markdown (pull_request) Successful in 6s
CI / test (push) Successful in 1m33s
CI / test (pull_request) Successful in 1m34s
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/posix-compat:feature/posix-compat
git switch feature/posix-compat

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff feature/posix-compat
git switch feature/posix-compat
git rebase main
git switch main
git merge --ff-only feature/posix-compat
git switch feature/posix-compat
git rebase main
git switch main
git merge --no-ff feature/posix-compat
git switch main
git merge --squash feature/posix-compat
git switch main
git merge --ff-only feature/posix-compat
git switch main
git merge feature/posix-compat
git push origin main
Sign in to join this conversation.
No description provided.