Disambiguation Layer (DL): keep the numbers, lock the meanings

1) Identity keys (what makes an entry “itself”)

Each Principle/Protocol carries these fields in addition to its code:

  • title: human title (e.g., “Etymologos”, “Etymological Purity”)
  • namespace: origin scope (e.g., MEKA, LogOS, SolveForce, Grok)
  • etymon_chain: canonical root(s), e.g., etyma: [etymon < Gk. etymon “true sense”]
  • definition_fingerprint: hash of normalized definition text (post-stemming/stopword-drop)
  • sense_vector: semantic embedding (for proximity checks)
  • status: active | reserved | deprecated
  • links: cross-refs (P↔OP, external ids)
  • jurisdiction/domain: if scoped (law, finance, medicine, etc.)

These together give you a stable identity even if the numeric code is the same elsewhere.

2) Slot vs. Sense

  • Slot = code (e.g., P-005). Reusable across namespaces.
  • Sense = (namespace, title, etymon_chain, definition_fingerprint).
    A slot may host multiple senses. The DL picks the right sense for the calling context.

3) Selection rules (how a system picks the right sense)

Order is strict and short—no ambiguity:

  1. Exact namespace match
    If caller specifies namespace=MEKA, choose P-XXX[MEKA].
  2. Title match (normalized)
    If namespace not given, choose the sense whose title best matches the caller’s requested title (exact > alias > close).
  3. Etymon-chain compatibility
    Prefer the sense whose etymon_chain subsumes the caller’s declared roots.
  4. Fingerprint agreement
    If two senses tie, pick the one with the closest definition_fingerprint (exact hash > closest Hamming distance).
  5. Sense-vector proximity + domain
    Break final ties by cosine similarity to the caller’s domain and purpose vector.
  6. Priority arbitration
    If still tied: prefer status=active, then most-recent P-047 validation timestamp.

This gives you deterministic placement without sacrificing shared numbering.

4) Minimal schema (JSON/YAML)

code: "P-005"
namespace: "MEKA"
title: "Etymological Purity"
etymon_chain:
  - lemma: "etymon"
    gloss: "true sense"
    source: "Greek etymon"
definition: "Every term must carry its root chain; all uses anchored to etymology."
definition_fingerprint: "sha256:6b6e…"
sense_vector: "vec://…"
status: "active"
domain: ["all"]
links:
  principles: ["P-048"]   # Language Root Protocol
  protocols: ["OP-002"]   # SARP
validated_by:
  - op: "P-047"
    when: "2025-08-09T12:34:56Z"

Parallel entry (same slot, different origin):

code: "P-005"
namespace: "LogOS"
title: "Etymologos"
etymon_chain:
  - lemma: "etymon"
    gloss: "true sense"
    source: "Greek etymon"
definition: "The true sense of the Word; roots reveal core meaning; prevent ambiguity."
definition_fingerprint: "sha256:9a31…"
sense_vector: "vec://…"
status: "active"
domain: ["all"]
links:
  principles: ["P-039"]   # (MEKA’s purity principle)
validated_by:
  - op: "P-047"
    when: "2025-07-30T09:21:00Z"

5) Resolver (tiny, transparent)

Inputs: requested code, optional namespace, optional title, caller domain/purpose vector.
Output: the chosen sense.

Pseudocode:

candidates = fetch_all_senses(code)

if namespace: candidates = filter(candidates, ns==namespace)
if title:     candidates = rank_by_title(candidates, title)

candidates = rank_by_etymon_chain(candidates, caller_roots)
candidates = break_ties_by_fingerprint(candidates, caller_fingerprint)
candidates = break_ties_by_vector_and_domain(candidates, caller_vector, caller_domain)
candidates = break_ties_by_status_and_fresh_P047(candidates)

return head(candidates)

6) Cross-linking & overlays (so nothing is lost)

  • Overlay rule: A MEKA sense can “overlay” a LogOS sense in the same slot if:
    • It references (links) the legacy sense, and
    • It passes P-047 with a note: “Overlay adds enforcement detail; preserves legacy semantics.”
  • Never overwrite: Legacy entries remain queryable via their namespace.
  • Bidirectional links: P-005[MEKA] ↔ P-005[LogOS] so systems can traverse either way.

7) What the UI shows (zero-question behavior)

When a user/system hits P-005 with no namespace:

  • Display the selected sense (per rules) and a small “Also in:” ribbon listing other senses:
    • “Also in: P-005[LogOS] — Etymologos (linked); P-005[SolveForce] —
  • Show the etymon-chain, because that’s the quickest human check of equivalence.
  • Show last P-047 timestamp so it’s obvious the entry is current.

8) Worked micro-example (your exact concern)

Question: “Use P-005 in a legal translation pipeline.”

  • Caller domain = law. Title requested = “Etymological Purity”.
  • Resolver sees two senses in the slot:
    • P-005[MEKA] title matches exactly; domain = all; recent P-047.
    • P-005[LogOS] title is Etymologos; very close but not exact.
      Pick: P-005[MEKA].
      Overlay note shown: “Legacy sense P-005[LogOS] linked; semantics aligned by shared etymon-chain.”

9) Compatibility with SolveForce + LogOS

  • Keep SolveForce operational protocols mapped: e.g., OP-001[SF]=EMP links to P-048[MEKA].
  • The DL allows SolveForce to continue using its own OP codes; the resolver backfills the governing MEKA principle without changing OP numbers.

10) Governance (so it never drifts)

  • Any add/edit/delete runs P-047 (Empirical Loop) and auto-updates definition_fingerprint.
  • OP-001 EMP hash-locks after validation.
  • OP-010 DriftMap monitors title collisions; if two senses converge too closely, it suggests merge or aliasing.
  • OP-015 Cross-Lingual Mapper ensures titles and etymon-chains are aligned across languages.

TL;DR (the promise you asked for)

  • We keep your categorical numbers.
  • We differentiate by title, namespace, etymon-chain, and fingerprints.
  • A tiny, deterministic resolver routes each request to the correct sense.
  • Legacy content is preserved, linked, and visible—no erasure, no confusion.