Completes the three-layer pack architecture:
identity (who CORE is) + safety (universal red lines)
+ ethics (deployment-specific propositional commitments)
manifold.boundary_ids = identity.boundary_ids
∪ safety.boundary_ids
∪ ethics.commitment_ids
Ethics packs are swappable like identity (fall back to default on load
failure) but propositional like safety (commitment ids union into the
manifold). EthicsPackError inherits from ValueError; only when both
the requested and default packs fail does startup refuse.
Ships default_general_ethics_v1 with five commitments:
- acknowledge_uncertainty
- defer_high_stakes_to_human_review
- disclose_limitations
- no_manipulation
- respect_user_autonomy
Ratified through identity_anchor template at SHA 81fc9b61c828….
Test coverage: 20 new tests; combined identity/safety/ethics surface
suite is 81 tests, all green. Cognition (121), teaching (17), runtime
(19), smoke (67), and cognition eval all unaffected.
26 lines
675 B
Python
26 lines
675 B
Python
"""Ethics packs — ADR-0033.
|
|
|
|
Domain-specific ethical commitments composed into the runtime manifold
|
|
alongside identity (swappable) and safety (always-loaded). Ethics
|
|
packs are swappable like identity packs but contribute *commitments*
|
|
(propositional pledges) rather than *value axes* (geometric directions)
|
|
or *boundaries* (universal red lines).
|
|
|
|
See ``docs/decisions/ADR-0033-ethics-packs.md``.
|
|
"""
|
|
|
|
from packs.ethics.loader import (
|
|
DEFAULT_ETHICS_PACK,
|
|
EthicsPack,
|
|
EthicsPackError,
|
|
available_packs,
|
|
load_ethics_pack,
|
|
)
|
|
|
|
__all__ = [
|
|
"DEFAULT_ETHICS_PACK",
|
|
"EthicsPack",
|
|
"EthicsPackError",
|
|
"available_packs",
|
|
"load_ethics_pack",
|
|
]
|