Skip to content

feat: real user flow validation scripts + heartbeat timing fixes#282

Open
bussyjd wants to merge 1 commit intomainfrom
feat/autoresearch-flows
Open

feat: real user flow validation scripts + heartbeat timing fixes#282
bussyjd wants to merge 1 commit intomainfrom
feat/autoresearch-flows

Conversation

@bussyjd
Copy link
Collaborator

@bussyjd bussyjd commented Mar 19, 2026

Summary

Introduces pi-autoresearch integration for automated real user flow validation, plus Go bug fixes and doc corrections discovered during the overnight run.

Commit 1: Flow scripts + autoresearch harness

10 bash flow scripts that exercise every documented user journey from docs/getting-started.md and docs/guides/monetize-inference.md:

flows/
├── lib.sh                     # Shared harness (step/pass/fail/poll, Anvil credentials)
├── flow-01-prerequisites.sh   # Docker, Ollama, obol binary
├── flow-02-stack-init-up.sh   # getting-started §1-2
├── flow-03-inference.sh       # getting-started §3a-3d (LiteLLM, tool-calls)
├── flow-04-agent.sh           # getting-started §4-5 (agent init, inference)
├── flow-05-network.sh         # getting-started §6 (network add/remove)
├── flow-06-sell-setup.sh      # monetize §1.1-1.4 (pricing, ServiceOffer, heartbeat)
├── flow-07-sell-verify.sh     # monetize §1.5-1.7 (tunnel, routes, 402, metrics)
├── flow-08-buy.sh             # monetize §2 (discovery, EIP-712 payment, settlement)
├── flow-09-lifecycle.sh       # monetize §4 (stop, delete, cleanup)
└── flow-10-anvil-facilitator.sh  # monetize §3 (Anvil fork, x402-rs facilitator)

All commands use the real obol binary — no go run, no direct kubectl, no pod IP access.

Commit 2: Bug fixes found by the flow scripts

Timing (closes #280):

  • ensureHeartbeatActive() — heartbeat was stuck at 30m default after obol agent init
  • patchHeartbeatAfterSync()SyncAgentBaseURL helmfile sync was resetting heartbeat config
  • readCurrentAgentBaseURL() — skip sync when tunnel URL unchanged (idempotency)

CLI validation:

  • validateRPCEndpoint() in obol network add — reject invalid URLs

Doc corrections:

  • getting-started §3c-3d: add LiteLLM Bearer auth header (was returning 401)
  • monetize §1.6: correct eRPC path to /rpc/evm/{chainId} (local-only, not via tunnel)
  • monetize §2.1: clarify /skill.md (always available) vs /.well-known (requires --register)

Discovery method

Overnight pi-autoresearch session: 44 → 133 steps passing across 50+ experiments. The agent autonomously ran flow scripts, diagnosed failures, fixed Go code and flow scripts, and re-validated — all while go build/go test acted as backpressure.

Test plan

  • go build ./... passes
  • go test ./internal/{agent,tunnel,network,openclaw,model}/ passes
  • pi-autoresearch: 133/133 steps, 50+ runs
  • Manual: bash flows/flow-01-prerequisites.sh through flow-09-lifecycle.sh on fresh cluster

@bussyjd bussyjd force-pushed the feat/autoresearch-flows branch from c040301 to e9683b1 Compare March 19, 2026 10:03
Introduces pi-autoresearch integration with 10 flow scripts that exercise
every documented user journey from getting-started.md and monetize-inference.md.

Flow scripts (flows/):
- flow-01: prerequisites (Docker, Ollama, obol binary)
- flow-02: stack init + up + verify (getting-started §1-2)
- flow-03: LLM inference chain (getting-started §3a-3d)
- flow-04: agent init + inference (getting-started §4-5)
- flow-05: network add/remove (getting-started §6)
- flow-06: sell setup — pricing, ServiceOffer, heartbeat wait (monetize §1.1-1.4)
- flow-07: sell verify — tunnel, routes, 402, metrics (monetize §1.5-1.7)
- flow-08: buy — discovery, 402 parse, EIP-712 payment, settlement (monetize §2)
- flow-09: lifecycle — stop, delete, cleanup verification (monetize §4)
- flow-10: Anvil fork + x402-rs facilitator setup (monetize §3)

Bug fixes found by the flow scripts:
- ensureHeartbeatActive() — heartbeat stuck at 30m default after obol agent init
- patchHeartbeatAfterSync() — SyncAgentBaseURL helmfile sync was resetting heartbeat
- validateRPCEndpoint() — obol network add was accepting invalid URLs
- Doc corrections: LiteLLM auth, eRPC path, /skill.md vs /.well-known

Test account keys are derived at runtime from the Anvil mnemonic via
`cast wallet private-key` — no private keys in source.

Closes #280
@bussyjd bussyjd force-pushed the feat/autoresearch-flows branch from e9683b1 to e56ae6d Compare March 19, 2026 10:09
@bussyjd bussyjd requested a review from OisinKyne March 19, 2026 10:20
@bussyjd bussyjd changed the title feat: autoresearch flow scripts + heartbeat/CLI/doc fixes feat: real user flow validation scripts + heartbeat timing fixes Mar 19, 2026
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.

fix: heartbeat timing bugs — reset on sell, missing activation, ConfigMap race

1 participant