Skip to content

eigsdap v2/v3: scope-qualified locals on the tape, then a DAP server (stepBack/reverseContinue in VS Code) #539

Description

@InauguralPhysicist

Follow-up to #418, whose v1 CLI stepper landed in #538. The original issue's blocked tail:

v2 — locals as first-class scopes. A records now fire at every scope (they ride the same hooks as the temporal history) but carry the name only — same-named bindings from different scopes merge into one stream, so the stepper (and state_at) can't distinguish a function-local i from the top-level one. v2 is a scope/frame qualifier on the record (tape-encoding change → TRACE_FORMAT_VERSION bump + compat decision per #411; measure the record-volume cost — the trace compile-gate discipline applies).

v3 — src/eigsdap.c, a DAP server over stdio (blocked on v2): reuse eigenlsp's JSON plumbing; stepBack/reverseContinue driving the same tape model as --step; variables pane with trajectory child nodes; launch config in the canonical VS Code extension; tests/test_dap.py protocol-pinned like test_lsp.py.

The v1 stepper's tape model (position = L-record index, bindings = A-record fold, labels via the exported observer_slot_record_value) is the substrate v3 wraps — the DAP server is a protocol skin over step.c's internals, so consider extracting its Tape struct to a header when v3 starts.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions