Bendex Vigil
Detect. Attribute. Intervene.
Real-time neural network training stability monitoring grounded in information geometry.
What it does
Vigil monitors your training run in real time, identifies which layer is failing, and corrects it automatically — before your loss curve shows anything.
| Vigil | Loss spike | Gradient norm | Patience | |
|---|---|---|---|---|
| Detection rate | 100% | 100% | 90% | 100% |
| False positive rate | 0% | 80% | 50% | 50% |
| Recovery rate | 90% | 0% | 0% | 0% |
| Attributes module | Yes | No | No | No |
| Intervenes automatically | Yes | No | No | No |
30-seed benchmark across 7 architectures: MLP, CNN, ViT, DistilBERT, GPT-2, ResNet-50, distribution shift.
How it works
Vigil treats your model's weight trajectory as a geometric object and computes discrete curvature over it:
k_t = |d_t - 2*d_{t-1} + d_{t-2}|
where d_t is the normalized per-module weight divergence from a reference checkpoint. During healthy training, k_t stays near zero. At instability onset it spikes — well before loss diverges.
Two detection channels run in parallel:
- AND mode — divergence step-change AND gradient energy both persistently exceed their z-scored baseline
- Kappa mode — curvature alone persistently exceeds its z-scored baseline
When a trigger fires, the deepest-early-cluster attribution algorithm identifies the specific module that deviated first. A three-phase intervention then fires automatically.
Install
pip install bendex-vigil
Or from source:
git clone https://github.com/hannahnine/bendex-vigil
cd bendex-vigil
pip install -e .
Usage
One call. Before your forward pass.
from bendex import BendexMonitor, BendexConfig, BendexIntervention
monitor = BendexMonitor(model, config=BendexConfig())
intervention = BendexIntervention(model, optimizer)
for step, batch in enumerate(dataloader):
event = monitor.observe(step) # before forward pass
intervention.step(event, step)
loss = model(batch)
loss = loss + intervention.logit_loss(logits)
loss.backward()
intervention.apply_grad_clip()
optimizer.step()
optimizer.zero_grad()
See examples/basic_usage.py for a complete working example.
Configuration
config = BendexConfig(
warmup_steps=60, # steps to collect baseline before detection starts
z_threshold=2.5, # z-score threshold for detection
persist=2, # consecutive steps signal must exceed threshold
max_lag=6, # attribution temporal window
)
Validated architectures
- Multilayer perceptron (MLP)
- Convolutional neural network (CNN)
- Small Vision Transformer (ViT)
- DistilBERT 66M — SST-2, 30-seed benchmark
- GPT-2 117M — WikiText-2 fine-tuning
- ResNet-50
- Distribution shift benchmark (SST-2 → MNLI)
Research
Vigil is the applied proof of a theoretical program in information geometry. Five published papers:
- Informational Curvature
- Informational Stability
- Reflexivity
- Experience
- Specialization — derives the fine structure constant α to 8 significant figures from pure geometry
License
Source available. Free for research and non-commercial use. Commercial license required for all other use.
See LICENSE for full terms.
Patent pending. Methods covered by provisional patent applications filed by Hannah Nine / Bendex Geometry LLC (priority dates November 2025, February 2026, March 2026).
For commercial licensing: 9hannahnine@gmail.com · bendexgeometry.com
Author
Hannah Nine — bendexgeometry.com · ORCID 0009-0006-3884-7372
Metadata
Release files for arc-vigil 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| arc_vigil-1.0.0.tar.gz | 9.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arc_vigil-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.1 kB
Release files / arc_vigil-1.0.0.tar.gz
| Download URL | arc_vigil-1.0.0.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2572787bce07f57693b460fb84e371fca1e8cc3b58c4783eb05b80c997ff895
|
|
BLAKE2b-256 checksum How to use checksums |
95b6fa3fda0deadde6ce3ae20bf0aa6f3f4c5372de4dc07da98a41225412add1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / arc_vigil-1.0.0-py3-none-any.whl
| Download URL | arc_vigil-1.0.0-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
18343abc2e79b9021410fc34605605d970bea7bc0c5cb8f3e33f9ae36451bf20
|
|
BLAKE2b-256 checksum How to use checksums |
031601ea09edba9366e4ebe29193beb7fe2abf16cf609fdb70820dd14924e62c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for arc-vigil 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.