orgstate / core /README.md
Legal-i's picture
Initial OrgState deploy via Stage 150 free-tier stack
d2d1903 verified
# core/ โ€” ื”ืœื™ื‘ื” ื”ืื ืœื™ื˜ื™ืช
ื”ืฉื›ื‘ื” ื”ื˜ื”ื•ืจื” ืฉืœ OrgState Engine. **stdlib ื‘ืœื‘ื“, ืœืœื I/O, ืœืœื state.**
ืื ืจื›ื™ื‘ ื›ืืŸ ืฆืจื™ืš ืœื™ื™ื‘ื ืžโ€‘`infra/`, `verticals/` ืื• `delivery/` โ€” ื”ื•ื ืœื ืฉื™ื™ืš ืœื›ืืŸ.
## ืชื•ื›ืŸ
| ืงื•ื‘ืฅ | ืžื” ื™ืฉ ื‘ื• |
|---|---|
| `events.py` | `CanonicalEvent` โ€” ืื™ืจื•ืข ืืจื’ื•ื ื™ ืื—ื™ื“ |
| `state.py` | `EntityState` โ€” ืžืฆื‘ ื™ืฉื•ืช ืœื™ื•ื ื ืชื•ืŸ |
| `ontology.py` | `Entity`, `ENTITY_TYPES` โ€” ืกื•ื’ื™ ื™ืฉื•ื™ื•ืช ืืจื’ื•ื ื™ื•ืช |
| `signals.py` | ืžืชืžื˜ื™ืงืช ื”ืื•ืชื•ืช: ฮ” (ืฉื™ื ื•ื™), ฯˆ (ื™ืฆื™ื‘ื•ืช), ฮพ (ื—ืจื™ื’ื”), ฮณ (ื–ืžืŸ ืชื’ื•ื‘ื”), ฮบ (ืงื•ื”ืจื ื˜ื™ื•ืช), ฮฉ (ื‘ืจื™ืื•ืช) |
| `drift.py` | `DriftIssue`, `drift_score` (ืกื›ื•ื ืžืฉื•ืงืœืœ, weights ืื•ืคืฆื™ื•ื ืœื™ื™ื), `severity_from_score` |
| `decisions.py` | `DecisionItem`, `recommendation_for_issue` |
| `config.py` | **Stage 1** โ€” `MetricConfig` / `EntityTypeConfig` / `VerticalConfig`, ื˜ืขื™ื ื” ืžโ€‘YAML |
| `calibration.py` | **Stage 1** โ€” `calibrate` / `Calibration`, ืกืงื™ื™ืœื™ื robust (MAD) ืžื“ืื˜ืช ื”ืœืงื•ื— |
| `pipeline.py` | **Stage 1** โ€” `Observation`, `run_pipeline` โ€” ื”ืฆื™ื ื•ืจ ื”ื’ื ืจื™ ืžื•ื ืขโ€‘ื”ืงื•ื ืคื™ื’ |
## ืฉื™ืžื•ืฉ
```python
from core import drift_score, severity_from_score, health_omega
signals = {"delta": 0.3, "psi": 0.7, "xi": 0.5, "gamma": 0.4, "kappa": 0.8}
score = drift_score(signals) # 0.0 (ื‘ืจื™ื) .. 1.0 (ืžื“ื•ืจื“ืจ)
severity = severity_from_score(score) # low / medium / high / critical
```
## ื‘ื“ื™ืงื•ืช
`tests/test_core_*.py` โ€” 36 ื‘ื“ื™ืงื•ืช correctness ืืžื™ืชื™ื•ืช (ืœื ื‘ื“ื™ืงื•ืช ื˜ื•ื•ื— ื‘ืœื‘ื“):
ืชื›ื•ื ื•ืช ืžืชืžื˜ื™ื•ืช ืฉืœ ื›ืœ ืื•ืช, ืžืฉืงืœื™ `drift_score`, ืกืคื™ ื”ื—ื•ืžืจื” ื‘ื’ื‘ื•ืœื•ืช, ืžื™ืคื•ื™
ื”ื”ืžืœืฆื•ืช, ื•ื‘ื“ื™ืงื” ืื™ื ื˜ื’ืจื˜ื™ื‘ื™ืช ืฉืžื•ื›ื™ื—ื” **leadโ€‘time ื—ื™ื•ื‘ื™** ืขืœ ืกื“ืจื” ืžื“ื•ืจื“ืจืช.
## Stage 1 โ€” ื‘ื•ืฆืข
ื”ืกืงื™ื™ืœื™ื ื•ื”ืžืฉืงืœื™ื ื›ื‘ืจ ืœื hardcoded: `config.py` ื”ื•ืคืš ืื•ืชื ืœืงื•ื ืคื™ื’,
`calibration.py` ื’ื•ื–ืจ ืืช ื”ืกืงื™ื™ืœื™ื ืžื“ืื˜ืช ื”ืœืงื•ื—, ื•โ€‘`pipeline.py` ื”ื•ื ืฆื™ื ื•ืจ ื’ื ืจื™
ืื—ื“ ืžื•ื ืขโ€‘ืงื•ื ืคื™ื’. ื”ื“ื™ืคื•ืœื˜ื™ื ื”ื”ื™ืกื˜ื•ืจื™ื™ื ื ืฉืืจื• ืžืงื•ื‘ืขื™ื ื‘โ€‘`drift.py`
(`DEFAULT_DRIFT_WEIGHTS` / `DEFAULT_SEVERITY_THRESHOLDS`) ื•ื”ื‘ื“ื™ืงื•ืช ืžื•ื•ื“ืื•ืช
ืฉื”ื ืœื ืžืฉืชื ื™ื ื‘ืฉืงื˜.