aetheridentity 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aetheridentity-2.0.0/AUTHORS.md +33 -0
- aetheridentity-2.0.0/CHANGELOG.md +66 -0
- aetheridentity-2.0.0/CITATION.cff +62 -0
- aetheridentity-2.0.0/INVARIANTS.md +396 -0
- aetheridentity-2.0.0/LICENSE +29 -0
- aetheridentity-2.0.0/MANIFEST.in +10 -0
- aetheridentity-2.0.0/PKG-INFO +432 -0
- aetheridentity-2.0.0/README.md +400 -0
- aetheridentity-2.0.0/ROADMAP_v2.md +296 -0
- aetheridentity-2.0.0/SPECIFICATION.md +436 -0
- aetheridentity-2.0.0/TESTS.md +463 -0
- aetheridentity-2.0.0/docs/figures/Fig1_Eight_Dimensions.png +0 -0
- aetheridentity-2.0.0/docs/figures/Fig2_Identity_vs_Governance.png +0 -0
- aetheridentity-2.0.0/docs/figures/Fig6_Identity_Layers.png +0 -0
- aetheridentity-2.0.0/docs/figures/Fig7_Sybil_Claims.png +0 -0
- aetheridentity-2.0.0/docs/figures/Fig8_Delegation_Chain.png +0 -0
- aetheridentity-2.0.0/docs/figures/Fig9_Identity_Lifecycle.png +0 -0
- aetheridentity-2.0.0/paper/AetherIdentity_Research_Paper.pdf +1015 -0
- aetheridentity-2.0.0/pyproject.toml +63 -0
- aetheridentity-2.0.0/setup.cfg +4 -0
- aetheridentity-2.0.0/src/aetheridentity/__init__.py +42 -0
- aetheridentity-2.0.0/src/aetheridentity/continuity.py +119 -0
- aetheridentity-2.0.0/src/aetheridentity/delegation.py +251 -0
- aetheridentity-2.0.0/src/aetheridentity/identity.py +53 -0
- aetheridentity-2.0.0/src/aetheridentity/records.py +138 -0
- aetheridentity-2.0.0/src/aetheridentity/reputation.py +178 -0
- aetheridentity-2.0.0/src/aetheridentity/signer.py +78 -0
- aetheridentity-2.0.0/src/aetheridentity/simulator.py +49 -0
- aetheridentity-2.0.0/src/aetheridentity/sybil.py +119 -0
- aetheridentity-2.0.0/src/aetheridentity.egg-info/PKG-INFO +432 -0
- aetheridentity-2.0.0/src/aetheridentity.egg-info/SOURCES.txt +37 -0
- aetheridentity-2.0.0/src/aetheridentity.egg-info/dependency_links.txt +1 -0
- aetheridentity-2.0.0/src/aetheridentity.egg-info/requires.txt +8 -0
- aetheridentity-2.0.0/src/aetheridentity.egg-info/top_level.txt +1 -0
- aetheridentity-2.0.0/tests/test_continuity.py +86 -0
- aetheridentity-2.0.0/tests/test_delegation.py +122 -0
- aetheridentity-2.0.0/tests/test_reputation.py +97 -0
- aetheridentity-2.0.0/tests/test_smoke.py +88 -0
- aetheridentity-2.0.0/tests/test_sybil.py +71 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Authors
|
|
2
|
+
|
|
3
|
+
## Samir Baladi
|
|
4
|
+
|
|
5
|
+
**Role:** Author, researcher
|
|
6
|
+
**Affiliation:** Ronin Institute / Rite of Renaissance
|
|
7
|
+
**Research area:** Interdisciplinary AI Research
|
|
8
|
+
**ORCID:** [0009-0003-8903-0029](https://orcid.org/0009-0003-8903-0029)
|
|
9
|
+
**Email:** [gitdeeper@gmail.com](mailto:gitdeeper@gmail.com)
|
|
10
|
+
|
|
11
|
+
Samir Baladi is the author of the Aether family of preprints, including
|
|
12
|
+
AetherGit, AetherFlow, AetherProof, AetherMesh, AetherGovern, AetherRuntime,
|
|
13
|
+
AetherOrchestrate, and the present candidate, AetherIdentity.
|
|
14
|
+
|
|
15
|
+
The Aether family investigates functional dimensions of coordinated agentic
|
|
16
|
+
software engineering. Each preprint adopts a falsification-first methodology:
|
|
17
|
+
failure conditions are stated before the candidate is described.
|
|
18
|
+
|
|
19
|
+
## Versions
|
|
20
|
+
|
|
21
|
+
- **v0.1.0** — Architectural Hypothesis (original draft)
|
|
22
|
+
- **v1.0.0** — Formal Architecture Proposal (33-page paper)
|
|
23
|
+
- **v2.0.0** — Experimental Reference Implementation (this release)
|
|
24
|
+
|
|
25
|
+
## How to contribute
|
|
26
|
+
|
|
27
|
+
**For the paper (v1.0.0):** independent review of F1–F4, literature pointers,
|
|
28
|
+
bibliographic corrections.
|
|
29
|
+
|
|
30
|
+
**For the implementation (v2.0.0):** bug reports, coverage improvements,
|
|
31
|
+
new tests for the deferred scenarios (S2–S5).
|
|
32
|
+
|
|
33
|
+
See `CONTRIBUTING.md` for details.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to AetherIdentity are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [2.0.0] — 2026-11-11
|
|
9
|
+
|
|
10
|
+
**Experimental Reference Implementation.**
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Python package `aetheridentity` (8 modules under `src/aetheridentity/`).
|
|
15
|
+
- L1 — Identity (`identity.py`).
|
|
16
|
+
- L2 — Continuity (`continuity.py`).
|
|
17
|
+
- L3 — Reputation (`reputation.py`).
|
|
18
|
+
- L4 — Sybil resistance (`sybil.py`).
|
|
19
|
+
- L5 — Delegation (`delegation.py`).
|
|
20
|
+
- Simulator (`simulator.py`).
|
|
21
|
+
- Abstract Signer with `FakeSigner` and `Ed25519Signer` (`signer.py`).
|
|
22
|
+
- Record types and canonical JSON serialization (`records.py`).
|
|
23
|
+
- 35 tests (93% coverage).
|
|
24
|
+
- S1 — Bootstrap (P2) executed.
|
|
25
|
+
- S6 — Governance overlap (F3) executed.
|
|
26
|
+
- `SPECIFICATION.md`, `INVARIANTS.md`, `TESTS.md`, `ROADMAP_v2.md`.
|
|
27
|
+
- `REPORTS/v2.0.0/` (test report, evaluation report, amendments, phase log, stop log).
|
|
28
|
+
- `RELEASE/RELEASE.md`.
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- README updated to reflect v2.0.0 (was v0.1.0).
|
|
33
|
+
- Version series fixed: v0.1.0 (hypothesis), v1.0.0 (paper), v2.0.0 (implementation).
|
|
34
|
+
|
|
35
|
+
### Not implemented
|
|
36
|
+
|
|
37
|
+
- Network transport, consensus.
|
|
38
|
+
- AetherMesh integration.
|
|
39
|
+
- Fork resolution.
|
|
40
|
+
- Recovery after total key loss.
|
|
41
|
+
- Single-instance enforcement.
|
|
42
|
+
- Byzantine behavior.
|
|
43
|
+
|
|
44
|
+
### Deferred
|
|
45
|
+
|
|
46
|
+
- S2, S3, S4, S5 (out of scope for v2.0.0).
|
|
47
|
+
- F1, F2, F4, F5 (not evaluated in v2.0.0).
|
|
48
|
+
- Machine-checked proofs of P1 and P2.
|
|
49
|
+
|
|
50
|
+
## [1.0.0] — 2026-11-10
|
|
51
|
+
|
|
52
|
+
**Formal Architecture Proposal.**
|
|
53
|
+
|
|
54
|
+
- 33-page paper published on Zenodo and Figshare.
|
|
55
|
+
- OSF Preregistration for v2.0.0 evaluation plan.
|
|
56
|
+
- 5 failure conditions (F1–F5), 6 requirements (R1–R6).
|
|
57
|
+
- 4 formal definitions, 2 propositions (proof sketches).
|
|
58
|
+
- 5 identity layers (L1–L5).
|
|
59
|
+
- 9 metrics, 5 baselines, 6 scenarios, 7 threats, 20 open questions.
|
|
60
|
+
|
|
61
|
+
## [0.1.0] — 2026-11-09
|
|
62
|
+
|
|
63
|
+
**Architectural Hypothesis (original draft).**
|
|
64
|
+
|
|
65
|
+
- Initial falsification-first methodology.
|
|
66
|
+
- Draft P1 and P2.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this work, please cite it as below."
|
|
3
|
+
type: software
|
|
4
|
+
title: "AetherIdentity: A Falsification-First Investigation of Decentralized Agent Identity in the Aether Family"
|
|
5
|
+
version: 2.0.0
|
|
6
|
+
identifiers:
|
|
7
|
+
- type: doi
|
|
8
|
+
value: 10.5281/zenodo.24102739
|
|
9
|
+
description: "Zenodo DOI (paper v1.0.0, software v2.0.0)"
|
|
10
|
+
- type: doi
|
|
11
|
+
value: 10.6084/m9.figshare.34981891
|
|
12
|
+
description: "Figshare preprint DOI"
|
|
13
|
+
- type: doi
|
|
14
|
+
value: 10.17605/OSF.IO/B6AEN
|
|
15
|
+
description: "OSF Preregistration DOI"
|
|
16
|
+
doi: 10.5281/zenodo.24102739
|
|
17
|
+
date-released: 2026-11-11
|
|
18
|
+
license: MIT
|
|
19
|
+
license-url: https://opensource.org/licenses/MIT
|
|
20
|
+
url: https://doi.org/10.5281/zenodo.24102739
|
|
21
|
+
repository-code: https://github.com/gitdeeper15/aetheridentity
|
|
22
|
+
abstract: >
|
|
23
|
+
AetherIdentity is a candidate eighth functional dimension of the Aether
|
|
24
|
+
family. It investigates whether identity proof, continuity, reputation,
|
|
25
|
+
Sybil resistance, and delegation in multi-agent software ecosystems
|
|
26
|
+
constitute a genuine gap not already covered by the seven existing
|
|
27
|
+
dimensions. v2.0.0 is an experimental reference implementation of the
|
|
28
|
+
v1.0.0 paper. It implements L1–L5 and a minimal independent simulator.
|
|
29
|
+
It does not implement network transport, consensus, or AetherMesh
|
|
30
|
+
integration. No real-world deployment has been evaluated.
|
|
31
|
+
keywords:
|
|
32
|
+
- AetherIdentity
|
|
33
|
+
- decentralized identity
|
|
34
|
+
- self-certifying identifiers
|
|
35
|
+
- key rotation
|
|
36
|
+
- reputation
|
|
37
|
+
- Sybil resistance
|
|
38
|
+
- delegation
|
|
39
|
+
- falsification
|
|
40
|
+
- reference implementation
|
|
41
|
+
- aether family
|
|
42
|
+
authors:
|
|
43
|
+
- family-names: Baladi
|
|
44
|
+
given-names: Samir
|
|
45
|
+
orcid: https://orcid.org/0009-0003-8903-0029
|
|
46
|
+
email: gitdeeper@gmail.com
|
|
47
|
+
affiliation: "Ronin Institute / Rite of Renaissance"
|
|
48
|
+
references:
|
|
49
|
+
- type: software
|
|
50
|
+
title: "AetherIdentity v2.0.0: Reference Implementation"
|
|
51
|
+
authors:
|
|
52
|
+
- family-names: Baladi
|
|
53
|
+
given-names: Samir
|
|
54
|
+
doi: 10.5281/zenodo.24102739
|
|
55
|
+
year: 2026
|
|
56
|
+
- type: generic
|
|
57
|
+
title: "AetherIdentity: A Falsification-First Investigation (Paper v1.0.0)"
|
|
58
|
+
authors:
|
|
59
|
+
- family-names: Baladi
|
|
60
|
+
given-names: Samir
|
|
61
|
+
doi: 10.5281/zenodo.24102739
|
|
62
|
+
year: 2026
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
# AetherIdentity v2.0.0 — Invariants
|
|
2
|
+
|
|
3
|
+
**Version:** 2.0.0 (Phase 2)
|
|
4
|
+
**Parent paper:** v1.0.0 (Zenodo 10.5281/zenodo.24102739)
|
|
5
|
+
**Input:** SPECIFICATION.md (Phase 1)
|
|
6
|
+
**Status:** Invariants. No code.
|
|
7
|
+
**Decision record:** ROADMAP_v2.md
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 0. Purpose
|
|
12
|
+
|
|
13
|
+
This document defines the invariants that every run of the reference implementation must satisfy. Each invariant is:
|
|
14
|
+
|
|
15
|
+
1. Stated in a form that can be checked mechanically.
|
|
16
|
+
2. Mapped to a failure condition (F1–F5) or a proposition (P1–P2).
|
|
17
|
+
3. Accompanied by its failure mode (what a violation would mean).
|
|
18
|
+
|
|
19
|
+
An invariant that cannot be checked mechanically is either weakened to a checkable form or reported as **not checkable** with a documented reason.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 1. Invariant format
|
|
24
|
+
|
|
25
|
+
Each invariant has the following fields:
|
|
26
|
+
|
|
27
|
+
| Field | Meaning |
|
|
28
|
+
|---|---|
|
|
29
|
+
| **ID** | `I1`, `I2`, … |
|
|
30
|
+
| **Statement** | What must hold. |
|
|
31
|
+
| **Check** | How it is checked (function, test, or property). |
|
|
32
|
+
| **Bears on** | F1–F5 or P1–P2. |
|
|
33
|
+
| **Failure mode** | What a violation means. |
|
|
34
|
+
| **Status** | `checkable` / `not checkable` / `deferred`. |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Core invariants (I1–I12)
|
|
39
|
+
|
|
40
|
+
### I1 — Determinism of queries
|
|
41
|
+
|
|
42
|
+
**Statement.** For any `S`, any permutation `S'` of `S`, and any query function `q`, `q(S) == q(S')`.
|
|
43
|
+
|
|
44
|
+
**Check.** Property-based test: generate random `S`, permute, compare outputs bit-for-bit.
|
|
45
|
+
|
|
46
|
+
**Bears on.** P1.
|
|
47
|
+
|
|
48
|
+
**Failure mode.** A query function depends on the order of `S`. This would mean the specification's claim that `S` is a set (not a sequence) is false, and P1 cannot hold.
|
|
49
|
+
|
|
50
|
+
**Status.** `checkable`.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### I2 — Identifier determinism
|
|
55
|
+
|
|
56
|
+
**Statement.** For any two inception records `r1`, `r2` with the same `(alg, pk, λ)`, `id(r1) == id(r2)`.
|
|
57
|
+
|
|
58
|
+
**Check.** Construct two records with identical inputs; compare identifiers.
|
|
59
|
+
|
|
60
|
+
**Bears on.** P1.
|
|
61
|
+
|
|
62
|
+
**Failure mode.** Identifier derivation is not a deterministic function of its inputs. This would contradict Definition 1 and make P1's condition (a) false.
|
|
63
|
+
|
|
64
|
+
**Status.** `checkable`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### I3 — Continuity chain validity
|
|
69
|
+
|
|
70
|
+
**Statement.** For any `id` with a continuity chain `C` in `S`, `C` is valid: `r₀` is self-signed, and for each `k ≥ 1`, `H(pk_k) == c_{k-1}`, `h_{k-1}` is correct, and `o_k` verifies under `pk_k`.
|
|
71
|
+
|
|
72
|
+
**Check.** Recompute the chain from `S`; verify each link.
|
|
73
|
+
|
|
74
|
+
**Bears on.** P1, F4.
|
|
75
|
+
|
|
76
|
+
**Failure mode.** A rotation record is accepted without a valid pre-commitment. This would mean the continuity chain does not enforce the offline-key rule.
|
|
77
|
+
|
|
78
|
+
**Status.** `checkable`.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### I4 — Fork visibility
|
|
83
|
+
|
|
84
|
+
**Statement.** If two valid rotation records share a predecessor and differ in content, `status_of(S, id) == "contested"`.
|
|
85
|
+
|
|
86
|
+
**Check.** Construct a fork; assert status.
|
|
87
|
+
|
|
88
|
+
**Bears on.** F4.
|
|
89
|
+
|
|
90
|
+
**Failure mode.** A fork is silently resolved. This would mean the specification hides the fork-resolution residual.
|
|
91
|
+
|
|
92
|
+
**Status.** `checkable`.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### I5 — Reputation determinism
|
|
97
|
+
|
|
98
|
+
**Statement.** For any `S`, `reputation_of(S, id)` is computed in exact arithmetic with a fixed iteration count `K` and a canonical ordering, and returns the same vector for every node holding the same `S`.
|
|
99
|
+
|
|
100
|
+
**Check.** Two independent computations on the same `S`; compare vectors bit-for-bit.
|
|
101
|
+
|
|
102
|
+
**Bears on.** P1.
|
|
103
|
+
|
|
104
|
+
**Failure mode.** The reputation vector depends on floating-point arithmetic, iteration count, or ordering. This would contradict P1's condition (c).
|
|
105
|
+
|
|
106
|
+
**Status.** `checkable`.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### I6 — Reputation fixed point
|
|
111
|
+
|
|
112
|
+
**Statement.** The reputation iteration `t ← (1 − a) · Cᵀ t + a · p` converges to a fixed point within `K` iterations, with error below a stated tolerance.
|
|
113
|
+
|
|
114
|
+
**Check.** Compute the residual `‖T(t_K) − t_K‖₁`; assert below tolerance.
|
|
115
|
+
|
|
116
|
+
**Bears on.** P1.
|
|
117
|
+
|
|
118
|
+
**Failure mode.** The iteration does not converge within `K`. This would mean the exact-arithmetic claim is not satisfied.
|
|
119
|
+
|
|
120
|
+
**Status.** `checkable`.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### I7 — Delegation monotonicity
|
|
125
|
+
|
|
126
|
+
**Statement.** For any valid delegation chain `d₁ → d₂ → … → dₙ`, `S_n ⊆ S_{n-1} ⊆ … ⊆ S₁` and `e_n ≤ e_{n-1} ≤ … ≤ e₁`.
|
|
127
|
+
|
|
128
|
+
**Check.** Construct chains with random scopes and expiries; assert monotonicity.
|
|
129
|
+
|
|
130
|
+
**Bears on.** F4.
|
|
131
|
+
|
|
132
|
+
**Failure mode.** Scope or expiry can widen along the chain. This would contradict Definition 4.
|
|
133
|
+
|
|
134
|
+
**Status.** `checkable`.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### I8 — Revocation propagation
|
|
139
|
+
|
|
140
|
+
**Statement.** If a delegation `d_k` in a chain is revoked, then for any action whose causal closure contains the revocation, the action is invalid.
|
|
141
|
+
|
|
142
|
+
**Check.** Construct a chain, revoke a link, assert invalidity.
|
|
143
|
+
|
|
144
|
+
**Bears on.** F4.
|
|
145
|
+
|
|
146
|
+
**Failure mode.** Revocation does not invalidate downstream links. This would contradict Definition 4.
|
|
147
|
+
|
|
148
|
+
**Status.** `checkable`.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### I9 — Sybil cluster weight
|
|
153
|
+
|
|
154
|
+
**Statement.** For any identity `id` in a Sybil cluster of size `m`, `cluster_weight_of(S, id) == 1.0 / m`.
|
|
155
|
+
|
|
156
|
+
**Check.** Construct a cluster; assert weight.
|
|
157
|
+
|
|
158
|
+
**Bears on.** F4.
|
|
159
|
+
|
|
160
|
+
**Failure mode.** Cluster weight is not deterministic or not `1/m`. This would mean L4 does not down-weight clusters.
|
|
161
|
+
|
|
162
|
+
**Status.** `checkable`.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### I10 — Sybil detection rates reported
|
|
167
|
+
|
|
168
|
+
**Statement.** For any Sybil scenario, both false-positive rate (on honest operators) and false-negative rate (on injected clusters) are reported.
|
|
169
|
+
|
|
170
|
+
**Check.** Assert both fields exist and are numeric in `results.json`.
|
|
171
|
+
|
|
172
|
+
**Bears on.** F4, F5.
|
|
173
|
+
|
|
174
|
+
**Failure mode.** Only one rate is reported. This would allow a detector that flags everything to score perfectly on detection.
|
|
175
|
+
|
|
176
|
+
**Status.** `checkable`.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### I11 — Signature separation
|
|
181
|
+
|
|
182
|
+
**Statement.** A signature produced by `FakeSigner` is not accepted by `Ed25519Signer`, and vice versa.
|
|
183
|
+
|
|
184
|
+
**Check.** Sign with one, verify with the other; assert `False`.
|
|
185
|
+
|
|
186
|
+
**Bears on.** P1, F2.
|
|
187
|
+
|
|
188
|
+
**Failure mode.** The two signers are interchangeable. This would mean the cryptographic verification path is not separated from the test path.
|
|
189
|
+
|
|
190
|
+
**Status.** `checkable`.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### I12 — Structural vs. cryptographic verification
|
|
195
|
+
|
|
196
|
+
**Statement.** For every record, structural validation and signature verification are checked separately, and both results are reported.
|
|
197
|
+
|
|
198
|
+
**Check.** Assert both fields exist in the test report.
|
|
199
|
+
|
|
200
|
+
**Bears on.** P1, F2.
|
|
201
|
+
|
|
202
|
+
**Failure mode.** The two checks are merged. This would allow a structurally valid but cryptographically invalid record to pass.
|
|
203
|
+
|
|
204
|
+
**Status.** `checkable`.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 3. Failure-condition invariants (F1–F5)
|
|
209
|
+
|
|
210
|
+
### 3.1 F1 — Non-redundancy
|
|
211
|
+
|
|
212
|
+
**Claim.** At least one requirement R1–R6 is not met by L1–L5 plus a bounded extension of one existing dimension.
|
|
213
|
+
|
|
214
|
+
**How it can be falsified.** A test that expresses all R1–R6 as a bounded extension of exactly one Aether dimension.
|
|
215
|
+
|
|
216
|
+
**Invariant.** If such a test exists and passes, F1 is falsified.
|
|
217
|
+
|
|
218
|
+
**Status.** `deferred` (requires AetherGovern/AetherMesh simulator; see S6).
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### 3.2 F2 — Orthogonality to verification
|
|
223
|
+
|
|
224
|
+
**Claim.** Some identity decisions cannot be encoded as verified claims.
|
|
225
|
+
|
|
226
|
+
**How it can be falsified.** A test that encodes every identity decision as a verified claim.
|
|
227
|
+
|
|
228
|
+
**Invariant.** If such a test exists and passes, F2 is falsified.
|
|
229
|
+
|
|
230
|
+
**Status.** `deferred` (requires AetherProof simulator).
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### 3.3 F3 — Boundary with governance
|
|
235
|
+
|
|
236
|
+
**Claim.** Identity is not reducible to governance plus conventional verification.
|
|
237
|
+
|
|
238
|
+
**How it can be falsified.** In S6, the fraction of L5 decisions re-expressible as AetherGovern decisions is high (threshold fixed in Phase 3).
|
|
239
|
+
|
|
240
|
+
**Invariant.** If the fraction exceeds the threshold, F3 is falsified.
|
|
241
|
+
|
|
242
|
+
**Status.** `checkable` (in S6).
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
### 3.4 F4 — Decentralizability
|
|
247
|
+
|
|
248
|
+
**Claim.** Most identity functions are monotone or deterministic functions of monotone state; four residuals require something outside the replicated state.
|
|
249
|
+
|
|
250
|
+
**How it can be falsified.** A test that shows a central authority or strong consistency is required for a function that the specification classifies as agreement-free.
|
|
251
|
+
|
|
252
|
+
**Invariant.** Every function classified as agreement-free must be computable by two nodes holding the same `S` without communication.
|
|
253
|
+
|
|
254
|
+
**Status.** `checkable`.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
### 3.5 F5 — Observable benefit
|
|
259
|
+
|
|
260
|
+
**Claim.** There exists a scenario class in which the best baseline fails and AetherIdentity succeeds.
|
|
261
|
+
|
|
262
|
+
**How it can be falsified.** For every scenario, some baseline is non-inferior on the primary metrics, or M9 is ever non-zero.
|
|
263
|
+
|
|
264
|
+
**Invariant.** If F5's decision rule (from OSF preregistration) is satisfied, F5 is falsified.
|
|
265
|
+
|
|
266
|
+
**Status.** `deferred` (requires all scenarios S1–S6 and all baselines B1–B5).
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 4. Proposition invariants (P1–P2)
|
|
271
|
+
|
|
272
|
+
### 4.1 P1 — Determinism of local identity issuance
|
|
273
|
+
|
|
274
|
+
**Claim.** Under conditions (a)–(d), admission satisfies A6, and all honest nodes derive the same views once delivery is complete.
|
|
275
|
+
|
|
276
|
+
**Invariant.** Two nodes with the same `S` derive identical `status_of`, `reputation_of`, `cluster_weight_of`, `continuity_chain_of`, `delegation_chain_of`.
|
|
277
|
+
|
|
278
|
+
**Status.** `checkable`.
|
|
279
|
+
|
|
280
|
+
**Failure mode.** A view differs between nodes with the same `S`. This falsifies P1.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
### 4.2 P2 — Irreducible trust anchor
|
|
285
|
+
|
|
286
|
+
**Claim.** Any identity protocol that admits on evidence leaves an irreducible trust anchor.
|
|
287
|
+
|
|
288
|
+
**How it can be falsified.** A simulated network bootstraps without any externally trusted identity.
|
|
289
|
+
|
|
290
|
+
**Invariant.** If such a bootstrap succeeds, P2 is falsified.
|
|
291
|
+
|
|
292
|
+
**Status.** `checkable` (in S1, with a documented bootstrap procedure).
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 5. Open decisions resolved here
|
|
297
|
+
|
|
298
|
+
Phase 1 listed seven open decisions (O1–O7). Phase 2 resolves them as follows:
|
|
299
|
+
|
|
300
|
+
| # | Decision | Resolution |
|
|
301
|
+
|---|---|---|
|
|
302
|
+
| O1 | Fixed iteration count `K` | `K = 100` for exact arithmetic; convergence checked in I6. |
|
|
303
|
+
| O2 | Canonical ordering of identities | Lexicographic by identifier hash. |
|
|
304
|
+
| O3 | Exact arithmetic for reputation | `fractions.Fraction` for the iteration; final vector rounded to 6 decimal places for reporting only. |
|
|
305
|
+
| O4 | Threshold `τ` for Sybil clusters | `τ = 2` for v2.0.0; tested for sensitivity in S5. |
|
|
306
|
+
| O5 | Epoch length for sponsor quotas | `1` logical epoch = `100` admissions; tested for sensitivity in S5. |
|
|
307
|
+
| O6 | Whether recovery is implemented | **No.** Out of scope for v2.0.0; documented as a residual. |
|
|
308
|
+
| O7 | Whether L5 is separable from AetherGovern | Tested in S6; result reported in Phase 6. |
|
|
309
|
+
|
|
310
|
+
These resolutions are **binding** for Phase 4. Changing them requires an amendment in `REPORTS/v2.0.0/phase_log.md`.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## 6. Invariants that are not checkable in v2.0.0
|
|
315
|
+
|
|
316
|
+
The following are **not checkable** in v2.0.0, and are reported as such in Phase 5:
|
|
317
|
+
|
|
318
|
+
| Invariant | Reason | Where it would be checkable |
|
|
319
|
+
|---|---|---|
|
|
320
|
+
| Concurrent admission | Out of scope (§2.4 of SPECIFICATION.md) | Future version with concurrency |
|
|
321
|
+
| Causal delivery | Out of scope | Future version with AetherMesh integration |
|
|
322
|
+
| Fork resolution | Out of scope | Future version with an authority model |
|
|
323
|
+
| Recovery after total key loss | Out of scope | Future version with a guardian protocol |
|
|
324
|
+
| Single-instance enforcement | Requires bounded agreement | Future version with consensus |
|
|
325
|
+
| Byzantine behavior | Out of scope | Future version with adversarial model |
|
|
326
|
+
|
|
327
|
+
These are **not** reported as passing. They are reported as **not testable under v2.0.0**.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 7. Invariant coverage
|
|
332
|
+
|
|
333
|
+
| Invariant | Bears on | Phase 3 test | Phase 5 status |
|
|
334
|
+
|---|---|---|---|
|
|
335
|
+
| I1 | P1 | `test_permutation_invariance` | — |
|
|
336
|
+
| I2 | P1 | `test_identifier_determinism` | — |
|
|
337
|
+
| I3 | P1, F4 | `test_chain_validity` | — |
|
|
338
|
+
| I4 | F4 | `test_fork_visibility` | — |
|
|
339
|
+
| I5 | P1 | `test_reputation_determinism` | — |
|
|
340
|
+
| I6 | P1 | `test_fixed_point_convergence` | — |
|
|
341
|
+
| I7 | F4 | `test_delegation_monotonicity` | — |
|
|
342
|
+
| I8 | F4 | `test_revocation_propagation` | — |
|
|
343
|
+
| I9 | F4 | `test_cluster_weight` | — |
|
|
344
|
+
| I10 | F4, F5 | `test_detection_rates` | — |
|
|
345
|
+
| I11 | P1, F2 | `test_signer_separation` | — |
|
|
346
|
+
| I12 | P1, F2 | `test_structural_vs_crypto` | — |
|
|
347
|
+
| F1 | F1 | `test_f1_bounded_extension` | deferred |
|
|
348
|
+
| F2 | F2 | `test_f2_verified_claims` | deferred |
|
|
349
|
+
| F3 | F3 | `test_f3_governance_overlap` | checkable (S6) |
|
|
350
|
+
| F4 | F4 | `test_f4_agreement_free` | — |
|
|
351
|
+
| F5 | F5 | `test_f5_decision_rule` | deferred |
|
|
352
|
+
| P1 | P1 | `test_p1_same_s` | — |
|
|
353
|
+
| P2 | P2 | `test_p2_bootstrap` | checkable (S1) |
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 8. Next phase
|
|
358
|
+
|
|
359
|
+
Phase 3 — `TESTS.md`. Each invariant in §7 becomes at least one test with preconditions, postconditions, and expected outcome. The test count is **determined by the invariants**, not assumed in advance.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Appendix A — Invariant summary
|
|
364
|
+
|
|
365
|
+
| ID | Short name | Status |
|
|
366
|
+
|---|---|---|
|
|
367
|
+
| I1 | Permutation invariance | checkable |
|
|
368
|
+
| I2 | Identifier determinism | checkable |
|
|
369
|
+
| I3 | Chain validity | checkable |
|
|
370
|
+
| I4 | Fork visibility | checkable |
|
|
371
|
+
| I5 | Reputation determinism | checkable |
|
|
372
|
+
| I6 | Fixed-point convergence | checkable |
|
|
373
|
+
| I7 | Delegation monotonicity | checkable |
|
|
374
|
+
| I8 | Revocation propagation | checkable |
|
|
375
|
+
| I9 | Cluster weight | checkable |
|
|
376
|
+
| I10 | Detection rates reported | checkable |
|
|
377
|
+
| I11 | Signer separation | checkable |
|
|
378
|
+
| I12 | Structural vs. crypto | checkable |
|
|
379
|
+
| F1 | Non-redundancy | deferred |
|
|
380
|
+
| F2 | Orthogonality | deferred |
|
|
381
|
+
| F3 | Governance overlap | checkable (S6) |
|
|
382
|
+
| F4 | Agreement-free | checkable |
|
|
383
|
+
| F5 | Decision rule | deferred |
|
|
384
|
+
| P1 | Same-S determinism | checkable |
|
|
385
|
+
| P2 | Bootstrap | checkable (S1) |
|
|
386
|
+
|
|
387
|
+
## Appendix B — Relationship to v1.0.0 paper
|
|
388
|
+
|
|
389
|
+
| Paper section | This document |
|
|
390
|
+
|---|---|
|
|
391
|
+
| §3 Definitions | §2 (I2, I3, I5) |
|
|
392
|
+
| §4 Failure conditions | §3 |
|
|
393
|
+
| §5 Requirements | §7 |
|
|
394
|
+
| §6 Architecture | §2, §4 |
|
|
395
|
+
| §8 Evaluation design | §6, §7 |
|
|
396
|
+
| §10 Open questions | §5 (resolves O1–O7) |
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Samir Baladi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
Note on scope:
|
|
26
|
+
|
|
27
|
+
The MIT license above applies to code (v2.0.0, src/aetheridentity/).
|
|
28
|
+
The documentation, manuscript, and figures are released under CC-BY-4.0:
|
|
29
|
+
https://creativecommons.org/licenses/by/4.0/legalcode
|