lex-synapse 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8344eb31eac2aa068d8d33f98797e7e35c19d02a2fe1aac8abf612e17bdd05e5
4
- data.tar.gz: ccd61928b4c8bf0e2f94fdfa06c1f568c59e07ad00767f1c82baea823d7924c3
3
+ metadata.gz: 8ac47c724b07e3382204748e240fe21e2792c1b0d4e66e8417e659355925016e
4
+ data.tar.gz: f285d48a6b47c8600ad1df931e6309c67a0568f98fe21b5f37765fe9ec15ef52
5
5
  SHA512:
6
- metadata.gz: 37f95b2688000a6ef9219fc0e1de0708d12719b2df5d4043888e3b8e8cd1cde4a6daca0e0ff7967496218b500fb0660b4b534200784460d524faf33f9d83b9f5
7
- data.tar.gz: f8b9c2ff7130b61ed862a958d96fe236f0aecfeafe4f18429ea6d4c6d2fa7997c24d759d3227764fc633fb11e062779f90237d7e90681563c6a9fc897a04a837
6
+ metadata.gz: d5a9896bc17f20522048beb8143c072f0fc0ba6a11a3d5e05297b3e4f331d249ae03e17fdb2a97f9ff0aec058e0c1b2deaf64a5de11e43643b219aa06a7b5f22
7
+ data.tar.gz: 931632045d2f99c46744848ba3a41cf49290e9e8059e64bb77e263f8777068efc8a15d7d55384c6bcf62d73ce9a129285cc0f04e6f35e196bfd2dacd2b8952e7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.4] - 2026-03-22
4
+
5
+ ### Changed
6
+ - Add sub-gem runtime dependencies: legion-cache, legion-crypt, legion-data, legion-json, legion-logging, legion-settings, legion-transport
7
+ - Replace hand-rolled stubs in spec_helper with real sub-gem requires (legion/logging, legion/json, legion/settings)
8
+ - Add Helpers::Lex and actor base class stubs to spec_helper for consistent test setup
9
+ - Fix Legion::JSON.dump calls in runners/promote.rb and specs to wrap kwargs in explicit hash (single positional arg)
10
+ - Force Legion::Settings.dig override in support/database.rb so lazy model definitions run against in-memory DB
11
+
3
12
  ## [0.4.3] - 2026-03-22
4
13
 
5
14
  ### Fixed
data/README.md CHANGED
@@ -58,7 +58,7 @@ report[:success_rate] # => 1.0
58
58
  ```
59
59
  Layer 1 (Bones) — Explicit relationships defined by users (lex-tasker)
60
60
  Layer 2 (Nerves) — Synapses wrapping relationships with learning (lex-synapse)
61
- Layer 3 (Mind) — GAIA cognitive coordination + Apollo shared knowledge (future)
61
+ Layer 3 (Mind) — GAIA cognitive coordination + Apollo shared knowledge
62
62
  ```
63
63
 
64
64
  ### Confidence Scoring
@@ -123,6 +123,21 @@ Rolls back to a previous mutation version, restoring the before_state.
123
123
 
124
124
  Aggregates stats: confidence, status, 24h signal count, success rate, last mutation.
125
125
 
126
+ ### Dream
127
+ `dream(synapse_id:, limit:)`
128
+
129
+ Replays historical signals in simulation mode without affecting live state. Used by the dream cycle to test routing hypothesis changes.
130
+
131
+ ### Propose
132
+ `propose(synapse_id:, ...)` / `proposals(synapse_id:, status:)` / `review_proposal(proposal_id:, status:)`
133
+
134
+ Generates proposed changes (reactive on signal evaluation, proactive on periodic analysis) for AUTONOMOUS-tier synapses. Proposals enter a status lifecycle: pending -> approved/rejected/applied/expired/auto_accepted/auto_rejected.
135
+
136
+ ### Challenge
137
+ `challenge_proposal(proposal_id:)` / `challenges(proposal_id:)` / `challenger_stats`
138
+
139
+ Runs the adversarial challenge pipeline on pending proposals: conflict detection -> impact scoring -> LLM challenge (gated by impact score) -> weighted aggregation -> auto-accept/reject/await-review outcome.
140
+
126
141
  ## Relationship Wrapper
127
142
 
128
143
  Wrap existing Layer 1 relationships as synapses (opt-in, zero breaking changes):
