generated from coulomb/repo-seed
feat(policy,union): policy leaf + UnionGraph resolution with chorus (WP-0007 T6)
policy/ leaf (CanonicalSource presets, default chorus). union/ UnionGraph: identity-keyed resolve (alias-redirect via log fold → union lookup → chorus → red-link); chorus records divergent peers in each page's provenance envelope (union without erasure); designated-canonical orders the pick. Imports down only. 6 tests green. (blueprint §8.4, ADR-01) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
36
src/shard_wiki/policy/__init__.py
Normal file
36
src/shard_wiki/policy/__init__.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""policy/ — the configurable policy surface, a dependency-free leaf (blueprint §10, §11).
|
||||
|
||||
Mechanism over policy (I-7): core mechanisms read policy *choices* from here; they never
|
||||
hard-code one. This leaf holds only the presets + a pure ``resolve``-style selector. Mechanism
|
||||
(how a choice is honoured) lives in ``coordination``/``union``/``projection``, never here.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
|
||||
__all__ = ["CanonicalSource", "Policy", "DEFAULT_POLICY"]
|
||||
|
||||
|
||||
class CanonicalSource(Enum):
|
||||
"""Resolution policy over a divergent/equivalent set (FederationArchitecture T9). Detection
|
||||
is core; this is only the *resolution* choice."""
|
||||
|
||||
CHORUS = "chorus" # default: present all versions, none privileged
|
||||
DESIGNATED_CANONICAL = "designated-canonical"
|
||||
GIT_MERGE = "git-merge"
|
||||
VOTE = "vote"
|
||||
OVERLAY_ONLY = "overlay-only"
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Policy:
|
||||
"""A space's policy choices. Extended as the policy surface grows (freshness, compaction,
|
||||
execution, tenant mapping — blueprint §10); the slice needs canonical-source + designation."""
|
||||
|
||||
canonical_source: CanonicalSource = CanonicalSource.CHORUS
|
||||
designated_shard: str | None = None
|
||||
|
||||
|
||||
DEFAULT_POLICY = Policy()
|
||||
Reference in New Issue
Block a user