← Troubleshooting guides

How to fix a spec that conflicts with a parent spec

How-To Troubleshooting Intermediate 1191008HOWTO-1191008

HOWTO-1191008TroubleshootingIntermediate

This guide shows you how to fix a spec that conflicts with a parent spec.

In SpecDD, parent specs provide inherited constraints and context. Child specs may add or narrow behavior, but they must not silently loosen parent constraints or ignore inherited Must not and Forbids rules.

Short answer

Read the effective spec chain from the content root to the target, identify the conflicting rules, prefer the stricter rule, and treat Must not and Forbids as stronger than Must, Depends on, or Tasks. Rewrite the child rule or task when it violates the parent. Change the parent only through explicit review.

Steps

1. Read the inherited chain

For a target such as:

src/trips/itinerary.js

the chain might be:

travel-planner.sdd
src/trips/trips.sdd
src/trips/itinerary.sdd

Do not judge the child spec by itself.

2. Confirm the conflict

Example parent rule:

Must not:
  Access browser storage directly.

Child task:

Tasks:
  [ ] Save trips directly to browser storage from itinerary.js.

The task conflicts with the parent rule.

3. Apply stricter-wins logic

Use these rules:

4. Fix the child rule or task

Rewrite the task inside the allowed architecture:

Depends on:
  TripStorage

Tasks:
  [ ] Save itinerary updates through TripStorage.

or mark it blocked:

Tasks:
  [!] Save trips directly to browser storage from itinerary.js. Violates inherited storage boundary.

5. Update the parent only through review

If the parent rule is obsolete, do not override it in a child spec. Update the parent spec through the normal review process because it changes inherited authority for all descendants.

6. Verify no constraint was weakened

After the fix, check:

Common causes

How to verify the fix

The conflict is fixed when:

← Troubleshooting guides