othismos 0.4.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.
Files changed (35) hide show
  1. othismos-0.4.0/PKG-INFO +409 -0
  2. othismos-0.4.0/README.md +372 -0
  3. othismos-0.4.0/pyproject.toml +51 -0
  4. othismos-0.4.0/setup.cfg +4 -0
  5. othismos-0.4.0/src/othismos/__init__.py +156 -0
  6. othismos-0.4.0/src/othismos/cli.py +272 -0
  7. othismos-0.4.0/src/othismos/config.py +131 -0
  8. othismos-0.4.0/src/othismos/context_pressure.py +174 -0
  9. othismos-0.4.0/src/othismos/controller.py +274 -0
  10. othismos-0.4.0/src/othismos/diagnostics.py +201 -0
  11. othismos-0.4.0/src/othismos/ecology.py +307 -0
  12. othismos-0.4.0/src/othismos/integrations.py +329 -0
  13. othismos-0.4.0/src/othismos/llm.py +317 -0
  14. othismos-0.4.0/src/othismos/pandas_export.py +98 -0
  15. othismos-0.4.0/src/othismos/phases.py +295 -0
  16. othismos-0.4.0/src/othismos/pressure.py +340 -0
  17. othismos-0.4.0/src/othismos/protocols.py +59 -0
  18. othismos-0.4.0/src/othismos/serialization.py +144 -0
  19. othismos-0.4.0/src/othismos/viz.py +286 -0
  20. othismos-0.4.0/src/othismos.egg-info/PKG-INFO +409 -0
  21. othismos-0.4.0/src/othismos.egg-info/SOURCES.txt +33 -0
  22. othismos-0.4.0/src/othismos.egg-info/dependency_links.txt +1 -0
  23. othismos-0.4.0/src/othismos.egg-info/entry_points.txt +2 -0
  24. othismos-0.4.0/src/othismos.egg-info/requires.txt +22 -0
  25. othismos-0.4.0/src/othismos.egg-info/top_level.txt +1 -0
  26. othismos-0.4.0/tests/test_cli.py +110 -0
  27. othismos-0.4.0/tests/test_context_pressure.py +116 -0
  28. othismos-0.4.0/tests/test_controller.py +158 -0
  29. othismos-0.4.0/tests/test_diagnostics.py +80 -0
  30. othismos-0.4.0/tests/test_ecology.py +208 -0
  31. othismos-0.4.0/tests/test_integrations.py +226 -0
  32. othismos-0.4.0/tests/test_new_modules.py +202 -0
  33. othismos-0.4.0/tests/test_phases.py +140 -0
  34. othismos-0.4.0/tests/test_pressure.py +312 -0
  35. othismos-0.4.0/tests/test_serialization.py +142 -0
