Skip to content

fix(flows): use ERE alternation in run_step_grep / poll_step_grep patterns#477

Closed
bussyjd wants to merge 1 commit into
mainfrom
fix/release-smoke-ere-alternation
Closed

fix(flows): use ERE alternation in run_step_grep / poll_step_grep patterns#477
bussyjd wants to merge 1 commit into
mainfrom
fix/release-smoke-ere-alternation

Conversation

@bussyjd
Copy link
Copy Markdown
Collaborator

@bussyjd bussyjd commented May 12, 2026

Summary

lib.sh's run_step_grep and poll_step_grep helpers both use grep -qE (extended regex) — the comment in the helper explicitly says callers may use ERE quantifiers. But several callsites passed BRE alternation (\|), which in ERE is a literal backslash-pipe and never matches.

The spark1 smoke run surfaced this as cascading "pattern not found" FAILs in flow-01 / flow-02 / flow-05 / flow-06 / flow-10, even though the expected substrings were present in the CLI output.

What's changed

Convert all 8 BRE call sites to ERE |. Also widen the patterns where the CLI output has drifted since they were written:

  • obol network list now prints Local Nodes: / Remote RPCs: / mainnet … chain=… instead of network shortnames; the old ethereum|aztec pattern would never have matched the current output even with correct ERE syntax.
  • obol network status now prints eRPC Gateway Status / Pod: / upstream rows; added Running for completeness.
  • flow-10 facilitator-pricing check now also accepts the configmap/x402-pricing configured line that obol sell pricing actually emits.

Test plan

  • bash -n clean on all 5 modified flow files
  • Confirmed zero remaining BRE \| patterns sent to ERE helpers (grep -rn ... | grep -E 'run_step_grep|poll_step_grep' returns nothing)
  • Re-run release-smoke on spark1 to confirm the cascading flow-01/02/05/06/10 pattern-FAILs are gone

…terns

lib.sh's run_step_grep and poll_step_grep helpers both use `grep -qE`
(extended regex) — comment in the helper explicitly says callers may
use ERE quantifiers. But several callsites passed BRE alternation
(`\|`), which in ERE is a literal backslash-pipe and never matches.
The smoke run on spark1 surfaced this as cascading "pattern not found"
FAILs in flow-01 / flow-02 / flow-05 / flow-06 / flow-10, even though
the expected substrings were present in the CLI output.

Convert all 8 BRE call sites to ERE `|`. Also widen the patterns where
the CLI output has drifted since they were written:

  - `obol network list` now prints `Local Nodes:` / `Remote RPCs:` /
    `mainnet … chain=…` instead of network shortnames; the old
    `ethereum|aztec` pattern would never have matched the current
    output even with correct ERE syntax.
  - `obol network status` now prints `eRPC Gateway Status` / `Pod:` /
    upstream rows; added `Running` for completeness.
  - flow-10 facilitator-pricing check now also accepts the
    `configmap/x402-pricing configured` line that `obol sell pricing`
    actually emits.
@bussyjd bussyjd force-pushed the fix/release-smoke-ere-alternation branch from 90b1805 to 7120e58 Compare May 12, 2026 09:34
bussyjd added a commit that referenced this pull request May 13, 2026
…490)

Integration branch that takes the release-smoke gate from "broken at flow-11 step 43" to 13/13 PASS on spark1 against the production facilitator (Base Sepolia + x402.gcp.obol.tech).

Folds in the in-flight smoke fixes (#476 runner refactor, #477 ERE alternation, #478 wallet check + verifier readiness, #479 flow-02 cold-start polling, #483 sell-inference flag align, #484 frontend digest-pin v0.1.23) plus eight additional root-cause fixes uncovered while driving the gate green:

- internal/x402/setup.go EnsureVerifier rewrites image pins in-memory before kubectl apply so OBOL_DEVELOPMENT=true source changes actually reach the cluster
- internal/x402/chains.go ResolveChainInfo accepts both legacy aliases and CAIP-2 ids
- flows/flow-10-anvil-facilitator.sh drops --prune-history (which was enable-pruning, not retention) and adds --host 0.0.0.0 + cluster-reachability preflight
- internal/defaults/defaults.go combo-form image-pin regex now lists longest first
- flows/lib.sh paid-RPC support (BASE_SEPOLIA_RPC, ALCHEMY_BASE_SEPOLIA_API_KEY) + Bob top-up preflight + secret scrubbing collapsing paid-RPC URLs to TLD-only
- flows/flow-07-sell-verify.sh and flow-08-buy.sh wrap 402-body fetch in 12x5s retry to absorb first-request flake on freshly-deployed verifier
- cmd/obol/network.go redactRPCURL host-anchored against parsed URL (CodeQL fix, no unanchored regex)
- internal/x402/verifier.go drops debug log that leaked user-controlled path (CodeQL log-injection fix)
- .agents/skills/obol-stack-dev rebuilt: 1750 -> 882 lines, 8-row symptom->fix table indexed at the top of SKILL.md
- CLAUDE.md refreshed: stale CLI surface, added six release-smoke pitfalls, generalized personal-path Related Codebases

Validated: RELEASE_SMOKE_INCLUDE_OBOL=true RELEASE_SMOKE_INCLUDE_OBOL_FORK=true bash flows/release-smoke.sh on spark1 against commit 4082961 (and reverified on each subsequent commit) -> 13/13 PASS, RC=0, "Release smoke passed".

Full retrospective: plans/release-smoke-hardening-20260513.md.

Closes #476 #477 #478 #479 #483 #484.
@bussyjd
Copy link
Copy Markdown
Collaborator Author

bussyjd commented May 13, 2026

Superseded by #490 (merged in 6f1f9ed). The integration branch carried this change plus the rest of the in-flight smoke fixes and validated the bundle against a green release-smoke (13/13 PASS, RC=0) on spark1 against the production facilitator. Closing in favor of the merged integration.

@bussyjd bussyjd closed this May 13, 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.

1 participant