# Developer Philosophy
## THE PROBLEM BEING ADDRESSED
AI co-developer agents have too much autonomy. That inevitably leads to undesirable outcomes which are entirely avoidable by utilizing common techniques in AI engineering:
- **Forcing** LLMs to produce **STRUCTURED OUTPUTS** using **PYDANTIC-VALIDATED SCHEMAS**
- Limited use of LLMs combined with maximal use of **DETERMINISTIC** code
## HOW WE ARE ADDRESSING THE PROBLEM
This project aims to create an MCP server to provide developers with enhanced, granular control over AI co-developer agents' actions when the agents are attempting to perform destructive tasks in the codebase (or any file system).
### FEATURES
- **CONSTRAINED**: In order to succeed, the agent **MUST** provide **meaningful** responses to an extremely **narrow**, **hyper-focused** schema, where all of the values it must provide must conform to very strict rules concerning the syntax and structure of their responses. Agents should **NOT** be able to pass validation without providing **MEANINGFUL** responses to the small, focused set of questions they are being asked. In practice, this means utilizing advanced Pydantic features that relieve the agent of any semblance of autonomy in the process. The agent should have **NO OPTION** but to provide **MEANINGFUL** responses.
- **DETERMINISTIC**: The tools must be structured in such a way that facilitates the maximization of determinism throughout the process. In this project, that means using LLMs **ONLY** when it isn't possible to produce the same effect otherwise. What that means in practice is: all metadata can and should be generated/captured programatically; and the agent provides the proposed change(s) they want to make and some useful/meaningful information about the change it's attempting to make. The information it provides will help drive the rest of the deterministic process. The agent's responses are validated against a schema, and when the tool call is submitted, the pipeline takes care of the rest.
- **OBSERVABLE**: Observability is a first-class citizen in this project. Everything that **CAN** be generated, tracked, traced, and/or used for robust, comprehensive fine-tuning **MUST** be.
## CONCLUSION
Essentially, let's try to develop this to function entirely **WITHOUT** the agent, and **ONLY** seek the agent's input when we hit walls that only an intelligent agent can get us past without human intervention.
We can use code for:
- generating semantically-meaningful UUIDs
- documenting the time
- constraining choices
- validating syntax
- etc
We need the agent for:
- actual code/document generation (agents already do this without our MCP server)
- automated reasoning about the above tasks (agents are usually only asked to do this post hoc, which is obviously far less reliable than contemporaneous recollection)