[BUG] Native image consumer rejects the complete C companion source receipt #52

Open
opened 2026-09-15 21:15:08 +02:00 by erikinkinen · 0 comments
Owner

Summary

Native image construction rejects the current original lib-cstd memory/string companion before linking. The producer completes successfully with eight selected assembly input records, but Integration's receipt validator still requires the earlier two-input inventory. The shared support-manifest validator also names the earlier input set. This is a build compatibility defect; no incorrect object was admitted and no guest executed in the failed reproduction.

Reproduction

Use fresh Integration 38424571b76b36c1e631d99fd2c859fb32311eea tools and a clean lib-cstd checkout at bdcbbea43550e8b99cd9a8221e4bc5a645637990. Select that original lib-cstd commit in an explicit component catalog, retaining the canonical repository URL. Select absolute Python, llvm-mc, llvm-ar and the reviewed cargo_source_metadata.py process-owner paths.

Call dynlink_c_memory.select with that catalog, policy="hidden", target="x86_64-unknown-none" and the selected tools, then call dynlink_c_memory.build(selection, fresh_evidence_directory). The normal scripts/package-dev-appliance.sh path reaches the same failure at the first native support build. The retained reproduction used an isolated 73-component original-commit catalog with all 72 Cargo manifests coherent; no dependency source or producer implementation was modified.

This occurred on the first image-packaging attempt. The producer, assembler and archiver each returned 0; packaging returned 1. No unchanged image build was retried.

Expected and actual behavior

Expected: correlate the complete original source input inventory with the producer's successful waited receipt, preserving exact path/byte identities, tools, policy, cleanup and output checks.

Actual: memory producer result does not match selected source/tool/policy. The only mismatched receipt field is source_inputs: the consumer expects src/memory/x86_64.s and runtime/c_exports.s; the producer records those plus three string body files and their three export files. The refusal is correct for the stale consumer contract; skipping receipt validation would not repair the incompatibility.

Environment and identity

  • Integration consumer: 38424571b76b36c1e631d99fd2c859fb32311eea; original lib-cstd producer: bdcbbea43550e8b99cd9a8221e4bc5a645637990.
  • Target: x86_64-unknown-none; hidden companion policy; development image packaging with release compilation. That failed attempt produced no complete image or image digest.
  • Python, LLVM assembler and archiver are explicitly selected host tools. Their SHA-256 identities are 0d64bd6d66d68dac91cdadafc46e22d4f09f22bdc997aaae870f42865b024a3e, 034fd6f1749a418ccce4b8538d139634327de66adc3c816b175ee546462f65f1 and 6f325680e33ebbb7913898bdc9e3dee7d77a26f672a963cf3450f7e6379f33c6, respectively.
  • Original bounded process owner and its dependency-pins module are selected explicitly. No guest authority or input session is involved.
  • Producer result SHA-256: 70875bab1cb1e802d3fc84e301dc8509c0474c73d854faa62a69b045a9144ea4. The last working full image for this new native source combination is not established; prior helper acceptance used the earlier catalog selection.

Evidence and prior checks

Current signed correction — 15 September 2026:

Signed Integration db80a2c1dfc669bd724762d476f5f5c0da005ff6 centralizes the complete eight assembly input roles plus the original producer script. Source selection and support-manifest validation share those roles; both outer artifact keys bind the contract module. The catalog changes only native lib-cstd to original bdcbbea43550e8b99cd9a8221e4bc5a645637990. Exact path/byte, tool, waited status, cleanup and output checks remain required.

Actual hidden/public production and missing/extra/altered receipt controls pass, as do both outer cache-key controls. All 162 helper commands are covered: 160 pass in the full run, and the two corrected test-only fixtures pass separately. The original missing-module and unclosed-fixture-stream failures are retained. The strict 320/321-test Rust matrix, Clippy, formatting, private rustdoc and four native builds pass without warnings.

