@@ -76,6 +76,13 @@ The active SBCL image contains:
7676- Self-inspection and self-modification facilities.
7777- Loaded Lisp dependencies.
7878
79+ After the tracked system and selected private image commit load, Autolith loads
80+ =${XDG_CONFIG_HOME:-~/.config}/autolith/init.lisp= when it exists. This
81+ user-authored Common Lisp is the final executable configuration layer and
82+ therefore takes precedence over built-in and privately committed definitions.
83+ It executes with the user's full privileges, is loaded again when reconnecting
84+ a retained generation, and is never included in the pristine recovery image.
85+
7986This process is expected to evolve while it is running.
8087
8188Setup may install a preloaded baseline active image containing compiled Autolith
@@ -402,7 +409,7 @@ with a distinguished recovery status.
402409
403410* 8. Persistence
404411
405- Autolith persists eight kinds of state:
412+ Autolith persists nine kinds of state:
406413
407414- Source in Git.
408415- Conversations as S-expression files.
@@ -412,6 +419,7 @@ Autolith persists eight kinds of state:
412419- A private Git history retaining complete image-commit artifacts.
413420- Working generations as saved Lisp cores and reconstruction scripts.
414421- Worker images as immutable SBCL cores with manifests and durable notes.
422+ - User-authored executable configuration under the XDG config root.
415423
416424** 8.1 Conversation Files
417425
@@ -493,7 +501,20 @@ Every executed tool result records nonnegative CPU and real durations. Terminal
493501presentation shows both durations. Calls rejected before execution and repaired
494502unknown-outcome records omit timing rather than inventing a duration.
495503
496- ** 8.2 Mutation Journal
504+ ** 8.2 User Configuration
505+
506+ The optional =${XDG_CONFIG_HOME:-~/.config}/autolith/init.lisp= file is the
507+ explicit entry point for user Lisp. Autolith loads it in the =AUTOLITH= package
508+ after the tracked system and selected private image commit, before the first
509+ provider request. A retained generation reconnect loads the current file again
510+ instead of relying on a copy captured in its core.
511+
512+ The file is trusted executable code with the same user privileges as Autolith.
513+ A load failure is a structured startup error identifying the file and original
514+ condition. The file is separate from legacy mutation overlays and private image
515+ commits, so mutation rollback never discards user policy.
516+
517+ ** 8.3 Mutation Journal
497518
498519The mutation journal is append-only and records enough information to
499520understand recent changes after a crash.
@@ -512,7 +533,7 @@ A journal entry should identify:
512533The journal is for recovery and diagnosis. It does not replace private
513534image commits or their complete replay scripts.
514535
515- ** 8.3 Persistent Memories
536+ ** 8.4 Persistent Memories
516537
517538Persistent memories are stored in one readable =memories.sexp= file beneath the
518539data root. The file begins with a versioned header and continues as an
@@ -540,7 +561,7 @@ a short excerpt for selection; exact content remains available through
540561=memory.search= and =memory.read=. Memory corruption degrades this catalog to a
541562bounded unavailable notice instead of preventing unrelated model work.
542563
543- ** 8.4 Workspace Agendas
564+ ** 8.5 Workspace Agendas
544565
545566Workspace agendas are stored in one readable =agendas.sexp= file beneath the
546567data root. The complete versioned state is published atomically with private
0 commit comments