feat(arch): implement 'Code as Thought' architecture and formalize PSF Consensus Loop
This commit is contained in:
55
projects/org-skill-memex/tests/test-suite.lisp
Normal file
55
projects/org-skill-memex/tests/test-suite.lisp
Normal file
@@ -0,0 +1,55 @@
|
||||
;;; TDD Suite: org-skill-memex (Knowledge Management Standards)
|
||||
;;; Status: RED (Initial Inception)
|
||||
;;; Author: Tech-Analyst-Agent
|
||||
;;; Created: [2026-03-31 Tue 12:50]
|
||||
|
||||
(defpackage :org-skill-memex-tests
|
||||
(:use :cl :fiveam :org-skill-memex))
|
||||
|
||||
(in-package :org-skill-memex-tests)
|
||||
|
||||
(def-suite memex-integrity-suite
|
||||
:description "Tests for metadata and structural integrity of the Memex.")
|
||||
|
||||
(in-suite memex-integrity-suite)
|
||||
|
||||
;;; --- 2.1 Metadata Integrity Audit Tests ---
|
||||
|
||||
(test audit-missing-created-property
|
||||
"Ensure that entries missing the :CREATED: property are flagged."
|
||||
(let ((test-file "/tmp/test-missing-created.org"))
|
||||
(with-open-file (out test-file :direction :output :if-exists :supersede)
|
||||
(format out "* TODO Entry without created property~% :PROPERTIES:~% :ID: 123~% :END:~%"))
|
||||
(let ((result (memex-audit-metadata test-file)))
|
||||
(is (member :missing-created (getf result :errors)))
|
||||
(is (equal "Entry without created property" (getf (car (getf result :entries)) :title))))))
|
||||
|
||||
(test audit-misplaced-logbook
|
||||
"Ensure that :LOGBOOK: drawers MUST come after :PROPERTIES:."
|
||||
(let ((test-file "/tmp/test-bad-logbook.org"))
|
||||
(with-open-file (out test-file :direction :output :if-exists :supersede)
|
||||
(format out "* TODO Misplaced Logbook~% :LOGBOOK:~% - State \"DONE\" from \"TODO\" [2026-03-31]~% :END:~% :PROPERTIES:~% :CREATED: [2026-03-31]~% :END:~%"))
|
||||
(let ((result (memex-audit-metadata test-file)))
|
||||
(is (member :misplaced-logbook (getf result :errors))))))
|
||||
|
||||
;;; --- 2.2 GTD Task Promotion Tests ---
|
||||
|
||||
(test promote-sequential-task
|
||||
"Ensure that completing a NEXT task promotes the next TODO in the same project."
|
||||
(let ((project-id "test-project-promotion"))
|
||||
;; Implementation of mock GTD state would go here
|
||||
;; (is (equal "next-task-id" (memex-promote-next-task project-id)))
|
||||
(skip "Mock GTD state machine required for promotion testing.")))
|
||||
|
||||
;;; --- 2.3 Agentic Distillation Tests ---
|
||||
|
||||
(test distill-concept-from-daily
|
||||
"Ensure concepts are correctly extracted and backlinks added."
|
||||
(let ((daily-file "/tmp/2026-03-31-test.org")
|
||||
(concept "Lisp Sovereignty"))
|
||||
(with-open-file (out daily-file :direction :output :if-exists :supersede)
|
||||
(format out "* Lisp Sovereignty~% This is a timeless concept about control.~%"))
|
||||
(let ((note-path (memex-distill-atomic-note daily-file concept)))
|
||||
(is (cl-ppcre:scan "lisp_sovereignty.org" note-path))
|
||||
(is (cl-ppcre:scan "Source: \\[\\[file:2026-03-31-test.org\\]\\]"
|
||||
(uiop:read-file-string note-path))))))
|
||||
Reference in New Issue
Block a user