feat(scheduler-sim-decision-trace): hook the host pre-filter, host scan and satisfaction check

Task 3.3: the pre-filter records selection mismatches and internal
errors as host verdicts, a scan stopped by an error marks the position
as a scan error, and unsatisfy_() hands every checked row to the current
record. Iterator and check results are unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-08 11:42:19 +00:00
parent 542c6e602a
commit d4bee4b5d0
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
6 changed files with 834 additions and 3 deletions

View file

@ -94,8 +94,10 @@ typedef struct xce_sched_trace_rec_s xce_sched_trace_rec_t;
* effects and argument evaluation included) runs only while `core` (an
* xce_sched_core_t*) has a record under construction in trace_rec, so a
* hook costs one pointer test when nothing is traced, and nothing else.
* Only the allocator thread sets trace_rec, so hooks are placed only on
* that thread. One statement: safe in an unbraced if/else.
* Only the allocator thread sets trace_rec. A hooked function called from
* another thread (the sim thread's reconciliation reaches unsatisfy_)
* sees NULL there, because the allocator clears trace_rec before it hands
* each decision back. One statement: safe in an unbraced if/else.
*/
#define SCHED_TRACE(core, call) \
do { \