Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions GLOSSARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

## C

**Declared effects** (SEP-0003): The effect names explicitly written on a function, module, or manifest surface.
**Declared effects** (SEP-0003): The effect names explicitly written on a function or platform/manifest surface.

**Effect ceiling** (SEP-0003, SEP-0008): The maximum set of effects available to a scope. Function-level `uses [...]` clauses are standardized today; broader module/project ceilings remain reserved follow-up design space.

Expand All @@ -32,7 +32,7 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

**`Channel[T]`** (SEP-0007): Bounded channel type for inter-task message passing, parameterized by the message type.

**Content-addressed package** (SEP-0008): Package identified by SHA-256 hash of its normalized source, enabling reproducible builds and cache deduplication.
**Content-addressed package** (SEP-0008): Package identified by BLAKE3 hashes of its normalized signatures and implementations, enabling reproducible builds and cache deduplication.

**Cost budget** (SEP-0004): The declared cost bound on a function, verified at compile time against inferred cost of the function body.

Expand Down Expand Up @@ -72,9 +72,9 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

**Effect** (SEP-0003): An observable interaction with the outside world (I/O, mutation, randomness), tracked via the effect system.

**Effect alias** (SEP-0003): A named shorthand for a set of atomic effects, written as `effect FileIO = FileRead | FileWrite`.
**Effect alias** (SEP-0003): A named shorthand for a set of atomic effects, written as `effect FileIO = FileRead | FileWrite;`.

**Effect handler** (SEP-0008): Platform-provided implementation of an effect's operations, connecting `foreign fn` declarations to native code.
**Effect handler** (SEP-0003, SEP-0008): Implementation of an effect's operations. SEP-0003 owns handler semantics; SEP-0008 explains Platform-provided handlers and host adapters.

**Enum** (SEP-0002): Algebraic data type with named variants, each optionally carrying data. Defined with `type Name { Variant1(T), Variant2 }`.

Expand Down Expand Up @@ -114,7 +114,7 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

**`Mul`** (SEP-0002): Compiler-known trait for the `*` operator on types that explicitly implement multiplication.

**Module** (SEP-0008): A single Spore source file that declares its own visibility boundaries and effect requirements.
**Module** (SEP-0008): A single Spore source file whose module path is derived from its filesystem path. Function-level signatures inside the module declare effects.

## N

Expand Down Expand Up @@ -146,7 +146,7 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

**`Serialize`** (SEP-0002): Compiler-known trait for converting a typed value into a serialized format.

**`select`** (SEP-0007): Expression that awaits the first of multiple tasks to complete, enabling concurrent race patterns.
**`select`** (SEP-0007): Expression that waits for the first ready channel arm or timeout arm, enabling concurrent race patterns.

**SEP (Spore Enhancement Proposal)** (SEP-0000): A design document proposing a change or addition to Spore, following a structured review process.

Expand Down Expand Up @@ -180,7 +180,7 @@ Unified terminology index for Spore. Each term links to the SEP where it is auth

## U

**`uses` clause** (SEP-0003): Annotation on a function or module declaring required effects, written as `uses [Effect1, Effect2]`.
**`uses` clause** (SEP-0003): Annotation on a function declaring required effects, written as `uses [Effect1, Effect2]`.

## V

Expand Down
118 changes: 72 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,94 @@
# spore-evolution

Proposal repository for the Spore programming project.
Proposal portal for the Spore programming project.

This repository is the long-lived home for major language, tooling, and process proposals that affect Spore as a whole.
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.

## Release-safety notice
## Read this first

The SEPs in this repository are design records and proposal texts. They are not,
by themselves, the current implementation truth, a compatibility guarantee, or a
public release contract for Spore.
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.

All numbered SEPs are currently `Draft`. During this bootstrap phase, readers
should expect some examples and terminology to lag behind the implementation.
For current release behavior, installation guidance, supported syntax, and
implementation status, use the implementation repository first: `spore/README.md`
and `spore/docs/DESIGN.md`.
implementation status, start with the implementation repository:
`spore/README.md` and `spore/docs/DESIGN.md`.

