How the multi-agent principles from previous articles are implemented in ForgentFrameworkNow let’s look at how the principles from
this article appear here.
Plan-and-ExecutePlanning exists at two levels at once.
First, the bootstrap orchestrator builds a plan for installing or updating the framework.
Then the project orchestrator builds a plan for the applied task itself.
Here, the plan is a mandatory part of the process. First, the system explains what it is going to do, and only then moves to execution.
ReActHere, ReAct looks like a normal engineering cycle:
inspect -> formulate a hypothesis -> perform an action -> check the result -> decide the next stepFor example, during bootstrap, the agent first studies the workspace structure, then creates an inventory, then shows a dry-run, then applies changes, and only after that starts the review.
The same applies to project work: the agent should not immediately make mass file changes. It should first understand the context, state a hypothesis, perform a narrow action, and check the result.
Critic isolationIn ForgentFramework, the critic exists not only for one scenario, but for every main type of agent.
There is a critic for bootstrap operations, a critic for context fill, a critic for project executors, and separate critic roles for different domain tasks. For example, DevOps changes should be reviewed not by the same agent that made them, but by the associated critic.
The idea is simple: the executor does the work, and the critic checks the result separately.
Isolation is achieved through the way the critic task is defined. The critic should receive not the executor’s internal logic and not the entire history of its reasoning, but specific inputs for review
- the original task;
- acceptance criteria;
- changed files or diff;
- executor result;
- validation commands and their output, if available.
With this setup, the critic does not continue thinking like the executor and does not defend the executor’s solution. It looks at the result from the outside: whether it matches the task, whether framework rules were violated, whether there are missing checks, risks, or blockers.
In other words, critic isolation in ForgentFramework is implemented primarily at the instruction level: the critic receives a separate role, a separate task, and a separate review format. This makes review an independent phase of the process rather than self-assessment by the executor.
Rubric and formal critiqueThe critic should not simply write “I like it” or “looks bad.”
A review needs a rubric.
For example:
- Blocker;
- Warning;
- Missing validation;
- Rollback risk;
- Security impact.
In ForgentFramework, such checks are moved into the rubric layer: critic prompts and separate review specifications.
This makes the result more predictable. For example, if
PRE_DISCOVERY was skipped, that is a blocker. If install wrote files before APPLY, that is a lifecycle violation.
ReflexionIf an attempt did not work, it is important not to start the next one from scratch.
ForgentFramework uses session memory for this. Critic findings go into
TASK_CONTEXT.md, and the next attempt must take this file into account.
In other words, an error becomes a process artifact:
- in the previous attempt, the critic found a problem;
- it was recorded in session context;
- the next executor must take it into account.
Context engineeringIn ForgentFramework, context is not placed into one huge prompt. It is split into several layers, and each layer is needed for its own part of the work.
Framework context is the general rule set of the framework itself: lifecycle, roles, critic process, trace protocol, rubrics, install/upgrade/remove. This layer answers the question: how should the agent system work?
Project context is information about the specific project: stack, environments, build/test commands, CI/CD, constraints, and manual validation rules. This layer answers the question: which system are we working with now?
Repo context is the repository map: where backend, frontend, DevOps files, documentation, and generated files live, which zones may be changed and which may not. This is usually described through AGENTS.md and llms.txt.
Scoped instructions and skills are local rules and playbooks that are loaded only when needed. For example, separate rules for Terraform, Dockerfile, backend code, or security review.
Session context is the memory of a specific run: what has already been tried, what the critic found, and which errors must be considered in the next iteration. This is not a permanent project map, but the history of the current task.
The idea is simple: different roles need different context.
The bootstrap agent needs topology, discovery, and installation rules.
The project orchestrator needs the repo map and task criteria.
The executor needs a specific subtask and the required files.
The critic needs the task, acceptance criteria, and result — but not the entire history of the executor’s reasoning.
This turns context engineering into controlled information delivery: the right context, to the right role, at the right moment.
Step logging and observabilityFor serious work, it is not enough to get the result. You also need to understand how the system arrived at it.
ForgentFramework has traces for this.
A trace should capture key events:
- discovery;
- dry-run;
- apply;
- critic review;
- executor result;
- findings;
- final status.
This makes the agent process readable. You can go back and see exactly what happened, who did what, and at which step the problem appeared.
Stop and escalateThe system must not spin forever in a loop of “I’ll try one more time.”
ForgentFramework needs explicit stopping rules for that:
- iteration limit;
- transition to NEEDS_HUMAN;
- stop when acceptance criteria are unclear;
- stop before dangerous changes;
- complete install only after critic and context bootstrap.
This is especially important for DevOps and infrastructure tasks. Sometimes the correct action for the agent is not to continue, but to honestly say: “a human is needed here.”
Least privilegeNot every role needs full access.
The planner can work read-only.
The critic should almost always be read-only.
The executor may have the right to edit files, but should not arbitrarily change framework artifacts.
Bootstrap agents should handle the framework lifecycle, not application development.
Project agents should work with the product repo, but not replace the bootstrap loop.
The idea is simple: the fewer unnecessary permissions a role has, the safer and more predictable its behavior is.
How to use ForgentFramework on a new project