Start final compiler extraction and add production-readiness gate #48

Open
lost-rob0t wants to merge 17 commits from agent/production-readiness-20260825 into main
lost-rob0t commented 2026-08-25 06:44:53 +00:00 (Migrated from github.com)

Part of #47.

What this does

This does not claim the prototype is fully ported. It makes that claim mechanically testable and starts removing compiler authority from prototype/.

  • moves the resolver effect protocol from prototype/ into final starlang-compiler
  • changes the prototype resolver file into compatibility loading only
  • makes starlang-prototype consume the final compiler-owned resolver protocol
  • adds final compiler tests for digest/fetch effect forwarding and explicit capability failure
  • adds ci/prototype-migration.tsv, tracking every implementation component still loaded by starlang-prototype.asd
  • adds ci/check-prototype-migration.sh
    • normal mode rejects untracked/invalid migration state
    • --require-final rejects any remaining partial or prototype authority
  • adds a dedicated production-readiness workflow
  • documents the P0 compiler/runtime/product/reproducibility exit gates in docs/PRODUCTION-READINESS.md

Why this slice first

starlang-runtime already owns meaningful final behavior, while starlang-compiler on main is still a narrow logic-policy system and the real parser/compiler/loader pipeline remains largely under prototype/. The compiler extraction is therefore the critical productionization path.

The resolver effect boundary is dependency-light and does not collide with the open concrete Sento (#43) or SWI MQI (#46) work.

Next extraction order

  1. syntax objects, spans, diagnostics, parser limits
  2. closed .star parser
  3. bounded hygienic macro expander
  4. semantic validation + normalized IR
  5. spec/domain compiler + import/digest policy
  6. remaining loader adapters
  7. bindings/manifests
  8. public compile/check API + final-only CLI/Nix path

Runtime work continues in parallel through the existing Sento/runtime migration slices.

Release rule

Do not mark a ledger row compat until the final system owns the behavior, final-system tests prove it without loading starlang-prototype, and the prototype file contains forwarding/composition only (or leaves the authoritative ASDF system).

Part of #47. ## What this does This does **not** claim the prototype is fully ported. It makes that claim mechanically testable and starts removing compiler authority from `prototype/`. - moves the resolver effect protocol from `prototype/` into final `starlang-compiler` - changes the prototype resolver file into compatibility loading only - makes `starlang-prototype` consume the final compiler-owned resolver protocol - adds final compiler tests for digest/fetch effect forwarding and explicit capability failure - adds `ci/prototype-migration.tsv`, tracking every implementation component still loaded by `starlang-prototype.asd` - adds `ci/check-prototype-migration.sh` - normal mode rejects untracked/invalid migration state - `--require-final` rejects any remaining `partial` or `prototype` authority - adds a dedicated production-readiness workflow - documents the P0 compiler/runtime/product/reproducibility exit gates in `docs/PRODUCTION-READINESS.md` ## Why this slice first `starlang-runtime` already owns meaningful final behavior, while `starlang-compiler` on main is still a narrow logic-policy system and the real parser/compiler/loader pipeline remains largely under `prototype/`. The compiler extraction is therefore the critical productionization path. The resolver effect boundary is dependency-light and does not collide with the open concrete Sento (#43) or SWI MQI (#46) work. ## Next extraction order 1. syntax objects, spans, diagnostics, parser limits 2. closed `.star` parser 3. bounded hygienic macro expander 4. semantic validation + normalized IR 5. spec/domain compiler + import/digest policy 6. remaining loader adapters 7. bindings/manifests 8. public compile/check API + final-only CLI/Nix path Runtime work continues in parallel through the existing Sento/runtime migration slices. ## Release rule Do not mark a ledger row `compat` until the final system owns the behavior, final-system tests prove it without loading `starlang-prototype`, and the prototype file contains forwarding/composition only (or leaves the authoritative ASDF system).
lost-rob0t commented 2026-08-25 06:49:07 +00:00 (Migrated from github.com)

Follow-up audit on the same branch found four prototype files that were already compatibility-only despite the older migration narrative: lifecycle envelopes, deterministic dispatcher, deferred dispatch completion, and dispatcher idempotency identity all forward to final systems. The ledger now records that existing final authority instead of scheduling duplicate work.

I also moved lifecycle Python/TypeScript binding generation into final starlang-compiler; prototype/message-lifecycle-bindings-prototype.lisp is now a two-function forwarding shim. Final compiler tests cover the emitted lower-camelCase contract.

Latest ledger baseline should now be 38 tracked components with 8 compatibility-only, 5 partial, and 25 still prototype-owned. The hard production gate remains intentionally red until the latter two groups reach compatibility-only or leave starlang-prototype.asd.

Follow-up audit on the same branch found four prototype files that were already compatibility-only despite the older migration narrative: lifecycle envelopes, deterministic dispatcher, deferred dispatch completion, and dispatcher idempotency identity all forward to final systems. The ledger now records that existing final authority instead of scheduling duplicate work. I also moved lifecycle Python/TypeScript binding generation into final `starlang-compiler`; `prototype/message-lifecycle-bindings-prototype.lisp` is now a two-function forwarding shim. Final compiler tests cover the emitted lower-camelCase contract. Latest ledger baseline should now be 38 tracked components with 8 compatibility-only, 5 partial, and 25 still prototype-owned. The hard production gate remains intentionally red until the latter two groups reach compatibility-only or leave `starlang-prototype.asd`.
lost-rob0t commented 2026-08-25 06:50:16 +00:00 (Migrated from github.com)

One more audit correction: prototype/runtime-journal-port-prototype.lisp is also compatibility-only. Construction, append, replay, in-memory journal, and file journal all delegate to final star-journal; the prototype keeps only condition translation. Current baseline is therefore 38 tracked / 9 compat / 5 partial / 24 prototype-owned.

One more audit correction: `prototype/runtime-journal-port-prototype.lisp` is also compatibility-only. Construction, append, replay, in-memory journal, and file journal all delegate to final `star-journal`; the prototype keeps only condition translation. Current baseline is therefore **38 tracked / 9 compat / 5 partial / 24 prototype-owned**.
This pull request has changes conflicting with the target branch.
  • ci/check-prototype-migration.sh
  • ci/prototype-migration.tsv
  • docs/PRODUCTION-READINESS.md
  • starlang-compiler/starlang-compiler.asd
  • starlang-compiler/tests/starlang-compiler-tests.lisp
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin agent/production-readiness-20260825:agent/production-readiness-20260825
git switch agent/production-readiness-20260825

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 agent/production-readiness-20260825
git switch agent/production-readiness-20260825
git rebase main
git switch main
git merge --ff-only agent/production-readiness-20260825
git switch agent/production-readiness-20260825
git rebase main
git switch main
git merge --no-ff agent/production-readiness-20260825
git switch main
git merge --squash agent/production-readiness-20260825
git switch main
git merge --ff-only agent/production-readiness-20260825
git switch main
git merge agent/production-readiness-20260825
git push origin main
Sign in to join this conversation.
No description provided.