WIP: Validate filesystem media and explicit build inputs #3

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

Summary and rationale

Make standalone filesystem validation use the service's linker and explicitly selected fixture inputs. Missing or invalid generator configuration now fails before fixture execution instead of discovering another checkout. CI selects and hashes its generator and read-only checker.

The host quota fixture exercises nested directory/file creation, write, reopen, read, stat, enumeration, unlink and directory removal. It checks the inherited quota identifier and validates the final media, retaining initial/final bytes and checker evidence on failure.

Tracking and scope

  • Component audit: #1; standalone linking: #2; invalid fixture selection: #4.
  • Separate guest investigation: erix/integration#18; source setup: erix/integration#17; coordinated dependency adoption: erix/integration#1.
  • Signed current revision: da51754b1c871dfdee81c20920a8074ac105a4cb on feature/posix-compat.
  • CI helper source remains e2b1cf5995bcf6334839cda9a013e90fa97787d5. Existing Cargo dependencies now select the signed shared runtime graph.
  • Production filesystem implementation and the linker script are unchanged by the fixture-selection checkpoint. The host quota test excludes provider-handle lifecycle, guest IPC scheduling and full VM completion.

Architecture, authority and failure behavior

The host caller supplies absolute regular files through ERIX_GENERATE_BLOCK_TEST_DISK and ERIX_E2FSCK, prepares the original generator checkout and records tool/source identities. The obsolete directory selector and implicit generator discovery are removed. Refusal tests do not mutate the process environment. No guest capability or runtime fallback is added.

Checker failure or signal remains primary when evidence retention also fails. A successful checker whose evidence cannot be retained does not pass validation. CI retains its pinned process owner, 1,800-second hard deadline, 180-second output-stall deadline and 32 MiB output budget. Its child receives selected compiler, source, fixture, locale, temporary-directory and resource inputs; unrelated runner credentials and loader injection settings are excluded.

The standalone link selects the existing entry and state-arena definitions with fatal linker warnings. Deployment capacities, dynamic packaging and product VM acceptance remain separate requirements. README, ARCHITECTURE and ROADMAP describe the actual test inputs; the Rust helper and its regressions are documented inline.

Validation evidence

Original coherent realm source CI acceptance — 18 September 2026: Signed 4d8dda85e3c24daecc2b854289a923ec70485c3a passes CI 179 and CI 178. All four terminal logs are complete (235,822 bytes), with zero final warnings. This closes the original CI observation recorded above. Coherent catalog publication, actual consumer VMs and full guest-build acceptance remain separate open requirements.

Coherent realm image service prerequisites — 18 September 2026: Signed 4d8dda85e3c24daecc2b854289a923ec70485c3a 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 264 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.

Rust/Cargo 1.97.1 passes 264 tests in each default/all-feature and production development/release configuration, formatting, strict host/native Clippy, six native builds and private rustdoc without warnings. The three added tests cover missing/relative inputs, unavailable files/directories beside an existing generator, and preservation of an explicitly selected file without a basename restriction. Canonical documentation and source-size checks pass.

The original resolver probe returned another script for an unavailable explicit selection. The corrected actual resolver rejects that input with status 101 and preserves the valid selected path. Neither probe executed a generator. The original local dependency-test failure caused by an omitted checker input is retained separately; all corrected test configurations pass with the checker and original generator selected and hashed.

Both current production development/release ELFs have entry 0x64000000, matching e2fsd_entry, and the required state-arena symbol. Earlier failing-link and quota media evidence remains retained. These host checks do not establish the cause or correction of the separate guest timeout or a build inside EriX.

Push/review CI 176/177 passes with complete classified logs and no final warnings.

Review checklist

  • Original dependency/source identities and signed publication verified.
  • Supported strict local configurations and media tests pass without warnings.
  • Explicit generator refusal/selection regressions and actual resolver probes pass.
  • Existing linker/entry contract retained in current production artifacts.
  • Canonical documentation, useful rustdoc and source-size checks pass.
  • Complete classified push/review CI with no final warnings.
  • Existing guest quota scenario and complete coordinated VM/image acceptance.
  • Independent maintainer review and full component authority audit closure.

