test(payout-executor): add 4 missing execute coverage cases - #962
Open
mathiasbourgoin wants to merge 4 commits into
Open
test(payout-executor): add 4 missing execute coverage cases#962mathiasbourgoin wants to merge 4 commits into
mathiasbourgoin wants to merge 4 commits into
Conversation
Cover the happy path and 3 critical behavioral properties of Payout_executor.execute that had zero test coverage: - TC-1: successful payout writes summary.json and marks cycle paid - TC-2: abort after 2 consecutive batch failures (never sends batch 4) - TC-3: dry_run=true writes to dry_report_dir and does NOT mark paid - TC-4: empty/whitespace payout_key_alias returns early Error All assertions use the existing with_temp_xdg / make_ctx / blueprint_with_payouts infrastructure and the Cmd_runner hook. No production code changed. Co-Authored-By: Claude <noreply@anthropic.com>
- Update all agents (architect, implementer, planner, qa, recruiter, reviewer, tech-lead) to roster v2.5.2 - Add kb-agent for knowledge base management - Add full roster pipeline commands (intake, plan, implement, review, qa, ship, spec-infer, etc.) - Add speckit, improvement-loop, and kb commands - Add harness.json with project metadata (ocaml/miaou/dune/eio stack) - Add ocaml and typescript pattern files - Update .gitignore: exclude kb/.index/, skills-meta/, memory/ Co-Authored-By: Claude <noreply@anthropic.com>
- TC-1: abort result shape — verify on_progress fires for all 4 delegators including aborted ones (success=false) - TC-2a: execute_merged happy path — basic Ok + success=true - TC-2b: execute_merged abort — 4 entries, entry 0 ok, 1-3 failed - TC-3: Payout_simulator.simulate — sufficient/insufficient/fetch-fail balance paths (uses both Cmd_runner hooks) - TC-4: build_batch_cmd burn cap formula (batch_len×0.28) and --dry-run flag presence Also exposes build_batch_cmd via Internal_for_tests in .ml/.mli. Co-Authored-By: Claude <noreply@anthropic.com>
mathiasbourgoin
marked this pull request as ready for review
May 28, 2026 15:23
validate_binary_access was defined in systemd_unit_template.ml and re-exported via systemd.ml but had no call sites in the install flow. The 25-binary-access-validation integration test was failing because install-node accepted app-bin-dir paths inaccessible to the service user without any error. Wire the check immediately after resolve_app_bin_dir so the CLI rejects binaries the service user cannot execute before any other installation step runs. Closes #958 Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Payout_executor.execute:summary.jsonand marks cycle paiddry_run=truewrites todry_report_dir, does NOT mark cycle paidpayout_key_aliasreturns earlyErrorwithout calling octez-client.claude/tooling, KB pipeline commands)Test plan
dune exec test/test_payout_executor.exe→ 24/24 passdune build→ clean on OCaml 5.3.0 local switchdune fmt→ no diff./scripts/check-copyright.sh→ all headers correct