Catalog/R family/R01
Proposed specificationSource-located exemplarH1

Reason-act-observe

Interleave reasoning and external actions.

JOIN POINTinterleaved_reasoning_and_actionRECORD STATUSCandidate · v0.1.0
UML class view for Reason-act-observe, showing participant roles, received calls, and analytical dependencies
FIG. R01 / UML CLASS VIEW
Object interaction diagram for Reason-act-observe, showing role collaboration and a numbered message sequence
FIG. R01 / OBJECT INTERACTIONS
Context
An agent can reason and use an external action interface.
Trigger
The model emits reasoning followed by an action request.
Structure
Parsed action, execution result, and observation fed into the next cycle.
Effect
External evidence enters the reasoning trajectory before the next action.
Requires
Action and observation schemas are stable enough to parse.
Ensures
Every executed action has an attributable observation or execution error.
Invariant
Model reasoning is not treated as environment evidence.
Violation
Invalid action, unavailable tool, or parse error is exposed to the loop.

Negative control

Chain-of-thought text without external action is not ReAct.

Permitted variation

Prompt protocol, typed tool call, XML or text parser, and observation compression.

Test obligation

Test action-observation linkage, malformed action, tool error, and loop termination.

Evolution question

Did textual thought-action protocols become typed tool events?

PROMPT SKETCH
Interleave reasoning and action through a parseable protocol. Every executed action must have an attributable observation or an execution error; unparsed output is not an action.
CODE DESIGN / PYTHON
def reason_act(task, model, tools):
    trace = []
    while not trace or trace[-1].kind != "final":
        raw = model.complete(task, trace)
        step = protocol.parse(raw)
        if step.kind == "action":
            try:
                observation = tools.execute(step.action)
            except ToolError as error:
                observation = Observation.error(step.action, error)
            trace.append(observation)
        else:
            trace.append(step)
    return trace

Illustrative design sketch. The parser is the boundary between thought and effect; every effect gets an observation. This example is a teaching aid, not implementation evidence or a conformance claim.

Join point
interleaved_reasoning_and_action
Source locator
Yao et al.
Lexical cue
(?i)\bReAct\b|\breason[_-]?act[_-]?observe\b|\bThought:\s|\bAction:\sFrozen expression, v0.1.0. A match is a retrieval cue, not a confirmed implementation.
Aliases
None
Canonical exemplar
huggingface/smolagentssrc/smolagents/agents.py:270Support: tests/test_agents.py:217
Negative control
Chain-of-thought text without external action is not ReAct.

Scope-anchored review. pohe-agent analyze <repo> --pattern R01 anchors the cue to its enclosing declaration and checks a separate operational signature for all four pointcut dimensions. Missing roles and negative-control risks remain visible; a structural match is not E2/E3. Calibration report ↗

Source-located exemplar

A concrete source anchor is available for this proposed record. It is one exemplar, not evidence that all repositories—or every contract field—conform.

Review boundary: this candidate and its specification come from an AI-assisted study. Independent human validation remains open.

ANY-EVIDENCE FAMILY COVERAGE35/36

97.2% of repository families in the frozen panel have at least one current cue, historical cue, or canonical source layer. This is not confirmed prevalence.

Current lexical-cue repositories: 39 / 41
Canonical source anchorhuggingface/smolagents 96f33faaf028src/smolagents/agents.py:270
Supporting surfacetests/test_agents.py:217

ReAct agent loop with thought/action/observation.

Exploratory retrieval cue Regex / v0.1.0
(?i)\bReAct\b|\breason[_-]?act[_-]?observe\b|\bThought:\s|\bAction:\s

This expression is a discovery instrument only. A match is a retrieval cue—not a confirmed implementation, pointcut match, or contract proof.