Hosted appPayroll settlementArc Testnetsucceeded

Prepare contractor payments with wallet sign-in, exact preview, human approval, and Arc Testnet USDC settlement.

Tested in place byDeepQA TeamonArc Testnetatsettleone.vercel.apponSep 16, 2026

Run #1model gemini-balanced (vertex)took 6m

10 of 11 scenarios passed, 1 failed, 1 critical functional issue after the audit.

Share on X
SettleOne in the browser during the run

By the numbers

10 of 11
scenarios passed, 1 failed
29
screenshots
117
model calls
5.6
minutes
11
scenarios
10
passed
1
failed
0
blocked
1
issues
critical1

Walkthrough

Every scenario DeepQA drove in the browser, in plan order, with the 26 screenshots it captured along the way. A passing scenario is evidence too.

  1. S1
    Connect web3 wallet

    2 steps, 3 screenshots

    pass
    S1-1.png
    S1 · Connect web3 wallet
    S1-3.png
    S1 · Connect web3 wallet
    S1-5.png
    S1 · Connect web3 wallet
    • Initial page load shows wallet already connected with address 0xB412...62A6 and a Disconnect button.
    • Clicked Disconnect; UI updated to show 'Connect Wallet' button and disconnected state ('Connected none on chain none').
    • Clicked Connect Wallet; UI successfully updated to show the connected address 0xB412...62A6 and changed button to 'Disconnect'.
    • Navigated to https://settleone.vercel.app/ where wallet connection controls are rendered in the header banner.
    • Tested disconnecting and reconnecting the wallet; clicking 'Connect Wallet' immediately connected the wallet and updated the banner with the truncated wallet address '0xB412...62A6' and 'Disconnect' button.
    • The main view updated with active controls for budget draft creation and chain status displaying 'Connected 0xB412E2B09ea8B59b1cf1c8f29aA4C56fE9Ab62A6 on chain 5042002'.
  2. S2
    Handle draft creation API failure gracefully

    3 steps, 3 screenshots

    pass
    S2-1.png
    S2 · Handle draft creation API failure gracefully
    S2-4.png
    S2 · Handle draft creation API failure gracefully
    S2-7.png
    S2 · Handle draft creation API failure gracefully
    • Verified wallet is connected (0xB412...62A6) and initial budget input is visible.
    • Entered 100 into the Approved budget · USDC input field.
    • Clicked 'Sign in and create draft' with budget 100; UI displayed an alert banner with 'Failed to fetch' without hanging.
    • The connected wallet 0xB412...62A6 was present on the page.
    • Budget was set to 100 USDC in the 'Approved budget · USDC' input field.
    • Clicking 'Sign in and create draft' triggered a request that resulted in an error banner displaying 'Failed to fetch' without crashing or hanging indefinitely.
  3. S3
    Handle Sepolia network switch rejection on resolver lookup

    2 steps, 3 screenshots

    pass
    S3-1.png
    S3 · Handle Sepolia network switch rejection on resolver lookup
    S3-4.png
    S3 · Handle Sepolia network switch rejection on resolver lookup
    S3-6.png
    S3 · Handle Sepolia network switch rejection on resolver lookup
    • Typed testname.eth into the Sepolia ENS name input.
    • Clicked '1. Resolve resolver' and observed an alert with the error message: 'User rejected the request. Details: wallet is pinned to chain 5042002 and will not add 0xaa36a7 Version: viem@2.45.1'.
    • The application correctly displays an error alert when the network switch to Sepolia (0xaa36a7) is rejected by the pinned Arc testnet wallet during ENS resolver lookup.
  4. S4
    Handle vendor evidence fetch API failure gracefully

    2 steps, 3 screenshots

    pass
    S4-2.png
    S4 · Handle vendor evidence fetch API failure gracefully
    S4-5.png
    S4 · Handle vendor evidence fetch API failure gracefully
    S4-7.png
    S4 · Handle vendor evidence fetch API failure gracefully
    • Entered agent ID 11155111:1073 into the Agent ids input.
    • Clicked Fetch live evidence with agent ID 11155111:1073 and observed alert 'Failed to fetch' displayed on network/fetch failure.
    • Navigated to the home page, populated the Agent ids field with 11155111:1073, and clicked Fetch live evidence.
    • Observed the button change to 'Querying…' and then display an alert with 'Failed to fetch', properly communicating the network/fetch error to the user without hanging or crashing.
  5. S5
    Reject draft creation with empty budget

    2 steps, 2 screenshots

    pass
    S5-1.png
    S5 · Reject draft creation with empty budget
    S5-5.png
    S5 · Reject draft creation with empty budget
    • Cleared the Approved budget · USDC input field.
    • Clicking 'Sign in and create draft' with an empty budget displayed an alert validation error: 'Enter a positive amount with at most 6 decimal places'.
    • Clearing the 'Approved budget · USDC' input and clicking 'Sign in and create draft' correctly prevented draft submission and displayed the validation error message: 'Enter a positive amount with at most 6 decimal places'.
  6. S6
    Reject draft creation with non-numeric budget

    2 steps, 2 screenshots

    pass
    S6-3.png
    S6 · Reject draft creation with non-numeric budget
    S6-5.png
    S6 · Reject draft creation with non-numeric budget
    • Typed 'invalid_amount' into the budget input and clicked 'Sign in and create draft', which displayed the validation error 'Enter a positive amount with at most 6 decimal places'.
    • Entering 'invalid_amount' in the 'Approved budget · USDC' input and clicking 'Sign in and create draft' triggers an alert error message: 'Enter a positive amount with at most 6 decimal places'.
    • The form properly blocks submission when non-numeric budget values are provided.
  7. S7
    Restore saved session

    1 step, 2 screenshots

    pass
    S7-1.png
    S7 · Restore saved session
    S7-4.png
    S7 · Restore saved session
    • Initial landing page loaded with Restore saved session button visible.
    • Clicking 'Restore saved session' triggered a session restore attempt, disabling the action buttons during the request and displaying visual feedback alert 'Failed to fetch'.
    • Loaded the home page and clicked the 'Restore saved session' button.
    • The application entered a loading state with action buttons temporarily disabled while attempting to fetch the saved session.
    • Visual feedback was rendered on screen in an alert displaying the result of the restore attempt ('Failed to fetch') without crashing.
  8. S8
    Generate secondary wallet address

    2 steps, 2 screenshots

    pass
    S8-1.png
    S8 · Generate secondary wallet address
    S8-5.png
    S8 · Generate secondary wallet address
    • Entered testname.eth into the Sepolia ENS name input field.
    • Clicked 'Generate unused secondary' and verified that the Secondary textbox was populated with a valid Ethereum address 0xdEEBee8a01126a4750C7a366365E1C78B1d099da.
    • The 'Secondary' wallet address input was successfully populated with a newly generated cryptographic address (0xdEEBee8a01126a4750C7a366365E1C78B1d099da) after clicking 'Generate unused secondary'.
  9. S9
    Handle Sepolia network switch rejection on ENS grant

    1 step, 2 screenshots

    pass
    S9-1.png
    S9 · Handle Sepolia network switch rejection on ENS grant
    S9-5.png
    S9 · Handle Sepolia network switch rejection on ENS grant
    • Clicked 'Generate unused secondary' to set a valid secondary address, then clicked '2. Owner grants service.metadata'. The application displayed the expected error alert indicating rejection ('User rejected the request. Details: wallet is pinned to chain 5042002 and will not add 0xaa36a7').
    • Attempting '2. Owner grants service.metadata' when connected to chain 5042002 prompts a network switch to Sepolia (chain 11155111/0xaa36a7).
    • When the wallet rejects the network switch, the app handles it gracefully by rendering an error alert: 'User rejected the request. Details: wallet is pinned to chain 5042002 and will not add 0xaa36a7 Version: viem@2.45.1'.
    • No infinite loading state or unhandled crash was observed.
  10. S10
    Reject evidence fetch with empty Agent ids

    2 steps, 2 screenshots

    fail
    S10-3.png
    S10 · Reject evidence fetch with empty Agent ids
    S10-6.png
    S10 · Reject evidence fetch with empty Agent ids
    • Cleared the Agent ids input field leaving it completely blank.
    • Clicking 'Fetch live evidence' with an empty Agent ids input triggered a network query (button showed 'Querying…') resulting in an unhandled 'Failed to fetch' alert rather than client-side validation blocking the request.
    • Cleared the Agent ids input completely and clicked Fetch live evidence.
    • The button entered a 'Querying…' loading state showing that an outgoing network query was dispatched with empty parameters.
    • The request completed with a generic 'Failed to fetch' alert rather than client-side validation preventing the request.
  11. S11
    Disconnect wallet session

    2 steps, 2 screenshots

    pass
    S11-1.png
    S11 · Disconnect wallet session
    S11-3.png
    S11 · Disconnect wallet session
    • The wallet is initially connected with address 0xB412...62A6 and a Disconnect button is visible.
    • Clicked Disconnect; the UI reverted to the unauthenticated state showing the Connect Wallet button and 'Connected none on chain none'.
    • Verified that clicking 'Disconnect' successfully disconnects the wallet session.
    • The header displays 'Connect Wallet' and the UI reverts to the initial unauthenticated state.

