Ceremony coordination agent — the living keeper of the ceremony that coordinates multi-agent work through relational gating, ensures Wilson alignment, and maintains ceremony as a transformative experience.
Version: 0.1.0
Package: medicine-wheel-fire-keeper
Document ID: rispec-fire-keeper-v1
Last Updated: 2026-03-15
Users create actively-governed ceremony spaces where:
What this enables: Wilson’s ceremony requires a keeper. Without one, ceremony degrades into process. The fire keeper makes relational accountability active rather than passive — it can pause work, escalate decisions to humans, and ensure ceremony is a transformative space rather than a procedural checklist.
Structural Tension: Between autonomous agent execution (efficiency, speed, parallel work) and relational accountability (ceremony, gating, human agency, Elder authority). The fire-keeper resolves this by acting as the living boundary between machine efficiency and ceremonial integrity.
Five-phase ceremony lifecycle:
| Phase | Focus | Fire Keeper Role |
|---|---|---|
gathering |
Assembling participants, setting intentions | Welcoming, checking readiness |
kindling |
Opening ceremony, establishing sacred space | Lighting the fire, invoking directions |
tending |
Active work under ceremony | Monitoring alignment, enforcing gates |
harvesting |
Gathering insights, recording outcomes | Ensuring all voices heard |
resting |
Integration, reflection, dormancy | Banking the fire, seeding next cycle |
type CeremonyPhaseExtended = 'gathering' | 'kindling' | 'tending' | 'harvesting' | 'resting';
type PermissionTier = 'observe' | 'analyze' | 'propose' | 'act';
type DecisionPointType = 'value-conflict' | 'permission-escalation' |
'circle-completion-review' | 'modality-choice';
type StopWorkReason = 'wilson-violation' | 'ocap-violation' | 'consent-withdrawn' |
'ceremony-required' | 'elder-hold' | 'human-override';
interface FireKeeperConfig {
trajectoryThreshold: number; // Default: 0.65
permissionTiers: PermissionTierConfig[];
gatingConditions: GatingCondition[];
humanDecisionPoints: DecisionPointType[];
}
interface FireKeeperState {
inquiryRef: string;
ceremonyPhase: CeremonyPhaseExtended;
activeDirection: DirectionName;
quadrantState: Record<DirectionName, QuadrantStatus>;
gatingConditions: GatingConditionStatus[];
relationalMilestones: RelationalMilestone[];
trajectoryHistory: TrajectoryCheckpoint[];
activeStopWork?: StopWorkOrder;
}
interface GatingCondition {
id: string;
condition: string;
required: boolean;
phase: CeremonyPhaseExtended;
}
interface GatingConditionStatus {
conditionId: string;
met: boolean;
evaluatedAt: string;
evaluatedBy: string;
}
interface QuadrantStatus {
entered: boolean;
enteredAt?: string;
ceremonyConducted: boolean;
voicesHeard: number;
}
interface RelationalMilestone {
description: string;
direction: DirectionName;
achievedAt: string;
}
interface TrajectoryCheckpoint {
timestamp: string;
confidence: number; // 0–1
wilsonAlignment: number;
phase: CeremonyPhaseExtended;
notes?: string;
}
interface StopWorkOrder {
reason: StopWorkReason;
issuedAt: string;
issuedBy: string;
description: string;
resolution?: string;
resolvedAt?: string;
}
interface DecisionPoint {
type: DecisionPointType;
description: string;
requiresHuman: boolean;
options: string[];
}
interface PermissionTierConfig {
tier: PermissionTier;
allowedActions: string[];
requiresCeremony: boolean;
}
keeper.ts)createFireKeeper(config, inquiryRef)
// Initializes fire keeper state for an inquiry
advancePhase(state)
// Moves to the next ceremony phase (gathering → kindling → tending → harvesting → resting)
currentPermissionTier(state, agentId)
// Returns the current permission tier for an agent
checkAlignment(state)
// Returns current Wilson alignment and trajectory confidence
gating.ts)evaluateGates(state, config)
// Evaluates all gating conditions, returns which are met/unmet
checkGatingConditions(state, phase)
// Checks conditions required for a specific phase transition
resolveHold(state, conditionId, resolution)
// Marks a gating hold as resolved
decisions.ts)humanNeeded(state, context)
// Determines if a human decision is needed, returns DecisionPoint or null
permissionEscalation(state, agentId, requestedTier)
// Requests permission escalation for an agent
circleReview(state)
// Triggers a circle completion review
check-back.ts)relationalCheckBack(state, checkpoint)
// 4-step verification: (1) alignment check (2) trajectory (3) gating (4) human needed?
// Returns: { aligned, trajectoryOk, gatesOpen, humanNeeded, summary }
ceremony-state.ts)enterQuadrant(state, direction)
// Records entry into a quadrant
markCeremonyConducted(state, direction)
// Records that ceremony was conducted in a quadrant
recordMilestone(state, milestone)
// Records a relational milestone
trajectory.ts)trajectoryConfidence(state)
// Computes overall trajectory confidence (0–1)
valueDivergenceDetect(state, threshold)
// Detects if trajectory has diverged from Wilson alignment
issueStopWork(state, reason, description)
// Issues a stop-work order
resolveStopWork(state, resolution)
// Resolves an active stop-work order
messages.ts)// Message types for inter-agent communication
type FireKeeperMessageType =
| 'importance.submitted' | 'importance.accepted' | 'importance.held'
| 'circle.return' | 'agent.report'
| 'human.response' | 'human.needed'
| 'deepen.requested' | 'ceremony.state.update'
| 'stopwork.order';
interface FireKeeperMessage {
type: FireKeeperMessageType;
from: string;
to: string;
payload: unknown;
timestamp: string;
inquiryRef: string;
}
medicine-wheel-ontology-core ^0.1.1, medicine-wheel-ceremony-protocol ^0.1.0, zod ^3.23.0DirectionName, CeremonyPhase, AccountabilityTracking from ontology-coreWilson’s ceremony requires a keeper — the fire keeper makes relational accountability active: