# Change Request: CR-001

> Created: 03-10-2026
> Status: Approved (DAO-SU-002)
> Classification: Mixed (modification + new_feature)
> Related Epic: EPIC-048

## Request Details

**Requestor:** Human (project owner)
**Date Received:** 03-10-2026
**Priority:** High

## Description

Extend EPIC-048 with two enhancements:

1. **Config-based tool filtering** — All code-touching skills (bug-fix, code-refactor, technical-design, refactoring-analysis) should use the same `tools.json` config-first, discovery-driven, semantically-routed pattern established in `x-ipe-task-based-code-implementation` (FEATURE-045-A CR-001). Currently EPIC-048 describes semantic matching but does NOT include the config filtering layer.

2. **Scope extension** — Bring `feature-acceptance-test` and `human-playground` into EPIC-048 scope. Both skills touch code but were originally excluded. The study confirms:
   - `acceptance-test`: generates test code (Step 3) — could benefit from language-specific test generation via tool-implementation-* skills
   - `human-playground`: hardcoded Python-only (`.py` files, `uv run python`) — needs dynamic tool routing to support any language

## Business Justification

- **Consistency:** All code-touching skills should use the same tool selection mechanism
- **Configurability:** Project owners should control which language tools are available per stage via tools.json
- **Extensibility:** New language tools (e.g., Go, Rust) automatically become available to all stages when added
- **KISS:** One mechanism across all skills, not per-skill hardcoding

## Impact Analysis

### Classification

**Type:** Mixed — Modification to FEATURE-048-B/C/D + New Features (FEATURE-048-E, FEATURE-048-F)

**Reasoning:**
- Config filtering is a new layer added to existing features (modification)
- Acceptance-test and human-playground are entirely new scope (new features)
- FEATURE-048-A (Tool Skill Contract Extension) is NOT modified — `operation: "implement"` already covers acceptance-test and playground use cases

### Comparison Matrix

| Aspect | CR Requirement | Existing EPIC-048 |
|--------|---------------|-------------------|
| Tool selection | Config-first → discover → filter → semantic route | Discover → semantic route (no config layer) |
| Skills covered | 6 skills (bug-fix, code-refactor, tech-design, refactoring-analysis, acceptance-test, human-playground) | 4 skills (bug-fix, code-refactor, tech-design, refactoring-analysis) |
| tools.json | New stage sections needed | No tools.json integration |
| Tool operations | `implement` (for acceptance-test, playground) + existing `fix`/`refactor` | `fix` and `refactor` only |

### Conflict Analysis

**Conflicts Found:** Yes (all expected)

| # | Type | Affected Feature | Severity | Classification | Description |
|---|------|-----------------|----------|----------------|-------------|
| 1 | specification | FEATURE-048-B | LOW | expected | Consultation scanning needs config filtering — add config read step before scan |
| 2 | specification | FEATURE-048-C | MEDIUM | expected | Bug-fix delegation needs config filtering — add 3-layer routing pattern |
| 3 | specification | FEATURE-048-D | MEDIUM | expected | Code-refactor delegation needs config filtering — add 3-layer routing pattern |
| 4 | specification | EPIC-048 Out of Scope | LOW | expected | acceptance-test and human-playground explicitly listed as out-of-scope — needs update |
| 5 | dependency | New features (E, F) | LOW | expected | Depend on FEATURE-048-A for tool skill contract, but only use `operation: "implement"` which already exists |

**Mitigation Strategy:**
- Conflicts 1-3: Add config filtering steps to existing FRs (additive, non-breaking)
- Conflict 4: Remove acceptance-test and human-playground from Out of Scope; add rationale
- Conflict 5: FEATURE-048-E and FEATURE-048-F can start immediately since they use existing `operation: "implement"` — no dependency on FEATURE-048-A

### Affected Components

| Component | Impact Level | Details |
|-----------|--------------|---------|
| requirement-details-part-20.md | Medium | Add HLRs, FRs, features, update Out of Scope |
| features.md | Low | Add FEATURE-048-E and FEATURE-048-F |
| tools.json | Low | Add new stage config sections (future, during implementation) |
| FEATURE-048-B through D | Medium | Add config filtering steps to existing FRs |

### Dependencies

- FEATURE-045-A CR-001 (tools.json config filtering) — **completed** (TASK-806)
- EPIC-045 tool-implementation architecture — **completed**

## Proposed Approach

### For existing features (modification):
- Add `tools.json` config read + filter steps to FR-048.1, FR-048.2, FR-048.3, FR-048.4
- Each consuming skill reads its own stage section from tools.json
- Pattern mirrors code-implementation Step 3.1 (config → discover → filter → semantic match)

### For new features:
- **FEATURE-048-E (Acceptance Test Tool Selection)**: acceptance-test Step 3 (test generation) routes to tool-implementation-* for language-specific test code
- **FEATURE-048-F (Human Playground Tool Selection)**: human-playground replaces Python-only file creation with dynamic routing to tool-implementation-* based on project tech_stack

### tools.json new sections:
```json
"stages.feature.bug_fix": { tool-implementation-* entries }
"stages.refactoring.execution": { tool-implementation-* entries }
"stages.feature.consultation": { tool-implementation-* entries }
"stages.quality.testing": { tool-implementation-* entries }
"stages.feature.playground": { tool-implementation-* entries }
```

## Mockup Impact

**UI/UX Change:** No

## Approval

- [x] Classification approved (DAO-SU-002)
- [x] Conflict analysis reviewed (all expected)
- [x] Approach approved (DAO-SU-002)
- [x] Ready for execution

## Execution

**Classification Result:** mixed (modification + new_feature)
**Conflicts Resolution:** all_expected

**Actions Taken:**
- [x] CR document created at EPIC-048/CR-001.md
- [x] Conflict analysis completed and documented
- [x] Requirement details updated (requirement-details-part-20.md)
- [x] Feature board updated (features.md — FEATURE-048-E, FEATURE-048-F)
- [ ] Next task type set: x-ipe-task-based-feature-refinement (start with FEATURE-048-A)

## Links

- Requirement Details: [requirement-details-part-20.md](../requirement-details-part-20.md)
- Feature Board: [features.md](../../planning/features.md)
- DAO Decision: [decisions_made_skill_update.md](../../dao/decisions_made_skill_update.md) (DAO-SU-002)

---

## Change History

| Date | Change | By |
|------|--------|----|
| 03-10-2026 | CR created — config filtering + scope extension (acceptance-test, human-playground) | Flux (DAO-approved) |
