Skip to content

Binary testing instructions, agent-seed bootstrap scenarios and binary smoke test - #3722

Open
Herklos wants to merge 5 commits into
devfrom
binary-testing-instructions
Open

Herklos wants to merge 5 commits into
devfrom
binary-testing-instructions

Conversation

@Herklos

@Herklos Herklos commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Document how to test a CI-built PyInstaller binary, and add the tooling to do it: extra agent-seed bootstrap scenarios and a curl-only smoke test.

Solve the issue: (no issue)

Changelog

  • Add packages/binary/BINARY_TESTING_INSTRUCTIONS.md: download the artifact, TENTACLES_URL_TAG=latest only for builds from bin_factory, run it, and a test checklist (HTTP surface, Node UI, seeded QA, debug API user actions, scheduler, journal, restart recovery)
  • Add packages/binary/AGENTS.md pointing to it
  • Add packages/binary/scripts/smoke_test.sh: boots the binary in an empty dir, checks the HTTP and setup/debug APIs, creates a throwaway wallet, stops and restarts it. Needs only bash and curl. Exit code 0 or 1
  • agent-seed: bootstrap and all take repeatable --scenario (grid default, index, completed, lifecycle, all); seed-agent.sh bootstrap forwards the options
    • index: index automation on Seed kraken B
    • completed: a second index automation, created then stopped, so the UI has a completed automation
    • lifecycle: stops and restarts the grid automation and raises AutomationNameLostError if the name is lost
  • New builders (index create, stop, restart), BootstrapScenario enum, typed errors, unit tests for builders, scenarios (fake debug API) and CLI options
  • Docs: agent-seed README, ARCHITECTURE and skill

What's new?

Tested against the bin_factory Linux x64 binary (run 36476985898):

  • Smoke test: 28 of 28 checks pass. It exits 1 and reports the reason when the node does not boot
  • grid, index and completed scenarios work, re-running them is a no-op, and the UI shows Active 2, Completed 1
  • lifecycle currently fails on purpose: after automation_restart the automation name is empty (the UI then shows OctoBot a00000). This is a node bug (restart_automation.py), not addressed here
  • There is no seeded errored automation: a failing automation keeps retrying and stays running, it only becomes failed after recovery attempts are exhausted
  • tools/tests and packages/node/tests/agent_seed: 101 passed. python -m tools.extended_linter --base origin/dev: 0 violations

🤖 Generated with Claude Code

https://claude.ai/code/session_014ymEjzdSYvMDqN5bJVwhjR

Document how to download a CI-built PyInstaller binary, when to set
TENTACLES_URL_TAG=latest (bin_factory builds only), how to run it and
which checks to run against the node UI and API. Add packages/binary/AGENTS.md
referencing it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ymEjzdSYvMDqN5bJVwhjR
Document running tools/agent_seed against a CI-built binary (master user
root, PYTHONPATH, start flags), debug API user actions incl. the demo
wallet 403 guard, scheduler DB, node journal, REST spec, restart
recovery and known findings. Point the agent-seed README and binary
AGENTS.md at it. Use pkill -x to stop the binary.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ymEjzdSYvMDqN5bJVwhjR

Herklos commented Sep 29, 2026

Copy link
Copy Markdown
Contributor Author

CI note on the packages/node failure at dfc57c5: tests/functional_tests/test_start_check_and_stop_dca_2_evaluators_workflow.py::TestTriggerTaskDCATwoEvaluatorsDbosIntegration::test_trigger_task_dca_two_evaluators_selective_entry_fill_then_stop failed with Timed out waiting for stop completion ... within 15.0s (1 failed, 996 passed, 1 skipped).

This is not caused by this PR. It only adds/edits markdown (packages/binary/*.md, tools/agent_seed/README.md), and the failing test is a wall-clock timeout in a DBOS functional test under xdist. I am not changing the test or the node code here.

The push of c4f0c7a started a new CI run on the current head, which serves as the one re-run. If packages/node fails again on the same test, I will treat it as real and report it separately.


Generated by Claude Code

…inary smoke test

- bootstrap/all take repeatable --scenario (grid, index, completed,
  lifecycle, all); seed-agent.sh bootstrap forwards the options
- index: index automation on Seed kraken B; completed: a second index
  automation that is created then stopped; lifecycle: stop and restart
  the grid automation and raise AutomationNameLostError if it loses its
  name (currently fails on restart, real node bug)
- builders for index create, stop and restart user actions
- typed errors and BootstrapScenario enum, grid polling helpers made public
- unit tests for builders, scenarios (fake debug API) and CLI options
- packages/binary/scripts/smoke_test.sh: curl-only smoke test of a built
  binary (boot, HTTP surface, setup API, debug API, log, stop, restart)
- docs: binary testing instructions, agent-seed README, architecture, skill

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ymEjzdSYvMDqN5bJVwhjR
@Herklos Herklos changed the title docs: add binary testing instructions and agents documentation Binary testing instructions, agent-seed bootstrap scenarios and binary smoke test Sep 29, 2026

Herklos commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor Author

CI note on the ubuntu-latestx64 - Python 3.13.x - octobot failure at 9e35cb6 (1 failed, 1709 passed, 38 skipped): tentacles/Services/Interfaces/web_interface/tests/distributions/test_default.py::TestDefaultDistribution::test_browse_all_pages_required_password_with_login. The classic web UI page /data_collector returned 500, and the server log shows sqlite3.OperationalError: disk I/O error behind it.

This is not caused by this PR: it does not touch web_interface, its tests, or any sqlite code (it changes tools/agent_seed, packages/binary, three new constants in octobot_node/agent_seed/constants.py, and docs). The error is an I/O failure on the runner while browsing pages under xdist.

I could not re-run the failed job: the re-run request was rejected with a 403 (Resource not accessible by integration), so someone with permission needs to re-run it. I will keep watching this PR, and if the same test fails again on a re-run I will treat it as real and dig into it separately.

(Correction: an earlier version of this comment said I had re-run the job. I had not.)


Generated by Claude Code

Comment thread packages/binary/BINARY_TESTING_INSTRUCTIONS.md Outdated
dev 6eea4ff downgrades the Kraken fees ERROR to a warning and no longer
claims the web interface is accessible when it is disabled. Remove the two
matching known findings and describe both the old and new startup log line.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ymEjzdSYvMDqN5bJVwhjR
@GuillaumeDSM

Copy link
Copy Markdown
Member

good for me when the branch is rebased and not with a dev merge commit

This branch has not been deployed

No deployments
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.

3 participants