Epic: prove final-system port complete, then delete prototype/ #58

Open
opened 2026-09-02 17:26:06 +00:00 by nsaspy · 0 comments
Owner

Goal

Treat prototype/ as a deletion target, not a permanent compatibility layer.

Audit the entire StarLang repository to determine whether all product behavior has been ported into final ASDF systems. If and only if the port is complete, delete prototype/ and every remaining prototype-only compatibility path in the same implementation effort.

If the port is not complete, do not fake completion and do not delete required behavior. Produce an exact blocker inventory, finish the remaining final-system ports in dependency order, and rerun this gate.

Approved architecture

The current approved StarLang designs require final-system ownership and prototype retirement, especially:

  • STAR-LANG-005 Resolver Effect Ports
  • STAR-LANG-006 Dependency-Ordered Final Package Extraction
  • STAR-LANG-007 Selectable Logic Backends and Expert Systems
  • STAR-LANG-009 Logic Runtime API Specification
  • STAR-LANG-010 LISA Expert-System Backend
  • STAR-LANG-011 SWI-Prolog Expert-System Backend
  • STAR-LANG-012 N-Prolog Expert-System Backend

The old star://domain:address:actor-name canonical ownership is superseded. Final StarLang code consumes the shared RFC-based STAR URI model from the approved STAR URI architecture; legacy tuple handling is compatibility input only.

Audit the whole repository

Do not check only Lisp source files. Search and classify prototype dependencies in all of these places:

  • ASDF systems and package definitions
  • src/ and all final implementation directories
  • prototype/
  • product CLI entry points
  • Lisp public APIs
  • compiler/parser/IR/materialization code
  • runtime/dispatcher/actor code
  • resolver/import/cache code
  • URI handling
  • canonical JSON and wire bindings
  • journal/lease/mailbox/capability/artifact systems
  • Sento/cl-gserver integration
  • logic/expert systems
  • LISA adapter paths
  • SWI-Prolog adapter paths
  • N-Prolog adapter paths
  • tests and test runners
  • fixtures and golden files
  • Nix flake outputs/checks/dev shells
  • Roswell entry points
  • scripts
  • CI workflows
  • examples/tutorials
  • README/docs/changelog
  • source registry assumptions
  • filesystem load calls
  • package-qualified references to prototype symbols
  • generated/runtime paths that only work because the prototype loaded first

Final-system proof requirements

Before deleting prototype/, prove all of the following:

  • Every product behavior has exactly one final-system owner.
  • No final ASDF system depends on starlang-prototype.
  • No final system imports star-lang.core-surface.prototype.
  • No normal product path loads files from prototype/.
  • The installed starlang CLI runs final systems directly.
  • Public Lisp API entry points run final systems directly.
  • Parser/compiler/normalized IR behavior is final-owned.
  • Runtime/dispatcher behavior is final-owned.
  • Resolver fetch/digest ports are final-owned and do not require prototype wrappers.
  • Shared RFC STAR URI handling is used instead of a second prototype URI implementation.
  • Journal/lease/mailbox/capability/artifact behavior is final-owned where implemented.
  • Sento/cl-gserver integration uses final runtime boundaries.
  • Logic/expert portable systems are final-owned.
  • LISA integration is final-owned.
  • SWI-Prolog integration is final-owned.
  • N-Prolog integration is final-owned.
  • Final tests cover behavior previously covered only by prototype tests.
  • Canonical fixtures/golden hashes remain valid or have an explicitly approved migration.
  • Nix checks do not succeed only because prototype/ is on the source registry/load path.
  • Clean fresh-process ASDF loads/tests succeed for final systems.
  • Documentation/examples no longer teach prototype package names as current product APIs.
  • Repository-wide search finds no required product dependency on prototype/.

Historical prose may mention the prototype only when clearly labeled historical/superseded.

Removal phase

When the proof above is green:

  1. delete prototype/;
  2. delete starlang-prototype ASDF/package definitions;
  3. delete obsolete compatibility wrappers and prototype-only scripts;
  4. remove prototype source-registry/Nix/Roswell/CI wiring;
  5. remove or migrate prototype-only fixtures/tests;
  6. update CLI and docs to final-system names only;
  7. run the full repository test/Nix/conformance matrix from a clean environment;
  8. perform a second repository-wide search for prototype, starlang-prototype, and star-lang.core-surface.prototype;
  9. keep only explicitly historical references;
  10. merge only on green.

Failure rule

If any required behavior still exists only in prototype/, the audit result is PORT INCOMPLETE. Record the exact file/symbol/system, its intended final owner, dependency blockers, and the test needed to prove the migration. Do not preserve duplicate implementations after a slice is completed.

Definition of done

The issue is complete when either:

  • the audit proves the port complete and prototype/ is removed with the full final-system test matrix green; or
  • a previously incomplete audit is followed through until the remaining ports are completed, then the proof is rerun and prototype/ is removed.