A host-built diagnostic native image contains 38 executables and 27 shared objects, passes closure checks and builds without warnings. Its SHA-256 is ff5d774308cdf236c860a2423adab6e2594bf3c0991b26eb37cb3c64af96ddfe. It uses 73 original component selections with 72 coherent Cargo manifests and the five explicitly recorded helper corrections whose bytes match this signed checkpoint. It is not an unmodified product catalog. The unchanged editor/history, inherited-stream timing and runtime-error VM probes all pass with their original 120/15/10-second budgets and exact output checks; each leaves the source image unchanged.

Signed Docs 31bd9524c31c9d8d6a8f00248f702e6b7d428106 explains the complete source contract. All 45 tests and canonical checks pass. The complete manual renders 2,375 pages without final warnings; all 433,817 word boxes are in bounds and changed page 2281 passes visual review. Original API snapshots are unchanged. Docs CI 885/886 passes with all four complete logs (762,204 bytes); reference passes converge with 35/1/0 warnings and zero final warnings. Integration CI 1639/1640 remains queued at its first observation; the build compatibility issue stays open pending its complete CI. Full Exsh frame proof, coherent product adoption and both complete EriX-in-EriX build generations remain open.

Original failed-reproduction evidence:

All three producer/tool receipts are complete successful waits without cleanup failure. Comparing the retained result with the consumer predicate identifies only the assembly-input inventory mismatch. Packaging stops before kernel linking or guest launch; no new image/VM acceptance is claimed.

The preceding consumer checkpoint passes all 162 helper commands against their declared source selection and its strict Rust matrix. Those receipts do not validate this newer native source combination. Source, tool, result and failure logs remain retained with their original statuses.

Repair must cover the complete source inventory and support-manifest identity, actual hidden/public producer output, malformed/missing/extra input refusals and cache invalidation. Full helper and matching-image validation remain required; no old/mixed result may gain acceptance through omitted checks.

Tracking

Owning review: #12. Coordinated source inventory and shell workspace design: #1. The corrected diagnostic image and three guest probes pass. Keep this issue open pending complete current-head Integration CI; the separate Exsh frame-proof defect remains open.

