Metadata-Version: 2.4
Name: antineutrino-safeguards
Version: 0.1.0
Summary: Reusable simulation and analysis tools for antineutrino-based fusion safeguards monitoring.
Author: omegaXiv Packaging Pipeline
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: mypy>=1.10.0; extra == "dev"
Requires-Dist: pytest>=8.2.0; extra == "dev"
Requires-Dist: ruff>=0.6.9; extra == "dev"

# antineutrino-safeguards

## Overview
`antineutrino-safeguards` packages reusable simulation and claim-analysis components extracted from the validated EXP-ED-01 contribution: robust minimax-style monitoring comparisons under nuisance shifts (background drift, standoff, energy resolution, and prior-family stress).

Core contribution exposed in this package:
- A deterministic scenario simulator for baseline vs robust detector comparison.
- Claim summary metrics aligned with DMM-C1, DMM-C2, and DMM-C3 evaluation framing.
- A lightweight symbolic consistency audit for monotonicity, likelihood-ratio identity, and stability bounds.

## Installation
Canonical omegaXiv user flow:
1. `pip install omegaxiv`
2. `ox install antineutrino-safeguards==0.1.0`

Maintainer/dev-only source install (not the canonical user path):
- `pip install -e packages/antineutrino-safeguards`

Additive MCP registration options:
- `ox install antineutrino-safeguards==0.1.0 --mcp`
- `ox install antineutrino-safeguards==0.1.0 --mcp=codex`
- `ox install antineutrino-safeguards==0.1.0 --mcp=claude`
- `ox install antineutrino-safeguards==0.1.0 --mcp=all`

## Configuration
The package uses a `MonitoringConfig` dataclass. You can use defaults or provide explicit sweeps.

```python
from antineutrino_safeguards import MonitoringConfig

config = MonitoringConfig(
    seeds=(101, 202),
    alpha_targets=(1e-3,),
    background_drift_slope=(0.0, 0.01, 0.02),
    energy_resolution_pct=(4.0, 6.0),
    prior_family_id=("huber_nominal", "conservative_shifted"),
    standoff_m=(25.0, 50.0),
)
```

## Usage Examples

```python
from antineutrino_safeguards import (
    FusionSafeguardsSimulator,
    MonitoringConfig,
    rank_monitoring_regimes,
    summarize_claims,
)

config = MonitoringConfig()
simulator = FusionSafeguardsSimulator(config)
records = simulator.run()
summary = summarize_claims(records)
rankings = rank_monitoring_regimes(records, top_k=3)

print(summary.dmm_c1_delay_win_rate)
print(rankings[0].score)
```

```python
from antineutrino_safeguards import run_symbolic_audit

checks = run_symbolic_audit()
print(checks["SYMPY-C1-2"])
```

## MCP Companion Interface
This package includes a stdio MCP companion server in `antineutrino_safeguards.mcp_server`.

What it exposes:
- `simulate_monitoring`: runs the simulator and returns sampled records.
- `summarize_claims`: computes DMM claim-summary metrics.
- `rank_regimes`: ranks regimes by delay/FAR/TPR composite score.
- `symbolic_audit`: returns symbolic consistency checks.

Launch (stdio transport):
- `python -m antineutrino_safeguards.mcp_server --serve`

One-shot tool invocation example:
- `python -m antineutrino_safeguards.mcp_server --tool summarize_claims --input '{"config": {"seeds": [1, 2]}}'`

How MCP maps to normal Python API:
- MCP tools call the same package functions used in import-based workflows (`FusionSafeguardsSimulator.run`, `summarize_claims`, `rank_monitoring_regimes`, `run_symbolic_audit`).

Example client config fragment:

```json
{
  "mcpServers": {
    "antineutrino-safeguards": {
      "transport": "stdio",
      "command": "python",
      "args": ["-m", "antineutrino_safeguards.mcp_server", "--serve"]
    }
  }
}
```

## Troubleshooting
- If simulation outputs look empty, confirm at least one value is present for each sweep dimension in `MonitoringConfig`.
- If MCP returns `unknown tool`, call `tools/list` first or use one of the documented tool names.
- For deterministic comparisons, keep seed tuples fixed across runs.
