Skip to content

Thread Haskell-backend logging and booster-only-simplify flags#1149

Merged
automergerpr-permission-manager[bot] merged 6 commits into
masterfrom
logging-updates
Jun 16, 2026
Merged

Thread Haskell-backend logging and booster-only-simplify flags#1149
automergerpr-permission-manager[bot] merged 6 commits into
masterfrom
logging-updates

Conversation

@ehildenb

@ehildenb ehildenb commented Jun 8, 2026

Copy link
Copy Markdown
Member

Adds the ability to capture per-request Haskell-backend log bundles from any RPC-based Kontrol command, which answers why a proof step is slow or failing — which lemmas Kore applied, which rules Booster rejected and the reason, and where Booster aborted and fell back to Kore — a question timing profiles cannot. Three new flags are threaded through prove and the legacy_explore-based commands (show, simplify-node, step-node, section-edge, get-model), all of which share the same RPC options.

Changes:

  • New flags on the RPC commands: --haskell-log-dir DIR (the on switch; writes one <request-id>.jsonl bundle per RPC call), --haskell-log-entries E1,E2,... (which backend entry families to request; defaults to pyk's curated HASKELL_LOGGING_ENTRIES when omitted), and --booster-only-simplify (skip the Kore simplification pass after Booster).
  • The curated-entries default is resolved once in RpcOptions, so every consumer command captures logs when --haskell-log-dir is set without --haskell-log-entries — previously only prove did, and the other five commands silently captured nothing.
  • Unit tests covering the new options' parsing and defaults.
  • CLAUDE.md: a debugging guide for the logging workflow (turning it on, isolating a single step, and the jq recipes for reading the bundles), plus broader project orientation that previously had to be rediscovered — the src/kontrol architecture and Options pattern, the make-based check/format/test workflow, kdist targets, the command set and proof loop, the test suites and their custom pytest options, dependency/release/Nix packaging, and kup --version/--override syntax.

Validation:

  • make check clean (flake8/mypy/isort/black/autoflake); new unit tests pass.
  • Verified against the installed pyk: CTermSymbolic and legacy_explore accept all three kwargs (requires kframework>=7.1.333; branch pins 7.1.334).

ehildenb and others added 5 commits June 8, 2026 18:37
…ooster-only-simplify flags; CLAUDE.md: document

Propagate the opt-in Haskell-backend RPC logging from KEVM PR
runtimeverification/evm-semantics#2857 into kontrol.

Adds `--haskell-log-dir`, `--haskell-log-entries`, and
`--booster-only-simplify` to the shared `RpcOptions`, threaded through
the direct `CTermSymbolic` construction in `prove.py` and through every
`kevm_pyk.utils.legacy_explore` call site (`simplify-node`, `step-node`,
`section-edge`, `get-model`, `show --failure-info`). When omitted, the
log entry set defaults to pyk's curated `HASKELL_LOGGING_ENTRIES`.

CLAUDE.md documents the debugging workflow the flags enable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…curated set for all RPC commands

The curated HASKELL_LOGGING_ENTRIES fallback was applied only at the
prove call site, so show/simplify-node/step-node/section-edge/get-model
passed an empty entries list and captured nothing when --haskell-log-dir
was set without --haskell-log-entries. Resolve the default once in
RpcOptions so every consumer gets the curated set, and drop the now-redundant
`or HASKELL_LOGGING_ENTRIES` special-case in prove.py.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…, deps, and kup overrides

Expand the project conventions doc beyond the Haskell-logging debug section
with durable orientation that should not need rediscovery: the src/kontrol
module layout and Options pattern, the make-based check/format/test workflow,
kdist targets, the kontrol command set and proof loop, the three test suites
and their custom pytest options, dependency/release/Nix packaging, and kup
--version/--override syntax for pinning the K toolchain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ehildenb ehildenb marked this pull request as ready for review June 15, 2026 23:26
… option into ProveOptions

Mirror KEVM's test harness: add a --haskell-log-dir pytest option (and a
session fixture that creates the directory) and thread it into the main
foundry-prove test's ProveOptions. Defaults to None, so the suite is
unchanged unless the flag is passed; when set, the existing CTermSymbolic
logging path captures one <request-id>.jsonl bundle per RPC, and
--haskell-log-entries defaults to the curated set so logs are non-empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@automergerpr-permission-manager automergerpr-permission-manager Bot merged commit 1ca3378 into master Jun 16, 2026
9 checks passed
@automergerpr-permission-manager automergerpr-permission-manager Bot deleted the logging-updates branch June 16, 2026 11:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants