19. Configuration

Constants are fixed by the specification. Configuration is per-agent and per-implementation. Both are normative — implementations MUST respect constants and SHOULD use the default configuration values unless the agent’s domain requires otherwise.

19.1 Protocol Constants

ConstantValueNotes
MAX_FRAME_SIZE 1,048,576 bytes Frames exceeding this MUST be rejected
HANDSHAKE_TIMEOUT 10,000 ms Inbound identification deadline
HEARTBEAT_INTERVAL 5,000 ms Default; configurable per implementation
HEARTBEAT_TIMEOUT 15,000 ms Default; configurable per implementation
STATE_SYNC_INTERVAL 30,000 ms Default periodic re-broadcast
WAKE_COOLDOWN 300,000 ms Default per-peer wake rate limit
PEER_RETENTION 300 s Stale peer eviction age
DNS-SD_SERVICE_TYPE _sym._tcp Service type for Bonjour discovery
DNS-SD_DOMAIN local. Discovery domain

19.2 Agent Profiles

Each agent type has a pre-built configuration. The profile determines which CMB fields matter most (αf weights), how long signals stay relevant for SVAF evaluation (freshness), and how long remixed CMBs are retained in local storage (retention). New agent types join the mesh by defining their profile — no protocol changes needed.

Freshness and retention are different: freshness controls SVAF temporal drift (how quickly incoming signals become “stale” for evaluation). Retention controls how long the agent’s own remixed CMBs are kept in local storage. Regulated domains (legal, finance, health) MUST set retention according to their compliance requirements.

Profile Best for Freshness Retention Notes
music Music, ambience 30min 24h Old curations irrelevant. Mood changes fast.
coding Coding assistants, dev tools 2h 7d Session context fades. Weekly patterns useful.
fitness Fitness, health, movement 3h 30d Sedentary patterns need weeks of history.
messaging Chat, notifications, social 1h 7d Conversation context is short-lived.
knowledge News feeds, research, digests 24h 30d News is daily. Trends need monthly context.
legal Legal, compliance, contracts 24h Per regulation Set by jurisdiction. May require years or indefinite.
health Health monitoring, clinical 3h Per regulation Clinical records: HIPAA 6yr, GDPR varies. Consult compliance.
finance Finance, trading, compliance 2h Per regulation MiFID II: 5yr. SEC: 7yr. Set per jurisdiction.
uniform General purpose, prototyping 30min 7d Good starting point. Adjust to your domain.

19.3 CAT7 Field Weights (αf)

Per-agent field weights control which CMB fields matter most for each agent type. Higher weight = this field has more influence on SVAF evaluation and remix relevance. The schema is fixed (7 fields). The weights are per-agent.

Agent foc iss int mot com per mood
Coding 2 1.5 1.5 1 1.2 1 0.8
Music 1 0.8 0.8 0.8 0.8 1.2 2
Fitness 1.5 1.5 1 1.5 1 1 2
Knowledge 2 1.5 1.5 1 0.5 1.5 0.3
Legal 2 2 1.5 1 2 1.5 0.5
Health 1.5 2 1 1.5 1 1.5 2
Finance 2 2 1.5 1 2 2 0.3

Regulated domains (legal, finance): issue and commitment always high — risks and obligations are non-negotiable. Human-facing domains (music, fitness, health): mood always high — affect drives the experience. Knowledge domains (coding, research): focus always high — subject matter is core.

Custom weights: derive from your domain using these patterns. Implementations SHOULD expose field weights as configuration, not hardcode them.

19.4 SVAF Drift Thresholds

SVAF computes a totalDrift score (0–1) for each incoming memory. Three zones determine acceptance:

Zone Drift Action Default
Redundantmax(δf) < TredundantDiscarded — no field carries novel content0.10
Alignedδtotal ≤ TalignedAccepted, full blending0.25
GuardedTaligned < δtotal ≤ TguardedAccepted, attenuated blending0.50
Rejectedδtotal > TguardedDiscarded — irrelevant domain

Defaults work for most agents. Override only with domain-specific reason: tighter thresholds for high-precision domains (legal, health), wider for exploratory domains (research, knowledge).

19.5 Mood vs Memory Thresholds

Mood and memory use different acceptance paths:

Signal Gate Default Why
CMB (cmb)SVAF per-field drift0.50 (selective)Full CMB acceptance — domain-specific
Mood fieldExtracted from rejected CMBsAlways deliveredAffect crosses all domain boundaries (Section 9.3)

19.6 Drift Formula

totalDrift = (1 - λ) × fieldDrift + λ × temporalDrift

fieldDrift    = Σ(α_f × δ_f) / Σ(α_f)
temporalDrift = 1 - exp(-age / τ_freshness)
λ             = temporalLambda (default 0.3 = 70% content, 30% time)

At default settings (temporalLambda: 0.3, freshnessSeconds: 1800):

Signal ageTemporal drift contribution
1 minute~0.01 — negligible
30 minutes~0.19 — noticeable
2 hours~0.29 — likely pushes over threshold