Issues

Findings that survived the Critic's audit. Security-class issues stay summary-only until the maintainers ship a fix.

criticalpromoted ↑functionalF2 · S2

Backend is offline: sign-in, draft creation and evidence lookups all fail

Surfaced by the audit of S2, which the Tester passed, and reproduced live: I clicked the 'Sign in and create draft' button on the homepage. Shortly after, the button became re-enabled and an alert displaying 'Failed to fetch' appeared, blocking the sign-in and draft creation process as reported. The page reported 3 console errors during the scenario.

Expected

The application should successfully communicate with the backend to authenticate and create the draft.

Actual

Every call to the backend host settleone-production.up.railway.app fails and the page shows 'Failed to fetch'. The browser logs it as a CORS preflight failure, but the host answers Railway's fallback 404 (x-railway-fallback: true) for every path, so the backend service is no longer deployed rather than misconfigured for CORS. Core workflows cannot complete.

Repro · 3 steps
  1. Connect wallet.
  2. Enter a valid amount in the 'Approved budget' field.
  3. Click 'Sign in and create draft'.
mediumwithdrawnfunctionalF1 · S10

Empty Agent ids triggers unvalidated network fetch resulting in 'Failed to fetch' error

The observed 'Failed to fetch' alert is due to a systemic CORS misconfiguration blocking all API requests (as seen with valid inputs in S4), not a specific defect with empty input validation. The page reported 3 console errors during the scenario.

