Merge PR #9: feat(soul): wire consciousness layers — L0->L1->L2->L3->L1 cycle
Deploy Soul to GKE / deploy (push) Failing after 14m11s
Neuron Soul CI / build (push) Failing after 14m23s

Resolves conflicts by keeping main's full safety/stewardship/imprint implementations.
PR #9 uniquely contributes: layered_cycle() in soul.el, route wiring in routes.el,
soul.elh export, and the layer composition test suite.
This commit is contained in:
2026-06-15 11:32:32 -05:00
6 changed files with 845 additions and 4 deletions
+25 -4
View File
@@ -4,6 +4,7 @@ import "chat.el"
import "studio.el"
import "elp-input.el"
import "neuron-api.el"
import "soul.elh"
fn strip_query(path: String) -> String {
let q: Int = str_index_of(path, "?")
@@ -34,7 +35,8 @@ fn route_health() -> String {
+ ",\"boot\":" + boot_num
+ ",\"node_count\":" + int_to_str(node_ct)
+ ",\"edge_count\":" + int_to_str(edge_ct)
+ ",\"pulse\":" + pulse_num + "}"
+ ",\"pulse\":" + pulse_num
+ ",\"layers\":{\"l0\":\"core\",\"l1\":\"safety\",\"l2\":\"stewardship\",\"l3\":\"" + imprint_current() + "\"}}"
}
fn route_lineage() -> String {
@@ -143,10 +145,12 @@ fn handle_dharma_recv(body: String) -> String {
eff_payload
}
let agentic_flag: Bool = json_get_bool(eff_payload, "agentic")
let raw_msg: String = json_get(chat_body, "message")
let reply: String = if agentic_flag {
handle_chat_agentic(chat_body)
} else {
handle_chat(chat_body)
let screened_reply: String = layered_cycle(raw_msg)
screened_reply
}
auto_persist(chat_body, reply)
return reply
@@ -231,7 +235,22 @@ fn handle_request(method: String, path: String, body: String) -> String {
return if str_eq(edges_raw, "") { "[]" } else { edges_raw }
}
if str_eq(clean, "/api/chat") {
return handle_chat(body)
// GET /api/chat: pass through layered_cycle for consistency with POST path.
// GET chat is a legacy probe interface; body may be empty for simple pings.
let raw_msg: String = json_get(body, "message")
let eff_msg: String = if str_eq(raw_msg, "") { body } else { raw_msg }
if str_eq(eff_msg, "") {
return "{\"error\":\"message required\"}"
}
let agentic_flag: Bool = json_get_bool(body, "agentic")
let reply: String = if agentic_flag {
handle_chat_agentic(body)
} else {
let screened_reply: String = layered_cycle(eff_msg)
screened_reply
}
auto_persist(body, reply)
return reply
}
if str_eq(clean, "/api/conversations") {
return handle_conversations(method)
@@ -329,10 +348,12 @@ fn handle_request(method: String, path: String, body: String) -> String {
}
if str_eq(clean, "/api/chat") {
let agentic_flag: Bool = json_get_bool(body, "agentic")
let raw_msg: String = json_get(body, "message")
let reply: String = if agentic_flag {
handle_chat_agentic(body)
} else {
handle_chat(body)
let screened_reply: String = layered_cycle(raw_msg)
screened_reply
}
auto_persist(body, reply)
return reply