Skip to content

Commit 99b7b95

Browse files
committed
Release 0.3.0
1 parent 2efa2ba commit 99b7b95

23 files changed

Lines changed: 1413 additions & 352 deletions

.github/workflows/ci-python-zensical.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ env:
3232
PYTHONIOENCODING: "utf-8" # WHY: Consistent encoding across platforms.
3333
PYTHON_VERSION: "3.15"
3434
UV_PYTHON: "3.15"
35-
DOC_SECTIONS: "Basic,Structure,Admissibility,Separation,Invariants,Theorems,Witness"
36-
# WHY: Enforce critical docs sections for theory repositories.
35+
DOC_SECTIONS: "Core, Spec, Surface" # WHY: Enforce critical docs sections for theory repositories.
3736
# OBS: This is a comma-separated list of required section headers in docs/en/index.md.
3837
MODULE_PREFIX: "NeutralSubstrate/"
3938

CHANGELOG.md

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,40 @@ and this project adheres to **[Semantic Versioning](https://semver.org/spec/v2.0
1111

1212
---
1313

14+
## [0.3.0] - 2026-05-01
15+
16+
### Added
17+
18+
- `FrameworkVariant` predicate - a primitive is framework-variant if
19+
admissible frameworks disagree about it
20+
- `FrameworksContradict` predicate - one framework affirms what another denies
21+
- `causal_normative_affirmed` axiom - companion to `framework_relativity`;
22+
establishes that non-neutral primitives are affirmed by some admissible framework
23+
- `framework_contestability_lemma` theorem - framework-variant primitives
24+
cannot appear in neutral substrates; proves the extension stability
25+
violation; the interpretive non-commitment violation is deferred to 0.4.0
26+
when interpretive non-commitment (INC) is formalized
27+
- `separate_stability` theorem - a neutral substrate is separately consistent
28+
with each of two mutually contradicting frameworks
29+
- Incident substrate example in `TestRegime` instantiating `separate_stability`
30+
on the 2026 NS paper Section 4.3 engineering/legal framework pair
31+
- `NS.THEOREM.LOWER_BOUND_ONLY` citation ID for domains where only the
32+
lower bound applies
33+
34+
### Changed
35+
36+
- Namespace changed to SE.NeutralSubstrate
37+
- Split into Core / Spec / Surface / entry point
38+
- ISO-structured doc block on NeutralSubstrate.lean
39+
- Test library with TestBasic and TestRegime
40+
- lakefile.toml with separate Test lib target
41+
- `neutral_primitives_undisputed` doc strengthened with upper-bound warning
42+
- `ontological_neutrality_theorem` doc updated with asymmetry note on
43+
differing axiom dependencies of the two directions
44+
- `NeutralSubstrate.lean` Section 2.5 added normative asymmetry note to public surface
45+
46+
---
47+
1448
## [0.1.0] - 2026-04-28
1549

1650
### Added
@@ -44,7 +78,8 @@ Follow these steps exactly when creating a new release.
4478
### Task 1. Update release metadata (manual edits)
4579

4680
1.1. CITATION.cff: update version and date-released
47-
1.2. CHANGELOG.md: add section, move unreleased entries, update links
81+
1.2. lakefile.toml: update version
82+
1.3. CHANGELOG.md: add section, move unreleased entries, update links
4883

4984
### Task 2. Sync
5085

@@ -97,5 +132,6 @@ git tag -d vX.Z.Y
97132
git push origin :refs/tags/vX.Z.Y
98133
```
99134

100-
[Unreleased]: https://github.com/structural-explainability/se-theory-neutral-substrate/compare/v0.1.1...HEAD
135+
[Unreleased]: https://github.com/structural-explainability/se-theory-neutral-substrate/compare/v0.3.0...HEAD
136+
[0.3.0]: https://github.com/structural-explainability/se-theory-neutral-substrate/compare/v0.1.0...v0.3.0
101137
[0.1.0]: https://github.com/structural-explainability/se-theory-neutral-substrate/releases/tag/v0.1.0

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ cff-version: "1.2.0"
99
type: software
1010

1111
title: "SE Theory: Neutral Substrate"
12-
version: "0.1.0"
13-
date-released: "2026-04-30"
12+
version: "0.3.0"
13+
date-released: "2026-05-01"
1414

1515
authors:
1616
- family-names: Case

NeutralSubstrate.lean

Lines changed: 91 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,96 @@
1-
import NeutralSubstrate.Basic
2-
import NeutralSubstrate.Structure
3-
import NeutralSubstrate.Admissibility
4-
import NeutralSubstrate.Separation
5-
import NeutralSubstrate.Invariants
6-
import NeutralSubstrate.Theorems
7-
import NeutralSubstrate.Witness
1+
import NeutralSubstrate.Core
2+
import NeutralSubstrate.Spec
3+
import NeutralSubstrate.Surface
84

95
/-!
10-
File: NeutralSubstrate.lean
6+
# Neutral Substrate (NS)
117
12-
Notes:
8+
Lean 4 formalization of the Neutral Substrate specification from
9+
Structural Explainability (SE) theory.
10+
Defines the necessary and sufficient conditions for
11+
ontological neutrality under durable interpretive disagreement.
1312
14-
- This is the single import surface for downstream users.
15-
- Must remain thin: imports only, no logic.
13+
## 1. Scope (Informative)
14+
15+
Applies to substrates optimized for stability across disagreeing
16+
interpretive frameworks.
17+
Does not apply to substrates optimized for other objectives.
18+
19+
This library does not encode identity regimes, persistence behavior,
20+
domain semantics, or operational validation.
21+
22+
## 2. Public Surface (Normative)
23+
24+
The following names constitute the normative public surface of this library.
25+
They are stable across patch versions.
26+
Breaking changes require a minor version increment.
27+
Names in `NeutralSubstrate.Core` not listed here are
28+
internal and may change without notice.
29+
30+
### 2.1. Types
31+
32+
- `PrimitiveKind` the three primitive classifications
33+
- `Primitive` basic unit of ontological commitment
34+
- `Ontology` a finite list of primitives
35+
- `Framework` an interpretive stance over primitives
36+
37+
### 2.2. Predicates
38+
39+
- `Neutral` extension stability holds
40+
- `Admissible` framework is internally consistent
41+
- `ExtensionStable` no admissible framework causes inconsistency
42+
- `containsCausalOrNormative` boolean test for non-neutral content
43+
- `extensionInconsistent` a framework denies a substrate primitive
44+
- `FrameworkVariant` admissible frameworks disagree about a primitive
45+
- `FrameworksContradict` one framework affirms what another denies
46+
47+
### 2.3. Axioms
48+
49+
- `framework_relativity` causal/normative primitives are contested
50+
- `neutral_primitives_undisputed` neutral primitives are framework-invariant
51+
- `causal_normative_affirmed` causal/normative primitives are affirmed
52+
53+
### 2.4 Theorems
54+
55+
- `ontological_neutrality_theorem` main biconditional result
56+
- `not_neutral_if_causal_or_normative` only-if direction
57+
- `neutral_if_only_neutral` if direction
58+
- `framework_contestability_lemma` framework-variant primitives cannot appear in NS
59+
- `separate_stability` an NS is separately consistent with each of two mutually
60+
contradicting frameworks
61+
62+
### 2.5. Asymmetry Note (Normative)
63+
64+
The two directions of `ontological_neutrality_theorem` have different
65+
epistemic status and different axiom dependencies.
66+
67+
The lower bound (`not_neutral_if_causal_or_normative`) follows from
68+
`framework_relativity` alone.
69+
It holds structurally in any domain where causal and normative
70+
primitives are contested across admissible frameworks.
71+
72+
The upper bound (`neutral_if_only_neutral`) additionally requires
73+
`neutral_primitives_undisputed`.
74+
It holds only in domains where identity conditions are not themselves contested.
75+
In domains where identity is contested, only the lower bound applies.
76+
Cite `NS.THEOREM.LOWER_BOUND_ONLY` when documenting this restriction.
77+
78+
## 3. Usage (Informative)
79+
80+
```lean
81+
import NeutralSubstrate
82+
open SE.NeutralSubstrate -- types, predicates, axioms, theorems
83+
open SE.NeutralSubstrate.Spec -- citation IDs (optional)
84+
```
85+
86+
## 4. Metadata (Informative)
87+
88+
Version, authorship, and release date: see `CITATION.cff`.
89+
Scope, layer, and governance: see `SE_MANIFEST.toml`.
90+
91+
## 5. File Notes (Informative)
92+
93+
- This file must remain thin: imports only, no logic.
94+
- Downstream regime libraries depend on this file as their sole NS import.
95+
- Internal structure (Core, Spec, Surface) is not part of the public contract.
1696
-/

NeutralSubstrate/Admissibility.lean

Lines changed: 0 additions & 24 deletions
This file was deleted.

NeutralSubstrate/Basic.lean

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)