# Specification: Expose/Cull Hidden Invisible Prompting

## 1. Overview
The goal of this track is to review the codebase to identify, expose, or cull any hidden or invisible prompting injected by the system during discussion/sessions. This ensures the user has full control and visibility over the exact context sent to the AI API.

## 2. Functional Requirements
### 2.1 Identify Hardcoded Prompts
- Audit `src/ai_client.py` to identify the hardcoded `_SYSTEM_PROMPT` and any tool execution instructions appended to requests.
- Audit `src/aggregate.py` to identify headers and contextual markers injected during context aggregation (e.g., `[SYSTEM: FILES UPDATED]`).

### 2.2 Expose Prompts in GUI
- For prompts that are necessary for the system to function (e.g., tool usage instructions, `[FILES UPDATED]` logic), expose them in the GUI (e.g., in "AI Settings" or "Project Settings").
- Create editable text areas or configurable options so the user can modify or disable these prompts per-project or globally.
- Ensure the modified prompts are correctly persisted and loaded by the `AppController`.

### 2.3 Cull Redundant Prompts
- Remove any legacy or redundant prompting that no longer serves a purpose or duplicates user-defined system prompts.

## 3. Acceptance Criteria
- [ ] All hardcoded system prompts in `ai_client.py` and `aggregate.py` are identified.
- [ ] Necessary system prompts are exposed as editable fields within the GUI.
- [ ] Users can modify or disable the default tool instructions or aggregation markers.
- [ ] The `ai_client` utilizes the user-configured prompts instead of hardcoded strings.
- [ ] Unnecessary or redundant hidden prompts are removed from the codebase.

## 4. Out of Scope
- Modifying the Tiered MMA worker prompts in `mma_prompts.py` (this track focuses on the core discussion/session loop).
- Adding a "Raw Prompt Preview" modal (this was an alternative option not selected).