feat(soul): wire consciousness layers — L0→L1→L2→L3→L1 cycle #9

Closed
will.anderson wants to merge 0 commits from feat/layer-composition into main
Owner

Adds layered_cycle() to soul.el and wires it into the user-facing request path. Every user message now passes through: safety_screen() (L1 in) → steward_align() (L2) → imprint_respond() (L3) → safety_validate() (L1 out). Hard bells bypass all upper layers. Internal cognition (heartbeat, proactive cycles) continues using one_cycle() directly. All existing routes and memory ops unchanged.

Depends on: feat/layer-safety, feat/layer-stewardship, feat/layer-imprint

Adds layered_cycle() to soul.el and wires it into the user-facing request path. Every user message now passes through: safety_screen() (L1 in) → steward_align() (L2) → imprint_respond() (L3) → safety_validate() (L1 out). Hard bells bypass all upper layers. Internal cognition (heartbeat, proactive cycles) continues using one_cycle() directly. All existing routes and memory ops unchanged. Depends on: feat/layer-safety, feat/layer-stewardship, feat/layer-imprint
will.anderson added 1 commit 2026-06-11 16:32:25 +00:00
will.anderson added 1 commit 2026-06-11 16:47:53 +00:00
fix(soul): address review issues in feat/layer-composition
Neuron Soul CI / build (pull_request) Failing after 6m5s
bebf1f8c86
- Add stub implementations of safety.el, stewardship.el, and imprint.el
  with their .elh headers so the branch compiles without the dependency
  branches (feat/layer-safety, feat/layer-stewardship, feat/layer-imprint).
  Each stub documents the layer contract it must satisfy when replaced.

- Fix GET /api/chat bypass: update the GET branch in handle_request to
  call layered_cycle() consistently with the POST branch, rather than
  calling handle_chat() directly and skipping the consciousness stack.

- Export layered_cycle() from soul.elh (and dist/soul.elh) so routes.el
  can resolve the symbol via the header import.

- Fix steward_action else branch: add explicit handling for "block"
  (returns safe refusal immediately, skips L3) and "redirect" (uses
  redirect_to field). Unknown actions now log a warning and fall back to
  the screened input rather than silently passing an empty string to
  imprint_respond().

- Document hard_bell path: clarify that omitting auto_persist/history
  update is intentional security isolation, and document the safety_validate
  second-param sentinel contract ("hard_bell" vs screen_action).
will.anderson added 1 commit 2026-06-11 17:13:25 +00:00
Author
Owner

Updated: layered_cycle now calls steward_session_check() which handles both behavioral fingerprinting and mission alignment in one L2 pass. Continuity status (consistent/drift/discontinuity/anomaly) is stored in session state so imprint can adjust response register. Identity anomaly and continuity concern annotations are injected into guided input before reaching L3.

Updated: layered_cycle now calls steward_session_check() which handles both behavioral fingerprinting and mission alignment in one L2 pass. Continuity status (consistent/drift/discontinuity/anomaly) is stored in session state so imprint can adjust response register. Identity anomaly and continuity concern annotations are injected into guided input before reaching L3.
will.anderson added 2 commits 2026-06-11 17:13:58 +00:00
Adds tests/test_layered_cycle.el — 12 integration tests covering the full
L1→L2→L3→L1 stack: benign pass-through, hard-bell short-circuit, soft-bell
care augmentation, steward redirect for all 5 mission-conflict signals, empty
input graceful handling, sequential call isolation, and imprint state stability.

Adds tests/test_layer_contract.el — contract tests verifying the JSON
interface shapes between layers: safety_screen {action, content|reason|concern},
steward_align {action, content|redirect_to}, imprint_respond non-empty String,
and cross-layer action propagation from L1 screen through to L1 validate.
Member

Handoff (auto) — prereq #16.

⚠ OVERLAPS #5 by ~80%: awareness.el (+402 -9), mcp-wrapper/src/main.el (+831), neuron-api.el (+173), mcp-proxy, same docs are identical to #5. This (your own consciousness-layers PR) is likely the CANONICAL version of that shared work. Decide #9 vs #5 here, merge one, rebase/close the other.

WHAT real: awareness.el +402, imprint.el +29, safety.el +33, mcp-wrapper +831, neuron-api.el +173, routes.el +40 -4, chat.el +12 -1.
REAL SOURCE: ~2,000 lines.
RISK: highest — the L0→L1→L2→L3→L1 cycle; deep cognitive-core work that genuinely needs full review, not a rubber stamp.
ORDER: the reconciliation anchor.

Handoff (auto) — prereq #16. ⚠ OVERLAPS #5 by ~80%: awareness.el (+402 -9), mcp-wrapper/src/main.el (+831), neuron-api.el (+173), mcp-proxy, same docs are identical to #5. This (your own consciousness-layers PR) is likely the CANONICAL version of that shared work. Decide #9 vs #5 here, merge one, rebase/close the other. WHAT real: awareness.el +402, imprint.el +29, safety.el +33, mcp-wrapper +831, neuron-api.el +173, routes.el +40 -4, chat.el +12 -1. REAL SOURCE: ~2,000 lines. RISK: highest — the L0→L1→L2→L3→L1 cycle; deep cognitive-core work that genuinely needs full review, not a rubber stamp. ORDER: the reconciliation anchor.
will.anderson closed this pull request 2026-06-15 16:38:03 +00:00
will.anderson deleted branch feat/layer-composition 2026-06-15 16:38:05 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: neuron-technologies/neuron#9