plan: eliminate the Implicit ownership default (0121)

Executable projection of spec 0062 (#55) into four tasks: (1) the
borrow-return reject, (2) the borrow-over-value reject, (3) a throwaway
`ail migrate-modes` pass (parse -> Implicit->Own, keep explicit
own/borrow -> print explicit), (4) the atomic cutover (run the
migration over the corpus + hand-fix the read-only-heap params the
now-universal linearity check flags, delete the variant + all
compile sites compiler-driven, parser bare-slot reject, reset the hash
pins, flip the leak pin, update both contracts, drop the throwaway).
Placeholder-free; all seven surface fixtures parse-gated against HEAD.

Spec 0062 marked approved (user, 2026-06-01) and its soundness
re-validated against post-#56 HEAD: the three own-return-provenance /
regime-A fixtures still exit 1 under [consume-while-borrowed]; #56's
application-is-a-borrow change does not weaken them (none is an
application of a borrowed binder).

plan-recon folded four spec-enumeration corrections into the plan:
- kernel migration target is raw_buf/source.ail, not the retired
  kernel_stub/source.ail the spec cited;
- FIVE hash pins shift, not the two the spec named (embed_export_hash,
  eq_ord_e2e, mono_hash_stability are the missed twins);
- design/contracts/0002-data-model.md also documents the "implicit"
  JSON form and is drift-anchored -> updates alongside 0008;
- real counts are 261 fn-type fixtures (spec ~208) and 17 fn_implicit
  references (spec 16); the compiler is the authoritative enumerator.

refs #55
This commit is contained in:
2026-06-01 16:19:07 +02:00
parent aaa70d4c35
commit a84ba596cf
2 changed files with 975 additions and 1 deletions
+5 -1
View File
@@ -1,7 +1,11 @@
# Eliminate the Implicit ownership default — Design Spec
**Date:** 2026-06-01
**Status:** Draft — awaiting user spec review
**Status:** Approved (user, 2026-06-01). Soundness re-validated against
post-#56 HEAD: the three own-return-provenance / regime-A fixtures still
exit 1 under `[consume-while-borrowed]`#56's application-is-a-borrow
change does not weaken them (none is an application of a borrowed binder;
all are return/let/ctor consume positions, untouched by #56).
**Authors:** orchestrator + Claude
## Goal