Skip to content

feat: add shared semantic perception for GUI candidates - #10

Merged
xxxyxun merged 13 commits into
AI45Lab:mainfrom
two-tiger:main
Oct 31, 2026
Merged

xxxyxun merged 13 commits into
AI45Lab:mainfrom
two-tiger:main

Conversation

@two-tiger

Copy link
Copy Markdown
Collaborator

Summary

  • add a shared a11y/CDP semantic element table for slow planner and fast-model candidates
  • recover labels from AT-SPI metadata, nearby text and DOM; keep field values separate from names
  • merge DOM/a11y targets and classify browser_chrome/web_content/dialog/menu/native scopes
  • restrict alternatives to the proposal scope, reject mismatched focused typing, and omit unavailable visual fallback
  • compact JEV history/options while preserving semantic source and target IDs
  • add protocol 0.2 browser_snapshot references and episode browser/step_XX.json artifacts
  • retry transient slow-model ConnectionError and require a submit milestone before filtered search results
  • no screen OCR or document-evidence extraction; no third-party runtime dependency

Follow-up: schema and unbound recovery

  • scroll_up/scroll_down prompts explicitly require target_name and target_role
  • invalid-stage retry feedback identifies the exact milestone/proposal and missing field
  • stage binding tries exact, normalized, and compatible-role matches only when unique
  • fully unbound stages now reach JEV with bounded same-scope recovery candidates and RETURN_TO_PLANNER
  • stage_replan records unbound_proposals, available_targets, and recovery_scopes for the next repair

Validation

  • ruff check src tests: passed
  • pytest: 329 passed
  • tandem check: 17 golden samples passed
  • mock rjob smoke: semantic-recovery-mock-smoke, score 1.0
  • Task 059 five-step smoke: first unbound proposal reached JEV recovery and executed a click, followed by Escape and Alt+F10; ended at max_steps rather than no_action_limit
  • CDP Task 008 probes: port 1337, visible-page selection, fragmented responses and episode persistence verified

Task 008 acceptance

Run: osw21-semantic-008-ebcba05 (stage/c10, max 371 steps, 14400 s)

  • completed a scored run with 16 actions; stop_reason=no_action_limit, score=0.0
  • remaining blocker: planner repeatedly requested Desktop/list_item, which was absent from the a11y targets in Files; current main has no visual grounder fallback. This is not reported as a task pass.
  • search now proceeds through input -> Enter -> filtered results instead of stopping at target_unbound_or_ambiguous
  • 16 a11y+dom candidates across 4 of 13 GUI decisions
  • zero web_content -> browser_chrome candidate leaks and zero visual_fallback offers
  • zero generic Focused entry labels and zero verification blobs in JEV history
  • median JEV state: 2,493 bytes, versus 10,854 bytes in the reference trajectory
  • 16 CDP snapshots preserved in the episode

Run artifacts: /mnt/shared-storage-gpfs2/evobox-share-gpfs2/chenxinquan/tandem/rjob_logs/osw21-semantic-008-ebcba05

Latest corner-case fixes

  • bound-but-unexecutable GUI proposals now enter bounded recovery with PageDown/PageUp and arrow-key alternatives
  • CLI milestones require a top-level command; operation=cli receives dedicated repair feedback
  • mock smoke: semantic-unexecutable-recovery-mock, score 1.0

JEV service recovery

  • recover rank calls after URL timeouts, JSON failures, and transient HTTP 408/429/500/502/503/504
  • honor Retry-After, use 30-second health checks, and keep the 1200-second recovery bound
  • refresh endpoint discovery during recovery and log endpoint changes for redeployments

Named experiment runner

  • scripts/run_experiment.sh records manifest, batch, driver, worker, model and result logs under rjob_logs//
  • experiment names are unique lowercase/digit/hyphen identifiers; duplicate experiment directories are rejected
  • dry-run and artifact-layout tests included; rjob submission is unchanged

@xxxyxun
xxxyxun self-requested a review October 31, 2026 08:44
@xxxyxun
xxxyxun merged commit df8089e into AI45Lab:main Oct 31, 2026
2 checks passed
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