Expected

The application should validate that Agent ids are required and block the network request before querying The Graph with empty parameters.

Actual

The application initiated a network request without validating the empty input, displaying a disabled 'Querying…' state and then failing with an alert 'Failed to fetch'.

Repro · 4 steps
  1. Navigate to https://settleone.vercel.app/
  2. Locate the 'Vendor evidence (The Graph)' section.
  3. Clear all text in the 'Agent ids' textbox.
  4. Click the 'Fetch live evidence' button.

Wallet activity

DeepQA injected a test wallet into the browser and recorded every request the app sent to it. Testnet funds only.

address
0xB412E2…Ab62A6
chain
Arc Testnet
browsers opened
3
read requests forwarded
0
signing requests
0

Critic audit

An adversarial second pass over every finding before it reaches the report.

1
findings reviewed
1
re-verified live
1
withdrawn
  • F1withdrawn

    The observed 'Failed to fetch' alert is due to a systemic CORS misconfiguration blocking all API requests (as seen with valid inputs in S4), not a specific defect with empty input validation.

  • F2promoted ↑

    Surfaced by the audit of S2, which the Tester passed, and reproduced live: I clicked the 'Sign in and create draft' button on the homepage. Shortly after, the button became re-enabled and an alert displaying 'Failed to fetch' appeared, blocking the sign-in and draft creation process as reported.

  • The tester consistently rationalized application-breaking CORS errors as successful tests of 'graceful failure handling', missing that the application's primary features are completely non-functional.
  • Human review on 2026-09-16 reframed F2: the backend host returns Railway's fallback 404 with x-railway-fallback: true for every path, so the root cause is an undeployed backend, and the CORS error is the browser's symptom. Severity kept at critical because the core workflows are unusable as hosted.