## Summary Native image construction rejects the current original lib-cstd memory/string companion before linking. The producer completes successfully with eight selected assembly input records, but Integration's receipt validator still requires the earlier two-input inventory. The shared support-manifest validator also names the earlier input set. This is a build compatibility defect; no incorrect object was admitted and no guest executed in the failed reproduction. ## Reproduction Use fresh Integration `38424571b76b36c1e631d99fd2c859fb32311eea` tools and a clean lib-cstd checkout at `bdcbbea43550e8b99cd9a8221e4bc5a645637990`. Select that original lib-cstd commit in an explicit component catalog, retaining the canonical repository URL. Select absolute Python, llvm-mc, llvm-ar and the reviewed cargo_source_metadata.py process-owner paths. Call `dynlink_c_memory.select` with that catalog, `policy="hidden"`, `target="x86_64-unknown-none"` and the selected tools, then call `dynlink_c_memory.build(selection, fresh_evidence_directory)`. The normal `scripts/package-dev-appliance.sh` path reaches the same failure at the first native support build. The retained reproduction used an isolated 73-component original-commit catalog with all 72 Cargo manifests coherent; no dependency source or producer implementation was modified. This occurred on the first image-packaging attempt. The producer, assembler and archiver each returned 0; packaging returned 1. No unchanged image build was retried. ## Expected and actual behavior Expected: correlate the complete original source input inventory with the producer's successful waited receipt, preserving exact path/byte identities, tools, policy, cleanup and output checks. Actual: `memory producer result does not match selected source/tool/policy`. The only mismatched receipt field is `source_inputs`: the consumer expects `src/memory/x86_64.s` and `runtime/c_exports.s`; the producer records those plus three string body files and their three export files. The refusal is correct for the stale consumer contract; skipping receipt validation would not repair the incompatibility. ## Environment and identity - Integration consumer: `38424571b76b36c1e631d99fd2c859fb32311eea`; original lib-cstd producer: `bdcbbea43550e8b99cd9a8221e4bc5a645637990`. - Target: x86_64-unknown-none; hidden companion policy; development image packaging with release compilation. That failed attempt produced no complete image or image digest. - Python, LLVM assembler and archiver are explicitly selected host tools. Their SHA-256 identities are `0d64bd6d66d68dac91cdadafc46e22d4f09f22bdc997aaae870f42865b024a3e`, `034fd6f1749a418ccce4b8538d139634327de66adc3c816b175ee546462f65f1` and `6f325680e33ebbb7913898bdc9e3dee7d77a26f672a963cf3450f7e6379f33c6`, respectively. - Original bounded process owner and its dependency-pins module are selected explicitly. No guest authority or input session is involved. - Producer result SHA-256: `70875bab1cb1e802d3fc84e301dc8509c0474c73d854faa62a69b045a9144ea4`. The last working full image for this new native source combination is not established; prior helper acceptance used the earlier catalog selection. ## Evidence and prior checks Current signed correction — 15 September 2026: Signed Integration `db80a2c1dfc669bd724762d476f5f5c0da005ff6` centralizes the complete eight assembly input roles plus the original producer script. Source selection and support-manifest validation share those roles; both outer artifact keys bind the contract module. The catalog changes only native lib-cstd to original `bdcbbea43550e8b99cd9a8221e4bc5a645637990`. Exact path/byte, tool, waited status, cleanup and output checks remain required. Actual hidden/public production and missing/extra/altered receipt controls pass, as do both outer cache-key controls. All 162 helper commands are covered: 160 pass in the full run, and the two corrected test-only fixtures pass separately. The original missing-module and unclosed-fixture-stream failures are retained. The strict 320/321-test Rust matrix, Clippy, formatting, private rustdoc and four native builds pass without warnings. A host-built diagnostic native image contains 38 executables and 27 shared objects, passes closure checks and builds without warnings. Its SHA-256 is `ff5d774308cdf236c860a2423adab6e2594bf3c0991b26eb37cb3c64af96ddfe`. It uses 73 original component selections with 72 coherent Cargo manifests and the five explicitly recorded helper corrections whose bytes match this signed checkpoint. It is not an unmodified product catalog. The unchanged editor/history, inherited-stream timing and runtime-error VM probes all pass with their original 120/15/10-second budgets and exact output checks; each leaves the source image unchanged. Signed Docs `31bd9524c31c9d8d6a8f00248f702e6b7d428106` explains the complete source contract. All 45 tests and canonical checks pass. The complete manual renders 2,375 pages without final warnings; all 433,817 word boxes are in bounds and changed page 2281 passes visual review. Original API snapshots are unchanged. Docs CI 885/886 passes with all four complete logs (762,204 bytes); reference passes converge with 35/1/0 warnings and zero final warnings. Integration CI 1639/1640 remains queued at its first observation; the build compatibility issue stays open pending its complete CI. Full Exsh frame proof, coherent product adoption and both complete EriX-in-EriX build generations remain open. Original failed-reproduction evidence: All three producer/tool receipts are complete successful waits without cleanup failure. Comparing the retained result with the consumer predicate identifies only the assembly-input inventory mismatch. Packaging stops before kernel linking or guest launch; no new image/VM acceptance is claimed. The preceding consumer checkpoint passes all 162 helper commands against their declared source selection and its strict Rust matrix. Those receipts do not validate this newer native source combination. Source, tool, result and failure logs remain retained with their original statuses. Repair must cover the complete source inventory and support-manifest identity, actual hidden/public producer output, malformed/missing/extra input refusals and cache invalidation. Full helper and matching-image validation remain required; no old/mixed result may gain acceptance through omitted checks. ## Tracking Owning review: https://git.erikinkinen.fi/erix/integration/pulls/12. Coordinated source inventory and shell workspace design: https://git.erikinkinen.fi/erix/integration/issues/1. The corrected diagnostic image and three guest probes pass. Keep this issue open pending complete current-head Integration CI; the separate Exsh frame-proof defect remains open.
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
erix/integration#52
No description provided.