Skip to content

[codex] Refactor dual-stack smoke flow helpers#454

Merged
bussyjd merged 1 commit into
integration/pr450-pr451-cloudflare-obolfrom
codex/flow-smoke-thin-entrypoints
May 9, 2026
Merged

[codex] Refactor dual-stack smoke flow helpers#454
bussyjd merged 1 commit into
integration/pr450-pr451-cloudflare-obolfrom
codex/flow-smoke-thin-entrypoints

Conversation

@bussyjd
Copy link
Copy Markdown
Collaborator

@bussyjd bussyjd commented May 9, 2026

Summary

  • extract shared Alice/Bob dual-stack smoke orchestration into flows/lib-dual-stack.sh
  • replace flow-13 Ruby eRPC YAML mutation with a repo-local Go helper and tests
  • add explicit Bob buyer gas preflight checks for live OBOL flows 14 and 15
  • document the intended thin-entrypoint flow layout in flows/README.md

Checks

  • bash -n flows/*.sh flows/lib-dual-stack.sh
  • go test ./flows/tools/pin-erpc-upstream -count=1
  • git diff --cached --check

@bussyjd
Copy link
Copy Markdown
Collaborator Author

bussyjd commented May 9, 2026

Validation report for exact PR head 98608791bebf27fb8c03f2671a76d06267edf061.

What changed

  • extracted shared Alice/Bob dual-stack orchestration into flows/lib-dual-stack.sh
  • refactored flow-13 and flow-14 to use the shared helper
  • replaced the ad hoc eRPC pinning mutation with flows/tools/pin-erpc-upstream
  • added Bob buyer-gas preflight checks in flow-14 and flow-15

Checks run

  • bash -n flows/*.sh flows/lib-dual-stack.sh
  • go test ./flows/tools/pin-erpc-upstream -count=1
  • git diff --check origin/integration/pr450-pr451-cloudflare-obol...HEAD

Flow validation

flow-13-dual-stack-obol.sh

  • PASS
  • funding tx: 0x60e5ef783ec8ebd2b60018893ca086b60d5779bf6e2c123b9b6160fff01937d7
  • settlement tx: 0x4775be8da0941e9c6119dabaf4a775d8f08647fa0416a409077709d4f6e9a58e
  • final flow result: steps_failed=0 (61/57 passed)

flow-15-live-obol-faucet-alice-bob.sh

  • PASS
  • this rerun hit the cooldown-safe path, so it skipped issuing a fresh faucet claim because Bob already had sufficient OBOL
  • Bob buyer-gas preflight passed before delegation into flow-14

delegated flow-14-live-obol-base-sepolia.sh

  • PASS
  • agent id: 5705
  • registration tx: 0x5283f4c6e4c7fc14d2b2e5d1511c73352a8b0c8458cb9cbd44a056d53be6159c
  • metadata tx: 0x2f7a388c1a5fc2a4524789f5dcf5e8204135df88f5044f20f4f15af98c763268
  • settlement tx: 0x04598c4fd38bf18ebb2e4eed653234c2608d41febf6d0463e8af6fa8900aac24
  • final flow result: steps_failed=0 (63/58 passed)

Notes

  • LiteLLM hot-add still fell back to restart (/etc/litellm/config.yaml read-only), but all flows recovered and passed.
  • wallet import still emitted volume ownership/pre-create warnings before succeeding.
  • flow-14 cleanup printed no ChainList RPCs found for chain ID 84532, but cleanup completed and the flow still passed.

Merge confidence

  • The refactor held for both the local OBOL fork flow and the live Base Sepolia OBOL path.
  • The only coverage caveat is that this flow-15 rerun did not exercise a fresh live faucet.claim(...) tx because of faucet cooldown; it validated the cooldown-safe rerun path plus the full delegated flow-14 commerce loop.

@bussyjd bussyjd marked this pull request as ready for review May 9, 2026 11:32
@bussyjd bussyjd merged commit 783e34d into integration/pr450-pr451-cloudflare-obol May 9, 2026
@bussyjd bussyjd deleted the codex/flow-smoke-thin-entrypoints branch May 9, 2026 11:32
bussyjd added a commit that referenced this pull request May 9, 2026
)

* [verified] feat(tunnel): rebuild persistent tunnel/domain flow on current main

* feat: add live OBOL faucet buyer-seller smoke flow

* test(flows): tolerate summarized sell status output and dynamic ingress

* [verified] fix(tunnel): harden persistent handoff and setup UX

* test(flows): assert tunnel does not expose erpc

* docs: align live OBOL source of truth

* feat(tunnel): add configurable cloudflared transport

* fix: harden live OBOL faucet smoke reruns

- prefer current Go path for nohup/cron flow execution
- poll for remote-signer pod creation before age checks
- allow cooldown-safe flow-15 reruns when Bob already has faucet OBOL
- poll post-claim balances to tolerate public RPC state lag

* test(flows): add portable timeout fallback for live obol registration

* fix(flows): harden smoke tunnel and OBOL buyer paths

* fix(flows): fail closed on tunnel smoke checks

* refactor dual-stack flow helpers (#454)

Co-authored-by: bussyjd <bussyjd@users.noreply.github.com>

* feat(buy): add `obol buy inference` host CLI (#434)

* feat(buy): add `obol buy inference` host CLI

Mirrors `obol sell inference` on the buyer side. The host CLI handles
default-seller resolution, ERC-8004 identity pre-flight, and USDC->micro-units
conversion, then dispatches to the existing `buy.py buy` skill in the
obol-agent pod. Single canonical wallet, no host-side keystore.

- internal/x402/setup.go: DefaultBuySellerURL, DefaultBuySellerAgentID,
  DefaultBuySellerChain placeholders (TODO: wire live values once the
  default seller is provisioned).
- internal/agentruntime/exec.go: ExecInPod + BuildExecArgs generalize the
  kubectl-exec helper that was hardcoded to the hermes binary.
- internal/hermes/hermes.go: cliViaKubectlExec + hermesExecArgs delegate to
  the new agentruntime helpers; existing test stays valid.
- internal/buy/discover.go: .well-known/agent-registration.json fetcher
  and ERC-8004 agentId verification (hard-fail on mismatch).
- cmd/obol/buy.go: `obol buy inference [<name>] --seller --model
  --budget --expected-agent-id --no-verify-identity --auto-refill ...`.

* test(flow-11): validate host buy inference on integration

* feat(agent): sell agents as x402 services via CRD (#453)

* Agent crd

* Next phase

* 1, 2a, 2b, 2c, 4a, 4b, 5, 6, 7, 8, 9

* 2d

* Update with almost all complete, time for testing

* Bug fixing

* chore: remove stray runtime log

* chore(flows): renumber sell-agent smoke flow for integration

* fix(agent): harden CRD update sync semantics

---------

Co-authored-by: bussyjd <bussyjd@users.noreply.github.com>
Co-authored-by: bussyjd <jd@obol.tech>

---------

Co-authored-by: bussyjd <bussyjd@users.noreply.github.com>
Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com>
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