v0.3.0: finish Async Embedding Gateway — mark-vector-stale, cron, defskill, ROADMAP updates
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 3s
- Add mark-vector-stale(id, content): sets :vector to :pending, queues for re-embed - Register cron job (embed-all-pending every 10m on :reflex tier via orchestrator) - Add defskill :passepartout-system-model-embedding (priority 70) - Remove embedding from topological-sort exclusion list in core-skills - Export mark-vector-stale in core-defpackage - Contract: items 4 (mark-vector-stale) and 5 (cron registration) - Test: test-mark-vector-stale (5 checks) - ROADMAP: mark Context Manager, Async Embedding Gateway, TUI Experience as DONE - All v0.3.0 items now complete. Total: 5 suites, 85 checks, 0 failures
This commit is contained in:
@@ -92,6 +92,7 @@
|
||||
#:embed-all-pending
|
||||
#:embedding-backend-hashing
|
||||
#:embeddings-compute
|
||||
#:mark-vector-stale
|
||||
#:skill
|
||||
#:skill-name
|
||||
#:skill-priority
|
||||
|
||||
@@ -98,7 +98,6 @@
|
||||
(string= n "core-manifest")
|
||||
(string= n "security-dispatcher")
|
||||
(string= n "system-model-router")
|
||||
(string= n "system-model-embedding")
|
||||
(string= n "system-model-explorer")
|
||||
(string= n "gateway-tui"))))
|
||||
all-files))
|
||||
|
||||
@@ -106,6 +106,32 @@
|
||||
|
||||
(log-message "EMBEDDING: Gateway loaded with provider ~a" *embedding-provider*)
|
||||
|
||||
(defun mark-vector-stale (id &optional content)
|
||||
"Mark a memory object's vector as :pending and queue it for re-embedding.
|
||||
When content is not supplied, reads from the object in *memory-store*."
|
||||
(let* ((obj (gethash id *memory-store*))
|
||||
(text (or content (and obj (memory-object-content obj)))))
|
||||
(when obj
|
||||
(setf (memory-object-vector obj) :pending))
|
||||
(when text
|
||||
(push (list :id id :text text) *embedding-queue*)
|
||||
(log-message "EMBEDDING: Marked ~a vector stale, queued for re-embed" id))
|
||||
(or obj text)))
|
||||
|
||||
(defskill :passepartout-system-model-embedding
|
||||
:priority 70
|
||||
:trigger (lambda (ctx) (declare (ignore ctx)) nil))
|
||||
|
||||
;; Register periodic batch embedding via cron (when orchestrator available)
|
||||
(when (fboundp 'orchestrator-register-cron)
|
||||
(handler-case
|
||||
(orchestrator-register-cron :embed-batch
|
||||
"<2026-05-05 Tue +10m>"
|
||||
'embed-all-pending
|
||||
:reflex)
|
||||
(error (c)
|
||||
(log-message "EMBEDDING: Cron registration failed: ~a" c))))
|
||||
|
||||
(eval-when (:compile-toplevel :load-toplevel :execute)
|
||||
(ql:quickload :fiveam :silent t))
|
||||
|
||||
@@ -144,3 +170,19 @@
|
||||
(fiveam:is (= 1 (length *embedding-queue*)))
|
||||
(embed-all-pending)
|
||||
(fiveam:is (null *embedding-queue*))))
|
||||
|
||||
(fiveam:test test-mark-vector-stale
|
||||
"Contract 4: mark-vector-stale sets vector to :pending and queues for re-embed."
|
||||
(let ((*embedding-queue* nil))
|
||||
;; Create an object in memory with a vector
|
||||
(let ((obj (make-memory-object :id "stale-test" :content "stale content"
|
||||
:vector #(1.0 2.0 3.0))))
|
||||
(setf (gethash "stale-test" *memory-store*) obj)
|
||||
(mark-vector-stale "stale-test")
|
||||
(fiveam:is (eq :pending (memory-object-vector obj)))
|
||||
(fiveam:is (= 1 (length *embedding-queue*)))
|
||||
(let ((item (first *embedding-queue*)))
|
||||
(fiveam:is (string= "stale-test" (getf item :id)))
|
||||
(fiveam:is (string= "stale content" (getf item :text))))
|
||||
;; Clean up
|
||||
(remhash "stale-test" *memory-store*))))
|
||||
|
||||
Reference in New Issue
Block a user