**Authoritative surface typing (as of the alignment pass):** default unsuffixed literals are **`I64`** (integer) and **`F64`** (float); UTF-8 text is **`Str`**; there is **no `Char`**. Full rules, metavariables **ι** / **φ** for other widths, and “Platform decides” ABI details are in [SEP-0002 §3.1 / Summary](seps/SEP-0002-type-system.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.

## What lives here
**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.

- `drafts/` — unnumbered proposal drafts under active discussion
- `seps/` — numbered SEP documents and historical process records
- `templates/` — authoring templates for new proposals
- `schemas/` — machine-readable rules for SEP metadata and shared machine contracts
- `scripts/` — repository validation and automation helpers
## SEP status

## Current entry points
| SEP | Title | Status | Role |
|---|---|---|---|
| [SEP-0000](seps/SEP-0000-process.md) | Spore Enhancement Proposal Process | Accepted | Repository process and lifecycle |
| [SEP-0001](seps/SEP-0001-core-syntax.md) | Core Syntax & Signatures | Accepted | Root surface grammar and signature layout |
| [SEP-0002](seps/SEP-0002-type-system.md) | Type System | Draft | Type semantics and checking |
| [SEP-0003](seps/SEP-0003-effect-system.md) | Effect System | Draft | Effect algebra, handlers, and diagnostics |
| [SEP-0004](seps/SEP-0004-cost-analysis.md) | Cost Analysis & Decidability | Draft | Four-slot cost model and verification |
| [SEP-0005](seps/SEP-0005-hole-system.md) | Hole System & Agent Protocol | Draft | Typed holes and agent-facing reports |
| [SEP-0006](seps/SEP-0006-compiler-architecture.md) | Compiler Architecture | Draft | Compiler pipeline and diagnostics |
| [SEP-0007](seps/SEP-0007-concurrency-model.md) | Concurrency Model | Draft | Structured concurrency semantics |
| [SEP-0008](seps/SEP-0008-module-package-system.md) | Module & Package System | Draft | Modules, manifests, platforms, and packages |
| [SEP-0009](seps/SEP-0009-standard-library.md) | Standard Library Surface | Draft | Prelude, core modules, and platform libraries |

- [`VISION.md`](VISION.md) — design philosophy and core principles
- [`ROADMAP.md`](ROADMAP.md) — long-term plan organized by system area
- [`seps/SEP-0000-process.md`](seps/SEP-0000-process.md) — the draft SEP process
- [`seps-index.json`](seps-index.json) — generated machine-readable SEP index
- [`templates/standards-track.md`](templates/standards-track.md) — Standards Track template
- [`templates/process.md`](templates/process.md) — Process template
- [`templates/informational.md`](templates/informational.md) — Informational template
The generated machine-readable index is [`seps-index.json`](seps-index.json).

## What is an SEP?
## Reading path

**SEP** stands for **Spore Enhancement Proposal**.
Read [VISION.md](VISION.md) first for the design philosophy. Then use SEPs in
dependency order:

An SEP is the design record for 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
[`seps/SEP-0000-process.md`](seps/SEP-0000-process.md).
1. [SEP-0000](seps/SEP-0000-process.md) for how decisions are made.
2. [SEP-0001](seps/SEP-0001-core-syntax.md) for accepted syntax forms.
3. [SEP-0002](seps/SEP-0002-type-system.md) through [SEP-0004](seps/SEP-0004-cost-analysis.md) for core static semantics.
4. [SEP-0005](seps/SEP-0005-hole-system.md) and [SEP-0006](seps/SEP-0006-compiler-architecture.md) for tool and compiler surfaces.
5. [SEP-0007](seps/SEP-0007-concurrency-model.md) through [SEP-0009](seps/SEP-0009-standard-library.md) for larger system layers.

Use [GLOSSARY.md](GLOSSARY.md) when checking cross-SEP terminology.

## Repository layout

- `drafts/` - unnumbered proposal drafts under active discussion
- `seps/` - numbered SEP documents and historical process records
- `templates/` - authoring templates for new proposals
- `schemas/` - machine-readable rules for SEP metadata and shared contracts
- `scripts/` - repository validation and automation helpers

## Status
## Authoring

**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](seps/SEP-0000-process.md). New proposals should start from the
matching template:

The process in this repository is still being bootstrapped.
- [Standards Track](templates/standards-track.md)
- [Process](templates/process.md)
- [Informational](templates/informational.md)

`SEP-0000` is intentionally a draft. We expect to revise the process, template, and metadata rules before treating them as settled.
## Validation

## Tooling direction
Run the repository checks before opening a PR:

The current first-pass automation stack is:
```bash
uv run scripts/validate_sep_documents.py
uv run scripts/check_sep_index.py
uv run scripts/check_terminology_consistency.py
```

- Shared local/CI hook runner: `prek`
- Markdown lint: `rumdl`
- Prose and terminology lint: `Vale`
- Link checking: `lychee`
- Spelling: `typos`
- Front matter schema validation: `check-jsonschema`
- Machine-readable SEP index: committed `seps-index.json`, checked for drift in local hooks and CI
- SEP-specific repository rules: minimal repo-local Python checks
- CI platform: GitHub Actions
If SEP metadata changed, regenerate the committed index first:

The static site stack is intentionally deferred for now. We want to stabilize the proposal workflow and quality gates first, then choose the publishing stack separately.
```bash
uv run scripts/check_sep_index.py --fix
```
10 changes: 8 additions & 2 deletions seps-index.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"path": "seps/SEP-0001-core-syntax.md",
"sep": 1,
"title": "SEP-0001: Core Syntax & Signatures",
"status": "Draft",
"status": "Accepted",
"type": "Standards Track",
"authors": [
"Zhan Rongrui"
Expand Down Expand Up @@ -59,6 +59,7 @@
],
"created": "2026-03-31",
"requires": [
1,
2
],
"discussion": "https://github.com/spore-lang/spore-evolution/discussions/3",
Expand All @@ -76,6 +77,7 @@
],
"created": "2026-03-31",
"requires": [
1,
2,
3
],
Expand All @@ -94,6 +96,7 @@
],
"created": "2026-03-31",
"requires": [
1,
2,
3,
4
Expand Down Expand Up @@ -135,6 +138,7 @@
"created": "2026-03-31",
"requires": [
1,
2,
3,
4
],
Expand All @@ -154,7 +158,9 @@
"created": "2026-03-31",
"requires": [
1,
3
2,
3,
4
],
"discussion": "https://github.com/spore-lang/spore-evolution/discussions/8",
"pr": null,
Expand Down
2 changes: 1 addition & 1 deletion seps/SEP-0000-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ These changes have broad, long-term consequences. Normal implementation pull req
- the relationship between human UX and Agent UX
- migration and compatibility implications

Spore therefore needs a durable, versioned, reviewable design archive.
Spore therefore needs a durable, reviewable design archive.

## Goals

Expand Down
Loading
Loading