Research impact and growth tracking — built on the lesson Wilson quotes from his co-researchers, “If research doesn’t change you as a person, then you haven’t done it right” (2008, p. 135); the validity check is ours. Tracks transformative impact on researchers, communities, and relational networks.
Version: 0.1.0
Package: @medicine-wheel/transformation-tracker
Document ID: rispec-transformation-tracker-v1
Last Updated: 2026-03-15
Users create transformation-aware research systems where:
What this enables: A research system that measures success not by publication count or citation index, but by transformation — of the researcher, the community, and the relational web. Our validity check, built on a lesson Wilson quotes (p. 135), becomes computable; the computing is ours, not his.
Structural Tension: Between Western research validity (replicability, generalizability, peer approval) and Indigenous research validity (transformation of researcher, community benefit, relational strengthening, reciprocity balance). The transformation-tracker resolves this by making transformation measurable alongside — not instead of — traditional metrics.
type CeremonyPhaseExtended = 'gathering' | 'kindling' | 'tending' | 'harvesting' | 'resting';
interface TransformationLog {
id: string;
researchCycleId: string;
snapshots: GrowthSnapshot[];
reflections: Reflection[];
communityImpacts: CommunityImpact[];
relationalShifts: RelationalShift[];
reciprocityLedger: ReciprocityEntry[];
sevenGenerationScore: number; // 0–1
overallTransformation: number; // 0–1 composite score
}
interface GrowthSnapshot {
timestamp: string;
direction: DirectionName;
ceremonyPhase: CeremonyPhaseExtended;
understanding: string; // Free-text description
relationsCount: number;
wilsonAlignment: number;
keyInsights: string[];
openQuestions: string[];
}
interface Reflection {
id: string;
timestamp: string;
direction: DirectionName;
prompt: string; // What prompted this reflection
content: string; // The reflection itself
catalysts: string[]; // What caused the reflection
}
interface CommunityImpact {
id: string;
description: string;
community: string;
direction: DirectionName;
benefitType: 'knowledge' | 'healing' | 'capacity' | 'connection' | 'sovereignty';
timestamp: string;
voicedBy?: string; // Who reported this impact
}
interface RelationalShift {
relationId: string;
before: { strength: number; description: string };
after: { strength: number; description: string };
catalyst: string;
direction: DirectionName;
timestamp: string;
}
interface ReciprocityEntry {
type: 'giving' | 'receiving';
description: string;
relatedTo: string;
category: ObligationCategory; // human, land, spirit, future
timestamp: string;
}
interface WilsonValidity {
researcherTransformed: boolean;
communityBenefited: boolean;
relationsStrengthened: boolean;
reciprocityBalanced: boolean;
sevenGenerationsConsidered: boolean;
overallValid: boolean;
score: number; // 0–1
recommendations: string[];
}
researcher.ts)logReflection(log, reflection)
// Records a researcher self-reflection entry
snapshotUnderstanding(log, snapshot)
// Takes a periodic understanding snapshot
compareSnapshots(earlier, later)
// Compares two snapshots, identifies growth dimensions
detectGrowth(log)
// Analyzes snapshot sequence for genuine growth vs. stagnation
community.ts)logCommunityImpact(log, impact)
// Records a community impact
reciprocityBalance(log)
// Computes giving/receiving balance across all categories
communityVoice(log, voicedBy, description)
// Records community-voiced impact (not self-reported)
impactTimeline(log)
// Returns chronological timeline of all impacts
relational-shift.ts)trackRelationalChange(log, shift)
// Records a before/after relational shift
beforeAfter(log, relationId)
// Returns the full shift history for a relation
strengthDelta(log)
// Computes net relational strength change across all tracked relations
newRelationsFormed(log)
// Identifies relations that didn't exist at the start
seven-generations.ts)sevenGenScore(log)
// Computes seven-generation impact score (0–1)
futureImpact(log)
// Assesses impact on future generations based on current trajectory
sustainabilityCheck(log)
// Returns whether the research creates sustainable benefit
reciprocity-ledger.ts)logGiving(log, entry)
// Records a giving action
logReceiving(log, entry)
// Records a receiving action
balanceCheck(log)
// Returns: { giving, receiving, balanced, categories }
reciprocityDebt(log)
// Identifies categories where receiving exceeds giving
reciprocityGrowth(log)
// Tracks how reciprocity balance has changed over time
prompts.ts)reflectionPrompts(phase)
// Returns ceremony-phase-appropriate reflection prompts
phaseTransitionPrompts(fromPhase, toPhase)
// Returns prompts for the transition between phases
milestonePrompts(milestone)
// Returns prompts for specific relational milestones
validity.ts)wilsonValidityCheck(log)
// Returns WilsonValidity — has the research transformed?
// Checks: researcher transformed, community benefited, relations strengthened,
// reciprocity balanced, seven generations considered
@medicine-wheel/ontology-core ^0.1.1, @medicine-wheel/ceremony-protocol ^0.1.0, zod ^3.23.0DirectionName, ObligationCategory, AccountabilityTracking from ontology-coreThis package reads the lesson Wilson quotes from “one friend” (p. 83) and reiterates on p. 135, a slogan whose author he cannot find, as a validity check across five dimensions of its own. The word is ours: in Wilson’s conversation, “rather than it being valid or reliable… it’s authentic or credible… it is relational” (Peter, p. 101), and the test is “Is it building relationships rather than breaking them down?” (p. 101). wilsonValidityCheck keeps its name for compatibility.