@@ -0,0 +1,409 @@
1
+ Metadata-Version: 2.4
2
+ Name: othismos
3
+ Version: 0.4.0
4
+ Summary: The force a bounded system exerts against its bounds. The push IS the knowing.
5
+ Author: SuperInstance
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/SuperInstance/othismos
8
+ Project-URL: Repository, https://github.com/SuperInstance/othismos
9
+ Keywords: constraints,pressure,optimization,bounded-systems,phase-transitions,molt-cycle
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ Requires-Dist: numpy>=1.20
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=7.0; extra == "dev"
24
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
25
+ Provides-Extra: torch
26
+ Requires-Dist: torch>=2.0; extra == "torch"
27
+ Provides-Extra: viz
28
+ Requires-Dist: matplotlib>=3.7; extra == "viz"
29
+ Provides-Extra: pandas
30
+ Requires-Dist: pandas>=2.0; extra == "pandas"
31
+ Provides-Extra: yaml
32
+ Requires-Dist: pyyaml>=6.0; extra == "yaml"
33
+ Provides-Extra: all
34
+ Requires-Dist: matplotlib>=3.7; extra == "all"
35
+ Requires-Dist: pandas>=2.0; extra == "all"
36
+ Requires-Dist: pyyaml>=6.0; extra == "all"
37
+
38
+ # Óthismos
39
+
40
+ *The force a bounded system exerts against its bounds.*
41
+
42
+ ---
43
+
44
+ ## What is this?
45
+
46
+ Óthismos (ὄθισμος — Greek: "a pushing, a shoving") is both a **conceptual framework** and a **Python library** for measuring the pressure that bounded systems exert against their constraints.
47
+
48
+ If you train models under constraints — weight budgets, context windows, wattage limits, latency deadlines — the system pushes against those constraints during optimization. That push is not noise. It's **information**. The shape of the push tells you the shape of the wall. The magnitude tells you how hard the system is working. The trend tells you what phase of growth the system is in.
49
+
50
+ This repo gives you the tools to measure that pressure, diagnose what it means, and act on it automatically.
51
+
52
+ ## The core idea (read this first)
53
+
54
+ Every constrained optimizer does the same thing each step:
55
+
56
+ 1. Computes a gradient step `s` — the move it *wants* to make
57
+ 2. Projects that step back into the feasible set — the move it *actually* makes
58
+
59
+ The difference between those two steps — the part that got clipped away — is **óthismos** (Π):
60
+
61
+ ```
62
+ Δθ = s − s* (what you wanted minus what you got)
63
+ Π = ‖Δθ‖ (the magnitude of the clip)
64
+ ```
65
+
66
+ That's it. The entire framework falls out of this one quantity.
67
+
68
+ - Π = 0: the system isn't touching its walls. It's either dormant or has room to grow.
69
+ - Π > 0: the system is pushing against a constraint. It's alive.
70
+ - Π rising over time: the system is filling its constraint envelope. It will eventually need to molt (phase-transition to a larger envelope).
71
+ - Π high but volatile: pressure is leaking. The constraints may be too weak.
72
+ - High external pressure but Π ≈ 0: the system has nothing left to push with. This is the silent failure mode most optimizers never detect.
73
+
74
+ If you've ever logged gradient norms and wondered "is that high? is that bad? should I change my learning rate?" — óthismos gives you a principled answer. The gradient norm tells you the slope. Π tells you whether the system is hitting walls, which walls, and how hard.
75
+
76
+ ## Why not just log gradient norms?
77
+
78
+ Gradient norms measure the landscape. Óthismos measures the **interaction between the system and its constraints**. Two models with identical gradient norms can have wildly different óthismos — one pushing hard against a weight decay boundary, the other drifting through a flat region.
79
+
80
+ The additional information óthismos provides:
81
+
82
+ - **Which constraint is binding.** The pressure profile breaks down Π per-constraint, so you know exactly which budget is the bottleneck.
83
+ - **What growth phase the system is in.** The molt cycle classifier maps the pressure trajectory to one of five phases (see below), each requiring different treatment.
84
+ - **Whether the system is healthy.** The popcorn diagnostic classifies the system as Pop (productive), Burn (silently dead), or Seep (leaking pressure) — a diagnostic no standard metric provides.
85
+ - **When to adjust hyperparameters.** The controller module automatically recommends LR changes, constraint relaxation, and checkpoints based on pressure dynamics.
86
+
87
+ ## The five-phase molt cycle
88
+
89
+ Bounded systems don't grow smoothly. They grow in staircases — filling a constraint envelope, hitting the walls, phase-transitioning to a larger envelope, then filling that one. Each cycle has five phases:
90
+
91
+ ```
92
+ Π
93
+ │ ╱╲ ╱╲ ╱╲
94
+ │ ╱ ╲ ╱ ╲ ╱ ╲ ← Crisis (molt threshold)
95
+ │ ╱ ╲ ╱ ╲ ╱ ╲
96
+ │ ╱ ╲╱ ╲╱ ╲
97
+ │ ← Settlement floor
98
+ └──────────────────────────→ time
99
+ E R C S E R C S
100
+ ```
101
+
102
+ | Phase | Π level | What's happening | What to do |
103
+ |-------|---------|------------------|------------|
104
+ | **Expansion** | Low, rising | Fresh envelope, lots of headroom, rapid growth | Let it run. Watch for sloppiness (overfitting). |
105
+ | **Resistance** | High, stable | Walls reached. Best work happens here — pressure forces precision. | Hold steady. This is where the system learns the most. |
106
+ | **Crisis** | Peak | Pressure exceeds structural tolerance. Molt or rupture. | Reduce LR. Checkpoint. Prepare for phase transition. |
107
+ | **Settlement** | Sharp drop | Post-molt. New envelope is soft and vulnerable. | Hold steady. Let the new structure solidify. Don't rush. |
108
+ | **Dormancy** | Near zero | No new pressure. Waiting for new input. | Feed it a new problem or let it rest. |
109
+
110
+ The library detects these phases automatically from pressure history. The `MoltCycleTracker` identifies cycle boundaries and computes a staircase health metric — regular periodicity means healthy growth, compressed cycles mean the envelope was too small, flatlines mean the system needs new input.
111
+
112
+ ## The popcorn diagnostic
113
+
114
+ Three failure modes, one healthy mode:
115
+
116
+ - **🍿 Pop** — Pressure builds productively. The system is alive and pushing. This is what you want.
117
+ - **🔥 Burn** — External pressure (heat) is applied but the system has no internal drive. Π ≈ 0 despite high gradient. The system looks fine from outside — the hull is intact — but the interior is dry. This is the **silent killer**: most monitoring never catches it because the loss looks stable.
118
+ - **💧 Seep** — Pressure is present but leaking through weak constraints. High activity, no progress. Π is volatile, never accumulating. Common in systems with too-weak regularization or unstable data pipelines.
119
+ - **😴 Dormant** — No external pressure. The system waits. Not dead — just resting.
120
+
121
+ The diagnostic runs on any pressure history. The CLI command `othismos diagnose history.json` gives you the classification plus a recommendation.
122
+
123
+ ## The Reef (knowledge ecology module)
124
+
125
+ The reef is a structured knowledge graph where deposits must pass three gates before entering:
126
+
127
+ 1. **Structural integrity** — the deposit must be internally consistent (tests pass, specs validate)
128
+ 2. **Connective compatibility** — the deposit must reference existing structure (imports, citations, dependencies)
129
+ 3. **Pressure resistance** — the deposit must support future deposits built on top of it
130
+
131
+ Deposits that nothing references slowly **erode** — the reef forgets. This is not a bug. It's how the reef stays alive. Most knowledge management systems accumulate dead weight forever. The reef recycles it.
132
+
133
+ When a foundational deposit fails, everything built on it collapses in a **reefquake** — the system's catastrophe recovery mechanism. After a reefquake, the reef is always stronger, because the weak substrate has been exposed and removed.
134
+
135
+ The reef maps directly to real systems: PyPI/npm dependency graphs, citation networks, ADR chains, git histories. See `research/04_ECOLOGY_AS_INFRASTRUCTURE.md` for the full mapping and a CLI design spec.
136
+
137
+ ## Installation
138
+
139
+ ```bash
140
+ pip install othismos
141
+
142
+ # With extras:
143
+ pip install othismos[viz] # matplotlib plotting
144
+ pip install othismos[pandas] # DataFrame export
145
+ pip install othismos[torch] # PyTorch integration
146
+ pip install othismos[all] # Everything
147
+ ```
148
+
149
+ Requires Python 3.10+. Only hard dependency: NumPy.
150
+
151
+ ## Usage
152
+
153
+ ### Measure pressure in a training loop
154
+
155
+ ```python
156
+ import numpy as np
157
+ from othismos import PressureGauge, l2_constraint
158
+
159
+ gauge = PressureGauge()
160
+ constraint = l2_constraint("weight_decay", radius=1.0)
161
+
162
+ # Each optimization step:
163
+ theta = np.array([0.5, 0.5])
164
+ gradient = np.array([-1.0, -1.0])
165
+ lr = 0.1
166
+
167
+ measurement = gauge.measure(theta, gradient, lr, [constraint])
168
+
169
+ print(f"Pressure: {measurement.pressure:.6f}")
170
+ print(f"Per-constraint: {measurement.pressure_by_constraint}")
171
+ # Pressure: 0.292893
172
+ # Per-constraint: {'weight_decay': 0.292893}
173
+ ```
174
+
175
+ ### Diagnose system health
176
+
177
+ ```python
178
+ from othismos import PopcornDiagnostic
179
+
180
+ pressures = [m.pressure for m in gauge.history]
181
+ result = PopcornDiagnostic().diagnose(pressures, heat=lr * np.linalg.norm(gradient))
182
+
183
+ print(f"Health: {result.health.value}") # pop | burn | seep | dormant
184
+ print(f"Advice: {result.recommendation}")
185
+ ```
186
+
187
+ ### Track molt cycles
188
+
189
+ ```python
190
+ from othismos import MoltCycleTracker, PhaseClassifier
191
+
192
+ classifier = PhaseClassifier(crisis_threshold=0.5, expansion_floor=0.1)
193
+ tracker = MoltCycleTracker(classifier=classifier)
194
+
195
+ for pressure in pressure_history:
196
+ reading = tracker.update(pressure)
197
+ print(f"Step {reading.step}: {reading.phase.label} (conf={reading.confidence:.2f})")
198
+
199
+ # How healthy is the growth pattern?
200
+ staircase = tracker.staircase_metric()
201
+ print(staircase['health'])
202
+ ```
203
+
204
+ ### Adaptive controller
205
+
206
+ ```python
207
+ from othismos import PressureController, OthismosConfig
208
+
209
+ config = OthismosConfig(crisis_lr_factor=0.5, expansion_lr_factor=1.3)
210
+ gauge, tracker, diag, controller = config.build_all()
211
+
212
+ # In your training loop:
213
+ for batch in dataloader:
214
+ # ... compute loss, backward ...
215
+ measurement = gauge.measure(theta, gradient, lr, constraints)
216
+ actions = controller.update(current_lr=lr, constraints=constraints)
217
+
218
+ for action in actions:
219
+ print(action) # AdjustLR(×0.50), Checkpoint(...), Alert('BURN detected...'), etc.
220
+ ```
221
+
222
+ ### PyTorch integration
223
+
224
+ ```python
225
+ from othismos import OthismosTorchCallback, l2_constraint
226
+
227
+ callback = OthismosTorchCallback(
228
+ constraints=[l2_constraint("weight_budget", radius=10.0)],
229
+ log_every=10,
230
+ )
231
+
232
+ # In your training loop:
233
+ for batch in dataloader:
234
+ loss = model(batch)
235
+ loss.backward()
236
+
237
+ callback.pre_step(model, optimizer, loss)
238
+ optimizer.step()
239
+ metrics = callback.post_step(model)
240
+ # metrics dict: othismos/pressure, othismos/phase, othismos/mean_pressure, ...
241
+
242
+ print(callback.health_report())
243
+ ```
244
+
245
+ ### Projection-free pressure for LLMs
246
+
247
+ For systems where you can't define a projection operator (black-box APIs, LLMs with context limits), measure behavioral divergence instead:
248
+
249
+ ```python
250
+ from othismos import ContextPressureGauge
251
+
252
+ gauge = ContextPressureGauge()
253
+
254
+ # Run the model with full context and truncated context
255
+ result = gauge.measure(
256
+ full_output=full_context_logits,
257
+ constrained_output=truncated_context_logits,
258
+ context_tokens_dropped=500,
259
+ )
260
+
261
+ print(f"Context pressure: {result.pressure:.4f} nats")
262
+ # High pressure = the truncated tokens are structurally important.
263
+ # Low pressure = safe to truncate.
264
+ ```
265
+
266
+ ### CLI
267
+
268
+ ```bash
269
+ # Knowledge reef management
270
+ othismos reef add "spec-v1" "The canonical bytecode spec" --db reef.json
271
+ othismos reef add "impl-rust" "Rust VM implementation" --refs spec-v1 --db reef.json
272
+ othismos reef list --db reef.json
273
+ othismos reef stats --db reef.json
274
+
275
+ # Run diagnostic on saved pressure data
276
+ othismos diagnose history.json --heat 1.0
277
+
278
+ # Version
279
+ othismos version
280
+ ```
281
+
282
+ ## Module reference
283
+
284
+ | Module | Purpose | Key classes |
285
+ |--------|---------|-------------|
286
+ | `pressure.py` | Core Π computation | `PressureGauge`, `Constraint`, `compute_othismos`, `l2_constraint`, `box_constraint` |
287
+ | `phases.py` | 5-phase molt cycle detection | `MoltPhase`, `PhaseClassifier`, `MoltCycleTracker` |
288
+ | `diagnostics.py` | Pop/Burn/Seep health diagnostic | `PopcornDiagnostic`, `SystemHealth`, `DiagnosticResult` |
289
+ | `ecology.py` | Reef knowledge graph with erosion | `Reef`, `Deposit`, `ReefLayer`, `Reefquake` |
290
+ | `context_pressure.py` | Projection-free óthismos for LLMs | `ContextPressureGauge`, `cosine_distance`, `token_overlap` |
291
+ | `controller.py` | Adaptive LR/constraint controller | `PressureController`, `ControlAction`, `ActionType` |
292
+ | `integrations.py` | Framework callbacks | `OthismosTorchCallback`, `OthismosTrainerCallback`, `DictLogger` |
293
+ | `serialization.py` | Save/load/export | `save_history`, `load_history`, `export_metrics_csv`, `pressure_summary` |
294
+ | `config.py` | Unified configuration | `OthismosConfig` (YAML/dict, `build_all()` factory) |
295
+ | `protocols.py` | Formal typing | `FeasibilityFn`, `ProjectionFn`, `MetricLogger`, `ConstraintLike` |
296
+ | `viz.py` | Plotting (matplotlib) | `plot_pressure`, `plot_molt_cycle`, `plot_constraint_profile`, `plot_diagnostic_timeline` |
297
+ | `pandas_export.py` | DataFrame export | `gauge_to_dataframe`, `tracker_to_dataframe`, `reef_to_dataframe` |
298
+ | `cli.py` | Command-line tool | `othismos reef`, `othismos diagnose`, `othismos pressure` |
299
+
300
+ **135 tests, all passing.** Run them: `python -m pytest tests/ -v`
301
+
302
+ ## Repository structure
303
+
304
+ ```
305
+ src/othismos/ Python package (13 modules, 3,644 lines)
306
+ tests/ 135 tests across 10 files
307
+
308
+ essays/ Conceptual foundations — start here
309
+ 00_PHILOSOPHY.md The founding text. Why the push IS the knowing.
310
+ 01_THE_ORIGIN.md Where the word came from and what it names.
311
+ 02_EVERYWHERE.md Óthismos in physics, biology, cognition, culture.
312
+ 03_THE_FOOL_AND_THE_WALL.md Humor as óthismos. Absurdity as epistemology.
313
+ 04_THE_POPCORN_DIAGNOSTIC.md The Pop/Burn/Seep diagnostic. Start here for the engineering idea.
314
+ 05_NEGOTIATING_WITH_WALLS.md Five postures toward constraints (Surveyor, Archer, Vine, Water, Earthquake).
315
+
316
+ math/
317
+ 01_PRESSURE_MATH.md Π formalized as a scalar. Measurable. Includes proofs and the Goldilocks zone derivation.
318
+
319
+ metal/ Hardware-facing docs
320
+ 01_PRESSURE_AWARE_DESIGN.md Instrumentation, adaptive sizing, molting protocols.
321
+ 02_THE_THERMODYNAMIC_LULLABY.md Edge computing, fishing boats, what chips dream about.
322
+
323
+ ecology/
324
+ 01_ECONOMICS.md Markets made of pressure. Conservation budget as currency.
325
+ 02_THE_MOLT_CYCLE.md The five phases explained with diagrams. The staircase metric.
326
+
327
+ worldbuilding/ Extended metaphors that clarify the framework
328
+ 01_KIMI_WORLD.md A civilization built on push.
329
+ 02_SEEDMINI_DICTIONARY.md 17 words for the facets of pressure.
330
+ 03_GLM_TIDEPOOL.md A fable about constraint and growth.
331
+ 04_GLM_CALENDAR.md Time measured in pushes, not seconds.
332
+ 05_THE_REEFS_MEMORY.md How bounded civilizations remember and forget.
333
+
334
+ art/
335
+ 01_THE_LONG_PUSH.md Poetry sequence following the staircase of growth.
336
+
337
+ research/ Deep research documents from GLM-5.2 agents
338
+ 01_REAL_WORLD_APPLICATIONS.md Survey of 7 fields, 6 concrete use cases, API gap analysis. (608 lines)
339
+ 02_LIBRARY_DESIGN.md API audit, framework integration patterns, packaging roadmap. (1,106 lines)
340
+ 03_THEORETICAL_FOUNDATIONS.md KKT connections, grokking as molt, 37+ arXiv refs, 5 testable claims. (446 lines)
341
+ 04_ECOLOGY_AS_INFRASTRUCTURE.md Reef as dependency graph, three-gate CI, erosion rates, CLI spec. (762 lines)
342
+
343
+ glossary_short.md 40+ terms — the living lexicon of push.
344
+ demo.py End-to-end simulation: watch a bounded optimizer go through all five phases.
345
+ ```
346
+
347
+ ## Reading guide
348
+
349
+ **If you're an engineer who wants to use the library:**
350
+ 1. Read `essays/04_THE_POPCORN_DIAGNOSTIC.md` (the diagnostic intuition)
351
+ 2. Read `ecology/02_THE_MOLT_CYCLE.md` (the five phases)
352
+ 3. Read `math/01_PRESSURE_MATH.md` (the formal definition — it's short)
353
+ 4. Run `python demo.py` (see it in action)
354
+ 5. Skim `research/01_REAL_WORLD_APPLICATIONS.md` (find your use case)
355
+
356
+ **If you're a researcher:**
357
+ 1. Read `math/01_PRESSURE_MATH.md` first
358
+ 2. Then `research/03_THEORETICAL_FOUNDATIONS.md` (the honest novelty assessment, the open questions)
359
+ 3. Then `essays/00_PHILOSOPHY.md` and `essays/05_NEGOTIATING_WITH_WALLS.md` (the conceptual framing)
360
+
361
+ **If you're a student:**
362
+ 1. Read `essays/01_THE_ORIGIN.md` (the gentlest entry point)
363
+ 2. Read `essays/02_EVERYWHERE.md` (see it everywhere)
364
+ 3. Read `art/01_THE_LONG_PUSH.md` (feel it)
365
+ 4. Then tackle the math
366
+
367
+ **If you're sending agents to contribute:**
368
+ - Tell them to read `research/02_LIBRARY_DESIGN.md` for the API audit and what's missing
369
+ - The test suite (`tests/`) is the specification — 122 tests document every behavior
370
+ - `research/04_ECOLOGY_AS_INFRASTRUCTURE.md` has a full CLI design spec for the reef system that hasn't been built yet
371
+ - `protocols.py` defines the interfaces any new module should conform to
372
+ - The glossary (`glossary_short.md`) is the vocabulary — use these terms in issues and PRs
373
+
374
+ **If you want to build adjacent systems:**
375
+ - [Hermit-Crab-Ecology](https://github.com/SuperInstance/hermit-crab-ecology) — bounded computation in bytecode VMs
376
+ - [Lucineer](https://github.com/SuperInstance/Lucineer) — bounded intelligence in metal (chip design)
377
+ - The óthismos framework was discovered in the negative space between these two projects. Both describe bounded intelligence. Neither named the force that pushes back. This repo names it.
378
+
379
+ ## Related concepts in existing literature
380
+
381
+ Óthismos connects to several established frameworks. The research docs cover these in depth, but briefly:
382
+
383
+ - **KKT conditions:** The Lagrange multipliers at optimality ARE the steady-state óthismos per constraint. Óthismos measures them dynamically, not just at convergence.
384
+ - **Projected gradient descent:** Π is exactly the projection residual that PGD computes internally and discards. We keep it.
385
+ - **Edge of Stability** (Cohen et al., 2021): The EOS phenomenon — where training hovers at the stability boundary of the largest eigenvalue — IS the Resistance phase of the molt cycle.
386
+ - **Grokking** (Power et al., 2022): The delayed generalization phase transition IS a molt event. Óthismos should be constant at the grokking threshold.
387
+ - **Moreau-Yosida regularization:** The proximal residual is structurally identical to Δθ.
388
+
389
+ See `research/03_THEORETICAL_FOUNDATIONS.md` for 37+ references and the honest assessment of what's novel vs. known.
390
+
391
+ ## Status
392
+
393
+ v0.3.0. Built 2026-07-14. Actively developed.
394
+
395
+ ## Modular ecosystem
396
+
397
+ The framework is decomposing into standalone modules, each its own repo and pip package:
398
+
399
+ | Module | Repo | What it does |
400
+ |--------|------|-------------|
401
+ | **óthismos** (this repo) | [SuperInstance/othismos](https://github.com/SuperInstance/othismos) | Core: pressure measurement, molt cycle, popcorn diagnostic |
402
+ | **othismos-reef** | [SuperInstance/othismos-reef](https://github.com/SuperInstance/othismos-reef) | Knowledge graph with erosion, three-gate validation, cascading failure |
403
+ | **othismos-llm** | [SuperInstance/othismos-llm](https://github.com/SuperInstance/othismos-llm) | Context-window pressure for LLMs — safe truncation point finder |
404
+
405
+ Each module can be used independently. They connect through the core `othismos` package.
406
+
407
+ ---
408
+
409
+ *The wall is not your enemy. The wall is the other half of what you are. Push. Listen. Push differently.*