Report

QA report: external/settleone.vercel.app at hosted

The backend is offline, so sign-in, draft creation and evidence lookups all fail and the application's core functionality is unusable.

Testing covered 11 scenarios across wallet connection, session restoration and disconnection, input validation for budgets and agent lookups, and network handling on the Sepolia network. Ten scenarios passed and one failed.

The primary failure is that the backend host no longer serves the API (it answers Railway's fallback 404 for every path, which the browser reports as a CORS preflight failure), resulting in fetch errors during authentication and draft creation. While client-side form validations and wallet connection flows executed, the underlying API endpoints remain unreachable from the application origin. During the audit, one additional finding regarding unvalidated agent lookups was withdrawn.

Until the backend is redeployed, users cannot complete core workflows such as creating drafts or interacting with backend services.

Run summary
MetricCount
Scenarios executed11
Passed10
Failed1
Blocked0
Findings raised1
Issues after the audit1
Withdrawn by the audit1
Critical / high / medium / low1 / 0 / 0 / 0

Target: https://settleone.vercel.app · Testing level: deep_feature · Stack: unknown

Issues
Critical severity
F2 · Backend is offline: sign-in, draft creation and evidence lookups all fail

Severity: critical · Type: functional · Verdict: promoted · Scenario: S2

Surfaced by the audit of S2, which the Tester passed, and reproduced live: I clicked the 'Sign in and create draft' button on the homepage. Shortly after, the button became re-enabled and an alert displaying 'Failed to fetch' appeared, blocking the sign-in and draft creation process as reported. The page reported 3 console errors during the scenario.

Expected: The application should successfully communicate with the backend to authenticate and create the draft.

Actual: Every call to the backend host settleone-production.up.railway.app fails and the page shows 'Failed to fetch'. The browser logs it as a CORS preflight failure, but the host answers Railway's fallback 404 (x-railway-fallback: true) for every path, so the backend service is no longer deployed rather than misconfigured for CORS. Core workflows cannot complete.

Review note (2026-09-16): Human review on 2026-09-16 reframed F2: the backend host returns Railway's fallback 404 with x-railway-fallback: true for every path, so the root cause is an undeployed backend, and the CORS error is the browser's symptom. Severity kept at critical because the core workflows are unusable as hosted.

Steps to reproduce:

  1. Connect wallet.
  2. Enter a valid amount in the 'Approved budget' field.
  3. Click 'Sign in and create draft'.

Evidence: screenshots/critic-M1-1.png

Withdrawn findings

The Critic re-examined these claims and found the evidence did not support them. They are kept here rather than deleted.

  • Empty Agent ids triggers unvalidated network fetch resulting in 'Failed to fetch' error (S10, medium): The observed 'Failed to fetch' alert is due to a systemic CORS misconfiguration blocking all API requests (as seen with valid inputs in S4), not a specific defect with empty input validation. The page reported 3 console errors during the scenario.
Scenario results
ScenarioPriorityResultIssues
S1 Connect web3 wallethighpassnone
S2 Handle draft creation API failure gracefullyhighpassF2
S3 Handle Sepolia network switch rejection on resolver lookuphighpassnone
S4 Handle vendor evidence fetch API failure gracefullyhighpassnone
S5 Reject draft creation with empty budgetmediumpassnone
S6 Reject draft creation with non-numeric budgetmediumpassnone
S7 Restore saved sessionmediumpassnone
S8 Generate secondary wallet addressmediumpassnone
S9 Handle Sepolia network switch rejection on ENS grantmediumpassnone
S10 Reject evidence fetch with empty Agent idsmediumfailnone
S11 Disconnect wallet sessionmediumpassnone
The audit

The Critic reviewed 1 finding and re-verified 1 of them live in the browser, replaying the reported steps on a fresh page.

  • The tester consistently rationalized application-breaking CORS errors as successful tests of 'graceful failure handling', missing that the application's primary features are completely non-functional.
What to fix first
  1. Redeploy the backend API so draft creation, authentication and evidence lookups reach a live service (F2).
Coverage and caveats

In scope: Wallet connection lifecycle on Arc testnet; Draft creation flow validation and error handling; ENS identity flow network switch rejection handling; Vendor evidence query validation and error handling.

Not covered: Successful draft creation API responses; Successful vendor evidence API responses; Successful Sepolia ENS transactions.

  • Backend API endpoints (settlement, graph) are offline, so the only observable behavior on those flows is error handling.
  • The test wallet strictly refuses network switches away from Arc testnet (chain 5042002), so Sepolia operations will predictably fail at the network switch prompt.
By the numbers
MetricValue
Scenarios10 passed, 1 failed, 0 blocked of 11 (21 planned steps)
Screenshots29 (2 explore, 26 scenario, 1 critic), 26 captioned
Coverage1 pages, 3 forms, 5 flows, 5 console errors
Audit1 findings, 1 re-verified live, 0 confirmed, 1 promoted, 1 withdrawn
Model calls117
Tokens489,461 input, 7,148 output, 12,759 thinking
Time6 min
Wallet0 transactions, 0 signatures, 0 refusals on chain 5042002
StageCallsInputOutputThinkingSeconds
explore1998,5011,70795851
plan13,8921,6653,39342
test91367,4583,0974,631197
critique518,1394663,42841
report11,4712133495

Run log

stagecallstokenstime
Explore19101.2k51s
Plan18.9k42s
Test91375.2k3m 17s
Critique522k41s
Report12k5s
Total117509.4k5m 35s
Intake
Explore
Plan
Test
Critique
Report
  • 14:40:29Zexploreexplore started
  • 14:46:04ZexploreExplored / (18 controls, 0 forms)
  • 14:46:04ZexploreExplored /draft (0 controls, 0 forms)
  • 14:46:04ZexploreMapped 1 pages, 3 forms, 5 flows in 19 turns.
  • 14:46:04Zexploreexplore completed in 51s.
  • 14:46:04Zplanplan started
  • 14:46:04ZplanPlanned 11 scenarios (4 high, 7 medium, 0 low).
  • 14:46:04Zplanplan completed in 42s.
  • 14:46:04Ztesttest started
  • 14:46:04ZtestS1 executed (pass)
  • 14:46:04ZtestS2 executed (pass)
  • 14:46:04ZtestS3 executed (pass)
  • 14:46:04ZtestS4 executed (pass)
  • 14:46:04ZtestS5 executed (pass)
  • 14:46:04ZtestS6 executed (pass)
  • 14:46:04ZtestS7 executed (pass)
  • 14:46:04ZtestS8 executed (pass)
  • 14:46:04ZtestS9 executed (pass)
  • 14:46:04ZtestS10 executed (fail), 1 finding
  • 14:46:04ZtestS11 executed (pass)
  • 14:46:04ZtestExecuted 11 scenarios: 10 passed, 1 failed, 0 blocked, 1 finding.
  • 14:46:04Ztesttest completed in 197s.
  • 14:46:04Zcritiquecritique started
  • 14:46:04ZcritiqueReviewed 1 findings; 1 possible defect spotted in passed scenarios.
  • 14:46:04ZcritiqueRe-verified a possible defect in S2: reproduced.
  • 14:46:04ZcritiqueAudit complete: 0 confirmed, 1 withdrawn, 1 promoted, 1 re-verified live.
  • 14:46:04Zcritiquecritique completed in 41s.
  • 14:46:04Zreportreport started
  • 14:46:04ZreportReported 1 issue (1 critical, 0 high, 0 medium, 0 low) from 1 finding.
  • 14:46:04Zreportreport completed in 5s.

Put an agent team on your next pull request.

Connect a repo, dispatch a Run, and read an audited, evidence-backed report the same day.