There is no accepted terminal state where the port is complete but prototype/ remains as a fallback implementation.

## Goal Treat `prototype/` as a deletion target, not a permanent compatibility layer. Audit the entire StarLang repository to determine whether all product behavior has been ported into final ASDF systems. **If and only if the port is complete, delete `prototype/` and every remaining prototype-only compatibility path in the same implementation effort.** If the port is not complete, do not fake completion and do not delete required behavior. Produce an exact blocker inventory, finish the remaining final-system ports in dependency order, and rerun this gate. ## Approved architecture The current approved StarLang designs require final-system ownership and prototype retirement, especially: - STAR-LANG-005 Resolver Effect Ports - STAR-LANG-006 Dependency-Ordered Final Package Extraction - STAR-LANG-007 Selectable Logic Backends and Expert Systems - STAR-LANG-009 Logic Runtime API Specification - STAR-LANG-010 LISA Expert-System Backend - STAR-LANG-011 SWI-Prolog Expert-System Backend - STAR-LANG-012 N-Prolog Expert-System Backend The old `star://domain:address:actor-name` canonical ownership is superseded. Final StarLang code consumes the shared RFC-based STAR URI model from the approved STAR URI architecture; legacy tuple handling is compatibility input only. ## Audit the whole repository Do not check only Lisp source files. Search and classify prototype dependencies in all of these places: - ASDF systems and package definitions - `src/` and all final implementation directories - `prototype/` - product CLI entry points - Lisp public APIs - compiler/parser/IR/materialization code - runtime/dispatcher/actor code - resolver/import/cache code - URI handling - canonical JSON and wire bindings - journal/lease/mailbox/capability/artifact systems - Sento/cl-gserver integration - logic/expert systems - LISA adapter paths - SWI-Prolog adapter paths - N-Prolog adapter paths - tests and test runners - fixtures and golden files - Nix flake outputs/checks/dev shells - Roswell entry points - scripts - CI workflows - examples/tutorials - README/docs/changelog - source registry assumptions - filesystem `load` calls - package-qualified references to prototype symbols - generated/runtime paths that only work because the prototype loaded first ## Final-system proof requirements Before deleting `prototype/`, prove all of the following: - [ ] Every product behavior has exactly one final-system owner. - [ ] No final ASDF system depends on `starlang-prototype`. - [ ] No final system imports `star-lang.core-surface.prototype`. - [ ] No normal product path loads files from `prototype/`. - [ ] The installed `starlang` CLI runs final systems directly. - [ ] Public Lisp API entry points run final systems directly. - [ ] Parser/compiler/normalized IR behavior is final-owned. - [ ] Runtime/dispatcher behavior is final-owned. - [ ] Resolver fetch/digest ports are final-owned and do not require prototype wrappers. - [ ] Shared RFC STAR URI handling is used instead of a second prototype URI implementation. - [ ] Journal/lease/mailbox/capability/artifact behavior is final-owned where implemented. - [ ] Sento/cl-gserver integration uses final runtime boundaries. - [ ] Logic/expert portable systems are final-owned. - [ ] LISA integration is final-owned. - [ ] SWI-Prolog integration is final-owned. - [ ] N-Prolog integration is final-owned. - [ ] Final tests cover behavior previously covered only by prototype tests. - [ ] Canonical fixtures/golden hashes remain valid or have an explicitly approved migration. - [ ] Nix checks do not succeed only because `prototype/` is on the source registry/load path. - [ ] Clean fresh-process ASDF loads/tests succeed for final systems. - [ ] Documentation/examples no longer teach prototype package names as current product APIs. - [ ] Repository-wide search finds no required product dependency on `prototype/`. Historical prose may mention the prototype only when clearly labeled historical/superseded. ## Removal phase When the proof above is green: 1. delete `prototype/`; 2. delete `starlang-prototype` ASDF/package definitions; 3. delete obsolete compatibility wrappers and prototype-only scripts; 4. remove prototype source-registry/Nix/Roswell/CI wiring; 5. remove or migrate prototype-only fixtures/tests; 6. update CLI and docs to final-system names only; 7. run the full repository test/Nix/conformance matrix from a clean environment; 8. perform a second repository-wide search for `prototype`, `starlang-prototype`, and `star-lang.core-surface.prototype`; 9. keep only explicitly historical references; 10. merge only on green. ## Failure rule If any required behavior still exists only in `prototype/`, the audit result is **PORT INCOMPLETE**. Record the exact file/symbol/system, its intended final owner, dependency blockers, and the test needed to prove the migration. Do not preserve duplicate implementations after a slice is completed. ## Definition of done The issue is complete when either: - the audit proves the port complete and `prototype/` is removed with the full final-system test matrix green; or - a previously incomplete audit is followed through until the remaining ports are completed, then the proof is rerun and `prototype/` is removed. There is no accepted terminal state where the port is complete but `prototype/` remains as a fallback implementation.
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
nsaspy/star-lang#58
No description provided.