Skip to content

feat(v1.8): real HTTP probe runner + release-gate strict findings#47

Merged
lopadova merged 1 commit into
mainfrom
task/v1.8.0-http-probe-runner
May 20, 2026
Merged

feat(v1.8): real HTTP probe runner + release-gate strict findings#47
lopadova merged 1 commit into
mainfrom
task/v1.8.0-http-probe-runner

Conversation

@lopadova
Copy link
Copy Markdown
Contributor

Summary

  • add makeHttpProbeRunner in @aqa/runner (fetch-based HTTP probe execution with timeout, relative URL resolution from base URL, JSON/text body handling)
  • wire aqa run to use real HTTP probes via project.sut.base_url when available
  • re-enable strict release-gate behavior: profiles with require_deterministic_replay=true now fail when findings are emitted
  • update runner and kit tests for the new behavior

Validation

  • bun run typecheck
  • bun run lint
  • bun run test
  • bun run build

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f0d96a061f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +641 to +644
if (profile.require_deterministic_replay && findingsCount > 0) {
reasons.push(
`profile "${profileKey}" requires deterministic replay; failing run because ${findingsCount} finding(s) were emitted`,
);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Gate strict release failure on real probe coverage

This unconditional require_deterministic_replay failure now triggers on any finding even when scenarios were not executed by a real probe backend (e.g., projects without sut.base_url, or packs using non-HTTP probe kinds). In the current repo, default non-HTTP packs (packs/web-ui Playwright probes, packs/llm-agent llm_eval) can still produce synthetic/unsupported outcomes, so release-gate can fail due to runner limitations rather than an actual SUT regression. The strict finding gate should only apply when probe execution for the run is backed by a real implementation (or when synthetic/unsupported probe results are absent).

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a real HTTP probe runner in @aqa/runner, wires aqa run to use it when project.sut.base_url is configured, and restores strict release-gate semantics by failing deterministic-replay profiles when findings are emitted.

Changes:

  • Add makeHttpProbeRunner() (fetch-based execution, timeout, base URL resolution, response body parsing) and export it from @aqa/runner.
  • Use project.sut.base_url to enable real HTTP probes in aqa run.
  • Re-enable strict require_deterministic_replay behavior (findings → run failure) and update tests accordingly.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
packages/runner/src/run.ts Adds makeHttpProbeRunner() implementation.
packages/runner/src/index.ts Exports the new HTTP probe runner API.
packages/runner/test/run.test.ts Adds tests for HTTP runner URL resolution and kind rejection.
packages/kit/src/commands/run.ts Wires probe runner from project.sut.base_url and re-enables strict release-gate failure on findings.
packages/kit/test/run-cmd.test.ts Updates release-gate test to expect ok=false when findings are emitted.

Comment on lines +53 to +60
? (withCfg.headers as Record<string, string>)
: {};
const body =
withCfg.body === undefined
? undefined
: typeof withCfg.body === 'string'
? withCfg.body
: JSON.stringify(withCfg.body);
Comment on lines +61 to +63
const url = /^https?:\/\//i.test(rawUrl)
? rawUrl
: `${base}${rawUrl.startsWith('/') ? '' : '/'}${rawUrl}`;
Comment on lines +451 to +453
const probeRunner = project.sut.base_url
? makeHttpProbeRunner({ baseUrl: project.sut.base_url })
: undefined;
Comment on lines +641 to +645
if (profile.require_deterministic_replay && findingsCount > 0) {
reasons.push(
`profile "${profileKey}" requires deterministic replay; failing run because ${findingsCount} finding(s) were emitted`,
);
}
@lopadova lopadova merged commit da5d307 into main May 20, 2026
16 checks passed
@lopadova lopadova deleted the task/v1.8.0-http-probe-runner branch May 20, 2026 09:50
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.

2 participants