Skip to content

feat(runbook): add recipes, exact height pauses, and visual editor - #1

Merged
kevinpita merged 2 commits into
mainfrom
pr/18-runbooks
Sep 30, 2026
Merged

kevinpita merged 2 commits into
mainfrom
pr/18-runbooks

Conversation

@kevinpita

@kevinpita kevinpita commented Sep 30, 2026 •

Copy link
Copy Markdown
Owner

Why

Debugging a restored chain requires repeatable transactions and state checks. Add YAML runbooks and a visual TUI editor so users can save and rerun the same test without editing YAML by hand.

The engine runs the lab's stock binary. Exact pauses use a separate halt strategy and verify committed application height on every validator while query RPC remains available.

Scope

  • Add sequential transactions, queries, jq assertions, height waits, raw store reads, and optional scripts with named outputs and JSON reports.
  • Add recoverable pause and resume control for SDK 0.50 and 0.53 binaries with supported halt behavior. Unsupported binaries fail clearly.
  • Add TUI forms to create, edit, reorder, save, validate, and run recipes. Execution requires an explicit lab target. Opening another recipe preserves an unsaved draft unless the user chooses to discard it.
  • Validate literal store requests before executing any runbook steps.
  • Add runbook documentation and examples.

Verification

  • just check passes, including lint, race tests, and build.
  • Create and reopen a ten-step recipe through the actual TUI.
  • Run the saved recipe on two stock exrpd 11.2.0 validators, check committed height 20 on both, inspect queries and raw stores during a manual hold, and resume to verify an expected transaction failure.
  • Independently review the implementation and verify exact integer preservation when editing recipes.

Current review fixes include regressions that fail on the previous head for wrong-lab targeting, draft loss, and an earlier transaction preceding invalid store validation. A fresh terminal test created and saved a recipe, preserved the draft during cancellation, and executed an assertion against beta while alpha was active. The terminal driver used the documented Ctrl+C close binding.

@kevinpita

Copy link
Copy Markdown
Owner Author

Intent

Provide reusable YAML runbooks and a visual editor for transactions, state queries, assertions, scripts, exact committed-height pause, manual hold/resume, and raw store inspection using stock chain binaries. Land the reviewed feature in main with a rebase merge.

Reviewers

  • Reviewer A, gpt-6-astra, PASS. Independently built the current head and exercised two stock exrpd 11.2 validators, real TUI authoring and lab selection, pause at committed height15, query/store inspection, manual resume through height16, and CLI validation failures. Built the parent and confirmed these commands are new.
  • Reviewer B, gpt-6-sol, PASS+NOTES. Found three defects in the original head. Re-reviewed the fixes, ran fresh focused tests across six affected packages, and reproduced the corrected CLI rejection. No remaining actionable findings.
  • Reviewer C, gpt-6-luna, PASS+NOTES with its evidence note resolved. Re-reviewed the fixes and ran focused tests across five affected packages. Reviewed the full check and live artifacts without rerunning the live chain.

Act on

All three original findings from Reviewer B are fixed in 1deac56.

  1. TUI runs could omit the selected lab and execute against the active lab. Both entry points now require an explicit lab and send --lab.
  2. Opening another recipe silently replaced dirty local steps. Replacement defaults to keeping the current draft and requires an explicit discard choice.
  3. Invalid literal store fields could fail after earlier effects. Document validation now checks literal fields with the canonical store validator before execution. Template-bearing fields remain validated after rendering.

Regressions failed on the previous source for each actual defect and passed after the fixes. The current committed head passes just check and GitHub CI.

Consider

None.

Noted

Template-bearing store fields can still be invalid after rendering and can therefore fail after earlier steps. Their values may depend on earlier outputs, so preflight does not resolve them. This matches the documented validation boundary.

The tmux driver used the documented Ctrl+C close binding. Injected bare Escape did not close overlays in that driver. Escape unit tests pass; the live driver does not establish bare Escape behavior.

Dismissed

None.

Agreement map

All reviewers agree the three accepted fixes satisfy the original intent. No remaining code findings block landing. The updated head has fresh independent real execution evidence and current CI.

Approved landing revision

The independent verifier did not write the implementation. This comment records its verdict through the repository-owner CLI session. Rebase merge is authorized by the user. No auto-merge or queue request is armed.

@kevinpita
kevinpita merged commit fa275de into main Sep 30, 2026
1 check passed
@kevinpita
kevinpita deleted the pr/18-runbooks branch September 30, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant