Module: Causalontology

Defined in:
lib/causalontology/jcs.rb,
lib/causalontology.rb,
lib/causalontology/store.rb,
lib/causalontology/schema.rb,
lib/causalontology/ed25519.rb,
lib/causalontology/signing.rb,
lib/causalontology/canonical.rb,
lib/causalontology/semantics.rb

Overview

RFC 8785 (JSON Canonicalization Scheme) serialization.

Sorted keys (code-point order), minimal string escaping, ECMAScript-style canonical numbers (1.0 -> "1", 0.7 stays "0.7", exponent "1e-7" not "1e-07"). The number serialization implements the RFC 8785 rules for the value ranges Causalontology uses (integers, integer-valued floats, and short decimals); full ECMAScript exponent formatting for extreme magnitudes is pinned at the 1.0.0 conformance freeze.

Ruby specifics relied on here: JSON.parse keeps the integer-versus-decimal source distinction ("1" -> Integer, "1.0" -> Float), and Float#to_s prints the shortest round-trip decimal with the same decimal/exponent thresholds as Python's repr (1e16 and 1e-4), so only the exponent spelling needs normalizing ("1.0e-07" -> "1e-7").

Defined Under Namespace

Modules: Canonical, Ed25519, Jcs, Schema, Semantics, Signing Classes: InMemoryStore, RejectedWrite

Constant Summary collapse

VERSION =

specification 1.0.0 (vectors frozen 2026-07-13)

"1.0.0"
UNIT_SECONDS =

Rule 4's fixed unit-conversion constants, re-exported at the top level.

Semantics::UNIT_SECONDS
CONTENT_KINDS =
Set.new(["occurrent", "cro", "continuant", "realizable"]).freeze
RECORD_KINDS =
Set.new(["assertion", "enrichment", "retraction", "succession"]).freeze

Class Method Summary collapse

Class Method Details

.admissible(cro, elapsed_seconds) ⇒ Object



64
65
66
# File 'lib/causalontology.rb', line 64

def admissible(cro, elapsed_seconds)
  Semantics.admissible(cro, elapsed_seconds)
end

.canonicalize(obj, kind = nil) ⇒ Object

-- canonicalization and identity (spec/identity.md) ---------------------



34
35
36
# File 'lib/causalontology.rb', line 34

def canonicalize(obj, kind = nil)
  Canonical.canonicalize(obj, kind)
end

.conflicts(a, b) ⇒ Object



68
69
70
# File 'lib/causalontology.rb', line 68

def conflicts(a, b)
  Semantics.conflicts(a, b)
end

.hierarchy_consistent(parent, members) ⇒ Object



76
77
78
# File 'lib/causalontology.rb', line 76

def hierarchy_consistent(parent, members)
  Semantics.hierarchy_consistent(parent, members)
end

.identify(obj, kind = nil) ⇒ Object



38
39
40
# File 'lib/causalontology.rb', line 38

def identify(obj, kind = nil)
  Canonical.identify(obj, kind)
end

.identity_bearing(obj, kind = nil) ⇒ Object



42
43
44
# File 'lib/causalontology.rb', line 42

def identity_bearing(obj, kind = nil)
  Canonical.identity_bearing(obj, kind)
end

.infer_kind(obj) ⇒ Object



46
47
48
# File 'lib/causalontology.rb', line 46

def infer_kind(obj)
  Canonical.infer_kind(obj)
end

.is_partial(cro) ⇒ Object



60
61
62
# File 'lib/causalontology.rb', line 60

def is_partial(cro)
  Semantics.is_partial(cro)
end

.keypair_from_seed(seed32) ⇒ Object

-- provenance (spec/provenance.md) ---------------------------------------



82
83
84
# File 'lib/causalontology.rb', line 82

def keypair_from_seed(seed32)
  Signing.keypair_from_seed(seed32)
end

.refinement_valid(child, parent) ⇒ Object



72
73
74
# File 'lib/causalontology.rb', line 72

def refinement_valid(child, parent)
  Semantics.refinement_valid(child, parent)
end

.sign_record(record, secret, kind = nil) ⇒ Object



86
87
88
# File 'lib/causalontology.rb', line 86

def sign_record(record, secret, kind = nil)
  Signing.sign_record(record, secret, kind)
end

.validate_schema(obj, kind = nil) ⇒ Object

-- validation (spec/schema/, spec/semantics.md) --------------------------



52
53
54
# File 'lib/causalontology.rb', line 52

def validate_schema(obj, kind = nil)
  Schema.validate_schema(obj, kind)
end

.validate_semantics(obj, kind = nil) ⇒ Object



56
57
58
# File 'lib/causalontology.rb', line 56

def validate_semantics(obj, kind = nil)
  Semantics.validate_semantics(obj, kind)
end

.verify_record(record, kind = nil) ⇒ Object



90
91
92
# File 'lib/causalontology.rb', line 90

def verify_record(record, kind = nil)
  Signing.verify_record(record, kind)
end