Validates and registers new SoT IDs with cross-reference integrity. Triggers when creating BR-XXX, UJ-XXX, API-XXX, or CFD-XXX entries. Outputs formatted SoT entry with validated cross-references.
Validate and register new Source of Truth IDs with cross-reference integrity checks.
[PREFIX]-[3-digit] pattern| Element | Definition | Evidence |
|---|---|---|
| ID | Unique identifier | BR-101, UJ-045, API-012 |
| Title | Short descriptive name | Clear, specific |
| Cross-References | Links to related IDs | All referenced IDs exist |
| Status | Current state | Draft / Active / Deprecated |
| Prefix | Domain | File |
|---|---|---|
BR- |
Business Rules | SoT/SoT.BUSINESS_RULES.md |
UJ- |
User Journeys | SoT/SoT.USER_JOURNEYS.md |
API- |
API Contracts | SoT/SoT.API_CONTRACTS.md |
CFD- |
Customer Feedback | SoT/SoT.customer_feedback.md |
Check ID follows the pattern:
[PREFIX]-[XXX]
Where:
[A-Z]+-[0-9]{3}For each ID referenced in the new entry:
BR-XXX references exist in BUSINESS_RULESUJ-XXX references exist in USER_JOURNEYSAPI-XXX references exist in API_CONTRACTSCFD-XXX references exist in CUSTOMER_FEEDBACKreferences/cross-reference-patterns.md)Before registering, assign a confidence score (1-5) based on evidence strength:
| Score | Evidence Level | Examples |
|---|---|---|
| 1/5 | Assumption / PM decision | "We think users want X" |
| 2/5 | Secondary research | Competitive analysis, market report |
| 3/5 | Direct feedback | User interviews (3-5 conversations) |
| 4/5 | Validated behavior | Beta testing, small-scale usage |
| 5/5 | Production evidence | Real usage data at scale |
Question to ask: What's the highest evidence supporting this entry right now? What would move it to the next confidence level?
Example confidence annotations:
confidence: 2/5, source: competitive-analysisconfidence: 3/5, source: 5-user-interviews-jan-2026confidence: 4/5, source: beta-cohort-validationSee .claude/skills/PRINCIPLES.md for detailed confidence model by SoT type.
Add formatted entry to SoT file:
### [ID]: [Title]
**Status**: Draft
**Created**: YYYY-MM-DD
**Confidence**: [1-5]/5 (source: [evidence source])
**Next Confidence Target**: [What would move this to next level]
**Cross-References**: [List of related IDs]
[Description]
**Acceptance Criteria**:
- [ ] Criterion 1
- [ ] Criterion 2
Example entry with confidence:
### CFD-042: Users want dark mode
**Status**: Active
**Created**: 2026-02-01
**Confidence**: 3/5 (source: 5-user-interviews-jan-2026)
**Next Confidence Target**: 4/5 (would require beta cohort validation)
**Cross-References**: FEA-008 (dark mode feature)
During interviews, 4 of 5 users mentioned desire for dark mode. Competitors (Notion, Linear, Figma) all have it.
**Acceptance Criteria**:
- [ ] Feature FEA-008 delivered to beta cohort
- [ ] Track usage: % of beta users enabling dark mode
| Pattern | Example | Fix |
|---|---|---|
| Duplicate ID | Creating BR-101 when it exists | → Check uniqueness first |
| Orphan reference | References UJ-999 that doesn't exist | → Verify all cross-refs |
| Wrong prefix | Using BR- for an API contract | → Match prefix to domain |
| Missing zero-pad | BR-5 instead of BR-005 | → Always use 3 digits |
| Inflated confidence | Assigning 4/5 to a PM assumption | → Be honest about evidence level |
| No confidence source | "confidence: 3/5" with no source | → Always record source (CFD-001, user-interview-jan, etc.) |
| Missing confidence target | Confidence assigned but no forward path | → Ask "what would move this to 4/5?" |
DO:
DON'T:
After ID registration: