Forked P128 into P129 and added a stricter shadow scheduler model: frontend-side arrival requests and backend service events are counted separately for integer, memory, and control classes. This does not change architectural execution.
Verification:
| check | result |
|---|---|
make check-tools | PASS |
| P129 Verilator build | PASS |
| P129 BusyBox shell profile | PASS |
P129-FILE-OK at cycle | 218,413,804 |
| Chart generation | PASS |
The important numbers:
capacity per class : 8
samples : 50,443,768
single ready : 50,443,768
dual ready : 0
triple ready : 0
integer arrivals/services : 13,098,026 / 13,098,026
memory arrivals/services : 3,245,358 / 3,245,299
control arrivals/services : 6,310,289 / 6,310,289
max occupancy I/M/C : 1 / 1 / 1
This answers the abstraction question directly. The current frontend and backend boundary is not yet proper enough. The counters are useful, but they still orbit a monolithic FSM. P130 should make the boundary a real ready/valid contract before we keep stacking scheduler ideas on top.