:PROPERTIES: :ID: 65891ce2-a465-49e6-a0c1-be13d3288d55 :CREATED: [2026-03-30 Mon 21:16] :EDITED: [2026-04-09 Thu] :END: #+TITLE: SKILL: Self-Fix Agent (Universal Literate Note) #+STARTUP: content #+FILETAGS: :self-repair:autonomy:debugging:psf: #+DEPENDS_ON: id:0ae190ec-5991-49b5-9038-f860548a3a0c #+DEPENDS_ON: id:98576df2-c496-4e4a-9acb-0bca514a0305 * Overview The *Self-Fix Agent* is the system's "Repair Mechanism." It takes failure hypotheses, applies surgical code modifications, and verifies them using the Object Store's rollback capabilities. * Phase D: Build (Implementation) ** Repair Logic #+begin_src lisp :tangle ../src/self-fix.lisp (defun self-fix-apply (action context) "Applies a surgical code fix and reloads the modified skill." (declare (ignore context)) (let* ((payload (getf action :payload)) (target-file (getf payload :file)) (old-code (getf payload :old)) (new-code (getf payload :new)) (is-skill (and (stringp (namestring target-file)) (search "skills/" (namestring target-file))))) (org-agent:snapshot-object-store) (org-agent:kernel-log "SELF-FIX - Attempting surgical fix on ~a..." target-file) (handler-case (if (uiop:file-exists-p target-file) (let ((content (uiop:read-file-string target-file))) (if (search old-code content) (let ((new-content (cl-ppcre:regex-replace-all (cl-ppcre:quote-meta-chars old-code) content new-code))) (with-open-file (out target-file :direction :output :if-exists :supersede) (write-string new-content out)) (if is-skill (progn (org-agent:kernel-log "SELF-FIX - Reloading modified skill ~a..." target-file) (if (org-agent:load-skill-from-org target-file) (progn (org-agent:kernel-log "SELF-FIX SUCCESS - Applied and reloaded.") t) (progn (org-agent:kernel-log "SELF-FIX FAILURE - Skill reload failed. Rolling back.") (with-open-file (out target-file :direction :output :if-exists :supersede) (write-string content out)) (org-agent:rollback-object-store 0) nil))) (progn (org-agent:kernel-log "SELF-FIX SUCCESS - Applied fix to file.") t))) (progn (org-agent:kernel-log "SELF-FIX FAILURE - Pattern not found.") nil))) (progn (org-agent:kernel-log "SELF-FIX FAILURE - File not found.") nil)) (error (c) (org-agent:kernel-log "SELF-FIX CRASH - ~a. Rolling back." c) (org-agent:rollback-object-store 0) nil)))) #+end_src ** Cognitive Tools #+begin_src lisp :tangle ../src/self-fix.lisp (org-agent:def-cognitive-tool :repair-file "Applies a surgical code modification to a file and reloads the skill if applicable." :parameters ((:file :type :string :description "Path to the target file") (:old :type :string :description "The literal code block to find") (:new :type :string :description "The literal code block to replace it with")) :body (lambda (args) (if (self-fix-apply (list :payload args) nil) "REPAIR SUCCESSFUL." "REPAIR FAILED."))) #+end_src ** Skill Definition #+begin_src lisp (org-agent:defskill :skill-self-fix :priority 95 :trigger (lambda (context) (eq (getf (getf context :payload) :sensor) :repair-request)) :neuro (lambda (context) (format nil "You are the PSF Repair Actuator. Synthesize a surgical fix for the reported failure. Return a Lisp plist for :repair-file.")) :symbolic (lambda (action context) (let ((payload (getf action :payload))) (self-fix-apply action context)))) #+end_src * Phase B: Blueprint (PROTOCOL) :PROPERTIES: :STATUS: SIGNED :END: ** 1. Architectural IntentnEstablish core functional interfaces for this skill.\n\n** 2. Semantic Interfaces\n(defun trigger-skill-org-skill-self-fix (context))\n(defun neuro-skill-org-skill-self-fix (context))