Skip to content
This repository was archived by the owner on Jun 18, 2026. It is now read-only.

Commit aeaf545

Browse files
catlog22claude
andcommitted
feat: add findings-to-recommendations traceability in codex analyze-with-file
Mirror the same Findings Coverage Matrix mechanism added to the Claude version. Insert Step 4.1 between Intent Coverage (4.0) and Consolidate Insights (now 4.2) to ensure all actionable findings are mapped to a disposition before generating recommendations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c1268cb commit aeaf545

1 file changed

Lines changed: 55 additions & 8 deletions

File tree

.codex/skills/analyze-with-file/SKILL.md

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,49 @@ Write "Intent Coverage Matrix" to discussion.md:
690690
- (a) Add a dedicated discussion round to address it before continuing, OR
691691
- (b) Explicitly confirm with user that it is intentionally deferred
692692

693-
##### Step 4.1: Consolidate Insights
693+
##### Step 4.1: Findings-to-Recommendations Traceability (MANDATORY before consolidation)
694+
695+
Collect ALL actionable findings from every round and map each to a disposition:
696+
697+
```javascript
698+
// 1. Collect all actionable findings from discussion rounds
699+
// Sources: key findings with actionable implications, technical solutions (proposed/validated),
700+
// identified gaps (API-frontend gaps, missing features, design issues),
701+
// corrected assumptions that imply fixes
702+
const allFindings = collectActionableFindings(explorations, discussionRounds)
703+
704+
// 2. Map each finding → disposition
705+
// | Disposition | Meaning |
706+
// |-----------------|------------------------------------------------------|
707+
// | recommendation | Converted to a numbered recommendation |
708+
// | absorbed | Covered by another recommendation (specify which) |
709+
// | deferred | Explicitly out-of-scope with reason |
710+
// | informational | Pure insight, no action needed |
711+
712+
const findingsCoverage = allFindings.map(f => ({
713+
finding: f.summary,
714+
round: f.round,
715+
disposition: null, // MUST be assigned before proceeding
716+
target: null, // e.g., "Rec #1" or "→ Rec #3" or "Reason: ..."
717+
reason: null
718+
}))
719+
720+
// 3. Gate: ALL findings MUST have a disposition assigned.
721+
// Do NOT proceed to Step 4.2 with any disposition = null.
722+
// Unmapped findings must be either added as new recommendations or assigned a disposition.
723+
724+
// 4. Append Findings Coverage Matrix to discussion.md
725+
appendToDiscussion(`
726+
### Findings Coverage Matrix
727+
| # | Finding (Round) | Disposition | Target |
728+
|---|----------------|-------------|--------|
729+
${findingsCoverage.map((f, i) =>
730+
`| ${i+1} | ${f.finding} (R${f.round}) | ${f.disposition} | ${f.target || ''} |`
731+
).join('\n')}
732+
`)
733+
```
734+
735+
##### Step 4.2: Consolidate Insights
694736

695737
```javascript
696738
const conclusions = {
@@ -703,6 +745,7 @@ const conclusions = {
703745
{ point: '...', evidence: '...', confidence: 'high|medium|low' }
704746
],
705747
recommendations: [ // Actionable recommendations
748+
// MUST include all findings with disposition = 'recommendation' from Step 4.1
706749
{
707750
action: '...', // What to do (imperative verb + target)
708751
rationale: '...', // Why this matters
@@ -726,12 +769,13 @@ const conclusions = {
726769
],
727770
intent_coverage: [ // From Step 4.0
728771
{ intent: '...', status: 'addressed|transformed|absorbed|missed', where_addressed: '...', notes: '...' }
729-
]
772+
],
773+
findings_coverage: findingsCoverage // From Step 4.1
730774
}
731775
Write(`${sessionFolder}/conclusions.json`, JSON.stringify(conclusions, null, 2))
732776
```
733777

734-
##### Step 4.2: Final discussion.md Update
778+
##### Step 4.3: Final discussion.md Update
735779

736780
Append conclusions section and finalize:
737781

@@ -749,6 +793,8 @@ Append conclusions section and finalize:
749793
| What Was Clarified | Important corrections (~~wrong→right~~) |
750794
| Key Insights | Valuable learnings for future reference |
751795

796+
**Findings Coverage Matrix**: From Step 4.1 (already appended).
797+
752798
**Decision Trail Section**:
753799

754800
| Subsection | Content |
@@ -759,7 +805,7 @@ Append conclusions section and finalize:
759805

760806
**Session Statistics**: Total discussion rounds, key findings count, dimensions covered, artifacts generated, **decision count**.
761807

762-
##### Step 4.3: Interactive Recommendation Review (skip in auto mode)
808+
##### Step 4.4: Interactive Recommendation Review (skip in auto mode)
763809

764810
Walk through each recommendation one-by-one for user confirmation before proceeding:
765811

@@ -810,7 +856,7 @@ for (const [index, rec] of sortedRecs.entries()) {
810856
| 3 | [action] | low | 1 | ❌ Rejected | [reason] |
811857
```
812858

813-
##### Step 4.4: Post-Completion Options
859+
##### Step 4.5: Post-Completion Options
814860

815861
**Complexity Assessment** — determine available options:
816862

@@ -871,8 +917,9 @@ if (!autoYes) {
871917
| Done | Display artifact paths, end |
872918

873919
**Success Criteria**:
874-
- conclusions.json created with complete synthesis
875-
- discussion.md finalized with conclusions and decision trail
920+
- conclusions.json created with complete synthesis including findings_coverage[]
921+
- **Findings Coverage Matrix** completed — all actionable findings mapped to disposition (recommendation/absorbed/deferred/informational)
922+
- discussion.md finalized with conclusions, decision trail, and findings coverage matrix
876923
- **Intent Coverage Matrix** verified — all original intents accounted for (no ❌ Missed without explicit user deferral)
877924
- User offered meaningful next step options
878925
- **Complete decision trail** documented and traceable from initial scoping to final conclusions
@@ -960,7 +1007,7 @@ $csv-wave-pipeline "${topic}"
9601007
| `explorations/*.json` | 2 | Per-perspective exploration results (multi only) |
9611008
| `explorations.json` | 2 | Single perspective aggregated findings |
9621009
| `perspectives.json` | 2 | Multi-perspective findings with cross-perspective synthesis |
963-
| `conclusions.json` | 4 | Final synthesis: conclusions, recommendations, open questions |
1010+
| `conclusions.json` | 4 | Final synthesis: conclusions, recommendations, findings_coverage, open questions |
9641011
9651012
## Analysis Dimensions Reference
9661013

0 commit comments

Comments
 (0)