SAGE synthesis
Type: agentic-system-analyses/types/agentic-system-synthesis.md
Bounded synthesis
What the evidence establishes
SAGE implements two connected ways for task experience to shape later action: extracting Python functions for later tasks and updating model parameters from outcomes and supervised traces. These are substantive implementation contributions, not evidence that competence improved. The account covers the shipped training, evaluation, expert-generation and supervised fine-tuning (SFT) patches at commit 3c9244e82244abb1adc5467ee601a03ba0f433a0, with an applicability cutoff of 2026-10-15. It treats SAGE as a builder or improvement plane, including its task-solving agent. SRC-1 supplies implementation and doctrine/design evidence only; no target execution, generated trajectory, frozen weights or causal comparison was supplied. Upstream AppWorld execution/evaluation and external training/provider internals are not independently audited (boundary, Source register).
The README's self-evolution framing describes sequential rollout with skill-integrated reward and an expert-to-SFT preparation path. The implementation supports improvement-directed mechanisms, not the claimed optimal performance or a causal benefit from the library (EPI-CLM-self-evolution).
Training: conditional progression from task experience to policy change
The shipped two-node launch does not establish a working launch-to-training path, even after filling model and resource placeholders. Its AppWorld_SAGE project value fails the trainer's exact AppWorld dispatch. The resulting reader expects Parquet, while the supplied scenario list is plain text. This mismatch occurs during dataloader construction, before worker initialization and training. Selecting the AppWorld loader is a necessary correction, not a demonstrated sufficient repair. The four-node configuration was not independently audited (RT-RTE-paired-rollout, RT-RTE-policy-update).
Conditional on reaching that internal path, the trainer samples two subtasks from a scenario and repeats them across agent samples. A generation manager owns turns and per-task subprocess worlds. The model chooses Python from task/API context, previous actions and execution observations; AppWorld executes it and supplies task outcomes. These subprocesses are execution workers, not independently prompted reasoning delegates. Completion, turn limits, prompt overflow and configured early stopping bound progression. Observation cropping and rolling suffix limits discard context; they do not produce semantic summaries (RT-RTE-paired-rollout, memory annotation).
After first-subtask output lacks the failure marker, AST extraction places imports and top-level functions into a per-pair dictionary. Same-name definitions replace earlier entries. The second subtask starts in a fresh world, executes the matching dictionary's definitions and conditionally receives their source in its initial prompt. The previous conversation and live Python globals do not cross this boundary. Dictionaries reset at the next rollout call; this is not a persistent cross-batch disk library (RT-OBJ-skill-libraries, RT-RTE-skill-install).
Retention makes source available, not necessarily correct. Extraction can omit required globals or truncate multiline constructs. The prompt requests self-contained reusable functions and prohibits imports, but extraction explicitly preserves imports and execution does not enforce these structural requests. Installing definitions tests less than invoking their bodies on new inputs. Code reaches the interpreter before an output check decides prompt visibility, so clearing prompt text is not rollback of attempted effects (EPI-RTE-function-extraction, RT-CLM-function-rules, RT-BAP-function-execution).
AppWorld pass fractions and success-masked lexical reuse counts shape rollout rewards. The reuse predicate detects a function-name substring without a corresponding definition substring; it is not an invocation trace. Rewards reach response-token scores, advantages and actor updates. Later generation and checkpoint loading consume numerical state. This establishes conditional internal outcome-to-update and update-to-generation wiring. It does not show that reuse caused success or that a particular update changed subsequent behavior beneficially (RT-RTE-policy-update, RT-BAP-policy-weights).
Evaluation: a connected workflow with separate delivery and admission outcomes
Normal evaluation provides the representative multi-step workflow. Its runner constructs one continuing agent for an assigned sequence of AppWorld tasks; the normal configuration enables skill accumulation and a 40-step cap. Each task resets messages and opens a fresh world while retaining the agent's function list. Default initialization scans records using scenario-derived _1 then _2 substring matches and keeps the first definition encountered for each name. This is identifier-based supply, not a semantic applicability check. Selected definitions execute before the first model action and appear in the prompt only when the installation output is exactly successful (RT-RTE-evaluation-loop, workflow account).
The model and executor then alternate. Under the normal first-block setting, the first complete fenced Python block becomes an action; a partial terminal block can also supply code. Returned observations enter the next request, cropped to 12,000 characters. Failed-code pruning occurs only when another model step processes a failure output. It deletes the latest extraction candidate, not the assistant message or world effects, and can miss a final failing chunk. A generation exception instead substitutes a supervisor completion call. None of these recovery paths proves successful repair (WF-RTE-failed-code-filter, RT-RTE-evaluation-loop).
Delivery has distinct products: environment effects, an optional informational answer through the supervisor completion API, a benchmark-success Boolean, retained function records and processed-task logging. Completion signaling, loop termination and progress counters are not benchmark acceptance. After evaluation, the default skill writer extracts without requiring current-task success. Optional use_label gating depends on the previous task's result, not the current candidate's outcome (workflow acceptance distinction, RT-RTE-evaluation-loop).
The continuing function list and appended JSONL support later-task reuse, but not automatic restart recovery: construction reads a separate predefined-library directory. Local extraction replacement also does not globally withdraw older appended records; first-name selection can hide a later revision. Alternative retrieval uses function embeddings, thresholded top-two query embeddings or lexical bigram scores. These access representations select executable source; they are not correctness checks. Query vectors are saved without the corresponding query-list serialization needed for a complete restored index (RT-OBJ-skill-library-functions, MEM-OBJ-skill-embeddings, MEM-OBJ-query-list, MEM-OBJ-query-embeddings).
Expert preparation and distinct alternate routes
Expert generation supplies a stronger, differently scoped admission mechanism. It retries scenario tasks up to 20 times, requiring benchmark success, nonempty first-task extraction and fresh-world definition execution before accepting progression. Exhausted retries record failure and break the remaining tasks of that scenario, rather than continuing it. These gates accept trajectories for intended training-data use, not generalized function specifications. Accepted functions feed later scenario tasks; the library resets per scenario (RT-RTE-expert-admission, MEM-OBJ-rollout-functions, verification clarification).
The live dataset extractor takes selected tasks' last LM-call messages plus response, applies failure-list/no-code filtering and normalizes text. The supervised processor then applies cutoff and target masking, so neither every logged token nor every retained explanation becomes a training target. SFT output enters RL only after an operator chooses its model path. Background generation without a wait, mismatched temperature expectations and the SFT shell's incompleteness prevent claiming a successful unattended pipeline (MEM-OBJ-expert-dataset, RT-RTE-sft-admission, report verification).
Two alternatives should not be mistaken for normal skill reuse. Optional completion caching fulfills matching requests with retained responses and is disabled in normal evaluation. A registered full-code-retrial agent predicts API names, filters them against documented names, selects documentation, then feeds execution output into subsequent proposals. Namespace filtering does not validate relevance, and feedback-fed retry does not by itself establish formulated criticism or durable method revision (MEM-RTE-response-cache, EPI-RTE-api-prediction, EPI-RTE-code-retrial).
Assessment at the declared boundary
For related tasks within a rollout pair, evaluation process or expert scenario, SAGE has wired channels for experience-derived functions to reach later interpreters and models. Separately, optimization can retain experience in behavior-determining parameters. These are different retention horizons and authorities. No performed comparison establishes improved capacity for future action, including capacity improved through criticism of a consumed theory (RT-RTE-skill-install, RT-RTE-policy-update, epistemic conclusion).
Theory-builder conditions 1–4 are not established as a combined property. For condition 1, localized source is available architecturally, but no concrete formulated-theory instance is supplied for assessment. For condition 2, interpreter consumption of source is wired, while decisions depending on a theory's stated content are not demonstrated. For condition 3, no supplied criticism names a challenged claim, result and placement of blame. For condition 4, retained functions and updated weights have later consumers, but no established criticism result is shown shaping another round. These are separate evidential limits, not claims that opaque model processing contains no theories or criticism (EPI-RTE-function-extraction, EPI-RTE-code-retrial, epistemic conclusion).
Reflection is independently unestablished: feedback and a route named reflexion do not demonstrate a self-representation with both causal directions. Bounded action selection, extraction and optimizer updates are computational, without per-action human veto; that supports those roles, not an autonomous theory-builder verdict covering every internal operation. Self-improvement has a stronger positive architectural finding: conditional RL wiring implements evidence-responsive change to SAGE's own behavior-determining weights toward the independently stated objective of task success with skill reuse. Exercise remains uninspected: subsequent operation causally depending on a particular change is missing, and successful improvement requires separate outcome evidence (RT-RTE-policy-update, EPI-RTE-code-retrial).
A corrected, traced launch would change reachability assessment; provenance-linked library and weight artifacts would establish actual retention and consumption. New-input function tests would strengthen the skill-correctness account. Controlled downstream comparisons, independently varying library reuse when attributing its effect, would change the improvement assessment. These changes answer different unresolved questions; one successful task would not answer them all.
Limitations
| Limitation | Affected SRC IDs and record citations | Inspected boundary | Conclusion prevented | Evidence that would resolve it |
|---|---|---|---|---|
| Two-node loader mismatch | SRC-1; RT-RTE-paired-rollout, RT-RTE-policy-update | Shipped two-node project dispatch and scenario input | Working launch-to-learning progression; a loader correction alone is not sufficient evidence | Corrected configuration and provenance-linked end-to-end execution trace |
| No supplied execution or causal comparison | SRC-1; RT-RTE-policy-update, RT-RTE-evaluation-loop, RT-RTE-sft-admission | Inspected implementation and design, without generated runs, actual weights or libraries | Achieved competence, successful delivery, exercised self-improvement, beneficial learning or causal skill-library effect | Linked trajectories, exact artifacts, later dependence evidence and appropriately controlled outcome comparisons |
| External execution, evaluator and training contracts unaudited | SRC-1; boundary, RT-RTE-paired-rollout, RT-RTE-sft-admission | SAGE wrappers and patches, not upstream implementations | Sandbox isolation, benchmark adequacy, full installation compatibility and backend correctness | Frozen dependency implementations and matched integration/evaluator evidence |
| Admission and extraction do not establish general skill correctness | SRC-1; EPI-RTE-function-extraction, RT-RTE-skill-install, WF-RTE-failed-code-filter, RT-RTE-expert-admission | AST slicing, marker checks, delayed pruning and expert trajectory gates | Universal semantic preservation, validated new-input behavior, exclusion of all failing chunks or transactional rollback | Concrete source/provenance, specification-directed invocation tests and demonstrated effect recovery |
| Restart, replacement and predefined-index integrity remain bounded | SRC-1; RT-OBJ-skill-library-functions, MEM-OBJ-query-list, MEM-OBJ-query-embeddings, MEM-OBJ-skill-embeddings | Separate output/predefined paths, append-only records and inspected index writes | Automatic output-to-restart reuse, coherent global withdrawal, trusted initial content or aligned restored indexes | Explicit promotion/reload and edit/delete routes, query serialization and provenance/alignment checks |
| Expert-to-SFT pipeline is not demonstrated unattended | SRC-1; RT-RTE-sft-admission, MEM-OBJ-expert-dataset | Background launcher, extraction, masking and operator-selected model bridge | Complete automatic generation-to-training operation or preservation of all accepted trace meaning | Synchronized compatible launchers, executable SFT entry and inspected exported examples/targets linked to model outputs |
| Alternate and opaque branches remain unresolved | SRC-1; RT-CMP-language-model, RT-RTE-paired-rollout, RT-RTE-policy-update, MEM-RTE-response-cache | Selected workers/launcher and adapter, not all backends, four-node configuration, provider or Joblib internals | Complete memory inventory, identical alternate behavior, cache freshness/eviction guarantees or repository-wide negatives | Branch-specific frozen inspection and provider/cache contracts with linked artifacts |
| Formulated criticism and its consequences are not supplied | SRC-1; EPI-RTE-code-retrial, epistemic conclusion | Feedback-fed proposal and retained-code/update routes | Theory-builder conditions as a whole, beneficial theory criticism, reflection or autonomous theory building | Concrete theories, consumption decisions, attributed criticisms and retained next-round consequences; role-by-role and self-representation evidence |
| Correction-answer provenance error retained in reconciliation | SRC-1; report-verification limit, RT-RTE-paired-rollout, RT-RTE-policy-update | Report verifier independently checked the runtime corrected answer and current reachability findings | Inferring from reconciliation's contrary sentence that no correction answer existed, or using it as correction provenance | Accurate correction-input accounting; technical route findings remain supported independently |
| Non-parameter recovery inventory is incomplete | SRC-1; profile-verification limit, RT-RTE-policy-update, memory annotation | Latest-iteration tracker and saved dataloader state are covered behaviorally but not separately classified in every storage/form/lineage unit | Complete per-part recovery comparisons; neither absent recovery nor invalid positive substrate/form unions follows | Separate supported classifications for all included recovery parts; affected profile axes remain partial |