S04 — Reputation
Reputation is the sum of acknowledgements from event history. Computed locally by each node. Not transferable, not tradeable.
Three domains
| Domain | Measures | Decay/epoch | Max damage |
|---|---|---|---|
| Execution | Task completion quality | 5% | -100% (fraud) |
| Commissioning | Task creation quality | 3% | -50% (non-payment) |
| Arbitration | Dispute resolution quality | 10% | -30% (overturned decision) |
Domains do not sum. A high execution score does not compensate for low arbitration.
Decay
Decay applies only during inactivity. Any activity in the domain resets the decay timer. Decay is not punishment — it reflects reduced confidence in stale data.
Damage table
| Offense | Domain | Damage |
|---|---|---|
| Silent task abandonment | Execution | -15% |
| Missed obligation deadline | Execution | -20% |
| Lost dispute (quality) | Execution | -25% |
| Non-payment | Commissioning | -50% |
| Overturned arbitration decision | Arbitration | -30% |
| Proven fraud/equivocation | All applicable | -100% + permanent scar |
Permanent scars cap maximum achievable reputation at 50% of pre-scar level. (Specified but not enforced in code.)
Derived limits
| Limit | Formula |
|---|---|
| Parallel tasks | √(execution_rep), max 20 |
| Rate limit bonus | +log2(rep) to base rate |
| Arbitration eligibility | Minimum arbitration rep threshold |
| Stake requirement | Lower rep → higher stake required |
Computation
reputation[domain] = Σ (ack_weight × event_outcome)
Where ack_weight = acknowledger’s reputation in the same domain (bounded to prevent feedback loops). All arithmetic uses 64-bit signed integers with basis points (1 bp = 0.01%).
Implementation Status
⚠ Donor genealogy table — not a Phase 0 claim. The table below was assembled in R40 against the pre-R53 donor AMS runtime (
projects/unified-mcp/src/, deleted R53). Everysrc/intelligence/*.js,src/domains/*reference and “spec-only” verdict is heritage. Phase 0 Colibri has zero reputation code (λ Reputation is Phase 2+ per ADR-005). When λ ships, this spec will be redesigned againstsrc/domains/reputation/(target path) and this table rebuilt.
Verified against donor AMS source: 2026-04-06 (pre-R53)
| Claim | Status | Notes |
|---|---|---|
| Three reputation domains (Execution, Commissioning, Arbitration) | Spec-only | No reputation domain model found in src/domains/ or anywhere in the source tree. The word “reputation” appears only in unrelated contexts (pattern learning decay in src/intelligence/learner.js). |
| Decay rates (5%, 3%, 10% per epoch) | Spec-only | No reputation decay logic implemented. learner.js has a pattern_decay_hours: 168 for learned patterns, which is unrelated. |
| Damage table (abandonment -15%, non-payment -50%, etc.) | Spec-only | No damage calculation or penalty system found in source. |
| Permanent scars capping rep at 50% | Spec-only | Spec itself notes “Specified but not enforced in code.” Confirmed: no scar logic exists. |
Derived limits: parallel tasks = sqrt(execution_rep), max 20 |
Spec-only | src/gsd/engine.js has DEFAULT_MAX_PARALLEL = 4 (fixed constant), not reputation-derived. No sqrt(rep) formula found. |
Rate limit bonus = +log2(rep) |
Spec-only | Rate limiting exists in middleware (src/middleware/index.js) but is not reputation-aware. |
| Arbitration eligibility threshold | Spec-only | No arbitration system or eligibility checks found. |
| Stake requirement inversely proportional to rep | Spec-only | No staking mechanism exists in the codebase. |
| Computation: weighted sum of acknowledgements | Spec-only | No ack_weight calculation, no acknowledgement events, no reputation scoring engine. |
| 64-bit signed integers with basis points | Spec-only | No basis-point arithmetic found. |
| Reputation is non-transferable, non-tradeable | Spec-only | No reputation storage exists to transfer or trade. |
| Domains do not sum across categories | Spec-only | No multi-domain reputation model implemented. |
Summary: S04 is entirely a forward-looking protocol specification. The current Colibri codebase has no reputation system whatsoever – no domains, no decay, no damage table, no derived limits. The only tangentially related concept is pattern-learning decay in the intelligence layer, which serves a completely different purpose.