0%

Build identity (D1)

Goal

A --lib and a --dylib build of the same sources occupy distinct generation slots and neither evicts the other.

Implementation Sketch

Derived from compiler_repo/docs/ori_lang/proposals/approved/binary-generation-lifecycle-proposal.md. Depends on the cache root, budget, collection pass, and D3a in-flight-reference primitive delivered by plans/cache-lifecycle/ (approved cache-lifecycle-proposal.md). Implement the work items in order.

Spec References

  • Approved proposal: compiler_repo/docs/ori_lang/proposals/approved/binary-generation-lifecycle-proposal.md
  • Depends on: compiler_repo/docs/ori_lang/proposals/approved/cache-lifecycle-proposal.md (D3a primitive, composed bound)
  • Umbrella invariant T4: compiler_repo/docs/ori_lang/proposals/approved/toolchain-philosophy-proposal.md

Work Items

  • Key a generation slot by the full resolved-invocation tuple — project root (canonicalized), profile, target triple, output kind (bin/--lib/--dylib/--wasm/each --emit), and logical output path — so --lib and --dylib builds never share or evict one slot