19 lines
3.5 KiB
Markdown
19 lines
3.5 KiB
Markdown
# Independent mechanical parser stack repair review
|
|
|
|
2026-09-25. No source blocker found. Reviewed the frozen working change against `19a4082117b88caf332198e4c685bde91005cb52`, then confirmed the same bytes at committed `8d52dab97c92cc31baae9f20d8c324b55818aa5d` with a clean worktree. This is source review; compiler, native-frame measurements and runtime acceptance belong to the parent.
|
|
|
|
| Reviewed file in `.local/as3batch` | SHA256 |
|
|
| --- | --- |
|
|
| `crates/oa-core/src/language/analysis_source/syntax.rs` | `2763738ab9ada418ca8d05b424035bba552606338234308288d5a373bcbad439` |
|
|
| `harness/analysis-mixed-parser-stack-repair-20260925.md` | `e2156601e6747ff18e92034827acf4a72035a1fa77f3ff7618c04f1ce64a0f12` |
|
|
|
|
The driver at `syntax.rs:31` retains its initial active check, unbound fast path, original task/value Vecs, pop followed by the per-task active check, and final value extraction. Only dispatch changes: expression tasks call `prefix` (`:53`); other tasks call `continue_task` (`:154`). Neither helper calls the driver or the other helper. Both borrow the existing Cursor and Vecs; the continuation takes ownership of the same popped task. No new collection, clone, policy field, allocation, budget check, forwarding wrapper or recursive parser operation is introduced.
|
|
|
|
Independent source comparison, preserving quoted strings and removing formatting whitespace, established that the prefix body is unchanged except two optional trailing argument commas removed by formatting. Every continuation arm is token-identical (2,622 comparison tokens). Code before binding and after the extracted continuation is unchanged. Manual control-flow review covers Continue, Binary, Unary, Group, Next, Collected, Power and AsKind: cursor mutations, task/value push and pop order, precedence, sequence limits, duplicate keys, reference charges, numeric validation, spans, open/close depth, node construction and error order are retained. The added Expression unreachable arm is excluded by the driver's preceding exhaustive Expression dispatch; there is no other caller.
|
|
|
|
Moved `return Err` paths now return from a helper and immediately propagate through the driver's `?`. The driver still owns and drops its two stacks on failure; helper-owned popped payloads retain their original move/drop roles. This changes native frame layout and cleanup call paths, so source equivalence does not establish a stack bound. Parent measurements must compare the active driver-plus-prefix and driver-plus-continuation combinations, and unchanged stack controls must exercise actual behavior. No test, fixture or allowance was changed by this repair.
|
|
|
|
The preserved 19a4082 full run aborted with `0xc00000fd`; the exact artifact was 42,402,816 bytes, SHA256 `777457cfefb8a3046e3f0809cabd936cfb742abe792befad2c50e05dfac1bf6b`. The inspected debugger record shows Exact decimal formatting beneath binding/declarations/typed parsing; no emitter call is active. Earlier outer-frame reservations matching fa7 and unchanged existing owner fields do not support calling this a duplicate-policy regression. The repair note accurately distinguishes partial measured prologues from total stack use and a killed debugger process from a test pass. The original source/test reviews and failed attempt remain preserved.
|
|
|
|
Review tools were Git diff/show/status, file hashing and a source-text comparison script only. No Cargo, executable tests, source edits or network operations were performed by this reviewer. Runtime results, even if available separately, are not claimed by this report.
|