FABRIC-3.10.8 K-8: free the vocabulary indexes and inference outputs at vm_cleanup

The ~3.4 KB/VM heap residual left after K-4 was each dead VM's CONTEXT
and FORTH first-character bucket arrays (84 blocks, 3,400 bytes per
worker), plus last_inference_outputs. New vocabulary_free_indexes();
both vm_cleanup()s call it and free the outputs. Per-VM residual is now
232 bytes: the registry node (kept by design) and the vm_physics node
(open finding). 3-ISA acceptance clean, hash 0x99b01134c3d3049c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-26 09:21:16 -04:00
co-authored by Claude Opus 5.5
parent acea36ea55
commit f29658a65d
15 changed files with 46014 additions and 0 deletions
+8
View File
@@ -398,6 +398,14 @@ void vm_cleanup(VM* vm)
/* This VM's dictionary lookup index (FABRIC-3.10.8 MC-0c) */
vm_dictionary_index_free(vm);
/* Its vocabulary search indexes and last inference outputs
* (FABRIC-3.10.8 K-8: neither was freed). */
vocabulary_free_indexes(vm);
if (vm->last_inference_outputs) {
sf_free(vm->last_inference_outputs);
vm->last_inference_outputs = NULL;
}
/* Clean up rolling window of truth */
rolling_window_cleanup(&vm->rolling_window);