diff --git a/REPOSITORY_READINESS.md b/REPOSITORY_READINESS.md index b6acc81..61fd2bb 100644 --- a/REPOSITORY_READINESS.md +++ b/REPOSITORY_READINESS.md @@ -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. diff --git a/docs/decisions/ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md b/docs/decisions/ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md new file mode 100644 index 0000000..8c6eec3 --- /dev/null +++ b/docs/decisions/ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md @@ -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) + diff --git a/docs/decisions/README.md b/docs/decisions/README.md index e666e2d..99499c3 100644 --- a/docs/decisions/README.md +++ b/docs/decisions/README.md @@ -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** diff --git a/experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md b/experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md new file mode 100644 index 0000000..da42d80 --- /dev/null +++ b/experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md @@ -0,0 +1,346 @@ +# E001 — Three-Ring Bounded Flow + +**Artifact class:** Comparative experiment specification +**Version:** v0.1 +**Date:** 2026-07-13 +**Status:** Specified — E1; implementation not yet evaluated +**Registry identifier:** `SW.EXPERIMENT.E001` +**Decision dependency:** [ADR 0001](../../docs/decisions/ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md) + +## 1. Purpose + +E001 is the first observation chamber for the Conduit Barrier Field. It asks whether three recurrent units can coordinate bounded work through local interlocks, and whether that arrangement behaves differently from a central scheduler or a global barrier under the same workload and fault schedule. + +The experiment tests the discrete constitutional and transactional model only. It does not make pneumatic pressure, resistance, continuous flow, phase coupling, or learning causal. Those quantities may be instrumented later only after Stage A produces a safe and reproducible baseline. + +## 2. Primary question + +Can local CBF interlocks maintain bounded occupancy, accountable progress, and a smaller fault radius than a global barrier without requiring a central scheduler? + +## 3. Hypotheses + +### E001-H1 — Bounded admission + +Receiver-issued credits and fixed capacities keep every loop occupancy at or below its declared capacity under steady load, bursts, saturation, delay, and failure. + +**Falsified if:** a reachable trace records occupancy above capacity, negative credit, or admitted work that disappears without a terminal state. + +### E001-H2 — Local fault containment + +During a slow or failed-neighbor interval, the local-interlock configuration permits more healthy-loop progress and affects fewer healthy loops than the global barrier. + +**Falsified if:** the local-interlock configuration has the same or larger fault radius and no additional healthy-loop progress under both fault scenarios. + +### E001-H3 — Reciprocal accountability + +Fresh leases, idempotent proposals, and reciprocal receipts prevent stale authorization and duplicate promotion while preserving a reconstructable causal path. + +**Falsified if:** stale feedback authorizes progress, a duplicate proposal creates additional authority or occupancy, or any promoted item lacks complete provenance. + +### E001-H4 — Coordination tradeoff + +Local interlocks exchange additional coordination events for boundedness and containment without producing unbounded obligation debt or permanent starvation. + +**Falsified if:** coordination or unresolved obligations grow without bound, or admissible work remains nonterminal after its declared deadline and drain window. + +## 4. Non-claims + +E001 does not test or claim: + +- physical thermodynamic equivalence; +- a performance advantage at production scale; +- neural-style learning or phase entrainment; +- liveness for arbitrary topology; +- elimination of every useful central service; +- superiority over mature distributed runtimes; or +- that Python is the permanent Superloop substrate. + +## 5. Observation chamber + +### 5.1 Topology + +The field contains three loops arranged clockwise: + +```text +A -> B -> C -> A +``` + +The directed interlocks are `AB`, `BC`, and `CA`. Each loop is both a work processor and a bounded reservoir. Each valid work item begins at one source loop and must complete one stage at each loop in clockwise order before reaching `completed`. + +### 5.2 Fixed loop parameters + +| Parameter | Value | +| --- | ---: | +| Loops | `A`, `B`, `C` | +| Capacity per loop | 8 work units | +| Normal service rate | 1 stage per simulation tick | +| Interlock transfer limit | 1 work unit per tick | +| Credit lease | 3 simulation ticks | +| Work deadline | 60 ticks after first admission | +| Injection window | ticks 0–119 | +| Primary horizon | 240 ticks | +| Maximum drain horizon | 360 ticks | +| Canonical seeds | 17, 29, 43 | + +Occupancy includes queued, actively processed, and processed-but-not-yet-transferred work. A sender retains occupancy until transfer commits. A completed or accountable terminal item releases its final occupancy exactly once. + +### 5.3 Work-unit schema + +Every offered item has: + +```text +work_id +source_loop +route +route_index +created_at +admitted_at +deadline +schema_version +payload_digest +priority +provenance +terminal_state +terminal_reason +``` + +Canonical routes are: + +- source `A`: `A -> B -> C` +- source `B`: `B -> C -> A` +- source `C`: `C -> A -> B` + +Payload content is not semantically interpreted in E001. `payload_digest` exists to detect unintended mutation or duplication. + +### 5.4 Valid terminal states + +- `completed` +- `rejected_invalid` +- `rejected_capacity` +- `expired_deadline` +- `isolated_fault` +- `duplicate_ignored` + +No item may disappear from the offered, active, or terminal ledgers. + +## 6. Compared configurations + +All configurations consume the same ordered workload stream, capacities, service rates, failures, deadlines, and deterministic tie-breaking seed. + +### C1 — Central scheduler + +A single scheduler has global visibility. It admits, orders, reserves, and transfers work atomically while respecting the same capacities and terminal rules. It uses deterministic round-robin fairness. The central ledger supplies provenance and receipts. + +### C2 — Global barrier + +Each tick has propose, barrier, and commit phases. A transfer round commits only when every nonterminal loop reaches the barrier. A failed or unavailable participant stalls the round. Local processing that does not cross a boundary may be measured separately but cannot bypass the barrier. + +### C3 — Local CBF interlocks + +Loops advance independently. Each receiver advertises bounded credits. Every transfer requires a typed proposal, unexpired credit lease, validation, idempotent commit, and reciprocal receipt. Interlock consideration order rotates deterministically by tick to avoid fixed-position bias. There is no global scheduler and no global barrier. + +## 7. Frozen workload scenarios + +### S1 — Balanced steady load + +From ticks 0–119, offer one item every three ticks. Sources rotate `A`, `B`, `C`. Expected offers: 40. + +### S2 — Burst load + +Run S1 and additionally offer four items at each source on tick 30 and tick 60. Expected offers: 64. + +### S3 — Saturated receiver + +Run S1. At tick 30, offer eight additional items at source `A`. Loop `B` stops admitting new transfers during ticks 35–54 but continues processing existing occupancy. + +### S4 — Slow neighbor + +Run S1. Loop `B` processes at most one stage every four ticks during ticks 40–99. Normal service resumes at tick 100. + +### S5 — Failed neighbor and recovery + +Run S1. Loop `B` is unavailable for processing, admission, and acknowledgment during ticks 40–79. It resumes normal behavior at tick 80. Work retains its original deadline. + +### S6 — Circular wait + +At tick 0, preload each loop to capacity with valid, processed items whose next required destination is the clockwise neighbor. No additional work is offered. The system must not violate capacity or create an unrestricted bypass. Items that cannot advance must reach an accountable deadline state. + +### S7 — Stale feedback + +Run S1. At tick 30, replay an otherwise valid acceptance whose `fresh_until` value is tick 27. The replay must not authorize transfer. + +### S8 — Malformed and duplicate proposals + +Run S1. At tick 30, offer one item with an unsupported schema and replay one previously admitted `work_id`. Neither may create additional occupancy or authority. + +## 8. Determinism and equivalent-work contract + +For a given configuration, scenario, and seed, two runs must produce byte-identical canonical traces and summaries after volatile execution metadata is excluded. + +Equivalent-work comparison requires identical: + +- offered event order and work identifiers; +- routes and payload digests; +- loop and interlock capacities; +- service and transfer limits; +- fault start and end ticks; +- deadlines and drain horizon; +- terminal-state definitions; and +- metric formulas. + +Configuration-specific coordination events may differ. The simulator must reject a comparison if the canonical workload digest differs. + +## 9. Simulated time and execution time + +Modeled behavior uses integer `simulation_tick` only. The simulation may not call `sleep`, use current time to order transitions, or derive decisions from wall-clock duration. + +Execution metadata may separately record monotonic wall-clock duration, interpreter version, platform, commit, and invocation. Execution metadata is excluded from canonical trace equality and may not be reported as pneumatic or simulated latency. + +## 10. Canonical trace contract + +Each transition is one JSON object on one line. Keys are serialized in sorted order with UTF-8 encoding and no nondeterministic object representation. + +Required fields: + +```text +schema_version +run_id +configuration +scenario +seed +workload_digest +event_id +simulation_tick +event_type +loop_id +interlock_id +work_id +parent_event_ids +validation_state +credit_before +credit_after +occupancy_before +occupancy_after +lease_fresh_until +obligation_created +obligation_resolved +provenance_complete +invariant_checks +terminal_state +terminal_reason +``` + +Unused contextual fields are `null`; required keys are never omitted. `event_id` is a deterministic sequence within one run. + +Minimum event types: + +```text +offer, admit, reject, process, propose, credit_grant, credit_deny, +validate, transfer_commit, receipt, wait, expire, isolate, recover, +complete, invariant_check +``` + +## 11. Metrics + +Each run produces: + +- offered, admitted, completed, rejected, expired, isolated, and duplicate-ignored counts; +- maximum and mean occupancy per loop; +- occupancy-time: the sum of loop occupancy over simulation ticks; +- throughput: completed work divided by elapsed simulated ticks; +- end-to-end latency at p50, p95, and maximum; +- maximum wait and starvation duration; +- healthy-progress ticks during a neighbor disturbance; +- fault radius: healthy loops with no stage or transfer progress for five consecutive disturbance ticks; +- recovery time: ticks from disturbance end to the first ten-tick window reaching at least 90% of the S1 completion rate for that configuration; +- coordination-event count by type; +- maximum and final unresolved-obligation count; +- stale-authorization and duplicate-promotion counts; +- provenance completeness percentage; +- invariant-violation count; and +- canonical workload, trace, and summary digests. + +Percentiles use the nearest-rank method. Undefined values are serialized as `null`, never silently replaced with zero. + +## 12. Hard invariants + +1. `0 <= occupancy(loop, tick) <= capacity(loop)`. +2. `0 <= credit(interlock, tick) <= receiver_free_capacity`. +3. A `work_id` has at most one active authoritative instance. +4. A transfer commit requires current validation and an unexpired lease. +5. Every transfer commit produces one reciprocal receipt or a traceable outstanding obligation. +6. Every offered item is in exactly one of: not admitted, active, or terminal. +7. Every promoted item retains complete provenance and unchanged `payload_digest`. +8. A fault cannot authorize a prohibited transition. +9. Every wait ends in progress, accountable expiry, isolation, or the declared maximum drain horizon. +10. Replaying an event cannot increase occupancy, credit, or authority twice. + +Any hard-invariant violation makes the run invalid even if aggregate performance appears favorable. + +## 13. Success, falsification, and interpretation + +### Stage A validity gate + +The implementation is valid only if every canonical run is deterministic, all workloads are equivalent across configurations, and all hard-invariant counts are zero. + +### Evidence supporting the local CBF hypothesis + +E001-H2 receives support if C3 has a smaller fault radius or more healthy-progress ticks than C2 in S4 or S5, while preserving all invariants and avoiding permanent starvation. + +### Negative result + +The result is negative if C3 preserves safety but provides no containment or progress advantage over C1 or C2, or if its coordination cost dominates without a declared benefit. That result must be preserved and may justify simplifying or narrowing the CBF model. + +### Model rejection or revision + +The Stage A model requires revision before pneumatic instrumentation if C3 violates a hard invariant, loses work, accepts stale authority, duplicates work, or cannot terminate waits accountably. + +### Baseline validity + +If all configurations fail the same invariant or cannot process an equivalent workload, the experiment design or implementation is defective; the failure is not evidence for or against CBF. + +## 14. Run matrix + +The canonical matrix contains 72 runs: + +```text +3 configurations x 8 scenarios x 3 seeds = 72 runs +``` + +Every run must complete within the maximum drain horizon or record an invalid-run reason. No failed run may be omitted from the aggregate report. + +## 15. Evidence locations + +- Configuration inputs: `experiments/E001/config/` +- Canonical raw traces: `experiments/E001/results/raw/` +- Machine-readable summaries: `experiments/E001/results/summary/` +- Aggregate reports: `experiments/E001/results/reports/` +- Emergent observations: `experiments/E001/observations/` + +Small canonical evidence belongs in the repository. Larger generated sweeps require a manifest, digest, reproduction command, and separately declared storage location. + +## 16. Bounded-emergence protocol + +Each run matrix produces two distinct records: + +1. directed evidence for or against E001-H1 through E001-H4; and +2. observations not predicted by those hypotheses. + +An unexpected pattern must be described before interpretation and checked against defects, event-order artifacts, seed dependence, and parameter sensitivity. It remains a Seed / E0 observation until reproduced and formalized in a separate change. + +## 17. Exit decision + +After the 72 canonical runs, the experiment report must recommend one of: + +- **proceed** — instrument noncausal pneumatic quantities in Stage B; +- **repeat** — correct an implementation or experimental defect and rerun the frozen matrix; +- **revise** — change the discrete contract through a new version of this specification; or +- **stop** — preserve the negative result and terminate this architectural path. + +## Internal references + +- [Minimal Interlock Contract](../../specs/CBF__SPEC__MINIMAL_INTERLOCK_CONTRACT__v0.1__2026-07-10.md) +- [CBF–Pneumatic Computation Bridge](../../docs/bridges/COMPUTATIONAL_ARCHITECTURE__BRIDGE__CBF_AND_PNEUMATIC_COMPUTATION__v0.1__2026-07-13.md) +- [Bounded Emergence](../../docs/research/BOUNDED_EMERGENCE__OPERATING_NOTE__v0.1__2026-07-13.md) +- [Research Governance](../../GOVERNANCE.md) + diff --git a/experiments/E001/observations/README.md b/experiments/E001/observations/README.md new file mode 100644 index 0000000..7597710 --- /dev/null +++ b/experiments/E001/observations/README.md @@ -0,0 +1,17 @@ +# E001 Emergent Observations + +This directory records behavior not predicted by E001's directed hypotheses. + +Each observation should identify: + +- the originating run, commit, scenario, configuration, and seed; +- the trace interval where it appears; +- a description made before interpretation; +- plausible ordinary explanations, including defects and event-order artifacts; +- attempts to reproduce or perturb it; and +- the smallest proposed discriminating test. + +Observations begin as Seed / E0 claims. They do not change E001 metrics, success conditions, or architecture retroactively. + +No emergent observations have been recorded yet. + diff --git a/experiments/E001/results/README.md b/experiments/E001/results/README.md new file mode 100644 index 0000000..b651919 --- /dev/null +++ b/experiments/E001/results/README.md @@ -0,0 +1,16 @@ +# E001 Results + +This directory preserves reproducible evidence from the frozen E001 matrix. + +## Layout + +- `raw/` — canonical JSON Lines transition traces +- `summary/` — one machine-readable JSON summary per run +- `reports/` — aggregate comparisons and interpretation + +Each result set must identify the experiment-specification version, source commit, configuration digest, workload digest, seed, invocation, Python version, and all failed or invalid runs. + +Generated evidence must not be edited by hand. Corrections require a new run identifier and preserved supersession note. + +No canonical evidence has been produced yet. + diff --git a/experiments/README.md b/experiments/README.md index 92eb4a5..d16a0de 100644 --- a/experiments/README.md +++ b/experiments/README.md @@ -4,7 +4,8 @@ Experiments convert Superloop claims into reproducible evidence. Each experiment ## E001 — Three-Ring Bounded Flow -**Status:** Planned +**Status:** [Specified — E1](E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md) + **Registry ID:** `SW.EXPERIMENT.E001` ### Question @@ -41,5 +42,4 @@ Can three recurrent units coordinate work through local interlocks while maintai ### Success condition -The CBF configuration remains bounded and live under the declared normal and degraded cases, or produces a clear negative result identifying which architectural assumption failed. - +The CBF configuration remains bounded and live under the declared normal and degraded cases, or produces a clear negative result identifying which architectural assumption failed. The standalone specification freezes the comparison contract, run matrix, invariants, and evidence locations. diff --git a/registry/CONCEPT_REGISTRY.md b/registry/CONCEPT_REGISTRY.md index ff6645e..2ebdd4d 100644 --- a/registry/CONCEPT_REGISTRY.md +++ b/registry/CONCEPT_REGISTRY.md @@ -11,7 +11,7 @@ This registry is the identity and status index for foundational Superloop concep | `SW.CONCEPT.PNEUMATIC_COMPUTATION` | Pneumatic Computation | Formalized | E1 | Computation through pressure-differential mechanisms | | `SW.PROTOTYPE.BPE` | Biological Pneumatic Engine | Prototyped / archived input | E2-limited | Recovered PDP v2 prototype; not a Superloop runtime dependency | | `SW.BRIDGE.CBF_PNEUMATIC` | CBF–Pneumatic Bridge | Formalized | E1 | Controlled synthesis: CBF constitution plus optional pneumatic dynamics | -| `SW.EXPERIMENT.E001` | Three-Ring Bounded Flow | Planned | E0 | First comparative simulation | +| `SW.EXPERIMENT.E001` | Three-Ring Bounded Flow | Specified | E1 | Frozen 72-run comparative simulation; implementation pending | ## Naming rule diff --git a/src/README.md b/src/README.md index dcf8254..f0c910e 100644 --- a/src/README.md +++ b/src/README.md @@ -1,6 +1,6 @@ # Source Implementations -No reference runtime has been adopted yet. +No permanent reference runtime has been adopted. [ADR 0001](../docs/decisions/ADR__0001__PYTHON_STANDARD_LIBRARY_FOR_E001__2026-07-13.md) selects Python 3.13 and the standard library as a reversible trial for E001 Stage A. The first implementation should be a deterministic discrete-event simulator with: @@ -12,5 +12,4 @@ The first implementation should be a deterministic discrete-event simulator with - seeded fault injection; - interchangeable centralized, global-barrier, and local-interlock schedulers. -Language and framework selection should follow the E001 experiment design rather than precede it. - +The implementation must conform to the [frozen E001 specification](../experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md). A later runtime may replace Python if it preserves canonical inputs, traces, and declared semantics. diff --git a/tests/README.md b/tests/README.md index 8191c26..520f2b2 100644 --- a/tests/README.md +++ b/tests/README.md @@ -16,3 +16,4 @@ Tests will be organized around architectural properties rather than implementati Every implementation test should identify the concept invariant it protects. +E001 tests must map explicitly to the ten hard invariants in the [E001 specification](../experiments/E001/EXPERIMENT__E001__THREE_RING_BOUNDED_FLOW__v0.1__2026-07-13.md).