Another naming drift: the think function in core-loop-reason calls
find-triggered-skill but the actual function was skill-triggered-find
in core-skills. This crashed the daemon on every user-input signal.
New file: org/system-embedding-gateway.org / lisp/system-embedding-gateway.lisp.
- Pluggable backends via *embedding-backend* hook and EMBEDDING_PROVIDER env var
- :hashing (default) — FNV-1a hashing trick, zero dependencies
- :ollama — POST /api/embeddings to local Ollama (nomic-embed-text)
- *embedding-queue* tracks pending objects; embed-all-pending drains queue
with store-wide scan as fallback
- embed-queue-object called after ingest-ast to mark objects for embedding
- Deleted old stub system-embeddings.org (hashing-only, no provider switching)
- Exported embedding symbols from defpackage
Also:
- Added (in-package :passepartout) to system-model-router.org (was missing,
caused CL-USER::DEFSKILL error on daemon start)
- Added system-embedding-gateway to skill-loader exclusion list
- Updated ROADMAP
Root cause chain:
1. proto-get was used throughout the pipeline but never defined — added
to core-communication.org as a keyword-normalizing getf wrapper.
2. security-dispatcher.lisp was loaded by skill-initialize-all into a
separate package, making HITL functions invisible to :passepartout.
Fixed by adding to ASDF component list and excluding from skill loader.
3. org-id-generate was referenced from hitl-create but lives in an
unexported skill package — replaced with uuid:make-v4-uuid.
4. uiop:string-prefix-p was called with :test keyword argument it does
not accept — replaced with string-downcase normalization on both sides.
Also:
- Export hitl-create, hitl-approve, hitl-deny, hitl-handle-message,
stimulus-inject from :passepartout for REPL accessibility.