Project Extract Eval
When to Use
Knowledge extraction is complete and needs review before the project proceeds to Complete.
Inputs
- Project path:
{Dept}/Projects/{Project}/
Context Boundary
Read only: Vision, Spec, Changelog, and the extracted work products. Never read Research, Plans, Learnings, or Execute_State — the Extract_Eval reviews the extraction quality, not the journey.
Prerequisite
Must be a fresh agent session — new conversation with clean context, no carryover from extraction.
Procedure
- Read: Vision, Spec, Changelog
- Update
{Project}_Phase.md: setPhase: Extract_Eval_Started - Build, commit, push
- Review the extraction:
- Use the Changes table in Changelog to identify all extracted content
- For each extraction, verify the content reached the correct permanent location
- Verify extracted content is self-contained (no dangling references to the project)
- Verify no useful information remains trapped inside the project folder
- Verify no duplication across permanent documents
- Verify system-wide skills are listed in the Persistent Knowledge prompt (Bot database)
- Verify department-level knowledge is linked from
{Dept}/AGENTS.md
- Write findings to the project-level extraction review file
{Project}_Extract_Eval.md:- Use
Extract_Eval_Template.mdfromForge/Forge_Project/Skills/Project_Create/templates/ - No issues found: Use the ✅ Clean single-row format — one row with
✅ Cleantype and🟢 Resolvedstatus. Do NOT list empty categories like “No defects”, “No gaps”, etc. - Issues found: Use the multi-row table — only include rows for types that have issues. Omit empty categories entirely.
- Each issue item is one of:
- Defect — extraction doesn’t match the intent (wrong location, missing content, incorrect content)
- Gap — something extractable wasn’t extracted
- Variance — extraction differs from the original for a reason
- Learning — something from the extraction process that needs permanent storage
- Issue items start as 🔴 Open
- Use
- Auto-fix loop: If findings exist, attempt to resolve them automatically before escalating to the user:
- For straightforward fixes (obvious gaps, clear defects), apply the fix directly
- Re-evaluate after fixes; iterate up to 3 rounds
- Only escalate to the user when the Thinker and Evaluator cannot converge
- Log auto-dispositions in the Resolution Log with note “Auto-dispositioned”
- If auto-fix loop converged (no remaining open findings): set Verdict to Approved. Skip to step 14. Otherwise: Present remaining findings to the user. For each item, the user decides: fix, update, reject, or defer
- Process user decisions and update item statuses in the Extract_Eval report:
- fix: Item remains 🔴 Open with Disposition Fix → returns to Project_Extract
- update: Don’t fix the implementation; update the Spec to match instead. Update the extraction to match reality → item 🟡 In progress → 🟢 Resolved when done
- reject: I disagree with the finding; do nothing. Item → 🟢 Resolved (no action)
- defer: Item → 🟢 Resolved (deferred to future work)
- If any items have Disposition Fix: set Verdict to Rejected. The project returns to Project_Extract to address the issues.
- If no items have Disposition Fix: set Verdict to Approved (all remaining items resolved or deferred).
- Update the Extract_Eval report after each iteration (statuses and Resolution Log)
- Build, commit, push
- If Verdict is Approved:
- Update the Extract_Eval report’s frontmatter
statustoapproved - Update
{Project}_Phase.md: setPhase: Extract_Eval_Completed - Build, commit, push
- Run the Forge Optimizer automatically to analyze project conversations and save the report:
- Export env vars:
eval $(cat /proc/1/environ | tr '\0' '\n' | grep -E '^(OPENAI_API_KEY|FORGE_DB_URL)=' | sed 's/^/export /') - Run:
npx tsx Forge/Skills/Forge_Optimizer/scripts/optimize.ts --project {Project} - The script saves the report to
{Project}_Optimizer_Report.mdin the project folder (creates or appends a## Run — {date}section) - Spawn the Page Manager bot via
spawnAgentwith{ botGroup: 'forge', botHandle: 'page-manager' }to add the sidebar entry (if new), build, commit, push
- Export env vars:
- Update the Extract_Eval report’s frontmatter
- If Verdict is Rejected:
- Update
{Project}_Phase.md: setPhase: Extract_Started(returns to Extract for fixes) - Build, commit, push
- The next agent session invokes Project_Extract to address the issues
- Update
Report File Conventions
- One extraction review per project:
{Project}_Extract_Eval.mdin the project folder - First review creates the file from the template
- Subsequent reviews (after re-extraction) append as a new
## Run — {date}section - The report file is a durable artifact — it persists across the entire project lifecycle
- This file provides a stable target for todo item review links
Rules
- Failed Extract_Eval returns directly to Extract — there is no separate Fix phase for extraction
- Context boundary is defined above — do not read implementation details, only the extraction outcome
- Extraction evaluation must be a separate agent session from the extraction
- The auto-fix loop should resolve most findings without user involvement. Only genuine ambiguities or creative decisions require human input