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
40 changes: 20 additions & 20 deletions REPOSITORY_READINESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,33 @@ This checklist separates repository operations from architectural and ownership
- [x] Deliberately retain default copyright during the initial proof of concept
- [x] Keep implementation contributions maintainer-led through E001
- [x] Use squash merges for focused project history
- [ ] Enable automatic deletion of merged branches if desired
- [ ] Enable private vulnerability reporting
- [ ] Add repository description and topics
- [x] Enable automatic deletion of merged branches
- [x] Enable private vulnerability reporting
- [x] Add repository description and topics
- [x] Defer GitHub Discussions until the first proof of concept is reproducible

## Recommended `main` protection after the first CI run

- [ ] Require pull requests
- [ ] Require the `Repository integrity` status check
- [ ] Block force pushes and branch deletion
- [ ] Require conversation resolution
- [ ] Keep administrator bypass available only for documented recovery
- [x] Require pull requests
- [x] Require the `Repository integrity` status check
- [x] Block force pushes and branch deletion
- [x] Require conversation resolution
- [x] Keep no standing bypass actor in the active `main` ruleset

## Proof-of-concept entrance criteria

- [ ] E001 has a standalone experiment specification
- [ ] Success, falsification, fault, and equivalence criteria are frozen before implementation
- [ ] Runtime and simulation-language choice is recorded as an ADR
- [ ] Simulated time is separated from wall-clock measurements
- [ ] Deterministic seed and trace formats are defined
- [ ] Central scheduler, global barrier, and local-interlock baselines share equivalent workloads
- [ ] Raw results and emergent observations have designated repository locations
- [x] E001 has a standalone experiment specification
- [x] Success, falsification, fault, and equivalence criteria are frozen before implementation
- [x] Runtime and simulation-language choice is recorded as an ADR
- [x] Simulated time is separated from wall-clock measurements
- [x] Deterministic seed and trace formats are defined
- [x] Central scheduler, global barrier, and local-interlock baselines share equivalent workloads
- [x] Raw results and emergent observations have designated repository locations

## Current critical path

1. Protect `main` using pull-request, conversation-resolution, and `Repository integrity` requirements.
2. Add the repository description and topics.
3. Formalize E001 as a standalone experiment specification.
4. Choose the minimal simulator stack through an ADR.
5. Implement the discrete three-ring observation chamber.
1. Implement the discrete three-ring observation chamber.
2. Map tests to the ten E001 hard invariants.
3. Run and preserve the 72-run canonical matrix.
4. Analyze directed evidence and emergent observations separately.
5. Decide whether to proceed to noncausal pneumatic instrumentation.
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# ADR 0001 — Python standard library for E001

**Date:** 2026-07-13
**Status:** Trial
**Decision owner:** Travis Levi Streets
**Affected experiment:** `SW.EXPERIMENT.E001`

## Context

E001 needs a deterministic discrete-event simulator before Superloop Workshop has evidence for a permanent runtime or substrate. The implementation must compare three coordination models under identical workloads, emit reconstructable traces, separate simulated time from wall-clock execution, and remain easy to replace if the experiment exposes a better representation.

The runtime decision must serve the experiment without becoming an architectural claim about Superloop itself.

## Decision drivers

- Deterministic execution and explicit ordering
- Minimal setup and no third-party runtime dependency
- Readable state-transition code suitable for architectural review
- Native support for structured data, queues, priority events, JSON Lines, and unit tests
- Compatibility with the repository's existing integrity workflow
- Fast iteration while the model is still expected to change
- Straightforward portability of traces and experiment configurations

## Options considered

### Python 3.13 standard library

Python provides dataclasses, enumerations, deterministic collection handling, `heapq`, JSON serialization, command-line parsing, and `unittest` without external packages. It favors inspection and experimentation over maximum throughput or compile-time guarantees.

### Rust

Rust would provide strong type and ownership guarantees and a credible path toward high-performance simulation. Its additional implementation ceremony would slow the first formal sketch, and those guarantees are not yet the principal variable under test.

### TypeScript and Node.js

TypeScript would provide accessible typed models and a natural path to browser visualization. Its runtime and package-management surface would add dependencies before the state model has stabilized.

### Formal modeling tool first

TLA+, a Petri-net tool, or a model checker could strengthen invariant analysis. Starting there would not replace the need for comparative traces and measured workload behavior. Formal verification remains a later complementary lane.

## Decision

E001 Stage A will use **Python 3.13 and the Python standard library only**.

The trial implementation will:

- live under `src/superloop_e001/`;
- use `unittest` under `tests/`;
- use integer simulation ticks, never sleeps or wall-clock time, for modeled behavior;
- write canonical JSON Lines transition traces and JSON summaries;
- accept an explicit configuration and seed;
- keep scheduler implementations interchangeable behind one experiment interface; and
- avoid NumPy, SimPy, pandas, plotting libraries, and external runtime services in Stage A.

Python is an experimental instrument here, not the Superloop substrate. Later stages may replay the same canonical inputs and compare traces from another implementation.

## Consequences

### Expected benefits

- The first model can remain small, inspectable, and dependency-free.
- CI and local execution require no package installation.
- Every transition can be serialized directly from the model state.
- A second implementation can treat E001 traces as a behavioral comparison target.

### Costs and risks

- Python's dynamic typing permits classes of mistakes that a stricter compiler might prevent.
- Interpreter performance may eventually constrain large parameter sweeps.
- Floating-point constitutive models may require stricter numerical controls in later stages.
- Convenience could encourage the prototype to become a permanent runtime without evidence.

## Validation and reversal

This trial is successful if the Stage A implementation is deterministic, dependency-free, readable, and fast enough to execute the frozen E001 matrix in ordinary CI.

The decision should be revisited if:

- repeated runs produce different canonical traces;
- the full matrix cannot complete within the declared CI budget;
- the state model becomes unsafe or opaque without stronger type guarantees;
- another implementation exposes an ambiguity hidden by Python; or
- a later physical or distributed substrate requires different semantics.

## Independence and provenance

This decision does not import Aurora modules, runtime conventions, or canonical code. Python is selected as a general experimental tool. The recovered Biological Pneumatic Engine is not a dependency and will not be copied into E001.

## Links

- [E001 experiment specification](../../experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md)
- [Minimal Interlock Contract](../../specs/CBF__SPEC__MINIMAL_INTERLOCK_CONTRACT__v0.1__2026-07-10.md)

3 changes: 3 additions & 0 deletions docs/decisions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ Copy [the ADR template](ADR_TEMPLATE.md), fill every section, and link supersedi
- **Superseded** — replaced by a named later decision.
- **Rejected** — considered but deliberately not adopted.

## Current decisions

- [ADR 0001 — Python standard library for E001](ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md) — **Trial**
Loading