LifeStack / docs /scripts.md
Soham Banerjee
deploy: pure lifestack with partitioned wisdom pool
77da5ce
# scripts.md β€” Other Scripts Reference
Reference for scripts not covered by dedicated doc files.
---
## `scripts/run_episode.py`
Runs a single full episode with the LLM agent (requires API key).
```bash
python scripts/run_episode.py
python scripts/run_episode.py --difficulty 3 --verbose
```
Returns a result dict with `total_reward`, `steps`, `domain`.
---
## `scripts/train.py`
Legacy training loop (pre-TRL). Uses a simple policy gradient loop without curriculum.
Prefer `train_trl.py` for new training runs.
---
## `scripts/smoke_test.py`
Quick sanity check β€” imports all core modules, resets the env once, takes one step.
No agent required. Exits with code 0 on success.
```bash
python scripts/smoke_test.py
```
---
## `scripts/test_lifestack.py`
Full edge-case test suite (11 tests). Does not use pytest runner by default β€”
run directly or via `pytest scripts/test_lifestack.py`.
```bash
python scripts/test_lifestack.py
pytest scripts/test_lifestack.py -v
```
Tests requiring `OPENAI_API_KEY` are automatically skipped when the key is absent.
### Tests
| # | Name | What it checks |
|---|---|---|
| 1 | Cascade floor | Metrics never go below 0 |
| 2 | Cascade ceiling | Metrics never exceed 100 |
| 3 | Resource exhaustion | `deduct()` returns False without going negative |
| 4 | Inaction penalty | `INACTION_PENALTY` fires when `actions_taken=0` |
| 5 | Critical floor penalty | `CRITICAL_FLOOR_VIOLATION` fires below threshold |
| 6 | Cascade dampening | Second-order deltas < first-order delta |
| 7 | SimPerson uptake bounds | All uptake values in [0.1, 1.0] |
| 8 | Memory threshold | Only reward >= 2.0 stored |
| 9 | Episode termination | `done=True` after horizon steps |
| 10 | Task-driven smoke | Inspect + Route execute without crash |
| 11 | Full episode smoke | `run_episode()` returns float reward *(skipped without API key)* |
---
## `scripts/longitudinal_demo.py`
Seeds Arjun's multi-week journey into ChromaDB and renders a comparison view.
Used by Tab 4 (Arjun's Journey) in `app.py`.
---
## `scripts/validate_simperson.py`
Validates all `SimPerson` personality trait combinations produce valid uptake values.
---
## Change Log
| Date | Change |
|---|---|
| 2026-04-23 | `test_lifestack.py` β€” `steps<=5` assertion fixed to `steps<=30`; `import pytest` added; `@pytest.mark.skipif` added to test 11 |