# Change Request: CR-001

> Created: 2026-03-10
> Status: Open
> Classification: Modification
> Related Feature: FEATURE-045-A

## Request Details

**Requestor:** User (UIUX Feedback)
**Date Received:** 2026-03-09
**Priority:** Medium

## Description

Extend the `tools.json` enable/disable configuration pattern (currently used by ideation stage) to the feature/implementation stage, so that `tool-implementation-*` skills can be individually enabled or disabled. When `x-ipe-task-based-code-implementation` is invoked, it should only route to **enabled** tool-implementation skills — matching the ideation skill's toolbox pattern.

**Source:** UIUX Feedback `Feedback-20260309-184047`, refined as IDEA-035.

## Business Justification

1. **Consistency:** Ideation stage already has per-tool enable/disable via tools.json — implementation stage should follow the same pattern
2. **Governance:** Users cannot currently control which implementation tools participate in routing (e.g., disable Java in a Python-only project)
3. **Extensibility:** As new tool-implementation skills are added, users need an opt-in mechanism rather than auto-enabling everything

## Impact Analysis

### Classification

**Type:** Modification to FEATURE-045-A (Orchestrator Core + AAA Generator + General Fallback)

**Reasoning:**
- Related feature exists (FEATURE-045-A under EPIC-045, completed)
- Works within current system boundaries (adds config filter to existing routing)
- No new API endpoints, screens, or data models required
- Same users, extended functionality (config-based filtering of existing tools)
- Follows established tools.json pattern from ideation stage

### Comparison Matrix

| Aspect | CR Requirement | Existing Feature (FEATURE-045-A) |
|--------|---------------|----------------------------------|
| Users | Same — agents executing code-implementation | Agents executing code-implementation |
| Workflow | Adds config-read + filter step before semantic matching | Scan → semantic match → invoke |
| Data Model | Adds entries to existing tools.json structure | No tools.json awareness |
| UI Elements | None — config is file-based | None |
| API Endpoints | None | None |

### Conflict Analysis

**Conflicts Found:** Yes (3 minor, all expected)

| # | Type | Affected Feature | Severity | Classification | Description |
|---|------|-----------------|----------|----------------|-------------|
| 1 | specification | FEATURE-045-A | Low | expected | AC-3 says "scan → semantic match" with no config filter step mentioned |
| 2 | specification | FEATURE-045-A | Low | expected | AC-3.5 says "adding new tool folder does NOT require orchestrator changes" — with this CR, new tools default to disabled (require tools.json opt-in) |
| 3 | dependency | EPIC-048 (planned) | Low | expected | EPIC-048 plans to have other skills (bug-fix, code-refactor) also route to tool-implementation skills — they should also adopt config filtering when implemented |

**Unexpected Conflict Resolution:** N/A — all conflicts expected.

**Mitigation Strategy:**
1. Update AC-3 to include config filter step between scan and semantic match
2. Update AC-3.5 to note that new tools are auto-discovered but require opt-in in tools.json (or default to enabled if no config entries exist)
3. Note EPIC-048 dependency in documentation — future features should check tools.json

### Affected Components

| Component | Impact Level | Details |
|-----------|--------------|---------|
| `x-ipe-task-based-code-implementation` SKILL.md | Medium | Step 3.1 needs config-read + filter before semantic match |
| `x-ipe-docs/config/tools.json` | Low | Add entries under `stages.feature.implementation` |
| FEATURE-045-A specification | Low | Update AC-3, FR-3 to include config filtering |
| FEATURE-045-A technical design | Low | Update routing procedure to include config step |

### Dependencies

- `x-ipe-docs/config/tools.json` must exist (already does)
- EPIC-048 features (planned) should adopt same config pattern when implemented

## Proposed Approach

1. **Config extension:** Add tool-implementation entries to `stages.feature.implementation` in tools.json
2. **Skill update:** Modify code-implementation Step 3.1 to read tools.json and filter before semantic matching
3. **Key rules:**
   - Disabled tools are invisible (not attempted during routing)
   - `x-ipe-tool-implementation-general` always stays enabled (safety net)
   - Undeclared tools default to `false` (explicit opt-in)
   - Empty config = all tools enabled (backwards compatible)
   - Diagnostic logging: "skipped x-ipe-tool-implementation-{name} (disabled)"
   - `_extra_instruction` field support for routing hints

## Mockup Impact

**UI/UX Change:** No — this is a skill/config change, no UI involved.

## Approval

- [x] Classification approved by human
- [x] Conflict analysis reviewed by human
- [x] Approach approved by human
- [x] Ready for execution

## Execution

**Classification Result:** modification
**Conflicts Resolution:** all_expected

**Actions Taken:**
- [x] CR document created in feature folder
- [x] Conflict analysis completed and documented
- [x] Specification Version History updated with CR link
- [ ] Next task type set: x-ipe-task-based-feature-refinement

## Links

- Feature Specification: [specification.md](x-ipe-docs/requirements/EPIC-045/FEATURE-045-A/specification.md)
- Idea Summary: [idea-summary-v1.md](x-ipe-docs/ideas/035. Code-Implementation-Tool-Config/refined-idea/idea-summary-v1.md)
- UIUX Feedback: [Feedback-20260309-184047](x-ipe-docs/uiux-feedback/Feedback-20260309-184047/feedback.md)

---

## Change History

| Date | Change | By |
|------|--------|----|
| 2026-03-10 | CR created | Quill 🪶 (Agent) |
