Proposal portal for the Spore programming project.
This repository is the long-lived home for Spore Enhancement Proposals (SEPs): process decisions, language design records, tooling protocols, package-system design, and other cross-cutting changes that affect Spore as a whole.
The SEPs in this repository are design records. They are not, by themselves, the current implementation truth, a compatibility guarantee, or a public release contract for Spore.
For current release behavior, installation guidance, supported syntax, and
implementation status, start with the implementation repository:
spore/README.md and spore/docs/DESIGN.md.
This repository is authoritative for proposal history and accepted design direction. During the bootstrap phase, Draft SEPs may still include target behavior, future protocol shapes, or examples that are ahead of the compiler.
Current surface typing baseline: default unsuffixed literals are I64
for integers and F64 for floats; UTF-8 text is Str; there is no
Char type. SEP-0002 owns the full type-system rules and metavariables for
other fixed widths.
| SEP | Title | Status | Role |
|---|---|---|---|
| SEP-0000 | Spore Enhancement Proposal Process | Accepted | Repository process and lifecycle |
| SEP-0001 | Core Syntax & Signatures | Accepted | Root surface grammar and signature layout |
| SEP-0002 | Type System | Draft | Type semantics and checking |
| SEP-0003 | Effect System | Draft | Effect algebra, handlers, and diagnostics |
| SEP-0004 | Cost Analysis & Decidability | Draft | Four-slot cost model and verification |
| SEP-0005 | Hole System & Agent Protocol | Draft | Typed holes and agent-facing reports |
| SEP-0006 | Compiler Architecture | Draft | Compiler pipeline and diagnostics |
| SEP-0007 | Concurrency Model | Draft | Structured concurrency semantics |
| SEP-0008 | Module & Package System | Draft | Modules, manifests, platforms, and packages |
| SEP-0009 | Standard Library Surface | Draft | Prelude, core modules, and platform libraries |
The generated machine-readable index is seps-index.json.
Read VISION.md first for the design philosophy. Then use SEPs in dependency order:
- SEP-0000 for how decisions are made.
- SEP-0001 for accepted syntax forms.
- SEP-0002 through SEP-0004 for core static semantics.
- SEP-0005 and SEP-0006 for tool and compiler surfaces.
- SEP-0007 through SEP-0009 for larger system layers.
Use GLOSSARY.md when checking cross-SEP terminology.
drafts/- unnumbered proposal drafts under active discussionseps/- numbered SEP documents and historical process recordstemplates/- authoring templates for new proposalsschemas/- machine-readable rules for SEP metadata and shared contractsscripts/- repository validation and automation helpers
SEP stands for Spore Enhancement Proposal. An SEP records changes to Spore semantics, standard-library surface, tooling protocols, cross-cutting system design, or the project process itself.
For the decision threshold, lifecycle, and authoring rules, see SEP-0000. New proposals should start from the matching template:
Run the repository checks before opening a PR:
uv run scripts/validate_sep_documents.py
uv run scripts/check_sep_index.py
uv run scripts/check_terminology_consistency.pyIf SEP metadata changed, regenerate the committed index first:
uv run scripts/check_sep_index.py --fix