Browser Task Schema — V0.5

Tasks are inserted into the val-scoped SQLite database by the authenticated ChatGPT Val Town plugin. There is no public enqueue endpoint.

Required fields

  • runId: unique stable id, <=128 chars.
  • targetUrl: http/https URL.
  • risk: read_only, reversible_write, or consequential.
  • purpose: human-readable reason for the run.
  • steps: 1..30 DSL actions.

Optional fields

  • approved: must be true for reversible_write, consequential, and any fill_secret action.
  • allowedHosts: extra main-navigation hosts, explicit only.
  • preferredProvider: kernel or browserless.
  • evidenceRetention: minimal (default) or full.

DSL actions

  • goto
  • wait_for
  • click
  • fill
  • fill_secret
  • type
  • select
  • extract_text
  • extract_attribute (attribute value is blocked)
  • expect_text
  • expect_url

Secret rule

Never put a password, cookie, API token, or OTP secret in task_json. Use fill_secret with an environment-variable name. The value is resolved in execution memory only after approval.

Evidence retention

minimal persists status, URL, checks, errors, duration and fallback metadata but omits extracted outputs and provider session ids. full persists the full receipt and should be used only when the extracted data is intentionally safe to retain.

Retry policy

  • Only read_only + provider FAIL is retryable.
  • Maximum 2 task attempts.
  • Retry delay: 10 seconds.
  • BLOCKED, PARTIAL, writes and consequential tasks are never automatically retried.
  • No cron/automatic runner is enabled, so a retry becomes eligible but does not consume browser credits until ChatGPT explicitly runs runner.ts again.

Provider fallback

  • Kernel is primary.
  • Browserless is fallback only for read_only tasks.
  • No cross-provider retry for writes.

PASS rule

A successful browser call without at least one positive expectation remains PARTIAL. PASS requires all explicit expectations to succeed.