Agent S epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
This asks which routes turn observations or retained experience into content fit for reliance, and what checks actually license. Scope and exclusions are see boundary; sources and evidence layers are see Source register. SRC-1 supplies implementation, doctrine/design and reported operation, not observed runs or causal experiments. The report distinguishes installed S3, historical experience paths and offline selection. A route existing in one does not establish its presence in the others.
The consequential claims are RT-CLM-gui-verification, EPI-CLM-knowledge-bank, EPI-CLM-fact-accuracy and EPI-CLM-bbon-performance. None establishes a system-wide knowledge-production guarantee.
| Entry point or operation | Source path in SRC-1 | Coverage and supporting records |
|---|---|---|
| Installed command dispatch and terminal handling | setup.py; gui_agents/s3/cli_app.py |
Direct source reads; see RT-RTE-desktop-loop. Both failure and completion enter the completion-dialog branch. |
| Advertised actions and formatting | gui_agents/s3/memory/procedural_memory.py; gui_agents/s3/utils/formatters.py; gui_agents/s3/utils/common_utils.py |
Direct reads of introspection, formatters, parsing and eval; see RT-RTE-action-check. Advertised methods are not a capability restriction. No separate hook registry is established by these paths. |
| Worker reflection and text-buffer writes/read-back | gui_agents/s3/agents/worker.py; gui_agents/s3/agents/grounding.py |
Direct reads; EPI-RTE-trajectory-reflection, EPI-RTE-notes-buffer. The buffer is materially distinct from persistent historical JSON. |
| Grounding, OCR cleanup and text-span selection | gui_agents/s3/agents/grounding.py |
Direct reads of coordinate generation and OCR/text alignment; EPI-RTE-text-grounding. Other GUI methods enumerated by search; their application-specific effects are not individually audited. |
| Coding feedback, summary and downstream verification | gui_agents/s3/agents/code_agent.py; gui_agents/s3/agents/worker.py |
Summary construction directly read; controller loop supplied by RT-RTE-code-delegation; EPI-OBJ-code-summary. |
| S1/S2 hierarchy, experience and bootstrap | gui_agents/s1/core/AgentS.py; gui_agents/s2/agents/agent_s.py; gui_agents/utils.py |
S2 updater directly read; S1 updater and historical exposed methods searched. Remaining retrieval/caller chain is supplied by RT-RTE-historical-experience and RT-RTE-kb-bootstrap. S1 platform-specific observation transformations and S2/S2.5 grounding internals are not independently assessed here; no exhaustive historical epistemic negative follows. |
| S2.5 alternate worker and provider/model state | gui_agents/s2_5/agents/agent_s.py; gui_agents/s3/core/engine.py |
Supplied runtime findings, not independent full reads; see RT-CMP-lmm-agent, RT-CMP-grounding-model, RT-CMP-embedding-engine. |
| OSWorld execution/evaluation and OpenClaw bridge | osworld_setup/s3/lib_run_single.py; integrations/openclaw/agent_s_wrapper.py |
Supplied RT-RTE-osworld-driver and RT-RTE-openclaw-bridge. No direct reassessment of external evaluator semantics. |
| Caption generation, cleanup, selection and later scoring | gui_agents/s3/bbon/behavior_narrator.py; gui_agents/s3/bbon/comparative_judge.py; osworld_setup/s3/bbon/generate_facts.py; osworld_setup/s3/bbon/utils.py; osworld_setup/s3/bbon/run_judge.py |
Narrator/judge and save/load portions directly read; other caller/scoring findings supplied by RT-RTE-rollout-selection. |
| Public benefit claim | README.md |
Direct read; EPI-CLM-bbon-performance. Hosted Sai claims remain outside functional scope. |
Missing execution traces prevent identifying actual generated propositions, compliance, accepted comparison instances and later effects. Missing release bundles prevent assessing initial knowledge truth and lineage. Missing external evaluator definitions prevent determining precisely what benchmark success certifies. Missing provider internals/weights prevent assessing parametric knowledge, internal checking or training. Missing controlled comparisons prevent component-level or transfer attribution. Available but uninspected historical transformations are a coverage limit, not an access gap or evidence of absence. These limits allow route-specific conclusions, not a system-complete negative.
Epistemic-object inventory
Properties owned by declarations are see the cited record. Candidate contents below identify the assessed truth domain rather than assert that a particular output occurred.
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| RT-OBJ-procedural-memory | Primarily instructions, not truth claims | see record | see record | Policy compliance is not established. |
| EPI-OBJ-screen-evidence | Screen state, displayed text and target locations | see record | SRC-1: gui_agents/s3/agents/grounding.py |
Displayed text need not be true of the world. |
| EPI-OBJ-ocr-table | Recognized words and bounding boxes | see record | SRC-1: gui_agents/s3/agents/grounding.py |
Cleanup can delete numerical content; OCR accuracy unknown. |
| EPI-OBJ-trajectory-reflection | Progress, loops, completion and failure explanations | see record | SRC-1: gui_agents/s3/agents/worker.py |
Candidate assessments, not verified outcomes. |
| EPI-OBJ-notes | Arbitrary model-supplied notes; truth-aptness depends on instance | see record | SRC-1: gui_agents/s3/agents/grounding.py |
No supplied instance; not determinable for individual notes. |
| EPI-OBJ-code-summary | What code attempted and what resulted | see record | SRC-1: gui_agents/s3/agents/code_agent.py |
Summarizer does not receive controller outputs directly. |
| EPI-OBJ-experience-summary | Task/subtask observations and procedural advice | see record | SRC-1: gui_agents/s2/agents/agent_s.py |
No captured generated entry or downloaded bundle. |
| EPI-OBJ-fact-caption | Screenshot differences or the agent's terminal indication | see record | SRC-1: gui_agents/s3/bbon/behavior_narrator.py |
A fact label supplies no truth certification. |
| EPI-OBJ-judge-choice | Which supplied rollout better meets a request | see record | SRC-1: gui_agents/s3/bbon/comparative_judge.py |
Index is symbolic; its task-fit interpretation is model judgment. |
Authority-route ledger
Each row isolates a consequential function. Repeated route citations identify the same implementation container, not additional declarations. see delegates generic route identity, timing and mechanics to that record; the epistemic assessments remain local. All architectural statuses below describe implementation, not observed operation. No row asserts an observed accepted ampliative claim.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority: behavior permitted, blocked, or changed | Behavioral-authority path: consumer, channel, force, horizon | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-desktop-loop | content transformation | implemented | EPI-OBJ-screen-evidence | truth-apt transformation: acquisition/import | Desktop display enters model context | Screenshot producer; display domain, source warrant unknown | see route | Possible visible-state evidence | Input supply, not endorsement | Supports interpretation of rendered state, not application/backend truth | Provides basis for next action | see route | see route | none | none | No captured observation or calibrated accuracy. |
| EPI-RTE-text-grounding | content transformation | implemented | EPI-OBJ-ocr-table | truth-apt transformation: indeterminate | Image/OCR words become cleaned table | OCR plus regex; lexical screen domain | see route | Recognized text may be altered or omitted | Input to text-span model | Unknown OCR warrant; cleaning degrades numerical fidelity | Alters target evidence | see route | see route | none | none | Neither semantic preservation nor entailment established for general inputs. |
| EPI-RTE-text-grounding | operational admission/selection/consumption | implemented | EPI-OBJ-ocr-table | no content change | Phrase maps to word ID and geometry | Text-span model, then digit extraction/indexing | see route | Word coordinates or indexing error; default ID zero if no digits | Permissive target selection | No independent license that chosen word matches phrase | Supplies highlight endpoint | see route | see route | none | none | Geometry calculation does not validate semantic alignment. |
| EPI-RTE-trajectory-reflection | check/evidence production | implemented | EPI-OBJ-trajectory-reflection | truth-apt transformation: indeterminate | Task progress, repeated failure or completion | Reflector model, task and visible trajectory | see route | Continue/change-course/completion assessment | Advisory | Candidate judgment of visible task progress | Can influence next worker action | see route | see route | none | none | Could reshape evidence or add conjecture; actual output needed to distinguish. |
| EPI-RTE-trajectory-reflection | operational admission/selection/consumption | implemented | EPI-OBJ-trajectory-reflection | no content change | Reflection enters generator message | Nonempty result condition; worker interprets | see route | Reflection delivered | Advisory, not veto | Delivery licenses no additional factual reliance | Worker may revise or continue | see route | see route | none | none | No independent acceptance check or observed changed behavior. |
| RT-RTE-action-check | check/evidence production | implemented | RT-OBJ-procedural-memory | no content change | Action response format and trial evaluability | Regex and live eval; response strings/Python execution | see route | Formatting feedback or trial value | Feedback retries; effects may already occur | Only regex/evaluation result, not action safety or task correctness | Reproposal can occur; effects are not rolled back | see route | see route | none | none | Trial success is not a pure proof. |
| RT-RTE-action-check | disposition/acceptance | implemented | RT-OBJ-procedural-memory | no content change | Action returned after retry loop | Empty feedback or exhausted attempts | see route | Last response proceeds to conversion | Best-effort admission, not fail-closed | No epistemic acceptance of screenshot analysis or success claim | Can permit action despite format failure | see route | see route | none | none | Domain is executable proposal admission only. |
| EPI-RTE-notes-buffer | retention | implemented | EPI-OBJ-notes | no content change | Supplied strings appended | Model proposes; list extension admits without truth test | see route | In-memory notes | Automatic retention | No factual acceptance criterion | Later worker can use text | see route | see route | EPI-CLM-knowledge-bank | Task-local bank, not durable knowledge certification | No independent endorsement, expiry or content revision in this method. |
| EPI-RTE-notes-buffer | operational admission/selection/consumption | implemented | EPI-OBJ-notes | truth-apt transformation: non-ampliative reshaping | Notes joined into message text | Deterministic join; worker interprets result | see route | Current Text Buffer rendered | Advisory context supply | Formatting does not increase warrant | Notes may guide copying/actions | see route | see route | EPI-CLM-knowledge-bank | none | Delimiters do not preserve individual-string boundaries unambiguously. |
| RT-RTE-code-delegation | check/evidence production | implemented | EPI-OBJ-code-summary | truth-apt transformation: acquisition/import | Controller status/stdout/stderr enters coding context | Controller reports process execution; source warrant unknown | see route | Execution feedback for coding continuation | Feedback to model | Exit status supports process-level judgment, not task success | Further scripts may be revised/executed | see route | see route | RT-CLM-gui-verification | none | External controller semantics and actual results unavailable. |
| RT-RTE-code-delegation | content transformation | implemented | EPI-OBJ-code-summary | truth-apt transformation: indeterminate | Action/thought history becomes result summary | Fresh model; summary guidance requests factual results | see route | Summary or failure string | Advisory report | No checked derivation of execution outcomes | Next worker gets report/action history | see RT-BAP-code-return | SRC-1: gui_agents/s3/agents/code_agent.py |
RT-CLM-gui-verification | Outcome evidence omitted at summary boundary | Actual outputs needed to classify reshaping versus conjecture. |
| RT-RTE-desktop-loop | disposition/acceptance | implemented | EPI-OBJ-screen-evidence | no content change | Final task-completion indication | Model belief; sentinel handling in CLI | see route | DONE or FAIL stops loop | Enforcing termination | No implemented postcondition licensing complete task correctness | Stops acting; both branches display completion | see route | SRC-1: gui_agents/s3/cli_app.py |
RT-CLM-gui-verification | Required verification is policy, not gate | GUI evidence could support a model judgment; no actual decision supplied. |
| RT-RTE-historical-experience | content transformation | implemented | EPI-OBJ-experience-summary | truth-apt transformation: indeterminate | Trajectory becomes reusable summary | Summary model and guidance | see route | Narrative/episodic text | Candidate production | Not established as faithful compression or warranted generalization | Supplies later retained guidance | see route | see route | none | none | No instance supports entailment or non-entailment classification. |
| RT-RTE-historical-experience | retention | implemented | EPI-OBJ-experience-summary | no content change | Candidate enters JSON under new key | Key-existence rule; not factual evaluation | see route | New value stored or old value reused | Enforcing append/reuse rule | Retention is not evidence-consuming acceptance | Makes future retrieval possible | see route | see route | none | none | No content-specific withdrawal or repair demonstrated by updater. |
| RT-RTE-historical-experience | operational admission/selection/consumption | implemented | EPI-OBJ-experience-summary | no content change | Retrieved guidance enters planning/worker context | Similarity selection, then model interpretation | see route | Prompt guidance delivered | Ranking then advisory | Similarity licenses relevance ranking, not truth | May alter planning/action proposals | see route | see route | none | none | Delivery is not activated use or demonstrated learning. |
| RT-RTE-kb-bootstrap | operational admission/selection/consumption | implemented | EPI-OBJ-experience-summary | truth-apt transformation: acquisition/import | Release asset admitted to historical loaders | HTTP/ZIP success; transport/format domain | see route | Extracted initial stores | Permissive content admission | Imported content; source warrant unknown | Available to historical retrieval | see route | see route | none | none | Bundle contents and authorship lineage not frozen. |
| RT-RTE-rollout-selection | content transformation | implemented | EPI-OBJ-fact-caption | truth-apt transformation: indeterminate | Before/action/after become description | Narrator model; visible change domain | see route | Fact-caption text | Candidate production | Interpretation, not certified facts or causal attribution | Later judge receives answer portion | see route | see route | EPI-CLM-fact-accuracy | Fact status exceeds demonstrated validation | Fixed terminal descriptions are narrower signal reports, not success assertions. |
| RT-RTE-rollout-selection | retention | implemented | EPI-OBJ-fact-caption | no content change | Narrator result saved | Nonexception result; tag formatter is only structural best effort | see route | JSONL contains successful return values | Automatic persistence | No semantic acceptance | Captions become later judge evidence | see route | see route | EPI-CLM-fact-accuracy | none | Exception omission is not correction of false captions. |
| RT-RTE-rollout-selection | check/evidence production | implemented | EPI-OBJ-judge-choice | truth-apt transformation: indeterminate | Relative task satisfaction of supplied rollouts | Model compares task, captions, available endpoint images | see route | Choice plus rationale | Comparative recommendation | Evidence-consuming comparative evaluation for selecting a rollout, not proof of task success | Produces candidate selection | see route | see route | EPI-CLM-bbon-performance | none | No expected-answer oracle inside judge messages; incomplete views limit assessment. |
| RT-RTE-rollout-selection | disposition/acceptance | implemented | EPI-OBJ-judge-choice | no content change | Model comparison converted to selected directory | Integer parsing and range; finite supplied candidates | see route | Directory or None | Enforcing selection rule | Bounds chosen index, not correctness of its rationale | Records selection for scoring/reporting | see route | see route | EPI-CLM-bbon-performance | none | Implemented task-fit acceptance path, no observed accepted claim instance. |
| RT-RTE-osworld-driver | check/evidence production | implemented | EPI-OBJ-screen-evidence | truth-apt transformation: acquisition/import | External task evaluator result | env.evaluate; evaluator target/criteria uninspected beyond task score | see route | Score in result.txt | Reporting; later variance filtering/scoring | Only external score under unknown criteria | Changes offline task subset and comparison statistics | see RT-RTE-rollout-selection | see route | EPI-CLM-bbon-performance | none | No visible correctness/transfer license from a score alone. |
| RT-RTE-openclaw-bridge | disposition/acceptance | implemented | EPI-OBJ-screen-evidence | no content change | Child process status | Return-code check; process completion domain | see route | Wrapper success/error status | Status reporting to caller | Success means exit zero, not task satisfaction | Host may consume status; host behavior excluded | see route | see route | none | none | Broader success interpretation would exceed evaluator domain. |
No lifecycle-integration row is asserted: the inspected JSON and caption writes demonstrate retention/use, not integration after a demonstrated accepted knowledge claim. This is bounded to the traced stores and consumers, not a negative about all historical or opaque routes. Coordinate rescaling is deterministic arithmetic conditional on its inputs; it cannot warrant that those inputs identify the intended element. No route here establishes entailed world knowledge from warranted premises.
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| RT-CLM-gui-verification | see record | see record | see RT-OBJ-procedural-memory | RT-RTE-code-delegation, RT-RTE-desktop-loop | Unavailable | No supplied test of compliance or effect | GUI verification is requested; terminal method does not enforce it | Cannot promote instruction to guarantee. |
| EPI-CLM-knowledge-bank | see record | see record | see record | EPI-RTE-notes-buffer | Unavailable | No observed reuse benefit | Strings can be retained and delivered within ACI lifetime | “Long-term” does not establish disk persistence or epistemic acceptance. |
| EPI-CLM-fact-accuracy | see record | see record | see record | RT-RTE-rollout-selection | Unavailable | No independent caption validation; before/after contrast alone does not identify action causality | Evidence-conditioned caption generation and downstream reliance are wired | Accurate-facts premise is stronger than implemented checks. |
| EPI-CLM-bbon-performance | see record | see record | see record | RT-RTE-rollout-selection, RT-RTE-osworld-driver | Reported figures only, not inspected runs | No frozen trial allocation, evaluator definitions or independent component intervention | Implemented offline comparison is consistent with the reported method | Magnitude, human comparison, transfer and component benefit remain unverified. |
Bounded conclusion
Agent S has several consequential epistemic routes, not one common oracle. Desktop observations and controller feedback supply evidence for model decisions. Their scope differs: rendered state and process results do not independently certify application truth or task completion. OCR is an especially concrete lineage limit: its cleanup can remove a purely numerical token before the text-span model sees the table, as EPI-RTE-text-grounding establishes. Geometric derivation remains conditional on unvalidated recognition and selection.
Reflection is a model-mediated feedback channel about the system's own trajectory, with a wired return to action choice, see EPI-RTE-trajectory-reflection. It supports an architectural self-representation/feedback path; actual accurate criticism, changed reliance and benefit are unobserved. Formatting checks have operative consequences but a narrower domain: they test a string pattern and evaluability, can already cause effects, and do not enforce outcome correctness, see RT-RTE-action-check. Reflection and autonomous action choice do not by themselves establish theory building or learning.
Notes and historical summaries obtain later behavioral influence without demonstrated epistemic acceptance. Notes use an in-memory append/render path; historical summaries use persistent key-based admission and retrieval, see EPI-RTE-notes-buffer and RT-RTE-historical-experience. Imported bundles have unknown content warrant. Summary semantics cannot be classified as entailed or ampliative without actual content and premises. Source wiring establishes retention and potential later reliance, not exercised learning, improved capacity or successful self-improvement. For historical experience, retained instructions can enter behavior-determining organization; the missing subsequent-operation dependence and objective-linked comparisons prevent attributing exercised beneficial self-change.
The coding path consumes execution feedback internally, but its returned summary is generated from selected action/thought history rather than direct controller outcomes, see EPI-OBJ-code-summary. Subsequent GUI checking could improve warrant; it is requested policy, not a postcondition on termination. Failure markers and wrapper process success must not be recast as verified task completion.
Offline judging is a genuine implemented evidence-consuming comparative procedure with a named intended use and criterion: choose a supplied completed rollout that better satisfies the request and judge guidelines for scoring/reporting, see RT-RTE-rollout-selection. The model supplies the substantive evaluation; the integer/range rule permits or rejects the directory selection. Its operational horizon is saved comparison and reporting, not live action replay or policy installation. Caption retention is separate from this selection decision. Passing parsing checks does not accept each caption as true. Actual accepted comparison content, selection accuracy and causal performance improvement remain unobserved. Public benchmark figures are attributed reports, not independently established evidence.
Parametric components remain externally hosted and uninspected; their client fixity limits are see RT-CMP-lmm-agent, RT-CMP-grounding-model and RT-CMP-embedding-engine. Lack of visible training calls is not a system-wide no-learning conclusion. No inspected instance establishes a localized explanatory theory with content-directed criticism and retained iterative revision; the existing progress judgments and rankings must not be promoted to those independent conditions. Uninspected historical paths and unavailable model processing also prevent an exhaustive absence verdict.
Shared records
Operative objects
EPI-OBJ-screen-evidence
Label: Screenshot and grounding evidence
Part of: RT-RTE-desktop-loop
This object is an evidence-bearing part of the runtime route, not a duplicate of that enclosing route. Source-native identity: observation screenshot, passed to worker and OSWorldACI grounding contexts. Image bytes reside in process dictionaries/model messages; rendered content is interpreted by models, while returned digit coordinates are symbolic inputs to geometry. Candidate truths concern visible UI state and target location. SRC-1, implementation: gui_agents/s3/agents/worker.py, gui_agents/s3/agents/grounding.py.
self.grounding_model.add_message( text_content=prompt, image_content=obs["screenshot"], put_text_last=True ) ---
gui_agents/s3/agents/grounding.pynumericals = re.findall(r"\d+", response) assert len(numericals) >= 2 return [int(numericals[0]), int(numericals[1])] ---
gui_agents/s3/agents/grounding.py
These checks establish parseable digits, not their correspondence to the requested target. Screenshots provide display evidence, not endorsement of every displayed assertion.
EPI-OBJ-ocr-table
Label: OCR text table and element geometry
Part of: RT-RTE-desktop-loop
Distinct material part: get_ocr_elements returns natural-language recognized words in a symbolic ID table and a Python element list containing bounding-box fields; both are in process memory. Unlike the screen image, the cleaned table has lost some original lexical information. Evidence and concrete transformation are in EPI-RTE-text-grounding, SRC-1 implementation at gui_agents/s3/agents/grounding.py. This part belongs to the desktop route, not a second declaration of the full route.
EPI-OBJ-trajectory-reflection
Label: Worker trajectory reflection
Part of: RT-RTE-desktop-loop
Source-native identity: reflection, reflection_thoughts, and self.reflections in Worker. Natural-language assessments reside in process strings/lists and generator messages; reset replaces worker context. Distinct from shipped procedural instructions RT-OBJ-procedural-memory: these are generated progress assessments. SRC-1 implementation/doctrine at gui_agents/s3/agents/worker.py, gui_agents/s3/memory/procedural_memory.py; evidence is retained in EPI-RTE-trajectory-reflection.
EPI-OBJ-notes
Label: ACI notes
Part of: RT-RTE-desktop-loop
Source-native identity: OSWorldACI.notes, written by save_to_knowledge and rendered as Current Text Buffer. Python list in ACI memory; strings are interpreted as natural-language content by the worker. Not the static policy or historical JSON store. It can hold quoted text, facts, or instructions; individual truth-aptness is not determinable without entries. SRC-1 implementation: gui_agents/s3/agents/grounding.py, gui_agents/s3/agents/worker.py; passages in EPI-RTE-notes-buffer.
EPI-OBJ-code-summary
Label: Code execution summary
Part of: RT-RTE-code-delegation
Source-native identity: _generate_summary output returned under summary. Natural-language string in a result dictionary and next worker message; this is the report part of a larger coding route. Action history and controller feedback are distinct evidence streams. Summary construction selects step number, thoughts and action, not execution result dictionaries. SRC-1 implementation: gui_agents/s3/agents/code_agent.py; downstream consumer see RT-BAP-code-return.
for step in execution_history: step_num = step["step"] thoughts = step.get("thoughts", "") action = step.get("action", "") ---
gui_agents/s3/agents/code_agent.pyif thoughts: execution_context += f"Thoughts: {thoughts}\n" execution_context += f"Code: {action}\n" ---
gui_agents/s3/agents/code_agent.py
The prompt asks for actual outputs, but this input supplies only narrated thoughts and proposed code. Thoughts may themselves mention prior results; this is not direct receipt or verification of those results. Without generated content, faithful reshaping versus added outcome conjecture is indeterminate. Runtime's omission warning is supported, not superseded.
EPI-OBJ-experience-summary
Label: Historical experience summaries
Part of: RT-RTE-historical-experience
The content-bearing part of the historical route, not its retrieval mechanism. Source-native S2 identities: narrative and episodic values in narrative_memory.json and episodic_memory.json. Natural-language task/subtask summaries and guidance, held in filesystem JSON and later model prompts. Grouped here only under the shared new-key admission rule; narrative and episodic consumers remain separate in the enclosing record. No actual value is frozen. The default bundles in RT-RTE-kb-bootstrap are another possible provenance, not proof that any particular generated entry came from a bundle. SRC-1 implementation: gui_agents/s2/agents/agent_s.py.
if subtask_key not in kb.keys(): subtask_summarization = self.planner.summarize_episode( subtask_trajectory ) kb[subtask_key] = subtask_summarization else: subtask_summarization = kb[subtask_key] ---
gui_agents/s2/agents/agent_s.pywith open(subtask_path, "w") as fout: json.dump(kb, fout, indent=2) ---
gui_agents/s2/agents/agent_s.py
Narrative evidence and later-use passage are see RT-RTE-historical-experience. Admission does not test the factual summary or establish whether procedural advice is warranted beyond its originating task.
EPI-OBJ-fact-caption
Label: Fact captions
Part of: RT-RTE-rollout-selection
Distinct content part of the offline route: fact_answer and fact_thoughts, natural-language descriptions stored in filesystem JSONL with screenshot metadata. The later judge receives answer strings only; rationale retention does not establish rationale consumption. SRC-1 implementation: gui_agents/s3/bbon/behavior_narrator.py, osworld_setup/s3/bbon/generate_facts.py, osworld_setup/s3/bbon/utils.py.
if "fact_answer" in data: fact_captions.append(data["fact_answer"]) ---
osworld_setup/s3/bbon/utils.pyif isinstance(result, Exception): print(f"Error generating fact caption for step {i+1}: {result}") continue successful_results.append(result) ---
osworld_setup/s3/bbon/generate_facts.pyif successful_results: with open(fact_captions_file, "w") as f: for result in successful_results: f.write(json.dumps(result) + "\n") ---
osworld_setup/s3/bbon/generate_facts.py
The prose output is evidence-conditioned but not semantically checked by these write branches. There is a material countercase to treating all captions as outcome conjectures: exact DONE returns a fixed report of the agent's indication, not of actual completion.
if pyautogui_action == "DONE": return { "fact_thoughts": "The agent has indicated that it is done with the task.", "fact_answer": "The agent has indicated that it is done with the task.", } ---
gui_agents/s3/bbon/behavior_narrator.py
For concrete input pyautogui_action="DONE", the inspected branch returns those literal fields without image interpretation. This is a deterministic report about an input signal, not evidence that the task succeeded. For ordinary actions, captions might preserve visible facts or add interpretations; the unseen output prevents deciding the relation.
EPI-OBJ-judge-choice
Label: Comparative answer and selected trajectory
Part of: RT-RTE-rollout-selection
Source-native identities: comparative answer, thoughts, selected_trajectory. Natural-language rationale and model answer become a symbolic integer/directory selection, retained by the caller in JSON for scoring. Unlike captions, the object assesses relative task fit under explicit guidelines. SRC-1 implementation: gui_agents/s3/bbon/comparative_judge.py; criterion doctrine at gui_agents/s3/memory/procedural_memory.py.
The agent is always expected to complete the task; key constraints take precedence over these guidelines which act as tie breakers. ---
gui_agents/s3/memory/procedural_memory.py
The judgment receives the task, answer captions and available initial/final screenshot pairs, not every raw observation, controller result or external expected answer. The enclosing record retains the integer/range passage. The criterion gives a bounded implemented evaluation/selection route; it does not establish actual correct acceptance or acceptance of each constituent factual premise.
Routes
EPI-RTE-trajectory-reflection
Label: Trajectory reflection feedback
Part of: RT-RTE-desktop-loop
Material feedback subroute, not a replacement of the desktop loop. Worker owns invocation and delivery; reflector proposes assessment; worker model decides subsequent action without a reflector veto. Open-request task mode; no expected-answer oracle. Enabled reflection seeds task/initial screenshot on turn zero and thereafter sends the previous worker response plus current screenshot to the reflector. Text history can remain when old images are removed; context policy see the parent. SRC-1 implementation: gui_agents/s3/agents/worker.py; doctrine/design: gui_agents/s3/memory/procedural_memory.py.
- Immediate return: Reflection text and thoughts, or None before a reflection call/when disabled.
- Later read-back: inapplicable — ordinary current-run feedback; no durable reflection store in this subroute.
- Delegated visibility: Reflector sees task, previous plan/action response and screenshots in its retained context, not independent task-success evidence or complete coding results.
- Selection predicate: Reflection enabled and turn count above zero; nonempty reflection added to generator message.
- Invalidation or expiry: Worker reset discards reflection state; image/turn flushing constrains visible history.
- Activation or effect: Advisory assessment can influence generator choice; delivered text is not observed compliance.
- Evidence limits: No reflection instance, actual failure diagnosis, changed behavior or benefit supplied.
- implementation conclusion status: wired
- operation conclusion status: uninspected
Case 3. You believe the current task has been completed. In this case, tell the agent that the task has been successfully completed. ---
gui_agents/s3/memory/procedural_memory.pyreflection, reflection_thoughts = split_thinking_response( full_reflection ) self.reflections.append(reflection) ---
gui_agents/s3/agents/worker.pyif reflection: generator_message += f"REFLECTION: You may use this reflection on the previous action and overall trajectory:\n{reflection}\n" ---
gui_agents/s3/agents/worker.py
The check target is task progress within visible trajectory, not truth of a general explanatory theory. The prompt permits causal-sounding failure explanations, but a generated criticism and its blame/revision chain are not supplied. Thus theory-builder conditions 1–4 are independently unestablished for explanatory theories here, not inferred absent from model opacity. Task reflection has a wired self-representation and return path; exercised learning and improved capacity remain uninspected.
EPI-RTE-notes-buffer
Label: Knowledge buffer append and delivery
Part of: RT-RTE-desktop-loop
A material retention/delivery subroute: model-generated save_to_knowledge(text) appends strings to ACI notes, then later worker invocation renders them. Model proposes content, list extension admits; no per-note human approval or truth veto. Open task execution, no oracle. This is distinct from the parent's ordinary message history and from historical filesystem experience. SRC-1 implementation: gui_agents/s3/agents/grounding.py, gui_agents/s3/agents/worker.py.
- Immediate return: WAIT sentinel after notes are extended.
- Later read-back: Next worker invocation joins all current notes into Current Text Buffer in the user message.
- Delegated visibility: Generator receives joined text; original screenshot/source links are not structurally required for each note.
- Selection predicate: Model invokes exposed method; renderer supplies all notes without relevance ranking.
- Invalidation or expiry: ACI lifetime bounds the list; the method contains no content expiry, revision or withdrawal. Worker reset alone does not establish ACI clearing; see parent.
- Activation or effect: Advisory text may affect later copying/action selection; append can occur during formatter evaluation and again on worker evaluation.
- Evidence limits: No actual entries, fidelity, successful reuse or cross-session persistence supplied.
- implementation conclusion status: wired
- operation conclusion status: uninspected
self.notes.extend(text) return """WAIT""" ---
gui_agents/s3/agents/grounding.pygenerator_message += ( f"\nCurrent Text Buffer = [{','.join(self.grounding_agent.notes)}]\n" ) ---
gui_agents/s3/agents/worker.py
A concrete deterministic render: notes ["a,b", "c"] and ["a", "b,c"] both produce the same inner text a,b,c. The join reshapes strings without semantic validation and loses unambiguous item boundaries. The inspected implementation, not target execution, supports this deduction. No factual acceptance, rollback or source-provenance requirement is implemented by this method; arbitrary Python outside it remains outside this narrow negative.
EPI-RTE-text-grounding
Label: OCR cleanup and phrase grounding
Part of: RT-RTE-desktop-loop
The text-target subroute, distinct from direct visual referring-expression grounding. get_ocr_elements calls OCR, cleans tokens and constructs word IDs/geometry; generate_text_coords gives phrase/table/screenshot to a separate model, extracts an ID and computes edge/center coordinates. Software owns cleanup and geometry; model proposes word identity; indexing supplies no semantic veto. Open-request phrase alignment, no expected-answer oracle. SRC-1 implementation: gui_agents/s3/agents/grounding.py.
- Immediate return: Table and OCR elements internally, then phrase-aligned coordinates or error.
- Later read-back: inapplicable — table and coordinates are current-action state, not retained content for another invocation.
- Delegated visibility: Text-span model receives phrase, cleaned table, alignment instruction and screenshot; not raw OCR output before cleanup.
- Selection predicate: Last digit sequence from model response selects element; no digits defaults to zero. Start/end alignment selects corresponding bounding-box edge.
- Invalidation or expiry: Text-span model resets on each request; observation refresh replaces current screen evidence.
- Activation or effect: Returned coordinates determine text highlighting endpoints; errors propagate toward action conversion fallback.
- Evidence limits: OCR/provider accuracy, actual phrase choices and resulting GUI effects unobserved; no entailment of correct alignment from index parsing.
- implementation conclusion status: wired
- operation conclusion status: uninspected
image_data["text"][i] = re.sub( r"^[^a-zA-Z\s.,!?;:-+]+|[^a-zA-Z\s.,!?;:-+]+$", "", word ) ---
gui_agents/s3/agents/grounding.pyif image_data["text"][i]: grouping_map[block_num].append(image_data["text"][i]) ---
gui_agents/s3/agents/grounding.py
For concrete OCR token 2026, the leading disallowed-character run consumes all four digits, leaving an empty string; the conditional omits it from the table/elements. Token 123abc456 becomes abc. These are implementation-layer deductions through the inspected regex and branch, not executed observations. Hence cleanup is not universally meaning-preserving, even if OCR itself were perfect; the remaining screenshot input is a countervailing source of evidence, not a restoration of omitted table text.
if len(numericals) > 0: text_id = int(numericals[-1]) else: text_id = 0 elem = ocr_elements[text_id] ---
gui_agents/s3/agents/grounding.py
A missing numeral therefore need not reject selection; it can pick the first element. A well-formed numeral can still select the wrong phrase. Geometric arithmetic licenses only coordinates relative to the selected box. Runtime's broader grounding account remains valid; these are added epistemic subroutes, not a supersession.
Claims
EPI-CLM-knowledge-bank
Label: Task knowledge bank
Source-native claimed role: save_to_knowledge describes a long-term bank for task reuse. This is a claim about the notes subroute, not a duplicate of RT-OBJ-procedural-memory. SRC-1 doctrine/design: gui_agents/s3/agents/grounding.py.
Save facts, elements, texts, etc. to a long-term knowledge bank for reuse during this task. Can be used for copy-pasting text, saving elements, etc. ---
gui_agents/s3/agents/grounding.py
The task-reuse clause bounds the claim; it should not be read as cross-session durability. Implementation and authority see EPI-RTE-notes-buffer.
EPI-CLM-fact-accuracy
Label: Accurate fact captions
Source-native claimed warrant: comparative prompt treats captioned facts as accurate and directs reliance on them. Unlike RT-CLM-gui-verification, this is an offline judge premise, not GUI-worker verification policy. SRC-1 doctrine/design: gui_agents/s3/memory/procedural_memory.py.
- You must refer to final_screenshot to understand what has changed from initial_screenshot to final_screenshot. These facts are accurate; Do not assume what has changed or likely changed.
- You can cite facts during reasoning, e.g., Fact 2, Facts 1-2, but must refer to fact captions for accurate changes. ---
gui_agents/s3/memory/procedural_memory.py
There is genuine contrary evidence to a simple “unchecked text only” characterization: narrator guidance requests before/after evidence and warns against assuming action success.
- Note that even if the action is expected to cause a change, it may have not. Never assume that the action was successful without clear evidence in the screenshots. ---
gui_agents/s3/memory/procedural_memory.py
That request and the judge's endpoint images supply evidence-conditioned criticism opportunities. They do not guarantee caption fidelity, identify action causality, or implement per-caption acceptance. Saving and later loading are see EPI-OBJ-fact-caption; comparative model selection is see RT-RTE-rollout-selection.
EPI-CLM-bbon-performance
Label: Behavior Best-of-N benchmark gain
Claimed operation/result: adding Behavior Best-of-N raises reported OSWorld performance and exceeds a reported human baseline. No supplied runtime claim has this referent; RT-RTE-rollout-selection is its closest mechanism, not a duplicate claim. SRC-1 reported operation: README.md.
On OSWorld, Agent S3 alone reaches 66% in the 100-step setting, already exceeding the previous state of the art of 63.4% (GTA1 w/ GPT-5). With the addition of Behavior Best-of-N, performance climbs even higher to 72.6%, surpassing human-level performance on OSWorld (~72%)! ---
README.md
This is attributed evidence, not a frozen causal experiment. The claim concerns task outcomes and selection, not production of accepted explanatory knowledge. No independent variation or raw trials establish that captioning, judgment or another component caused the reported difference.