# MCSJ Utility Adjustment Speed Racer — AgentV11

## Current primary route

- Runner: `C:/MCSJAgent/mcsj-speed-racer.py`
- Self-healing launcher: `C:/MCSJAgent/SwingBridge/mcsj-fast-v11.py`
- Current hardened class artifact: `AgentV15.jar` on `127.0.0.1:9815`
- Product generation: AgentV11 racer (fresh V12–V15 class identities were required during live attach because injected JVM classes cannot be unloaded/redefined)

## Exact in-process primitives

- `FXWINDOWSTATE <exact-title>` reads one visible JavaFX modal stage.
- `FXWINDOWBUTTON <exact-title> <button-text> <expected-disabled>` fires one exact enabled modal button.
- `FXSELECTTAB <exact-panel-class> <tab-text> <expected-selected>` selects one exact module tab and verifies readback.
- `FXCOMBOOPTIONS <panel> <class> <id> <occurrence>` reads the exact live options without mutation.
- `FXSELECTCOMBO <panel> <class> <id> <occurrence> <expected> <new>` performs guarded combo selection with readback.
- `FXSELECTDATE <panel> <class> <id> <occurrence> <expected-ISO> <new-ISO>` performs guarded DatePicker selection with readback.

All mutation selectors require exact titles/text/classes and unique matches. MCSJ's own Save, Verification, Update, and dialog handlers still run; nothing posts directly to the database.

## Clean benchmark

Batch `CJH0710F`, account `601-2`, Water, BAL, 2026/1, principal `-1.00`:

- Before: `315.66`
- After: `314.66`
- Entry complete: `2.049s`
- Saved: `2.396s`
- Verified: `3.830s`
- Updated: `4.888s`
- Refreshed semantic after-proof: `8.636s`
- Semantic workflow sub-10: `true`
- Screenshot/artifact completion is reported separately by the current runner.

Result: `C:/MCSJAgent/proof/speed-racer-CJH0710F.json`
Proof: `C:/MCSJAgent/proof/speed-racer-CJH0710F-after.png`

## Usage

```bash
python C:/MCSJAgent/mcsj-speed-racer.py --execute \
  --batch CJH0710G --account 601 --sub 2 \
  --service Water --expected-owner "CHESTER ACQUISITIONS LLC" \
  --code BAL --year 2026 --period 1 --principal=-1.00 \
  --description "Speed racer credit" --expected-before 314.66
```

Omit `--execute` for mutation-free preflight.

## Development recoveries

- `CJH0710E` posted and was verified at `315.66`, but its run was excluded from timing because the first direct-tab implementation hit Java reflection access after Update. Fixed with accessible selection-model methods.
- The first public JavaFX window registry method was unavailable in MCSJ's JavaFX 8 runtime. Current code uses `Window.impl_getWindows()` and exact stage titles.
- On the next normal MCSJ restart, only attach the current `AgentV13.jar`/9813 launcher; older development listener classes cannot be unloaded from the current JVM but disappear on restart.