Coherent dependency checkpoint — 20 September 2026: signed/pushed commit 6157f1c31d1612b8795af5bd7e64291d28e88eae 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 264-unit configurations, four native builds with the maintained linker layout, host/native Clippy, formatting, private rustdoc and dependency checks pass without warnings. Original CI 180/181 passes with four complete hashed logs (229,094 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 5365be1aa6a486986525c236640f48eae4faaf8c selects the original shared libraries for repeated terminal observation, exact acknowledgement and final CPU measurements under Kernel design 20. All 4 strict 264-test selected development/release 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 182, 183 passes; complete hashed logs total 233,753 bytes with zero warning candidates. Full service CPU/profiler VM acceptance and guest builds remain open in Phase 6 completion.

## Summary and rationale Make standalone filesystem validation use the service's linker and explicitly selected fixture inputs. Missing or invalid generator configuration now fails before fixture execution instead of discovering another checkout. CI selects and hashes its generator and read-only checker. The host quota fixture exercises nested directory/file creation, write, reopen, read, stat, enumeration, unlink and directory removal. It checks the inherited quota identifier and validates the final media, retaining initial/final bytes and checker evidence on failure. ## Tracking and scope - Component audit: #1; standalone linking: #2; invalid fixture selection: #4. - Separate guest investigation: erix/integration#18; source setup: erix/integration#17; coordinated dependency adoption: erix/integration#1. - Signed current revision: `da51754b1c871dfdee81c20920a8074ac105a4cb` on `feature/posix-compat`. - CI helper source remains `e2b1cf5995bcf6334839cda9a013e90fa97787d5`. Existing Cargo dependencies now select the signed shared runtime graph. - Production filesystem implementation and the linker script are unchanged by the fixture-selection checkpoint. The host quota test excludes provider-handle lifecycle, guest IPC scheduling and full VM completion. ## Architecture, authority and failure behavior The host caller supplies absolute regular files through `ERIX_GENERATE_BLOCK_TEST_DISK` and `ERIX_E2FSCK`, prepares the original generator checkout and records tool/source identities. The obsolete directory selector and implicit generator discovery are removed. Refusal tests do not mutate the process environment. No guest capability or runtime fallback is added. Checker failure or signal remains primary when evidence retention also fails. A successful checker whose evidence cannot be retained does not pass validation. CI retains its pinned process owner, 1,800-second hard deadline, 180-second output-stall deadline and 32 MiB output budget. Its child receives selected compiler, source, fixture, locale, temporary-directory and resource inputs; unrelated runner credentials and loader injection settings are excluded. The standalone link selects the existing entry and state-arena definitions with fatal linker warnings. Deployment capacities, dynamic packaging and product VM acceptance remain separate requirements. README, ARCHITECTURE and ROADMAP describe the actual test inputs; the Rust helper and its regressions are documented inline. ## Validation evidence Original coherent realm source CI acceptance — 18 September 2026: Signed `4d8dda85e3c24daecc2b854289a923ec70485c3a` passes [CI 179](https://git.erikinkinen.fi/erix/e2fsd/actions/runs/179) and [CI 178](https://git.erikinkinen.fi/erix/e2fsd/actions/runs/178). All four terminal logs are complete (235,822 bytes), with zero final warnings. This closes the original CI observation recorded above. Coherent catalog publication, actual consumer VMs and full guest-build acceptance remain separate open requirements. Coherent realm image service prerequisites — 18 September 2026: Signed `4d8dda85e3c24daecc2b854289a923ec70485c3a` 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 264 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. Rust/Cargo 1.97.1 passes 264 tests in each default/all-feature and production development/release configuration, formatting, strict host/native Clippy, six native builds and private rustdoc without warnings. The three added tests cover missing/relative inputs, unavailable files/directories beside an existing generator, and preservation of an explicitly selected file without a basename restriction. Canonical documentation and source-size checks pass. The original resolver probe returned another script for an unavailable explicit selection. The corrected actual resolver rejects that input with status 101 and preserves the valid selected path. Neither probe executed a generator. The original local dependency-test failure caused by an omitted checker input is retained separately; all corrected test configurations pass with the checker and original generator selected and hashed. Both current production development/release ELFs have entry 0x64000000, matching `e2fsd_entry`, and the required state-arena symbol. Earlier failing-link and quota media evidence remains retained. These host checks do not establish the cause or correction of the separate guest timeout or a build inside EriX. Push/review CI 176/177 passes with complete classified logs and no final warnings. ## Review checklist - [x] Original dependency/source identities and signed publication verified. - [x] Supported strict local configurations and media tests pass without warnings. - [x] Explicit generator refusal/selection regressions and actual resolver probes pass. - [x] Existing linker/entry contract retained in current production artifacts. - [x] Canonical documentation, useful rustdoc and source-size checks pass. - [x] Complete classified push/review CI with no final warnings. - [ ] Existing guest quota scenario and complete coordinated VM/image acceptance. - [ ] Independent maintainer review and full component authority audit closure. Coherent dependency checkpoint — 20 September 2026: signed/pushed commit [6157f1c31d1612b8795af5bd7e64291d28e88eae](https://git.erikinkinen.fi/erix/e2fsd/commit/6157f1c31d1612b8795af5bd7e64291d28e88eae) 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 264-unit configurations, four native builds with the maintained linker layout, host/native Clippy, formatting, private rustdoc and dependency checks pass without warnings. Original CI 180/181 passes with four complete hashed logs (229,094 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 [5365be1aa6a486986525c236640f48eae4faaf8c](https://git.erikinkinen.fi/erix/e2fsd/commit/5365be1aa6a486986525c236640f48eae4faaf8c) 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). All 4 strict 264-test selected development/release 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 [182](https://git.erikinkinen.fi/erix/e2fsd/actions/runs/182), [183](https://git.erikinkinen.fi/erix/e2fsd/actions/runs/183) passes; complete hashed logs total 233,753 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).
test: Validate nested quota media and standalone service linking
All checks were successful
CI / markdown (push) Successful in 12s
CI / markdown (pull_request) Successful in 18s
CI / test (push) Successful in 7m23s
CI / test (pull_request) Successful in 7m26s
829c225767
Replay nested directory and file operations on the original quota fixture, retain initial/final media and checker results, and require an explicitly selected checker. Preserve failed checker status when evidence persistence also fails; the host test does not establish guest IPC or scheduling progress.

Correct standalone CI to use the existing service linker script with fatal linker warnings. Use the pinned Integration process owner with explicit test inputs and bounded output; publication failures preserve prior command failures. All 261 default and all-feature tests, strict Clippy, documentation and four corrected runtime/all-feature debug/release links pass without warnings. Retain the original zero-entry artifacts and failed validation results.
docs: Keep roadmap tracking in owning issues
All checks were successful
CI / markdown (pull_request) Successful in 13s
CI / markdown (push) Successful in 14s
CI / test (pull_request) Successful in 6m20s
CI / test (push) Successful in 6m23s
dbf4cf3ef5
Use public issue and PR references so the component roadmap stays
self-contained for contributors. Preserve runtime sources, feature scope
and validation requirements. All component Markdown files pass lint.
fix: Require explicit filesystem fixture sources
All checks were successful
CI / markdown (pull_request) Successful in 12s
CI / markdown (push) Successful in 13s
CI / test (push) Successful in 5m48s
CI / test (pull_request) Successful in 5m50s
da51754b1c
Reject missing or invalid generator inputs before fixture execution. Remove
implicit checkout discovery and the obsolete directory selector, document
the caller contract, and select and hash the original CI generator. Add
regressions for refusals and preservation of the selected regular file.

Align existing dependency pins with the signed runtime source graph. The
supported default/all and production development/release matrices pass
formatting, strict Clippy, unit/media tests, native builds and rustdoc with
no warnings. Product VM acceptance remains separate. Tracks issue #4.
erikinkinen changed title from WIP: Validate quota media and correct standalone service linking to WIP: Validate filesystem media and explicit build inputs 2026-09-15 18:05:50 +02:00
build: Adopt coherent realm contract dependencies
All checks were successful
CI / markdown (push) Successful in 17s
CI / markdown (pull_request) Successful in 16s
CI / test (push) Successful in 7m26s
CI / test (pull_request) Successful in 7m27s
4d8dda85e3
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 4s
CI / test (push) Successful in 2m19s
CI / test (pull_request) Successful in 2m20s
6157f1c31d
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 (pull_request) Successful in 7s
CI / markdown (push) Successful in 9s
CI / test (pull_request) Successful in 5m23s
CI / test (push) Successful in 5m24s
5365be1aa6
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.

All 4 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 (pull_request) Successful in 7s
CI / markdown (push) Successful in 9s
CI / test (pull_request) Successful in 5m23s
CI / test (push) Successful in 5m24s
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.