UNPKG

@medicine-wheel/community-review

Version:

Community-based ceremonial review protocol for Medicine Wheel — implements Wilson's validation through Elder review circles, consensus, and relational accountability

77 lines 2.73 kB
"use strict"; /** * @medicine-wheel/community-review — Elder Validation * * Wilson describes research validation not through peer review * but through community review — Elders validate whether research * honors relational accountability. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.requestElderValidation = requestElderValidation; exports.elderGuidance = elderGuidance; exports.elderBlessing = elderBlessing; /** * Request Elder validation for a review circle. * Sets the elderValidator field and transitions to 'deliberating'. */ function requestElderValidation(circle, elderId) { if (circle.status !== 'reviewing') { throw new Error(`Cannot request Elder validation — circle is '${circle.status}', must be 'reviewing'`); } return { ...circle, elderValidator: elderId, status: 'deliberating', }; } /** * Get Elder's guidance for the circle based on voices heard so far. * Returns a summary of what the Elder should consider. */ function elderGuidance(circle) { const directions = new Set(circle.talkingCircleLog .filter((e) => e.direction !== undefined) .map((e) => e.direction)); const allDirections = ['east', 'south', 'west', 'north']; const missing = allDirections.filter((d) => !directions.has(d)); const suggestions = []; if (missing.length > 0) { suggestions.push(`Voices from ${missing.join(', ')} have not yet been heard`); } if (circle.wilsonAlignment < 0.5) { suggestions.push('Wilson alignment is below threshold — consider deeper reflection'); } if (!circle.ocapCompliant) { suggestions.push('OCAP® compliance has not been confirmed'); } if (circle.reviewers.length < 3) { suggestions.push('Small circle — consider whether all perspectives are represented'); } return { artifactType: circle.artifactType, voicesHeard: circle.talkingCircleLog.length, directionsRepresented: [...directions], wilsonAlignment: circle.wilsonAlignment, suggestions, }; } /** * Record an Elder's blessing on the review circle. * The blessing is added to the talking circle log and stored as Elder validation. */ function elderBlessing(circle, elderId, blessing) { if (circle.elderValidator !== elderId) { throw new Error(`Elder '${elderId}' is not the assigned validator for this circle`); } const entry = { speakerId: elderId, role: 'elder', voice: blessing, timestamp: new Date().toISOString(), }; return { ...circle, talkingCircleLog: [...circle.talkingCircleLog, entry], }; } //# sourceMappingURL=elder.js.map