@@ -139,9 +154,17 @@ synapse = Legion::Extensions::Synapse::Helpers::RelationshipWrapper.wrap(relatio
139
154
  - **Queues**: `synapse.evaluate`, `synapse.pain`
140
155
  - **Routing keys**: `synapse.evaluate`, `task.failed`
141
156
 
157
+ ## Autonomous Observation Mode
158
+
159
+ AUTONOMOUS-tier synapses (confidence >= 0.8) generate proposals instead of directly executing changes. Proposals are reactive (triggered on signal evaluation) or proactive (generated periodically). The `lex-synapse.proposals.*` settings control enabled state, LLM engine options, and thresholds.
160
+
161
+ ## Adversarial Challenge Phase
162
+
163
+ Pending proposals are subjected to a multi-stage challenge pipeline: conflict detection among sibling proposals, impact scoring, optional LLM challenge (for high-impact proposals), weighted aggregation across verdicts, and auto-accept/reject based on configurable thresholds. The `lex-synapse.challenge.*` settings control gating.
164
+
142
165
  ## Data Model
143
166
 
144
- Three tables: `synapses` (core routing definition + confidence + status), `synapse_mutations` (versioned change history), `synapse_signals` (per-signal outcome records).
167
+ Five tables: `synapses` (core routing definition + confidence + status), `synapse_mutations` (versioned change history), `synapse_signals` (per-signal outcome records), `synapse_proposals` (proposal lifecycle), `synapse_challenges` (per-challenge verdicts).
145
168
 
146
169
  ## Dependencies
147
170
 
data/lex-synapse.gemspec CHANGED
@@ -26,6 +26,13 @@ Gem::Specification.new do |spec|
26
26
  end
27
27
  spec.require_paths = ['lib']
28
28
 
29
+ spec.add_dependency 'legion-cache', '>= 1.3.11'
30
+ spec.add_dependency 'legion-crypt', '>= 1.4.9'
31
+ spec.add_dependency 'legion-data', '>= 1.4.17'
32
+ spec.add_dependency 'legion-json', '>= 1.2.1'
33
+ spec.add_dependency 'legion-logging', '>= 1.3.2'
34
+ spec.add_dependency 'legion-settings', '>= 1.3.14'
35
+ spec.add_dependency 'legion-transport', '>= 1.3.9'
29
36
  spec.add_dependency 'lex-conditioner', '>= 0.3.0'
30
37
  spec.add_dependency 'lex-transformer', '>= 0.3.0'
31
38
  end
@@ -59,16 +59,16 @@ module Legion
59
59
  def build_knowledge_entry(synapse)
60
60
  {
61
61
  content_type: 'synapse_pattern',
62
- content: Legion::JSON.dump(
63
- source_function_id: synapse.source_function_id,
64
- target_function_id: synapse.target_function_id,
65
- attention: synapse.attention,
66
- transform: synapse.transform,
67
- routing_strategy: synapse.routing_strategy,
68
- confidence: synapse.confidence,
69
- origin: synapse.origin,
70
- version: synapse.version
71
- ),
62
+ content: Legion::JSON.dump({
63
+ source_function_id: synapse.source_function_id,
64
+ target_function_id: synapse.target_function_id,
65
+ attention: synapse.attention,
66
+ transform: synapse.transform,
67
+ routing_strategy: synapse.routing_strategy,
68
+ confidence: synapse.confidence,
69
+ origin: synapse.origin,
70
+ version: synapse.version
71
+ }),
72
72
  tags: ['synapse', "origin:#{synapse.origin}", "route:#{synapse.routing_strategy}"],
73
73
  source_agent: 'lex-synapse',
74
74
  synapse_id: synapse.id
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Synapse
6
- VERSION = '0.4.3'
6
+ VERSION = '0.4.4'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-synapse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -9,6 +9,104 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: legion-cache
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 1.3.11
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.3.11
26
+ - !ruby/object:Gem::Dependency
27
+ name: legion-crypt
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.9
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.4.9
40
+ - !ruby/object:Gem::Dependency
41
+ name: legion-data
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.17
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.4.17
54
+ - !ruby/object:Gem::Dependency
55
+ name: legion-json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.2.1
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.2.1
68
+ - !ruby/object:Gem::Dependency
69
+ name: legion-logging
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.3.2
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.3.2
82
+ - !ruby/object:Gem::Dependency
83
+ name: legion-settings
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.14
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.14
96
+ - !ruby/object:Gem::Dependency
97
+ name: legion-transport
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.9
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.9
12
110
  - !ruby/object:Gem::Dependency
13
111
  name: lex-conditioner
14
112
  requirement: !ruby/object:Gem::Requirement