* feat(native): retain LLDB source coordinates and verify Pascal call entries Preserve partial line-table attribution for native locations and historical evidence compatibility. Verify owned Free Pascal call entries through CLI/MCP. Refs #2382, #2372, #2397 Co-Authored-By: Codex <noreply@openai.com> * docs: namespace native specifications by domain and feature Use stable descriptive paths instead of numeric prefixes to avoid parallel contribution collisions. Co-Authored-By: Codex <noreply@openai.com> * fix(native): bound Pascal verification and compare caller coordinates Address review findings at their producing boundaries and preserve directly affected consumers. Source inspection and git diff --check completed. Tests and automated checks were not run at the user’s explicit request. * fix(native): bound compiler shutdown and source-coordinate fixtures * docs: clarify historical native source verification * fix(native): preserve source attribution and compiler ownership * docs(native): qualify retained source attribution * fix(ci): clean up native Pascal verifier processes * test(native): type the Pascal verifier helper import after merging main Main now typechecks this boundary test, which imports the untyped canonical-temporary-directory helper and reads an unknown catch value. Add the helper's declaration file and narrow the caught error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(native): verify partial source attribution caveat * fix(native): retain verifier compiler cleanup ownership * fix(native): forward verifier cancellation and measure path bytes CLI and MCP artifact runs observe the verifier abort signal, and a failed Pascal verifier test stops the compiler group before deleting its directory. Repeated source locations grow by measured UTF-8 JSON bytes; workflow tokens, CPU and peak memory stay unmeasured. --------- Co-authored-by: Matheus Breguêz <matbrgz@gmail.com> Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2.0 KiB
Implementation plan
Boundary and contract
Extend nativeCodeLocationSchema in src/domain/native/nativeCallObservation.ts. Reuse that shape for events, breakpoint locations, backtraces and retained journal events. Keep the field optional for older evidence and nullable for current LLDB observations with unavailable metadata. Each inner facet can be independently unavailable; avoid dropping a valid line number because a file path is absent.
Read SBAddress.GetLineEntry once in the existing Python _location producer. A valid SBFileSpec supplies its displayed path without filesystem access. Convert zero line/column to null. An invalid entry returns null. Existing estimation and serialization budget checks already traverse the location object recursively.
Incremental work and validation
- Define contracts and criteria before code; add failing producer tests.
- Extend the canonical schema and _location producer. Update existing fake address objects to implement the actual LLDB line-entry interface.
- Extend provider/MCP boundary coverage and retained-journal coverage for the additive field; preserve omission compatibility.
- Extend the existing real macOS verifier with source-coordinate assertions against its own Objective-C/C fixture built with debug information.
- Update the native investigation guide; run Python tests, focused TypeScript tests, repository checks and the real verifier if host authority permits.
Effects and compatibility
The existing LLDB operation already owns its breakpoint callbacks and process lifecycle. This adds a metadata read within that observation. It does not introduce target execution or a new provider beyond existing behavior. No source file is acquired from a path in debug information. Consumers of historical evidence retain omission; consumers of new captures see either a partial/full object or null.